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 2586x 2586x 2x 2x 2x 2x 2x 2x 6254x 10031x 10031x 10031x 9251x 10031x 844x 844x 844x 757x 757x 757x 8x 8x 757x 757x 844x 844x 85x 15x 15x 70x 70x 844x 844x 101x 101x 101x 101x 101x 101x 844x 844x 10031x 6254x | /** @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) ); } }; } } } |