UNPKG

vue-simple-compiler

Version:

A lib to compile Vue Single-File Component into plain JavaScript & CSS.

51 lines (50 loc) 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveTemplate = void 0; const compiler_sfc_1 = require("vue/compiler-sfc"); const constants_1 = require("./constants"); const resolveTemplate = (descriptor, context) => { if (descriptor.template && !descriptor.scriptSetup) { if (descriptor.template.lang && descriptor.template.lang !== 'html') { return { errors: [ new Error(`Unsupported template lang: ${descriptor.template.lang}`), ], }; } if (descriptor.template.src) { return { errors: [ new Error(`Unsupported external template: ${descriptor.template.src}.`), ], }; } const templateResult = (0, compiler_sfc_1.compileTemplate)({ ...context.options.sfcTemplateCompilerOptions, id: `data-v-${context.id}`, filename: context.filename, source: descriptor.template.content, scoped: context.features.hasScoped, compilerOptions: { bindingMetadata: context.bindingMetadata, ...context.options.sfcTemplateCompilerOptions?.compilerOptions, }, inMap: descriptor.template.map, isProd: context.isProd, }); if (templateResult.errors.length) { // eslint-disable-next-line @typescript-eslint/no-throw-literal throw templateResult.errors; } // No source map update technically. const templateCode = `${templateResult.code.replace(/\nexport (function|const) (render|ssrRender)/, `\n$1 render`)}\n${constants_1.COMP_ID}.render = render`; return { result: { code: templateCode, sourceMap: templateResult.map, }, }; } return { result: { code: '' } }; }; exports.resolveTemplate = resolveTemplate;