UNPKG

vue-simple-compiler

Version:

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

65 lines (64 loc) 2.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createContext = exports.resolveFeatures = void 0; const path_1 = require("path"); // @ts-ignore const hash_sum_1 = __importDefault(require("hash-sum")); const constants_1 = require("./constants"); const options_1 = require("./options"); const resolveFeatures = (descriptor, context) => { const { filename, features, addedProps, addedCodeList, id } = context; const scriptLang = (descriptor.script && descriptor.script.lang) || (descriptor.scriptSetup && descriptor.scriptSetup.lang) || 'js'; features.hasTS = scriptLang === 'ts'; descriptor.styles.some((style) => { if (style.scoped) { features.hasScoped = true; } if (style.module) { features.hasCSSModules = true; } features.hasStyle = true; return features.hasScoped && features.hasCSSModules && features.hasStyle; }); if (features.hasScoped) { addedProps.push(['__scopeId', JSON.stringify(`data-v-${id}`)]); } if (features.hasCSSModules) { addedProps.push(['__cssModules', `cssModules`]); addedCodeList.push('const cssModules= {}'); } if (!context.isProd) { addedProps.push(['__file', JSON.stringify(filename.replace(/\\/g, '/'))]); } }; exports.resolveFeatures = resolveFeatures; const createContext = (source, options) => { const root = options?.root ?? constants_1.ROOT; const filename = options?.filename ?? constants_1.FILENAME; const fullpath = (0, path_1.join)(root, filename); const destFilename = (0, options_1.getDestPath)(options?.filename ?? constants_1.FILENAME); const id = options?.filename ? (0, hash_sum_1.default)(options.filename + source) : constants_1.ID; const context = { isProd: options?.isProd ?? false, hmr: options?.hmr ?? false, root, filename, fullpath, id, destFilename, options: options ?? {}, features: {}, addedProps: [], addedCodeList: [], externalJsList: [], externalCssList: [], bindingMetadata: undefined, }; return context; }; exports.createContext = createContext;