Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2577x 2577x 2x 2x 2x 2x 2x 2x 6172x 9961x 9961x 9961x 9194x 9961x 831x 831x 831x 749x 749x 749x 8x 8x 749x 749x 831x 831x 85x 15x 15x 70x 70x 831x 831x 100x 100x 100x 100x 100x 100x 831x 831x 9961x 6172x | /** @import { Identifier } from 'estree' */ /** @import { ComponentContext, Context } from '../../types' */ import { is_state_source } from '../../utils.js'; import * as b from '../../../../../utils/builders.js'; /** * Turns `foo` into `$.get(foo)` * @param {Identifier} node */ export function get_value(node) { return b.call('$.get', node); } /** * * @param {Context | ComponentContext} context */ export function add_state_transformers(context) { for (const [name, binding] of context.state.scope.declarations) { if ( is_state_source(binding, context.state.analysis) || binding.kind === 'derived' || binding.kind === 'legacy_reactive' ) { context.state.transform[name] = { read: binding.declaration_kind === 'var' ? (node) => b.call('$.safe_get', node) : get_value, assign: (node, value) => { let call = b.call('$.set', node, value); if (context.state.scope.get(`$${node.name}`)?.kind === 'store_sub') { call = b.call('$.store_unsub', call, b.literal(`$${node.name}`), b.id('$$stores')); } return call; }, mutate: (node, mutation) => { if (context.state.analysis.runes) { return mutation; } return b.call('$.mutate', node, mutation); }, update: (node) => { return b.call( node.prefix ? '$.update_pre' : '$.update', node.argument, node.operator === '--' && b.literal(-1) ); } }; } } } |