"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
- "helpers": Array [],
+ "helpers": Set {},
"hoists": Array [],
"imports": Array [],
"loc": Object {
return {
type: NodeTypes.ROOT,
children: [],
- helpers: [],
+ helpers: new Set(),
components: [],
directives: [],
imports: [],
describe('compiler: codegen', () => {
test('module mode preamble', () => {
const root = createRoot({
- helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE]
+ helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE])
})
const { code } = generate(root, { mode: 'module' })
expect(code).toMatch(
test('module mode preamble w/ optimizeImports: true', () => {
const root = createRoot({
- helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE]
+ helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE])
})
const { code } = generate(root, { mode: 'module', optimizeImports: true })
expect(code).toMatch(
test('function mode preamble', () => {
const root = createRoot({
- helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE]
+ helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE])
})
const { code } = generate(root, { mode: 'function' })
expect(code).toMatch(`const _Vue = Vue`)
test('function mode preamble w/ prefixIdentifiers: true', () => {
const root = createRoot({
- helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE]
+ helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE])
})
const { code } = generate(root, {
mode: 'function',
ssr
} = context
- const hasHelpers = ast.helpers.length > 0
+ const helpers = Array.from(ast.helpers)
+ const hasHelpers = helpers.length > 0
const useWithBlock = !prefixIdentifiers && mode !== 'module'
const genScopeId = !__BROWSER__ && scopeId != null && mode === 'module'
const isSetupInlined = !__BROWSER__ && !!options.inline
// function mode const declarations should be inside with block
// also they should be renamed to avoid collision with user properties
if (hasHelpers) {
- push(`const { ${ast.helpers.map(aliasHelper).join(', ')} } = _Vue`)
+ push(`const { ${helpers.map(aliasHelper).join(', ')} } = _Vue`)
push(`\n`)
newline()
}
// In prefix mode, we place the const declaration at top so it's done
// only once; But if we not prefixing, we place the declaration inside the
// with block so it doesn't incur the `in` check cost for every helper access.
- if (ast.helpers.length > 0) {
+ const helpers = Array.from(ast.helpers)
+ if (helpers.length > 0) {
if (!__BROWSER__ && prefixIdentifiers) {
- push(
- `const { ${ast.helpers.map(aliasHelper).join(', ')} } = ${VueBinding}\n`
- )
+ push(`const { ${helpers.map(aliasHelper).join(', ')} } = ${VueBinding}\n`)
} else {
// "with" mode.
// save Vue in a separate variable to avoid collision
CREATE_TEXT,
CREATE_STATIC
]
- .filter(helper => ast.helpers.includes(helper))
+ .filter(helper => helpers.includes(helper))
.map(aliasHelper)
.join(', ')
push(`const { ${staticHelpers} } = _Vue\n`)
} = context
if (genScopeId && ast.hoists.length) {
- ast.helpers.push(PUSH_SCOPE_ID, POP_SCOPE_ID)
+ ast.helpers.add(PUSH_SCOPE_ID)
+ ast.helpers.add(POP_SCOPE_ID)
}
// generate import statements for helpers
- if (ast.helpers.length) {
+ if (ast.helpers.size) {
+ const helpers = Array.from(ast.helpers)
if (optimizeImports) {
// when bundled with webpack with code-split, calling an import binding
// as a function leads to it being wrapped with `Object(a.b)` or `(0,a.b)`,
// therefore we assign the imports to variables (which is a constant ~50b
// cost per-component instead of scaling with template size)
push(
- `import { ${ast.helpers
+ `import { ${helpers
.map(s => helperNameMap[s])
.join(', ')} } from ${JSON.stringify(runtimeModuleName)}\n`
)
push(
- `\n// Binding optimization for webpack code-split\nconst ${ast.helpers
+ `\n// Binding optimization for webpack code-split\nconst ${helpers
.map(s => `_${helperNameMap[s]} = ${helperNameMap[s]}`)
.join(', ')}\n`
)
} else {
push(
- `import { ${ast.helpers
+ `import { ${helpers
.map(s => `${helperNameMap[s]} as _${helperNameMap[s]}`)
.join(', ')} } from ${JSON.stringify(runtimeModuleName)}\n`
)