"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/index.ts var _unplugin = require('unplugin'); var _common = require('@vue-macros/common'); // src/core/index.ts var MAGIC_COMMENT = "hoist-static"; function transformHoistStatic(code, id) { function moveToScript(decl, prefix = "") { if (scriptOffset === void 0) scriptOffset = normalScript.start(); const text = ` ${prefix}${s.sliceNode(decl, { offset: setupOffset })}`; s.appendRight(scriptOffset, text); s.removeNode(decl, { offset: setupOffset }); } const sfc = _common.parseSFC.call(void 0, code, id); const { scriptSetup, getSetupAst } = sfc; if (!scriptSetup) return; const setupOffset = scriptSetup.loc.start.offset; const setupOffsetEnd = scriptSetup.loc.end.offset; const s = new (0, _common.MagicString)(code); const program = getSetupAst(); let normalScript = _common.addNormalScript.call(void 0, sfc, s); let scriptOffset; for (const stmt of program.body) { if (stmt.type === "VariableDeclaration" && stmt.kind === "const") { const decls = stmt.declarations; let count = 0; for (const [i, decl] of decls.entries()) { if (!decl.init || !_common.isStaticExpression.call(void 0, decl.init, { unary: true, magicComment: MAGIC_COMMENT })) continue; count++; moveToScript(decl, "const "); if (decls.length > 1) { const isLast = i === decls.length - 1; const start = isLast ? decls[i - 1].end : decl.end; const end = isLast ? decl.start : decls[i + 1].start; s.remove(setupOffset + start, setupOffset + end); } } if (count === decls.length) { s.removeNode(stmt, { offset: setupOffset }); } } else if (stmt.type === "TSEnumDeclaration") { const isAllConstant = stmt.members.every( (member) => !member.initializer || _common.isStaticExpression.call(void 0, member.initializer, { unary: true, magicComment: MAGIC_COMMENT }) ); if (!isAllConstant) continue; moveToScript(stmt); } } const restSetup = s.slice(setupOffset, setupOffsetEnd); if (restSetup.trim().length === 0) { s.appendLeft(setupOffsetEnd, "/* hoist static placeholder */"); } if (scriptOffset !== void 0) normalScript.end(); return _common.getTransformResult.call(void 0, s, id); } // src/index.ts function resolveOption(options, framework) { const version = options.version || _common.detectVueVersion.call(void 0, ); return { include: [_common.REGEX_VUE_SFC, _common.REGEX_SETUP_SFC].concat( version === 2 && framework === "webpack" ? _common.REGEX_VUE_SUB : [] ), ...options, version }; } var name = "unplugin-vue-hoist-static"; var src_default = _unplugin.createUnplugin.call(void 0, (userOptions = {}, { framework }) => { const options = resolveOption(userOptions, framework); const filter = _common.createFilter.call(void 0, options); return { name, enforce: "pre", transformInclude(id) { return filter(id); }, transform(code, id) { return transformHoistStatic(code, id); } }; } ); exports.src_default = src_default;