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 | 2x 2x 2x 2x 2x 2x 4262x 4262x 4262x 4262x 2x 2x 1002x 1002x 1002x 1002x 2x 2x 2x 2x 460x 460x 460x 460x 460x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 12x 448x 448x 2x | import * as b from '../../../../utils/builders.js';
import { function_visitor, serialize_hoistable_params } from '../utils.js';
/** @type {import('../types.js').ComponentVisitors} */
export const javascript_visitors = {
Program(node, { visit }) {
return /** @type {import('estree').Program} */ ({
...node,
body: node.body.map((node) => /** @type {import('estree').Node} */ (visit(node)))
});
},
BlockStatement(node, { visit }) {
return /** @type {import('estree').BlockStatement} */ ({
...node,
body: node.body.map((node) => /** @type {import('estree').Node} */ (visit(node)))
});
},
FunctionExpression: function_visitor,
ArrowFunctionExpression: function_visitor,
FunctionDeclaration(node, context) {
const metadata = node.metadata;
const state = { ...context.state, in_constructor: false };
if (metadata?.hoistable === true) {
const params = serialize_hoistable_params(node, context);
context.state.hoisted.push(
/** @type {import('estree').FunctionDeclaration} */ ({
...node,
id: node.id !== null ? context.visit(node.id, state) : null,
params,
body: context.visit(node.body, state)
})
);
return b.empty;
}
context.next(state);
}
};
|