UNPKG

jsv-compiler

Version:
67 lines 2.55 kB
var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; var compiler = require('./vue-pkg/compiler-sfc.cjs'); var helperNameMap = require('./vue-pkg/compiler-core.cjs').helperNameMap; var parse = compiler.parse, compileTemplate = compiler.compileTemplate; function compileJsv(source) { var target = ''; var parsed = parse(source); var astAll = parsed.ast, descriptor = parsed.descriptor, errors = parsed.errors; var templates = descriptor.templates; for (var i_1 = 0; i_1 < templates.length; i_1++) { var template = templates[i_1]; var _a = compileTemplate({ source: template.content, filename: 'App.jsfv', inMap: template.map, compilerOptions: { mode: 'function' } }), code = _a.code, map = _a.map, errors2 = _a.errors, astTempl = _a.ast; var result = "(()=> {\n " + code + " \n})()\n"; // console.log(result) template.code = result; astAll.helpers = new Set(__spreadArrays(astAll.helpers, astTempl.helpers)); } var i = 0; astAll.children.forEach(function (node, index) { if (node.tag !== 'template') { // 去掉 ` ` var source_1 = node.loc.source; if (index === 0) { source_1 = source_1.replace(/`\s*?$/, ''); } else if (index === astAll.children.length - 1) { source_1 = source_1.replace(/^\s*?`/, ''); } else { source_1 = source_1.replace(/`\s*?$/, ''); source_1 = source_1.replace(/^\s*?`/, ''); } target += source_1; } else { target += templates[i++].code; } }); function genModulePreamble(ast) { // generate import statements for helpers if (ast.helpers.size) { return "import { " + __spreadArrays(ast.helpers).map(function (s) { return helperNameMap[s] + " as _" + helperNameMap[s]; }) .join(', ') + " } from 'vue'\n"; } return ''; } target = genModulePreamble(astAll) + target; return { code: target, map: {} }; } exports.compileJsv = compileJsv; //# sourceMappingURL=compileJsv.js.map