@liip/esbuild-plugin-ast-vue
Version:
Esbuild plugin to parse Vue AST
60 lines • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveTemplate = resolveTemplate;
exports.getTemplateOptions = getTemplateOptions;
const compiler_sfc_1 = require("@vue/compiler-sfc");
const convert_source_map_1 = require("convert-source-map");
const cache_1 = require("./cache");
const script_1 = require("./script");
function resolveTemplate({ filename, options = {}, isProd, }) {
const descriptor = (0, cache_1.getDescriptorCache)(filename);
const scopeId = (0, cache_1.getId)(filename);
let { code, errors, map } = (0, compiler_sfc_1.compileTemplate)({
...getTemplateOptions({ descriptor, options, isProd, scopeId }),
id: scopeId,
source: descriptor.template?.content || '',
filename: descriptor.filename,
});
if (map) {
code += (0, convert_source_map_1.fromObject)(map).toComment();
}
const convertedErrors = errors.map((e) => {
if (typeof e === 'string') {
return {
text: e,
};
}
else {
return {
text: e.message,
};
}
});
return {
code,
errors: convertedErrors,
};
}
function getTemplateOptions({ descriptor, options, isProd, scopeId, }) {
const block = descriptor.template;
if (!block) {
return;
}
const hasScoped = descriptor.styles.some((s) => s.scoped);
const resolvedScript = script_1.scriptCache.get(descriptor);
return {
id: scopeId,
scoped: hasScoped,
isProd,
filename: descriptor.filename,
inMap: block.src ? undefined : block.map,
compiler: options?.compiler,
compilerOptions: {
...options?.compilerOptions,
scopeId,
bindingMetadata: resolvedScript ? resolvedScript.bindings : undefined,
},
transformAssetUrls: options?.transformAssetUrls,
};
}
//# sourceMappingURL=template.js.map