UNPKG

vue-simple-compiler

Version:

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

101 lines (100 loc) 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveScript = void 0; const compiler_sfc_1 = require("vue/compiler-sfc"); const constants_1 = require("./constants"); const map_1 = require("./map"); const options_1 = require("./options"); const transform_1 = require("./transform"); const resolveScript = (descriptor, context) => { const scriptLang = (descriptor.script && descriptor.script.lang) || (descriptor.scriptSetup && descriptor.scriptSetup.lang) || 'js'; if (descriptor.script || descriptor.scriptSetup) { if (scriptLang !== 'js' && scriptLang !== 'ts') { return { errors: [new Error(`Unsupported script lang: ${scriptLang}`)], }; } if (descriptor.scriptSetup?.src) { return { errors: [ new Error(`Unsupported external script setup: ${descriptor.scriptSetup.src}`), ], }; } if (descriptor.script?.src) { if (!(0, options_1.checkExtensionName)(descriptor.script.src, [scriptLang])) { return { errors: [ new Error(`The extension name doesn't match the script language "${scriptLang}": ${descriptor.script.src}.`), ], }; } context.externalJsList.push({ filename: descriptor.script.src, query: {}, }); return { result: { code: `import ${constants_1.COMP_ID} from ${JSON.stringify(descriptor.script.src)}`, }, }; } const expressionPlugins = context .features.hasTS ? ['typescript'] : undefined; let scriptBlock; try { scriptBlock = (0, compiler_sfc_1.compileScript)(descriptor, { ...context.options.sfcScriptCompilerOptions, id: context.id, inlineTemplate: true, templateOptions: { ...context.options.sfcScriptCompilerOptions?.templateOptions, compilerOptions: { expressionPlugins, ...context.options.sfcScriptCompilerOptions?.templateOptions ?.compilerOptions, }, }, isProd: context.isProd, }); } catch (error) { return { errors: [error] }; } // basic source map context.bindingMetadata = scriptBlock.bindings; if (context.features.hasTS) { try { const transform = context.options.tsTransform || transform_1.tsTransform; const transformed = transform(scriptBlock.content, context.options.tsCompilerOptions, context.options.tsRuntime); const sourceMap = (0, map_1.chainSourceMap)(scriptBlock.map, transformed.sourceMap); return { result: { code: (0, compiler_sfc_1.rewriteDefault)(transformed.code, constants_1.COMP_ID, expressionPlugins), sourceMap, }, }; } catch (error) { return { errors: [error] }; } } else { // No source map update technically. return { result: { code: (0, compiler_sfc_1.rewriteDefault)(scriptBlock.content, constants_1.COMP_ID, expressionPlugins), sourceMap: scriptBlock.map, }, }; } } else { return { result: { code: `const ${constants_1.COMP_ID} = {}` } }; } }; exports.resolveScript = resolveScript;