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 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1570x 1570x 1570x 1570x 1570x 4x 4x 1566x 1570x 4x 4x 4x 1562x 1570x 3x 3x 3x 3x 3x 3x 1559x 1570x 3x 3x 3x 3x 3x 3x 1556x 1570x 13x 13x 1543x 1543x 1543x | /** @import { CallExpression, Expression } from 'estree' */ /** @import { Context } from '../types.js' */ import { is_ignored } from '../../../../state.js'; import * as b from '../../../../utils/builders.js'; import { get_rune } from '../../../scope.js'; import { transform_inspect_rune } from '../../utils.js'; /** * @param {CallExpression} node * @param {Context} context */ export function CallExpression(node, context) { const rune = get_rune(node, context.state.scope); if (rune === '$host') { return b.id('undefined'); } if (rune === '$effect.tracking') { return b.literal(false); } if (rune === '$effect.root') { // ignore $effect.root() calls, just return a noop which mimics the cleanup function return b.arrow([], b.block([])); } if (rune === '$state.snapshot') { return b.call( '$.snapshot', /** @type {Expression} */ (context.visit(node.arguments[0])), is_ignored(node, 'state_snapshot_uncloneable') && b.true ); } if (rune === '$state.is') { return b.call( 'Object.is', /** @type {Expression} */ (context.visit(node.arguments[0])), /** @type {Expression} */ (context.visit(node.arguments[1])) ); } if (rune === '$inspect' || rune === '$inspect().with') { return transform_inspect_rune(node, context); } context.next(); } |