@lynxwall/cucumber-tsflow 7.5.5 → 7.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -5
- package/lib/api/load-configuration.js +0 -3
- package/lib/api/load-configuration.js.map +1 -1
- package/lib/api/load-support.d.ts +14 -0
- package/lib/api/load-support.js +112 -0
- package/lib/api/load-support.js.map +1 -1
- package/lib/transpilers/esm/vue-sfc-compiler.mjs +14 -333
- package/lib/transpilers/esvue.js +6 -9
- package/lib/transpilers/esvue.js.map +1 -1
- package/lib/transpilers/tsvue-exp.js +6 -9
- package/lib/transpilers/tsvue-exp.js.map +1 -1
- package/lib/transpilers/tsvue.js +5 -8
- package/lib/transpilers/tsvue.js.map +1 -1
- package/lib/transpilers/vue-sfc-compiler.d.ts +23 -0
- package/lib/transpilers/vue-sfc-compiler.js +242 -0
- package/lib/transpilers/vue-sfc-compiler.js.map +1 -0
- package/lib/tsconfig.node.tsbuildinfo +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +1 -3
- package/lib/transpilers/vue-sfc/compiler.d.ts +0 -7
- package/lib/transpilers/vue-sfc/compiler.js +0 -22
- package/lib/transpilers/vue-sfc/compiler.js.map +0 -1
- package/lib/transpilers/vue-sfc/index.d.ts +0 -23
- package/lib/transpilers/vue-sfc/index.js +0 -46
- package/lib/transpilers/vue-sfc/index.js.map +0 -1
- package/lib/transpilers/vue-sfc/main.d.ts +0 -8
- package/lib/transpilers/vue-sfc/main.js +0 -258
- package/lib/transpilers/vue-sfc/main.js.map +0 -1
- package/lib/transpilers/vue-sfc/script.d.ts +0 -5
- package/lib/transpilers/vue-sfc/script.js +0 -41
- package/lib/transpilers/vue-sfc/script.js.map +0 -1
- package/lib/transpilers/vue-sfc/template.d.ts +0 -8
- package/lib/transpilers/vue-sfc/template.js +0 -101
- package/lib/transpilers/vue-sfc/template.js.map +0 -1
- package/lib/transpilers/vue-sfc/types.d.ts +0 -55
- package/lib/transpilers/vue-sfc/types.js +0 -3
- package/lib/transpilers/vue-sfc/types.js.map +0 -1
- package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +0 -13
- package/lib/transpilers/vue-sfc/utils/descriptorCache.js +0 -68
- package/lib/transpilers/vue-sfc/utils/descriptorCache.js.map +0 -1
- package/lib/transpilers/vue-sfc/utils/error.d.ts +0 -3
- package/lib/transpilers/vue-sfc/utils/error.js +0 -23
- package/lib/transpilers/vue-sfc/utils/error.js.map +0 -1
- package/lib/transpilers/vue-sfc/utils/query.d.ts +0 -13
- package/lib/transpilers/vue-sfc/utils/query.js +0 -36
- package/lib/transpilers/vue-sfc/utils/query.js.map +0 -1
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.transformMain = void 0;
|
|
7
|
-
const querystring_1 = __importDefault(require("querystring"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const descriptorCache_1 = require("./utils/descriptorCache");
|
|
10
|
-
const pluginutils_1 = require("@rollup/pluginutils");
|
|
11
|
-
const script_1 = require("./script");
|
|
12
|
-
const template_1 = require("./template");
|
|
13
|
-
const source_map_1 = require("source-map");
|
|
14
|
-
const error_1 = require("./utils/error");
|
|
15
|
-
const esbuild_1 = require("../esbuild");
|
|
16
|
-
const transformMain = (code, filename, options, transformerContext, ssr, asCustomElement) => {
|
|
17
|
-
const { descriptor, errors } = (0, descriptorCache_1.createDescriptor)(filename, code, options);
|
|
18
|
-
if (errors.length) {
|
|
19
|
-
errors.forEach(error => transformerContext.error((0, error_1.createRollupError)(filename, error)));
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
// feature information
|
|
23
|
-
const attachedProps = [];
|
|
24
|
-
const hasScoped = descriptor.styles.some(s => s.scoped);
|
|
25
|
-
// script
|
|
26
|
-
const { code: scriptCode, map } = genScriptCode(descriptor, options, transformerContext, ssr);
|
|
27
|
-
// template
|
|
28
|
-
const hasTemplateImport = descriptor.template && !(0, script_1.isUseInlineTemplate)(descriptor, true);
|
|
29
|
-
let templateCode = '';
|
|
30
|
-
let templateMap;
|
|
31
|
-
if (hasTemplateImport) {
|
|
32
|
-
({ code: templateCode, map: templateMap } = genTemplateCode(descriptor, options, transformerContext, ssr));
|
|
33
|
-
}
|
|
34
|
-
if (hasTemplateImport) {
|
|
35
|
-
attachedProps.push(ssr ? ['ssrRender', '_sfc_ssrRender'] : ['render', '_sfc_render']);
|
|
36
|
-
}
|
|
37
|
-
// styles
|
|
38
|
-
// Vue styles are disabled by default. However, user could enable them
|
|
39
|
-
// when importing from compiled libraries
|
|
40
|
-
const stylesCode = global.enableVueStyle
|
|
41
|
-
? genStyleCode(descriptor, transformerContext, asCustomElement, attachedProps)
|
|
42
|
-
: '';
|
|
43
|
-
// custom blocks
|
|
44
|
-
const customBlocksCode = genCustomBlockCode(descriptor, transformerContext);
|
|
45
|
-
const output = [scriptCode, templateCode, stylesCode, customBlocksCode];
|
|
46
|
-
if (hasScoped) {
|
|
47
|
-
attachedProps.push([`__scopeId`, JSON.stringify(`data-v-${descriptor.id}`)]);
|
|
48
|
-
}
|
|
49
|
-
// SSR module registration by wrapping user setup
|
|
50
|
-
if (ssr) {
|
|
51
|
-
const normalizedFilename = (0, pluginutils_1.normalizePath)(path_1.default.relative(options.root, filename));
|
|
52
|
-
output.push(`import { useSSRContext as __vite_useSSRContext } from 'vue'`, `const _sfc_setup = _sfc_main.setup`, `_sfc_main.setup = (props, ctx) => {`, ` const ssrContext = __vite_useSSRContext()`, ` ;(ssrContext.modules || (ssrContext.modules = new Set())).add(${JSON.stringify(normalizedFilename)})`, ` return _sfc_setup ? _sfc_setup(props, ctx) : undefined`, `}`);
|
|
53
|
-
}
|
|
54
|
-
// if the template is inlined into the main module (indicated by the presence
|
|
55
|
-
// of templateMap, we need to concatenate the two source maps.
|
|
56
|
-
let resolvedMap = options.sourceMap ? map : undefined;
|
|
57
|
-
if (resolvedMap && templateMap) {
|
|
58
|
-
const generator = source_map_1.SourceMapGenerator.fromSourceMap(new source_map_1.SourceMapConsumer(map));
|
|
59
|
-
const offset = (scriptCode.match(/\r?\n/g)?.length ?? 0) + 1;
|
|
60
|
-
const templateMapConsumer = new source_map_1.SourceMapConsumer(templateMap);
|
|
61
|
-
templateMapConsumer.eachMapping(m => {
|
|
62
|
-
generator.addMapping({
|
|
63
|
-
source: m.source,
|
|
64
|
-
original: { line: m.originalLine, column: m.originalColumn },
|
|
65
|
-
generated: {
|
|
66
|
-
line: m.generatedLine + offset,
|
|
67
|
-
column: m.generatedColumn
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
resolvedMap = generator.toJSON();
|
|
72
|
-
// if this is a template only update, we will be reusing a cached version
|
|
73
|
-
// of the main module compile result, which has outdated sourcesContent.
|
|
74
|
-
resolvedMap.sourcesContent = templateMap.sourcesContent;
|
|
75
|
-
}
|
|
76
|
-
if (!attachedProps.length) {
|
|
77
|
-
output.push(`export default _sfc_main`);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
output.push(`import _export_sfc from 'export default (sfc, props) => {
|
|
81
|
-
const target = sfc.__vccOpts || sfc;
|
|
82
|
-
for (const [key, val] of props) {
|
|
83
|
-
target[key] = val;
|
|
84
|
-
}
|
|
85
|
-
return target;
|
|
86
|
-
}'`, `export default /*#__PURE__*/_export_sfc(_sfc_main, [${attachedProps
|
|
87
|
-
.map(([key, val]) => `['${key}',${val}]`)
|
|
88
|
-
.join(',')}])`);
|
|
89
|
-
}
|
|
90
|
-
// handle TS transpilation
|
|
91
|
-
let resolvedCode = output.join('\n');
|
|
92
|
-
if ((descriptor.script?.lang === 'ts' || descriptor.scriptSetup?.lang === 'ts') &&
|
|
93
|
-
!descriptor.script?.src // only normal script can have src
|
|
94
|
-
) {
|
|
95
|
-
const { output, sourceMap } = (0, esbuild_1.transpileCode)(resolvedCode, filename, '.ts');
|
|
96
|
-
resolvedCode = output;
|
|
97
|
-
resolvedMap = resolvedMap ? sourceMap : resolvedMap;
|
|
98
|
-
}
|
|
99
|
-
return {
|
|
100
|
-
code: resolvedCode,
|
|
101
|
-
map: resolvedMap || {
|
|
102
|
-
mappings: ''
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
};
|
|
106
|
-
exports.transformMain = transformMain;
|
|
107
|
-
const genTemplateCode = (descriptor, options, transformerContext, ssr) => {
|
|
108
|
-
const template = descriptor.template;
|
|
109
|
-
// If the template is not using pre-processor AND is not using external src,
|
|
110
|
-
// compile and inline it directly in the main module. When served in vite this
|
|
111
|
-
// saves an extra request per SFC which can improve load performance.
|
|
112
|
-
if (!template.lang && !template.src) {
|
|
113
|
-
return (0, template_1.transformTemplateInMain)(template.content, descriptor, options, transformerContext, ssr);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
if (template.src) {
|
|
117
|
-
linkSrcToDescriptor(template.src, descriptor, transformerContext);
|
|
118
|
-
}
|
|
119
|
-
const src = template.src || descriptor.filename;
|
|
120
|
-
const srcQuery = template.src ? `&src=${descriptor.id}` : ``;
|
|
121
|
-
const attrsQuery = attrsToQuery(template.attrs, 'js', true);
|
|
122
|
-
const query = `?vue&type=template${srcQuery}${attrsQuery}`;
|
|
123
|
-
const request = JSON.stringify(src + query);
|
|
124
|
-
const renderFnName = ssr ? 'ssrRender' : 'render';
|
|
125
|
-
return {
|
|
126
|
-
code: `import { ${renderFnName} as _sfc_${renderFnName} } from ${request}`,
|
|
127
|
-
map: undefined
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
const genScriptCode = (descriptor, options, transformerContext, ssr) => {
|
|
132
|
-
let scriptCode = `const _sfc_main = {}`;
|
|
133
|
-
let map;
|
|
134
|
-
const script = (0, script_1.resolveScript)(descriptor, options, ssr);
|
|
135
|
-
if (script) {
|
|
136
|
-
// If the script is js/ts and has no external src, it can be directly placed
|
|
137
|
-
// in the main module.
|
|
138
|
-
if ((!script.lang || script.lang === 'ts') && !script.src) {
|
|
139
|
-
scriptCode = options.compiler.rewriteDefault(script.content, '_sfc_main', script.lang === 'ts' ? ['typescript'] : undefined);
|
|
140
|
-
map = script.map;
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
if (script.src) {
|
|
144
|
-
linkSrcToDescriptor(script.src, descriptor, transformerContext);
|
|
145
|
-
}
|
|
146
|
-
const src = script.src || descriptor.filename;
|
|
147
|
-
const langFallback = (script.src && path_1.default.extname(src).slice(1)) || 'js';
|
|
148
|
-
const attrsQuery = attrsToQuery(script.attrs, langFallback);
|
|
149
|
-
const srcQuery = script.src ? `&src=${descriptor.id}` : ``;
|
|
150
|
-
const query = `?vue&type=script${srcQuery}${attrsQuery}`;
|
|
151
|
-
const request = JSON.stringify(src + query);
|
|
152
|
-
scriptCode = `import _sfc_main from ${request}\n` + `export * from ${request}`; // support named exports
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return {
|
|
156
|
-
code: scriptCode,
|
|
157
|
-
map: map
|
|
158
|
-
};
|
|
159
|
-
};
|
|
160
|
-
const genStyleCode = (descriptor, transformerContext, asCustomElement, attachedProps) => {
|
|
161
|
-
let stylesCode = ``;
|
|
162
|
-
let cssModulesMap;
|
|
163
|
-
if (descriptor.styles.length) {
|
|
164
|
-
for (let i = 0; i < descriptor.styles.length; i++) {
|
|
165
|
-
const style = descriptor.styles[i];
|
|
166
|
-
if (style.src) {
|
|
167
|
-
linkSrcToDescriptor(style.src, descriptor, transformerContext);
|
|
168
|
-
}
|
|
169
|
-
const src = style.src || descriptor.filename;
|
|
170
|
-
// do not include module in default query, since we use it to indicate
|
|
171
|
-
// that the module needs to export the modules json
|
|
172
|
-
const attrsQuery = attrsToQuery(style.attrs, 'css');
|
|
173
|
-
const srcQuery = style.src ? `&src=${descriptor.id}` : ``;
|
|
174
|
-
const directQuery = asCustomElement ? `&inline` : ``;
|
|
175
|
-
const query = `?vue&type=style&index=${i}${srcQuery}${directQuery}`;
|
|
176
|
-
const styleRequest = src + query + attrsQuery;
|
|
177
|
-
if (style.module) {
|
|
178
|
-
if (asCustomElement) {
|
|
179
|
-
throw new Error(`<style module> is not supported in custom elements mode.`);
|
|
180
|
-
}
|
|
181
|
-
const [importCode, nameMap] = genCSSModulesCode(i, styleRequest, style.module);
|
|
182
|
-
stylesCode += importCode;
|
|
183
|
-
Object.assign((cssModulesMap ||= {}), nameMap);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
if (asCustomElement) {
|
|
187
|
-
stylesCode += `\nimport _style_${i} from ${JSON.stringify(styleRequest)}`;
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
stylesCode += `\nimport ${JSON.stringify(styleRequest)}`;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
// TODO SSR critical CSS collection
|
|
194
|
-
}
|
|
195
|
-
if (asCustomElement) {
|
|
196
|
-
attachedProps.push([`styles`, `[${descriptor.styles.map((_, i) => `_style_${i}`).join(',')}]`]);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
if (cssModulesMap) {
|
|
200
|
-
const mappingCode = Object.entries(cssModulesMap).reduce((code, [key, value]) => code + `"${key}":${value},\n`, '{\n') + '}';
|
|
201
|
-
stylesCode += `\nconst cssModules = ${mappingCode}`;
|
|
202
|
-
attachedProps.push([`__cssModules`, `cssModules`]);
|
|
203
|
-
}
|
|
204
|
-
return stylesCode;
|
|
205
|
-
};
|
|
206
|
-
const genCSSModulesCode = (index, request, moduleName) => {
|
|
207
|
-
const styleVar = `style${index}`;
|
|
208
|
-
const exposedName = typeof moduleName === 'string' ? moduleName : '$style';
|
|
209
|
-
// inject `.module` before extension so vite handles it as css module
|
|
210
|
-
const moduleRequest = request.replace(/\.(\w+)$/, '.module.$1');
|
|
211
|
-
return [`\nimport ${styleVar} from ${JSON.stringify(moduleRequest)}`, { [exposedName]: styleVar }];
|
|
212
|
-
};
|
|
213
|
-
const genCustomBlockCode = (descriptor, transformerContext) => {
|
|
214
|
-
let code = '';
|
|
215
|
-
for (let index = 0; index < descriptor.customBlocks.length; index++) {
|
|
216
|
-
const block = descriptor.customBlocks[index];
|
|
217
|
-
if (block.src) {
|
|
218
|
-
linkSrcToDescriptor(block.src, descriptor, transformerContext);
|
|
219
|
-
}
|
|
220
|
-
const src = block.src || descriptor.filename;
|
|
221
|
-
const attrsQuery = attrsToQuery(block.attrs, block.type);
|
|
222
|
-
const srcQuery = block.src ? `&src` : ``;
|
|
223
|
-
const query = `?vue&type=${block.type}&index=${index}${srcQuery}${attrsQuery}`;
|
|
224
|
-
const request = JSON.stringify(src + query);
|
|
225
|
-
code += `import block${index} from ${request}\n`;
|
|
226
|
-
code += `if (typeof block${index} === 'function') block${index}(_sfc_main)\n`;
|
|
227
|
-
}
|
|
228
|
-
return code;
|
|
229
|
-
};
|
|
230
|
-
/**
|
|
231
|
-
* For blocks with src imports, it is important to link the imported file
|
|
232
|
-
* with its owner SFC descriptor so that we can get the information about
|
|
233
|
-
* the owner SFC when compiling that file in the transform phase.
|
|
234
|
-
*/
|
|
235
|
-
const linkSrcToDescriptor = (src, descriptor, transformerContext) => {
|
|
236
|
-
const srcFile = transformerContext.resolve(descriptor.filename)?.id || src;
|
|
237
|
-
// #1812 if the src points to a dep file, the resolved id may contain a
|
|
238
|
-
// version query.
|
|
239
|
-
(0, descriptorCache_1.setSrcDescriptor)(srcFile.replace(/\?.*$/, ''), descriptor);
|
|
240
|
-
};
|
|
241
|
-
// these are built-in query parameters so should be ignored
|
|
242
|
-
// if the user happen to add them as attrs
|
|
243
|
-
const ignoreList = ['id', 'index', 'src', 'type', 'lang', 'module'];
|
|
244
|
-
const attrsToQuery = (attrs, langFallback, forceLangFallback = false) => {
|
|
245
|
-
let query = ``;
|
|
246
|
-
for (const name in attrs) {
|
|
247
|
-
const value = attrs[name];
|
|
248
|
-
if (!ignoreList.includes(name)) {
|
|
249
|
-
query += `&${querystring_1.default.escape(name)}${value ? `=${querystring_1.default.escape(String(value))}` : ``}`;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
if (langFallback || attrs.lang) {
|
|
253
|
-
query +=
|
|
254
|
-
`lang` in attrs ? (forceLangFallback ? `&lang.${langFallback}` : `&lang.${attrs.lang}`) : `&lang.${langFallback}`;
|
|
255
|
-
}
|
|
256
|
-
return query;
|
|
257
|
-
};
|
|
258
|
-
//# sourceMappingURL=main.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/transpilers/vue-sfc/main.ts"],"names":[],"mappings":"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","sourcesContent":["import qs from 'querystring';\r\nimport path from 'path';\r\nimport type { SFCBlock, SFCDescriptor } from 'vue/compiler-sfc';\r\nimport { createDescriptor, setSrcDescriptor } from './utils/descriptorCache';\r\nimport type { SourceMap } from 'rollup';\r\nimport { normalizePath } from '@rollup/pluginutils';\r\nimport { resolveScript, isUseInlineTemplate } from './script';\r\nimport { transformTemplateInMain } from './template';\r\nimport type { RawSourceMap } from 'source-map';\r\nimport { SourceMapConsumer, SourceMapGenerator } from 'source-map';\r\nimport { createRollupError } from './utils/error';\r\nimport { VueTransformerContext, ResolvedOptions } from './types';\r\nimport { transpileCode } from '../esbuild';\r\n\r\nexport const transformMain = (\r\n\tcode: string,\r\n\tfilename: string,\r\n\toptions: ResolvedOptions,\r\n\ttransformerContext: VueTransformerContext,\r\n\tssr: boolean,\r\n\tasCustomElement: boolean\r\n) => {\r\n\tconst { descriptor, errors } = createDescriptor(filename, code, options);\r\n\r\n\tif (errors.length) {\r\n\t\terrors.forEach(error => transformerContext.error(createRollupError(filename, error)));\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// feature information\r\n\tconst attachedProps: [string, string][] = [];\r\n\tconst hasScoped = descriptor.styles.some(s => s.scoped);\r\n\r\n\t// script\r\n\tconst { code: scriptCode, map } = genScriptCode(descriptor, options, transformerContext, ssr);\r\n\r\n\t// template\r\n\tconst hasTemplateImport = descriptor.template && !isUseInlineTemplate(descriptor, true);\r\n\r\n\tlet templateCode = '';\r\n\tlet templateMap: RawSourceMap | undefined;\r\n\tif (hasTemplateImport) {\r\n\t\t({ code: templateCode, map: templateMap } = genTemplateCode(descriptor, options, transformerContext, ssr));\r\n\t}\r\n\r\n\tif (hasTemplateImport) {\r\n\t\tattachedProps.push(ssr ? ['ssrRender', '_sfc_ssrRender'] : ['render', '_sfc_render']);\r\n\t}\r\n\t// styles\r\n\t// Vue styles are disabled by default. However, user could enable them\r\n\t// when importing from compiled libraries\r\n\tconst stylesCode = global.enableVueStyle\r\n\t\t? genStyleCode(descriptor, transformerContext, asCustomElement, attachedProps)\r\n\t\t: '';\r\n\r\n\t// custom blocks\r\n\tconst customBlocksCode = genCustomBlockCode(descriptor, transformerContext);\r\n\r\n\tconst output: string[] = [scriptCode, templateCode, stylesCode, customBlocksCode];\r\n\tif (hasScoped) {\r\n\t\tattachedProps.push([`__scopeId`, JSON.stringify(`data-v-${descriptor.id}`)]);\r\n\t}\r\n\r\n\t// SSR module registration by wrapping user setup\r\n\tif (ssr) {\r\n\t\tconst normalizedFilename = normalizePath(path.relative(options.root, filename));\r\n\t\toutput.push(\r\n\t\t\t`import { useSSRContext as __vite_useSSRContext } from 'vue'`,\r\n\t\t\t`const _sfc_setup = _sfc_main.setup`,\r\n\t\t\t`_sfc_main.setup = (props, ctx) => {`,\r\n\t\t\t` const ssrContext = __vite_useSSRContext()`,\r\n\t\t\t` ;(ssrContext.modules || (ssrContext.modules = new Set())).add(${JSON.stringify(normalizedFilename)})`,\r\n\t\t\t` return _sfc_setup ? _sfc_setup(props, ctx) : undefined`,\r\n\t\t\t`}`\r\n\t\t);\r\n\t}\r\n\r\n\t// if the template is inlined into the main module (indicated by the presence\r\n\t// of templateMap, we need to concatenate the two source maps.\r\n\tlet resolvedMap = options.sourceMap ? map : undefined;\r\n\tif (resolvedMap && templateMap) {\r\n\t\tconst generator = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(map));\r\n\t\tconst offset = (scriptCode.match(/\\r?\\n/g)?.length ?? 0) + 1;\r\n\t\tconst templateMapConsumer = new SourceMapConsumer(templateMap);\r\n\t\ttemplateMapConsumer.eachMapping(m => {\r\n\t\t\tgenerator.addMapping({\r\n\t\t\t\tsource: m.source,\r\n\t\t\t\toriginal: { line: m.originalLine, column: m.originalColumn },\r\n\t\t\t\tgenerated: {\r\n\t\t\t\t\tline: m.generatedLine + offset,\r\n\t\t\t\t\tcolumn: m.generatedColumn\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\tresolvedMap = (generator as any).toJSON() as RawSourceMap;\r\n\t\t// if this is a template only update, we will be reusing a cached version\r\n\t\t// of the main module compile result, which has outdated sourcesContent.\r\n\t\tresolvedMap.sourcesContent = templateMap.sourcesContent;\r\n\t}\r\n\r\n\tif (!attachedProps.length) {\r\n\t\toutput.push(`export default _sfc_main`);\r\n\t} else {\r\n\t\toutput.push(\r\n\t\t\t`import _export_sfc from 'export default (sfc, props) => {\r\n\t\t\t\t\tconst target = sfc.__vccOpts || sfc;\r\n\t\t\t\t\tfor (const [key, val] of props) {\r\n\t\t\t\t\t\ttarget[key] = val;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}'`,\r\n\t\t\t`export default /*#__PURE__*/_export_sfc(_sfc_main, [${attachedProps\r\n\t\t\t\t.map(([key, val]) => `['${key}',${val}]`)\r\n\t\t\t\t.join(',')}])`\r\n\t\t);\r\n\t}\r\n\r\n\t// handle TS transpilation\r\n\tlet resolvedCode = output.join('\\n');\r\n\tif (\r\n\t\t(descriptor.script?.lang === 'ts' || descriptor.scriptSetup?.lang === 'ts') &&\r\n\t\t!descriptor.script?.src // only normal script can have src\r\n\t) {\r\n\t\tconst { output, sourceMap } = transpileCode(resolvedCode, filename, '.ts');\r\n\t\tresolvedCode = output;\r\n\t\tresolvedMap = resolvedMap ? (sourceMap as any) : resolvedMap;\r\n\t}\r\n\r\n\treturn {\r\n\t\tcode: resolvedCode,\r\n\t\tmap: resolvedMap || {\r\n\t\t\tmappings: ''\r\n\t\t}\r\n\t};\r\n};\r\n\r\nconst genTemplateCode = (\r\n\tdescriptor: SFCDescriptor,\r\n\toptions: ResolvedOptions,\r\n\ttransformerContext: VueTransformerContext,\r\n\tssr: boolean\r\n) => {\r\n\tconst template = descriptor.template!;\r\n\r\n\t// If the template is not using pre-processor AND is not using external src,\r\n\t// compile and inline it directly in the main module. When served in vite this\r\n\t// saves an extra request per SFC which can improve load performance.\r\n\tif (!template.lang && !template.src) {\r\n\t\treturn transformTemplateInMain(template.content, descriptor, options, transformerContext, ssr);\r\n\t} else {\r\n\t\tif (template.src) {\r\n\t\t\tlinkSrcToDescriptor(template.src, descriptor, transformerContext);\r\n\t\t}\r\n\t\tconst src = template.src || descriptor.filename;\r\n\t\tconst srcQuery = template.src ? `&src=${descriptor.id}` : ``;\r\n\t\tconst attrsQuery = attrsToQuery(template.attrs, 'js', true);\r\n\t\tconst query = `?vue&type=template${srcQuery}${attrsQuery}`;\r\n\t\tconst request = JSON.stringify(src + query);\r\n\t\tconst renderFnName = ssr ? 'ssrRender' : 'render';\r\n\t\treturn {\r\n\t\t\tcode: `import { ${renderFnName} as _sfc_${renderFnName} } from ${request}`,\r\n\t\t\tmap: undefined as any\r\n\t\t};\r\n\t}\r\n};\r\n\r\nconst genScriptCode = (\r\n\tdescriptor: SFCDescriptor,\r\n\toptions: ResolvedOptions,\r\n\ttransformerContext: VueTransformerContext,\r\n\tssr: boolean\r\n): {\r\n\tcode: string;\r\n\tmap: RawSourceMap;\r\n} => {\r\n\tlet scriptCode = `const _sfc_main = {}`;\r\n\tlet map: RawSourceMap | SourceMap | undefined;\r\n\r\n\tconst script = resolveScript(descriptor, options, ssr);\r\n\tif (script) {\r\n\t\t// If the script is js/ts and has no external src, it can be directly placed\r\n\t\t// in the main module.\r\n\t\tif ((!script.lang || script.lang === 'ts') && !script.src) {\r\n\t\t\tscriptCode = options.compiler.rewriteDefault(\r\n\t\t\t\tscript.content,\r\n\t\t\t\t'_sfc_main',\r\n\t\t\t\tscript.lang === 'ts' ? ['typescript'] : undefined\r\n\t\t\t);\r\n\t\t\tmap = script.map;\r\n\t\t} else {\r\n\t\t\tif (script.src) {\r\n\t\t\t\tlinkSrcToDescriptor(script.src, descriptor, transformerContext);\r\n\t\t\t}\r\n\t\t\tconst src = script.src || descriptor.filename;\r\n\t\t\tconst langFallback = (script.src && path.extname(src).slice(1)) || 'js';\r\n\t\t\tconst attrsQuery = attrsToQuery(script.attrs, langFallback);\r\n\t\t\tconst srcQuery = script.src ? `&src=${descriptor.id}` : ``;\r\n\t\t\tconst query = `?vue&type=script${srcQuery}${attrsQuery}`;\r\n\t\t\tconst request = JSON.stringify(src + query);\r\n\t\t\tscriptCode = `import _sfc_main from ${request}\\n` + `export * from ${request}`; // support named exports\r\n\t\t}\r\n\t}\r\n\treturn {\r\n\t\tcode: scriptCode,\r\n\t\tmap: map as any\r\n\t};\r\n};\r\n\r\nconst genStyleCode = (\r\n\tdescriptor: SFCDescriptor,\r\n\ttransformerContext: VueTransformerContext,\r\n\tasCustomElement: boolean,\r\n\tattachedProps: [string, string][]\r\n) => {\r\n\tlet stylesCode = ``;\r\n\tlet cssModulesMap: Record<string, string> | undefined;\r\n\tif (descriptor.styles.length) {\r\n\t\tfor (let i = 0; i < descriptor.styles.length; i++) {\r\n\t\t\tconst style = descriptor.styles[i];\r\n\t\t\tif (style.src) {\r\n\t\t\t\tlinkSrcToDescriptor(style.src, descriptor, transformerContext);\r\n\t\t\t}\r\n\t\t\tconst src = style.src || descriptor.filename;\r\n\t\t\t// do not include module in default query, since we use it to indicate\r\n\t\t\t// that the module needs to export the modules json\r\n\t\t\tconst attrsQuery = attrsToQuery(style.attrs, 'css');\r\n\t\t\tconst srcQuery = style.src ? `&src=${descriptor.id}` : ``;\r\n\t\t\tconst directQuery = asCustomElement ? `&inline` : ``;\r\n\t\t\tconst query = `?vue&type=style&index=${i}${srcQuery}${directQuery}`;\r\n\t\t\tconst styleRequest = src + query + attrsQuery;\r\n\t\t\tif (style.module) {\r\n\t\t\t\tif (asCustomElement) {\r\n\t\t\t\t\tthrow new Error(`<style module> is not supported in custom elements mode.`);\r\n\t\t\t\t}\r\n\t\t\t\tconst [importCode, nameMap] = genCSSModulesCode(i, styleRequest, style.module);\r\n\t\t\t\tstylesCode += importCode;\r\n\t\t\t\tObject.assign((cssModulesMap ||= {}), nameMap);\r\n\t\t\t} else {\r\n\t\t\t\tif (asCustomElement) {\r\n\t\t\t\t\tstylesCode += `\\nimport _style_${i} from ${JSON.stringify(styleRequest)}`;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstylesCode += `\\nimport ${JSON.stringify(styleRequest)}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// TODO SSR critical CSS collection\r\n\t\t}\r\n\t\tif (asCustomElement) {\r\n\t\t\tattachedProps.push([`styles`, `[${descriptor.styles.map((_, i) => `_style_${i}`).join(',')}]`]);\r\n\t\t}\r\n\t}\r\n\tif (cssModulesMap) {\r\n\t\tconst mappingCode =\r\n\t\t\tObject.entries(cssModulesMap).reduce((code, [key, value]) => code + `\"${key}\":${value},\\n`, '{\\n') + '}';\r\n\t\tstylesCode += `\\nconst cssModules = ${mappingCode}`;\r\n\t\tattachedProps.push([`__cssModules`, `cssModules`]);\r\n\t}\r\n\treturn stylesCode;\r\n};\r\n\r\nconst genCSSModulesCode = (\r\n\tindex: number,\r\n\trequest: string,\r\n\tmoduleName: string | boolean\r\n): [importCode: string, nameMap: Record<string, string>] => {\r\n\tconst styleVar = `style${index}`;\r\n\tconst exposedName = typeof moduleName === 'string' ? moduleName : '$style';\r\n\t// inject `.module` before extension so vite handles it as css module\r\n\tconst moduleRequest = request.replace(/\\.(\\w+)$/, '.module.$1');\r\n\treturn [`\\nimport ${styleVar} from ${JSON.stringify(moduleRequest)}`, { [exposedName]: styleVar }];\r\n};\r\n\r\nconst genCustomBlockCode = (descriptor: SFCDescriptor, transformerContext: VueTransformerContext) => {\r\n\tlet code = '';\r\n\tfor (let index = 0; index < descriptor.customBlocks.length; index++) {\r\n\t\tconst block = descriptor.customBlocks[index];\r\n\t\tif (block.src) {\r\n\t\t\tlinkSrcToDescriptor(block.src, descriptor, transformerContext);\r\n\t\t}\r\n\t\tconst src = block.src || descriptor.filename;\r\n\t\tconst attrsQuery = attrsToQuery(block.attrs, block.type);\r\n\t\tconst srcQuery = block.src ? `&src` : ``;\r\n\t\tconst query = `?vue&type=${block.type}&index=${index}${srcQuery}${attrsQuery}`;\r\n\t\tconst request = JSON.stringify(src + query);\r\n\t\tcode += `import block${index} from ${request}\\n`;\r\n\t\tcode += `if (typeof block${index} === 'function') block${index}(_sfc_main)\\n`;\r\n\t}\r\n\treturn code;\r\n};\r\n\r\n/**\r\n * For blocks with src imports, it is important to link the imported file\r\n * with its owner SFC descriptor so that we can get the information about\r\n * the owner SFC when compiling that file in the transform phase.\r\n */\r\nconst linkSrcToDescriptor = (src: string, descriptor: SFCDescriptor, transformerContext: VueTransformerContext) => {\r\n\tconst srcFile = transformerContext.resolve(descriptor.filename)?.id || src;\r\n\t// #1812 if the src points to a dep file, the resolved id may contain a\r\n\t// version query.\r\n\tsetSrcDescriptor(srcFile.replace(/\\?.*$/, ''), descriptor);\r\n};\r\n\r\n// these are built-in query parameters so should be ignored\r\n// if the user happen to add them as attrs\r\nconst ignoreList = ['id', 'index', 'src', 'type', 'lang', 'module'];\r\n\r\nconst attrsToQuery = (attrs: SFCBlock['attrs'], langFallback?: string, forceLangFallback = false): string => {\r\n\tlet query = ``;\r\n\tfor (const name in attrs) {\r\n\t\tconst value = attrs[name];\r\n\t\tif (!ignoreList.includes(name)) {\r\n\t\t\tquery += `&${qs.escape(name)}${value ? `=${qs.escape(String(value))}` : ``}`;\r\n\t\t}\r\n\t}\r\n\tif (langFallback || attrs.lang) {\r\n\t\tquery +=\r\n\t\t\t`lang` in attrs ? (forceLangFallback ? `&lang.${langFallback}` : `&lang.${attrs.lang}`) : `&lang.${langFallback}`;\r\n\t}\r\n\treturn query;\r\n};\r\n"]}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { SFCDescriptor, SFCScriptBlock } from 'vue/compiler-sfc';
|
|
2
|
-
import type { ResolvedOptions } from './types';
|
|
3
|
-
export declare const getResolvedScript: (descriptor: SFCDescriptor, ssr: boolean) => SFCScriptBlock | null | undefined;
|
|
4
|
-
export declare const isUseInlineTemplate: (descriptor: SFCDescriptor, isProd: boolean) => boolean;
|
|
5
|
-
export declare const resolveScript: (descriptor: SFCDescriptor, options: ResolvedOptions, ssr: boolean) => SFCScriptBlock | null;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveScript = exports.isUseInlineTemplate = exports.getResolvedScript = void 0;
|
|
4
|
-
const template_1 = require("./template");
|
|
5
|
-
// ssr and non ssr builds would output different script content
|
|
6
|
-
const clientCache = new WeakMap();
|
|
7
|
-
const ssrCache = new WeakMap();
|
|
8
|
-
const getResolvedScript = (descriptor, ssr) => {
|
|
9
|
-
return (ssr ? ssrCache : clientCache).get(descriptor);
|
|
10
|
-
};
|
|
11
|
-
exports.getResolvedScript = getResolvedScript;
|
|
12
|
-
// Check if we can use compile template as inlined render function
|
|
13
|
-
// inside <script setup>. This can only be done for build because
|
|
14
|
-
// inlined template cannot be individually hot updated.
|
|
15
|
-
const isUseInlineTemplate = (descriptor, isProd) => {
|
|
16
|
-
return isProd && !!descriptor.scriptSetup && !descriptor.template?.src;
|
|
17
|
-
};
|
|
18
|
-
exports.isUseInlineTemplate = isUseInlineTemplate;
|
|
19
|
-
const resolveScript = (descriptor, options, ssr) => {
|
|
20
|
-
if (!descriptor.script && !descriptor.scriptSetup) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
const cacheToUse = ssr ? ssrCache : clientCache;
|
|
24
|
-
const cached = cacheToUse.get(descriptor);
|
|
25
|
-
if (cached) {
|
|
26
|
-
return cached;
|
|
27
|
-
}
|
|
28
|
-
let resolved = null;
|
|
29
|
-
resolved = options.compiler.compileScript(descriptor, {
|
|
30
|
-
...options.script,
|
|
31
|
-
id: descriptor.id,
|
|
32
|
-
isProd: options.isProduction,
|
|
33
|
-
inlineTemplate: (0, exports.isUseInlineTemplate)(descriptor, true),
|
|
34
|
-
templateOptions: (0, template_1.resolveTemplateCompilerOptions)(descriptor, options, ssr),
|
|
35
|
-
sourceMap: options.sourceMap
|
|
36
|
-
});
|
|
37
|
-
cacheToUse.set(descriptor, resolved);
|
|
38
|
-
return resolved;
|
|
39
|
-
};
|
|
40
|
-
exports.resolveScript = resolveScript;
|
|
41
|
-
//# sourceMappingURL=script.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../../src/transpilers/vue-sfc/script.ts"],"names":[],"mappings":";;;AAEA,yCAA4D;AAE5D,+DAA+D;AAC/D,MAAM,WAAW,GAAG,IAAI,OAAO,EAAwC,CAAC;AACxE,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAwC,CAAC;AAE9D,MAAM,iBAAiB,GAAG,CAAC,UAAyB,EAAE,GAAY,EAAqC,EAAE;IAC/G,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEF,kEAAkE;AAClE,iEAAiE;AACjE,uDAAuD;AAChD,MAAM,mBAAmB,GAAG,CAAC,UAAyB,EAAE,MAAe,EAAW,EAAE;IAC1F,OAAO,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;AACxE,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEK,MAAM,aAAa,GAAG,CAC5B,UAAyB,EACzB,OAAwB,EACxB,GAAY,EACY,EAAE;IAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,GAA0B,IAAI,CAAC;IAE3C,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE;QACrD,GAAG,OAAO,CAAC,MAAM;QACjB,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,MAAM,EAAE,OAAO,CAAC,YAAY;QAC5B,cAAc,EAAE,IAAA,2BAAmB,EAAC,UAAU,EAAE,IAAI,CAAC;QACrD,eAAe,EAAE,IAAA,yCAA8B,EAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC;QACzE,SAAS,EAAE,OAAO,CAAC,SAAS;KAC5B,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AA5BW,QAAA,aAAa,iBA4BxB","sourcesContent":["import type { SFCDescriptor, SFCScriptBlock } from 'vue/compiler-sfc';\r\nimport type { ResolvedOptions } from './types';\r\nimport { resolveTemplateCompilerOptions } from './template';\r\n\r\n// ssr and non ssr builds would output different script content\r\nconst clientCache = new WeakMap<SFCDescriptor, SFCScriptBlock | null>();\r\nconst ssrCache = new WeakMap<SFCDescriptor, SFCScriptBlock | null>();\r\n\r\nexport const getResolvedScript = (descriptor: SFCDescriptor, ssr: boolean): SFCScriptBlock | null | undefined => {\r\n\treturn (ssr ? ssrCache : clientCache).get(descriptor);\r\n};\r\n\r\n// Check if we can use compile template as inlined render function\r\n// inside <script setup>. This can only be done for build because\r\n// inlined template cannot be individually hot updated.\r\nexport const isUseInlineTemplate = (descriptor: SFCDescriptor, isProd: boolean): boolean => {\r\n\treturn isProd && !!descriptor.scriptSetup && !descriptor.template?.src;\r\n};\r\n\r\nexport const resolveScript = (\r\n\tdescriptor: SFCDescriptor,\r\n\toptions: ResolvedOptions,\r\n\tssr: boolean\r\n): SFCScriptBlock | null => {\r\n\tif (!descriptor.script && !descriptor.scriptSetup) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst cacheToUse = ssr ? ssrCache : clientCache;\r\n\tconst cached = cacheToUse.get(descriptor);\r\n\tif (cached) {\r\n\t\treturn cached;\r\n\t}\r\n\r\n\tlet resolved: SFCScriptBlock | null = null;\r\n\r\n\tresolved = options.compiler.compileScript(descriptor, {\r\n\t\t...options.script,\r\n\t\tid: descriptor.id,\r\n\t\tisProd: options.isProduction,\r\n\t\tinlineTemplate: isUseInlineTemplate(descriptor, true),\r\n\t\ttemplateOptions: resolveTemplateCompilerOptions(descriptor, options, ssr),\r\n\t\tsourceMap: options.sourceMap\r\n\t});\r\n\r\n\tcacheToUse.set(descriptor, resolved);\r\n\treturn resolved;\r\n};\r\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { SFCDescriptor, SFCTemplateCompileOptions, SFCTemplateCompileResults } from 'vue/compiler-sfc';
|
|
2
|
-
import type { ResolvedOptions, VueTransformerContext } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* transform the template directly in the main SFC module
|
|
5
|
-
*/
|
|
6
|
-
export declare const transformTemplateInMain: (code: string, descriptor: SFCDescriptor, options: ResolvedOptions, transformerContext: VueTransformerContext, ssr: boolean) => SFCTemplateCompileResults;
|
|
7
|
-
export declare const compile: (code: string, descriptor: SFCDescriptor, options: ResolvedOptions, transformerContext: VueTransformerContext, ssr: boolean) => SFCTemplateCompileResults;
|
|
8
|
-
export declare const resolveTemplateCompilerOptions: (descriptor: SFCDescriptor, options: ResolvedOptions, ssr: boolean) => Omit<SFCTemplateCompileOptions, "source"> | undefined;
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveTemplateCompilerOptions = exports.compile = exports.transformTemplateInMain = void 0;
|
|
4
|
-
const script_1 = require("./script");
|
|
5
|
-
const error_1 = require("./utils/error");
|
|
6
|
-
/**
|
|
7
|
-
* transform the template directly in the main SFC module
|
|
8
|
-
*/
|
|
9
|
-
const transformTemplateInMain = (code, descriptor, options, transformerContext, ssr) => {
|
|
10
|
-
const result = (0, exports.compile)(code, descriptor, options, transformerContext, ssr);
|
|
11
|
-
return {
|
|
12
|
-
...result,
|
|
13
|
-
code: result.code.replace(/\nexport (function|const) (render|ssrRender)/, '\n$1 _sfc_$2')
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
exports.transformTemplateInMain = transformTemplateInMain;
|
|
17
|
-
const compile = (code, descriptor, options, transformerContext, ssr) => {
|
|
18
|
-
const filename = descriptor.filename;
|
|
19
|
-
const result = options.compiler.compileTemplate({
|
|
20
|
-
...(0, exports.resolveTemplateCompilerOptions)(descriptor, options, ssr),
|
|
21
|
-
source: code
|
|
22
|
-
});
|
|
23
|
-
if (result.errors.length) {
|
|
24
|
-
result.errors.forEach(error => transformerContext.error(typeof error === 'string' ? { id: filename, message: error } : (0, error_1.createRollupError)(filename, error)));
|
|
25
|
-
}
|
|
26
|
-
if (result.tips.length) {
|
|
27
|
-
result.tips.forEach(tip => transformerContext.warn({
|
|
28
|
-
id: filename,
|
|
29
|
-
message: tip
|
|
30
|
-
}));
|
|
31
|
-
}
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
exports.compile = compile;
|
|
35
|
-
const resolveTemplateCompilerOptions = (descriptor, options, ssr) => {
|
|
36
|
-
const block = descriptor.template;
|
|
37
|
-
if (!block) {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
const resolvedScript = (0, script_1.getResolvedScript)(descriptor, ssr);
|
|
41
|
-
const hasScoped = descriptor.styles.some(s => s.scoped);
|
|
42
|
-
const { id, filename, cssVars } = descriptor;
|
|
43
|
-
let transformAssetUrls = options.template?.transformAssetUrls;
|
|
44
|
-
// compiler-sfc should export `AssetURLOptions`
|
|
45
|
-
// build: force all asset urls into import requests so that they go through
|
|
46
|
-
// the assets plugin for asset registration
|
|
47
|
-
const assetUrlOptions = {
|
|
48
|
-
includeAbsolute: true
|
|
49
|
-
};
|
|
50
|
-
if (transformAssetUrls && typeof transformAssetUrls === 'object') {
|
|
51
|
-
// presence of array fields means this is raw tags config
|
|
52
|
-
if (Object.values(transformAssetUrls).some(val => Array.isArray(val))) {
|
|
53
|
-
transformAssetUrls = {
|
|
54
|
-
...assetUrlOptions,
|
|
55
|
-
tags: transformAssetUrls
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
transformAssetUrls = { ...transformAssetUrls, ...assetUrlOptions };
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
transformAssetUrls = false;
|
|
64
|
-
}
|
|
65
|
-
let preprocessOptions = block.lang && options.template?.preprocessOptions;
|
|
66
|
-
if (block.lang === 'pug') {
|
|
67
|
-
preprocessOptions = {
|
|
68
|
-
doctype: 'html',
|
|
69
|
-
...preprocessOptions
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
// if using TS, support TS syntax in template expressions
|
|
73
|
-
const expressionPlugins = options.template?.compilerOptions?.expressionPlugins || [];
|
|
74
|
-
const lang = descriptor.scriptSetup?.lang || descriptor.script?.lang;
|
|
75
|
-
if (lang && /tsx?$/.test(lang) && !expressionPlugins.includes('typescript')) {
|
|
76
|
-
expressionPlugins.push('typescript');
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
...options.template,
|
|
80
|
-
id,
|
|
81
|
-
filename,
|
|
82
|
-
scoped: hasScoped,
|
|
83
|
-
slotted: descriptor.slotted,
|
|
84
|
-
isProd: options.isProduction,
|
|
85
|
-
inMap: block.src ? undefined : block.map,
|
|
86
|
-
ssr,
|
|
87
|
-
ssrCssVars: cssVars,
|
|
88
|
-
transformAssetUrls: transformAssetUrls,
|
|
89
|
-
preprocessLang: block.lang,
|
|
90
|
-
preprocessOptions,
|
|
91
|
-
compilerOptions: {
|
|
92
|
-
...options.template?.compilerOptions,
|
|
93
|
-
scopeId: hasScoped ? `data-v-${id}` : undefined,
|
|
94
|
-
bindingMetadata: resolvedScript ? resolvedScript.bindings : undefined,
|
|
95
|
-
expressionPlugins,
|
|
96
|
-
sourceMap: options.sourceMap
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
};
|
|
100
|
-
exports.resolveTemplateCompilerOptions = resolveTemplateCompilerOptions;
|
|
101
|
-
//# sourceMappingURL=template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/transpilers/vue-sfc/template.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n\tSFCDescriptor,\r\n\tSFCTemplateCompileOptions,\r\n\tSFCTemplateCompileResults,\r\n\tCompilerOptions\r\n} from 'vue/compiler-sfc';\r\nimport type { ResolvedOptions, VueTransformerContext } from './types';\r\nimport { getResolvedScript } from './script';\r\nimport { createRollupError } from './utils/error';\r\n\r\n/**\r\n * transform the template directly in the main SFC module\r\n */\r\nexport const transformTemplateInMain = (\r\n\tcode: string,\r\n\tdescriptor: SFCDescriptor,\r\n\toptions: ResolvedOptions,\r\n\ttransformerContext: VueTransformerContext,\r\n\tssr: boolean\r\n): SFCTemplateCompileResults => {\r\n\tconst result = compile(code, descriptor, options, transformerContext, ssr);\r\n\treturn {\r\n\t\t...result,\r\n\t\tcode: result.code.replace(/\\nexport (function|const) (render|ssrRender)/, '\\n$1 _sfc_$2')\r\n\t};\r\n};\r\n\r\nexport const compile = (\r\n\tcode: string,\r\n\tdescriptor: SFCDescriptor,\r\n\toptions: ResolvedOptions,\r\n\ttransformerContext: VueTransformerContext,\r\n\tssr: boolean\r\n) => {\r\n\tconst filename = descriptor.filename;\r\n\tconst result = options.compiler.compileTemplate({\r\n\t\t...resolveTemplateCompilerOptions(descriptor, options, ssr)!,\r\n\t\tsource: code\r\n\t});\r\n\r\n\tif (result.errors.length) {\r\n\t\tresult.errors.forEach(error =>\r\n\t\t\ttransformerContext.error(\r\n\t\t\t\ttypeof error === 'string' ? { id: filename, message: error } : createRollupError(filename, error)\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tif (result.tips.length) {\r\n\t\tresult.tips.forEach(tip =>\r\n\t\t\ttransformerContext.warn({\r\n\t\t\t\tid: filename,\r\n\t\t\t\tmessage: tip\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\treturn result;\r\n};\r\n\r\nexport const resolveTemplateCompilerOptions = (\r\n\tdescriptor: SFCDescriptor,\r\n\toptions: ResolvedOptions,\r\n\tssr: boolean\r\n): Omit<SFCTemplateCompileOptions, 'source'> | undefined => {\r\n\tconst block = descriptor.template;\r\n\tif (!block) {\r\n\t\treturn undefined;\r\n\t}\r\n\tconst resolvedScript = getResolvedScript(descriptor, ssr);\r\n\tconst hasScoped = descriptor.styles.some(s => s.scoped);\r\n\tconst { id, filename, cssVars } = descriptor;\r\n\r\n\tlet transformAssetUrls = options.template?.transformAssetUrls;\r\n\r\n\t// compiler-sfc should export `AssetURLOptions`\r\n\t// build: force all asset urls into import requests so that they go through\r\n\t// the assets plugin for asset registration\r\n\r\n\tconst assetUrlOptions = {\r\n\t\tincludeAbsolute: true\r\n\t};\r\n\r\n\tif (transformAssetUrls && typeof transformAssetUrls === 'object') {\r\n\t\t// presence of array fields means this is raw tags config\r\n\t\tif (Object.values(transformAssetUrls).some(val => Array.isArray(val))) {\r\n\t\t\ttransformAssetUrls = {\r\n\t\t\t\t...assetUrlOptions,\r\n\t\t\t\ttags: transformAssetUrls as any\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\ttransformAssetUrls = { ...transformAssetUrls, ...assetUrlOptions };\r\n\t\t}\r\n\t} else {\r\n\t\ttransformAssetUrls = false;\r\n\t}\r\n\r\n\tlet preprocessOptions = block.lang && options.template?.preprocessOptions;\r\n\tif (block.lang === 'pug') {\r\n\t\tpreprocessOptions = {\r\n\t\t\tdoctype: 'html',\r\n\t\t\t...preprocessOptions\r\n\t\t};\r\n\t}\r\n\r\n\t// if using TS, support TS syntax in template expressions\r\n\tconst expressionPlugins: CompilerOptions['expressionPlugins'] =\r\n\t\toptions.template?.compilerOptions?.expressionPlugins || [];\r\n\tconst lang = descriptor.scriptSetup?.lang || descriptor.script?.lang;\r\n\tif (lang && /tsx?$/.test(lang) && !expressionPlugins.includes('typescript')) {\r\n\t\texpressionPlugins.push('typescript');\r\n\t}\r\n\r\n\treturn {\r\n\t\t...options.template,\r\n\t\tid,\r\n\t\tfilename,\r\n\t\tscoped: hasScoped,\r\n\t\tslotted: descriptor.slotted,\r\n\t\tisProd: options.isProduction,\r\n\t\tinMap: block.src ? undefined : block.map,\r\n\t\tssr,\r\n\t\tssrCssVars: cssVars,\r\n\t\ttransformAssetUrls: transformAssetUrls,\r\n\t\tpreprocessLang: block.lang,\r\n\t\tpreprocessOptions,\r\n\t\tcompilerOptions: {\r\n\t\t\t...options.template?.compilerOptions,\r\n\t\t\tscopeId: hasScoped ? `data-v-${id}` : undefined,\r\n\t\t\tbindingMetadata: resolvedScript ? resolvedScript.bindings : undefined,\r\n\t\t\texpressionPlugins,\r\n\t\t\tsourceMap: options.sourceMap\r\n\t\t}\r\n\t};\r\n};\r\n"]}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { SFCScriptCompileOptions, SFCStyleCompileOptions, SFCTemplateCompileOptions } from 'vue/compiler-sfc';
|
|
2
|
-
import type { RollupError, RollupLog } from 'rollup';
|
|
3
|
-
import type * as _compiler from 'vue/compiler-sfc';
|
|
4
|
-
export interface Options {
|
|
5
|
-
include?: string | RegExp | (string | RegExp)[];
|
|
6
|
-
exclude?: string | RegExp | (string | RegExp)[];
|
|
7
|
-
isProduction?: boolean;
|
|
8
|
-
script?: Partial<SFCScriptCompileOptions>;
|
|
9
|
-
template?: Partial<Pick<SFCTemplateCompileOptions, 'compiler' | 'compilerOptions' | 'preprocessOptions' | 'preprocessCustomRequire' | 'transformAssetUrls'>>;
|
|
10
|
-
style?: Partial<SFCStyleCompileOptions>;
|
|
11
|
-
/**
|
|
12
|
-
* Transform Vue SFCs into custom elements.
|
|
13
|
-
* - `true`: all `*.vue` imports are converted into custom elements
|
|
14
|
-
* - `string | RegExp`: matched files are converted into custom elements
|
|
15
|
-
*
|
|
16
|
-
* @default /\.ce\.vue$/
|
|
17
|
-
*/
|
|
18
|
-
customElement?: boolean | string | RegExp | (string | RegExp)[];
|
|
19
|
-
/**
|
|
20
|
-
* Enable Vue reactivity transform (experimental).
|
|
21
|
-
* https://github.com/vuejs/core/tree/master/packages/reactivity-transform
|
|
22
|
-
* - `true`: transform will be enabled for all vue,js(x),ts(x) files except
|
|
23
|
-
* those inside node_modules
|
|
24
|
-
* - `string | RegExp`: apply to vue + only matched files (will include
|
|
25
|
-
* node_modules, so specify directories in necessary)
|
|
26
|
-
* - `false`: disable in all cases
|
|
27
|
-
*
|
|
28
|
-
* @default false
|
|
29
|
-
*/
|
|
30
|
-
reactivityTransform?: boolean | string | RegExp | (string | RegExp)[];
|
|
31
|
-
/**
|
|
32
|
-
* Use custom compiler-sfc instance. Can be used to force a specific version.
|
|
33
|
-
*/
|
|
34
|
-
compiler?: typeof _compiler;
|
|
35
|
-
}
|
|
36
|
-
export interface ResolvedOptions extends Options {
|
|
37
|
-
compiler: typeof _compiler;
|
|
38
|
-
root: string;
|
|
39
|
-
sourceMap: boolean;
|
|
40
|
-
}
|
|
41
|
-
export interface VueResolvedId {
|
|
42
|
-
external: boolean | 'absolute';
|
|
43
|
-
id: string;
|
|
44
|
-
}
|
|
45
|
-
export interface VueTransformerContext {
|
|
46
|
-
error: (err: RollupError | string, pos?: number | {
|
|
47
|
-
column: number;
|
|
48
|
-
line: number;
|
|
49
|
-
}) => void;
|
|
50
|
-
resolve: (id: string) => VueResolvedId | null;
|
|
51
|
-
warn: (warning: RollupLog | string, pos?: number | {
|
|
52
|
-
column: number;
|
|
53
|
-
line: number;
|
|
54
|
-
}) => void;
|
|
55
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/transpilers/vue-sfc/types.ts"],"names":[],"mappings":"","sourcesContent":["import { SFCScriptCompileOptions, SFCStyleCompileOptions, SFCTemplateCompileOptions } from 'vue/compiler-sfc';\r\nimport type { RollupError, RollupLog } from 'rollup';\r\nimport type * as _compiler from 'vue/compiler-sfc';\r\n\r\nexport interface Options {\r\n\tinclude?: string | RegExp | (string | RegExp)[];\r\n\texclude?: string | RegExp | (string | RegExp)[];\r\n\r\n\tisProduction?: boolean;\r\n\r\n\t// options to pass on to vue/compiler-sfc\r\n\tscript?: Partial<SFCScriptCompileOptions>;\r\n\ttemplate?: Partial<\r\n\t\tPick<\r\n\t\t\tSFCTemplateCompileOptions,\r\n\t\t\t'compiler' | 'compilerOptions' | 'preprocessOptions' | 'preprocessCustomRequire' | 'transformAssetUrls'\r\n\t\t>\r\n\t>;\r\n\tstyle?: Partial<SFCStyleCompileOptions>;\r\n\r\n\t/**\r\n\t * Transform Vue SFCs into custom elements.\r\n\t * - `true`: all `*.vue` imports are converted into custom elements\r\n\t * - `string | RegExp`: matched files are converted into custom elements\r\n\t *\r\n\t * @default /\\.ce\\.vue$/\r\n\t */\r\n\tcustomElement?: boolean | string | RegExp | (string | RegExp)[];\r\n\r\n\t/**\r\n\t * Enable Vue reactivity transform (experimental).\r\n\t * https://github.com/vuejs/core/tree/master/packages/reactivity-transform\r\n\t * - `true`: transform will be enabled for all vue,js(x),ts(x) files except\r\n\t * those inside node_modules\r\n\t * - `string | RegExp`: apply to vue + only matched files (will include\r\n\t * node_modules, so specify directories in necessary)\r\n\t * - `false`: disable in all cases\r\n\t *\r\n\t * @default false\r\n\t */\r\n\treactivityTransform?: boolean | string | RegExp | (string | RegExp)[];\r\n\r\n\t/**\r\n\t * Use custom compiler-sfc instance. Can be used to force a specific version.\r\n\t */\r\n\tcompiler?: typeof _compiler;\r\n}\r\n\r\nexport interface ResolvedOptions extends Options {\r\n\tcompiler: typeof _compiler;\r\n\troot: string;\r\n\tsourceMap: boolean;\r\n}\r\n\r\nexport interface VueResolvedId {\r\n\texternal: boolean | 'absolute';\r\n\tid: string;\r\n}\r\n\r\nexport interface VueTransformerContext {\r\n\terror: (err: RollupError | string, pos?: number | { column: number; line: number }) => void;\r\n\tresolve: (id: string) => VueResolvedId | null;\r\n\twarn: (warning: RollupLog | string, pos?: number | { column: number; line: number }) => void;\r\n}\r\n"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { CompilerError, SFCDescriptor } from 'vue/compiler-sfc';
|
|
2
|
-
import type { VueQuery } from './query';
|
|
3
|
-
import type { ResolvedOptions } from '../types';
|
|
4
|
-
export interface SFCParseResult {
|
|
5
|
-
descriptor: SFCDescriptor;
|
|
6
|
-
errors: Array<CompilerError | SyntaxError>;
|
|
7
|
-
}
|
|
8
|
-
export declare const createDescriptor: (filename: string, source: string, { root, isProduction, sourceMap, compiler }: ResolvedOptions) => SFCParseResult;
|
|
9
|
-
export declare const getPrevDescriptor: (filename: string) => SFCDescriptor | undefined;
|
|
10
|
-
export declare const setPrevDescriptor: (filename: string, entry: SFCDescriptor) => void;
|
|
11
|
-
export declare const getDescriptor: (source: string, filename: string, options: ResolvedOptions, createIfNotFound?: boolean) => SFCDescriptor | undefined;
|
|
12
|
-
export declare const getSrcDescriptor: (filename: string, query: VueQuery) => SFCDescriptor;
|
|
13
|
-
export declare const setSrcDescriptor: (filename: string, entry: SFCDescriptor) => void;
|