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 4256x 4256x 4256x 4256x 2x 2x 1003x 1003x 1003x 1003x 2x 2x 2x 2x 458x 458x 458x 458x 458x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 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);
}
};
|