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 4360x 4360x 4360x 4360x 2x 2x 1023x 1023x 1023x 1023x 2x 2x 2x 2x 469x 469x 469x 469x 469x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 451x 451x 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);
}
};
|