@lynxwall/cucumber-tsflow 7.5.0 → 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.
Files changed (98) hide show
  1. package/README.md +21 -5
  2. package/bin/cucumber-tsflow +3 -3
  3. package/bin/cucumber-tsflow.js +0 -0
  4. package/lib/api/convert-configuration.d.ts +1 -1
  5. package/lib/api/convert-configuration.js +62 -19
  6. package/lib/api/convert-configuration.js.map +1 -1
  7. package/lib/api/load-configuration.js +223 -101
  8. package/lib/api/load-configuration.js.map +1 -1
  9. package/lib/api/load-support.d.ts +14 -0
  10. package/lib/api/load-support.js +112 -0
  11. package/lib/api/load-support.js.map +1 -1
  12. package/lib/cli/index.js +61 -13
  13. package/lib/cli/index.js.map +1 -1
  14. package/lib/cli/run.js +29 -15
  15. package/lib/cli/run.js.map +1 -1
  16. package/lib/transpilers/esm/esbuild-transpiler-cjs.js +118 -15
  17. package/lib/transpilers/esm/esbuild-transpiler.mjs +27 -6
  18. package/lib/transpilers/esm/esbuild.mjs +70 -26
  19. package/lib/transpilers/esm/esnode-loader.mjs +7 -0
  20. package/lib/transpilers/esm/esvue-loader.mjs +7 -0
  21. package/lib/transpilers/esm/loader-utils.mjs +283 -157
  22. package/lib/transpilers/esm/tsnode-loader.mjs +84 -38
  23. package/lib/transpilers/esm/tsnode-service.mjs +50 -6
  24. package/lib/transpilers/esm/vue-jsdom-setup.mjs +36 -7
  25. package/lib/transpilers/esm/vue-loader.mjs +48 -62
  26. package/lib/transpilers/esm/vue-sfc-compiler.mjs +17 -207
  27. package/lib/transpilers/esvue.js +6 -9
  28. package/lib/transpilers/esvue.js.map +1 -1
  29. package/lib/transpilers/tsvue-exp.js +6 -9
  30. package/lib/transpilers/tsvue-exp.js.map +1 -1
  31. package/lib/transpilers/tsvue.js +5 -8
  32. package/lib/transpilers/tsvue.js.map +1 -1
  33. package/lib/transpilers/vue-sfc-compiler.d.ts +23 -0
  34. package/lib/transpilers/vue-sfc-compiler.js +242 -0
  35. package/lib/transpilers/vue-sfc-compiler.js.map +1 -0
  36. package/lib/tsconfig.node.tsbuildinfo +1 -1
  37. package/lib/utils/tsflow-logger.d.ts +29 -0
  38. package/lib/utils/tsflow-logger.js +79 -0
  39. package/lib/utils/tsflow-logger.js.map +1 -0
  40. package/lib/utils/tsflow-logger.mjs +78 -0
  41. package/lib/version.d.ts +1 -1
  42. package/lib/version.js +1 -1
  43. package/lib/version.js.map +1 -1
  44. package/package.json +4 -5
  45. package/lib/support_code_library_builder/index.d.ts +0 -80
  46. package/lib/support_code_library_builder/index.js +0 -337
  47. package/lib/support_code_library_builder/index.js.map +0 -1
  48. package/lib/transpilers/esm/esmbuild-transpiler.d.ts +0 -4
  49. package/lib/transpilers/esm/esmbuild-transpiler.js +0 -19
  50. package/lib/transpilers/esm/esmbuild-transpiler.js.map +0 -1
  51. package/lib/transpilers/esm/esmbuild.d.ts +0 -12
  52. package/lib/transpilers/esm/esmbuild.js +0 -72
  53. package/lib/transpilers/esm/esmbuild.js.map +0 -1
  54. package/lib/transpilers/esm/esmnode.d.ts +0 -1
  55. package/lib/transpilers/esm/esmnode.js +0 -8
  56. package/lib/transpilers/esm/esmnode.js.map +0 -1
  57. package/lib/transpilers/esm/esmvue.d.ts +0 -1
  58. package/lib/transpilers/esm/esmvue.js +0 -29
  59. package/lib/transpilers/esm/esmvue.js.map +0 -1
  60. package/lib/transpilers/esm/tsnode-esm.d.ts +0 -1
  61. package/lib/transpilers/esm/tsnode-esm.js +0 -25
  62. package/lib/transpilers/esm/tsnode-esm.js.map +0 -1
  63. package/lib/transpilers/esm/tsnode-exp-esm.d.ts +0 -1
  64. package/lib/transpilers/esm/tsnode-exp-esm.js +0 -19
  65. package/lib/transpilers/esm/tsnode-exp-esm.js.map +0 -1
  66. package/lib/transpilers/esm/tsvue-esm.d.ts +0 -1
  67. package/lib/transpilers/esm/tsvue-esm.js +0 -40
  68. package/lib/transpilers/esm/tsvue-esm.js.map +0 -1
  69. package/lib/transpilers/esm/tsvue-exp-esm.d.ts +0 -1
  70. package/lib/transpilers/esm/tsvue-exp-esm.js +0 -40
  71. package/lib/transpilers/esm/tsvue-exp-esm.js.map +0 -1
  72. package/lib/transpilers/vue-sfc/compiler.d.ts +0 -7
  73. package/lib/transpilers/vue-sfc/compiler.js +0 -22
  74. package/lib/transpilers/vue-sfc/compiler.js.map +0 -1
  75. package/lib/transpilers/vue-sfc/index.d.ts +0 -23
  76. package/lib/transpilers/vue-sfc/index.js +0 -46
  77. package/lib/transpilers/vue-sfc/index.js.map +0 -1
  78. package/lib/transpilers/vue-sfc/main.d.ts +0 -8
  79. package/lib/transpilers/vue-sfc/main.js +0 -258
  80. package/lib/transpilers/vue-sfc/main.js.map +0 -1
  81. package/lib/transpilers/vue-sfc/script.d.ts +0 -5
  82. package/lib/transpilers/vue-sfc/script.js +0 -41
  83. package/lib/transpilers/vue-sfc/script.js.map +0 -1
  84. package/lib/transpilers/vue-sfc/template.d.ts +0 -8
  85. package/lib/transpilers/vue-sfc/template.js +0 -101
  86. package/lib/transpilers/vue-sfc/template.js.map +0 -1
  87. package/lib/transpilers/vue-sfc/types.d.ts +0 -55
  88. package/lib/transpilers/vue-sfc/types.js +0 -3
  89. package/lib/transpilers/vue-sfc/types.js.map +0 -1
  90. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +0 -13
  91. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +0 -68
  92. package/lib/transpilers/vue-sfc/utils/descriptorCache.js.map +0 -1
  93. package/lib/transpilers/vue-sfc/utils/error.d.ts +0 -3
  94. package/lib/transpilers/vue-sfc/utils/error.js +0 -23
  95. package/lib/transpilers/vue-sfc/utils/error.js.map +0 -1
  96. package/lib/transpilers/vue-sfc/utils/query.d.ts +0 -13
  97. package/lib/transpilers/vue-sfc/utils/query.js +0 -36
  98. package/lib/transpilers/vue-sfc/utils/query.js.map +0 -1
@@ -1,40 +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
- const hooks = require('require-extension-hooks');
7
- const vue_sfc_1 = __importDefault(require("../vue-sfc"));
8
- require('ts-node/esm').register({
9
- compilerOptions: {
10
- module: 'esnext',
11
- target: 'es2022',
12
- strict: true,
13
- allowJs: true,
14
- allowSyntheticDefaultImports: true,
15
- esModuleInterop: true,
16
- experimentalDecorators: false,
17
- resolveJsonModule: true,
18
- skipLibCheck: true,
19
- lib: ['es2022', 'esnext.decorators']
20
- },
21
- transpileOnly: true
22
- });
23
- require('tsconfig-paths').register();
24
- // Register jsdom globally and set SVGElement on global
25
- require('jsdom-global')();
26
- global.SVGElement = global.window.SVGElement;
27
- hooks('vue').push(function (params) {
28
- try {
29
- const transformer = new vue_sfc_1.default({
30
- exclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']
31
- });
32
- const transformResult = transformer.transformCode(params.content, params.filename);
33
- return transformResult.code;
34
- }
35
- catch (err) {
36
- console.log(err);
37
- }
38
- return params.content;
39
- });
40
- //# sourceMappingURL=tsvue-esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tsvue-esm.js","sourceRoot":"","sources":["../../../src/transpilers/esm/tsvue-esm.ts"],"names":[],"mappings":";;;;;AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACjD,yDAAwC;AAExC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;IAC/B,eAAe,EAAE;QAChB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,4BAA4B,EAAE,IAAI;QAClC,eAAe,EAAE,IAAI;QACrB,sBAAsB,EAAE,KAAK;QAC7B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACpC;IACD,aAAa,EAAE,IAAI;CACnB,CAAC,CAAC;AAEH,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;AAErC,uDAAuD;AACvD,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;AACzB,MAAc,CAAC,UAAU,GAAI,MAAc,CAAC,MAAM,CAAC,UAAU,CAAC;AAE/D,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,MAAW;IACtC,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,IAAI,iBAAc,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;SAChE,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEnF,OAAO,eAAe,CAAC,IAAI,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC,CAAC","sourcesContent":["const hooks = require('require-extension-hooks');\r\nimport VueTransformer from '../vue-sfc';\r\n\r\nrequire('ts-node/esm').register({\r\n\tcompilerOptions: {\r\n\t\tmodule: 'esnext',\r\n\t\ttarget: 'es2022',\r\n\t\tstrict: true,\r\n\t\tallowJs: true,\r\n\t\tallowSyntheticDefaultImports: true,\r\n\t\tesModuleInterop: true,\r\n\t\texperimentalDecorators: false,\r\n\t\tresolveJsonModule: true,\r\n\t\tskipLibCheck: true,\r\n\t\tlib: ['es2022', 'esnext.decorators']\r\n\t},\r\n\ttranspileOnly: true\r\n});\r\n\r\nrequire('tsconfig-paths').register();\r\n\r\n// Register jsdom globally and set SVGElement on global\r\nrequire('jsdom-global')();\r\n(global as any).SVGElement = (global as any).window.SVGElement;\r\n\r\nhooks('vue').push(function (params: any) {\r\n\ttry {\r\n\t\tconst transformer = new VueTransformer({\r\n\t\t\texclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']\r\n\t\t});\r\n\t\tconst transformResult = transformer.transformCode(params.content, params.filename);\r\n\r\n\t\treturn transformResult.code;\r\n\t} catch (err) {\r\n\t\tconsole.log(err);\r\n\t}\r\n\treturn params.content;\r\n});\r\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,40 +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
- const hooks = require('require-extension-hooks');
7
- const vue_sfc_1 = __importDefault(require("../vue-sfc"));
8
- require('ts-node/esm').register({
9
- compilerOptions: {
10
- module: 'nodeNext',
11
- target: 'es2022',
12
- strict: true,
13
- allowJs: true,
14
- allowSyntheticDefaultImports: true,
15
- esModuleInterop: true,
16
- experimentalDecorators: true,
17
- resolveJsonModule: true,
18
- skipLibCheck: true,
19
- lib: ['es2022']
20
- },
21
- transpileOnly: true
22
- });
23
- require('tsconfig-paths').register();
24
- // Register jsdom globally and set SVGElement on global
25
- require('jsdom-global')();
26
- global.SVGElement = global.window.SVGElement;
27
- hooks('vue').push(function (params) {
28
- try {
29
- const transformer = new vue_sfc_1.default({
30
- exclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']
31
- });
32
- const transformResult = transformer.transformCode(params.content, params.filename);
33
- return transformResult.code;
34
- }
35
- catch (err) {
36
- console.log(err);
37
- }
38
- return params.content;
39
- });
40
- //# sourceMappingURL=tsvue-exp-esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tsvue-exp-esm.js","sourceRoot":"","sources":["../../../src/transpilers/esm/tsvue-exp-esm.ts"],"names":[],"mappings":";;;;;AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACjD,yDAAwC;AAExC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;IAC/B,eAAe,EAAE;QAChB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,4BAA4B,EAAE,IAAI;QAClC,eAAe,EAAE,IAAI;QACrB,sBAAsB,EAAE,IAAI;QAC5B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,CAAC,QAAQ,CAAC;KACf;IACD,aAAa,EAAE,IAAI;CACnB,CAAC,CAAC;AAEH,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;AAErC,uDAAuD;AACvD,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;AACzB,MAAc,CAAC,UAAU,GAAI,MAAc,CAAC,MAAM,CAAC,UAAU,CAAC;AAE/D,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,MAAW;IACtC,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,IAAI,iBAAc,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;SAChE,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEnF,OAAO,eAAe,CAAC,IAAI,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC,CAAC","sourcesContent":["const hooks = require('require-extension-hooks');\r\nimport VueTransformer from '../vue-sfc';\r\n\r\nrequire('ts-node/esm').register({\r\n\tcompilerOptions: {\r\n\t\tmodule: 'nodeNext',\r\n\t\ttarget: 'es2022',\r\n\t\tstrict: true,\r\n\t\tallowJs: true,\r\n\t\tallowSyntheticDefaultImports: true,\r\n\t\tesModuleInterop: true,\r\n\t\texperimentalDecorators: true,\r\n\t\tresolveJsonModule: true,\r\n\t\tskipLibCheck: true,\r\n\t\tlib: ['es2022']\r\n\t},\r\n\ttranspileOnly: true\r\n});\r\n\r\nrequire('tsconfig-paths').register();\r\n\r\n// Register jsdom globally and set SVGElement on global\r\nrequire('jsdom-global')();\r\n(global as any).SVGElement = (global as any).window.SVGElement;\r\n\r\nhooks('vue').push(function (params: any) {\r\n\ttry {\r\n\t\tconst transformer = new VueTransformer({\r\n\t\t\texclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']\r\n\t\t});\r\n\t\tconst transformResult = transformer.transformCode(params.content, params.filename);\r\n\r\n\t\treturn transformResult.code;\r\n\t} catch (err) {\r\n\t\tconsole.log(err);\r\n\t}\r\n\treturn params.content;\r\n});\r\n"]}
@@ -1,7 +0,0 @@
1
- declare module 'vue/compiler-sfc' {
2
- interface SFCDescriptor {
3
- id: string;
4
- }
5
- }
6
- import type * as _compiler from 'vue/compiler-sfc';
7
- export declare const resolveCompiler: (root: string) => typeof _compiler;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveCompiler = void 0;
4
- const resolveCompiler = (root) => {
5
- // resolve from project root first, then fallback to peer dep (if any)
6
- const compiler = tryRequire('vue/compiler-sfc', root) || tryRequire('vue/compiler-sfc');
7
- if (!compiler) {
8
- throw new Error(`Failed to resolve vue/compiler-sfc.\n` +
9
- `@lynxwall/cucumber-tsflow/vue requires vue (>=3.2.25) ` +
10
- `to be present in the dependency tree.`);
11
- }
12
- return compiler;
13
- };
14
- exports.resolveCompiler = resolveCompiler;
15
- const tryRequire = (id, from) => {
16
- try {
17
- return from ? require(require.resolve(id, { paths: [from] })) : require(id);
18
- // eslint-disable-next-line no-empty
19
- }
20
- catch (e) { }
21
- };
22
- //# sourceMappingURL=compiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/transpilers/vue-sfc/compiler.ts"],"names":[],"mappings":";;;AASO,MAAM,eAAe,GAAG,CAAC,IAAY,EAAoB,EAAE;IACjE,sEAAsE;IACtE,MAAM,QAAQ,GAAG,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAExF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACd,uCAAuC;YACtC,wDAAwD;YACxD,uCAAuC,CACxC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B;AAEF,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,IAAa,EAAE,EAAE;IAChD,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,oCAAoC;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;AACf,CAAC,CAAC","sourcesContent":["// extend the descriptor so we can store the scopeId on it\r\ndeclare module 'vue/compiler-sfc' {\r\n\tinterface SFCDescriptor {\r\n\t\tid: string;\r\n\t}\r\n}\r\n\r\nimport type * as _compiler from 'vue/compiler-sfc';\r\n\r\nexport const resolveCompiler = (root: string): typeof _compiler => {\r\n\t// resolve from project root first, then fallback to peer dep (if any)\r\n\tconst compiler = tryRequire('vue/compiler-sfc', root) || tryRequire('vue/compiler-sfc');\r\n\r\n\tif (!compiler) {\r\n\t\tthrow new Error(\r\n\t\t\t`Failed to resolve vue/compiler-sfc.\\n` +\r\n\t\t\t\t`@lynxwall/cucumber-tsflow/vue requires vue (>=3.2.25) ` +\r\n\t\t\t\t`to be present in the dependency tree.`\r\n\t\t);\r\n\t}\r\n\r\n\treturn compiler;\r\n};\r\n\r\nconst tryRequire = (id: string, from?: string) => {\r\n\ttry {\r\n\t\treturn from ? require(require.resolve(id, { paths: [from] })) : require(id);\r\n\t\t// eslint-disable-next-line no-empty\r\n\t} catch (e) {}\r\n};\r\n"]}
@@ -1,23 +0,0 @@
1
- import type { RollupError, RollupLog } from 'rollup';
2
- import type { Options, VueTransformerContext, VueResolvedId } from './types';
3
- export { parseVueRequest, VueQuery } from './utils/query';
4
- declare class VueTransformer implements VueTransformerContext {
5
- private customElementFilter;
6
- private options;
7
- private isSSR;
8
- constructor(rawOptions?: Options);
9
- error: (err: string | RollupError, pos?: number | {
10
- column: number;
11
- line: number;
12
- } | undefined) => void;
13
- resolve: (id: string) => VueResolvedId | null;
14
- warn: (warning: RollupLog | string, pos?: number | {
15
- column: number;
16
- line: number;
17
- } | undefined) => void;
18
- transformCode: (code: string, filename: string) => {
19
- code: string;
20
- map: string;
21
- };
22
- }
23
- export default VueTransformer;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseVueRequest = void 0;
4
- const pluginutils_1 = require("@rollup/pluginutils");
5
- const compiler_1 = require("./compiler");
6
- const query_1 = require("./utils/query");
7
- const main_1 = require("./main");
8
- var query_2 = require("./utils/query");
9
- Object.defineProperty(exports, "parseVueRequest", { enumerable: true, get: function () { return query_2.parseVueRequest; } });
10
- class VueTransformer {
11
- customElementFilter;
12
- options;
13
- isSSR = (opt) => opt === undefined ? false : typeof opt === 'boolean' ? opt : opt?.ssr === true;
14
- constructor(rawOptions = {}) {
15
- const { include = /\.vue$/, exclude, customElement = /\.ce\.vue$/, reactivityTransform = false } = rawOptions;
16
- this.customElementFilter = typeof customElement === 'boolean' ? () => customElement : (0, pluginutils_1.createFilter)(customElement);
17
- const rootDir = process.cwd();
18
- this.options = {
19
- isProduction: process.env.NODE_ENV === 'production',
20
- compiler: (0, compiler_1.resolveCompiler)(rootDir),
21
- ...rawOptions,
22
- include,
23
- exclude,
24
- customElement,
25
- reactivityTransform,
26
- root: rootDir,
27
- sourceMap: true
28
- };
29
- }
30
- error = (err, pos) => { };
31
- resolve = (id) => {
32
- // serve sub-part requests (*?vue) as virtual modules
33
- if ((0, query_1.parseVueRequest)(id).query.vue) {
34
- return { external: false, id: id };
35
- }
36
- return null;
37
- };
38
- warn = (warning, pos) => { };
39
- transformCode = (code, filename) => {
40
- const ssr = this.isSSR(false);
41
- const result = (0, main_1.transformMain)(code, filename, this.options, this, ssr, this.customElementFilter(filename));
42
- return { code: result?.code, map: result?.map.mappings };
43
- };
44
- }
45
- exports.default = VueTransformer;
46
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transpilers/vue-sfc/index.ts"],"names":[],"mappings":";;;AAAA,qDAAmD;AAEnD,yCAA6C;AAC7C,yCAAgD;AAChD,iCAAuC;AAGvC,uCAA0D;AAAjD,wGAAA,eAAe,OAAA;AAExB,MAAM,cAAc;IACX,mBAAmB,CAA2B;IAC9C,OAAO,CAAkB;IACzB,KAAK,GAAG,CAAC,GAA4C,EAAE,EAAE,CAChE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAEhF,YAAY,aAAsB,EAAE;QACnC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,EAAE,mBAAmB,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC;QAC9G,IAAI,CAAC,mBAAmB,GAAG,OAAO,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAA,0BAAY,EAAC,aAAa,CAAC,CAAC;QAElH,MAAM,OAAO,GAAW,OAAO,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG;YACd,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YACnD,QAAQ,EAAE,IAAA,0BAAe,EAAC,OAAO,CAAC;YAClC,GAAG,UAAU;YACb,OAAO;YACP,OAAO;YACP,aAAa;YACb,mBAAmB;YACnB,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,IAAI;SACf,CAAC;IACH,CAAC;IAEM,KAAK,GAAG,CAAC,GAAyB,EAAE,GAA2D,EAAQ,EAAE,GAAE,CAAC,CAAC;IAE7G,OAAO,GAAG,CAAC,EAAU,EAAwB,EAAE;QACrD,qDAAqD;QACrD,IAAI,IAAA,uBAAe,EAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACnC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEK,IAAI,GAAG,CAAC,OAA2B,EAAE,GAA2D,EAAQ,EAAE,GAAE,CAAC,CAAC;IAE9G,aAAa,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1G,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC,CAAC;CACF;AAED,kBAAe,cAAc,CAAC","sourcesContent":["import { createFilter } from '@rollup/pluginutils';\r\nimport type { RollupError, RollupLog } from 'rollup';\r\nimport { resolveCompiler } from './compiler';\r\nimport { parseVueRequest } from './utils/query';\r\nimport { transformMain } from './main';\r\nimport type { Options, ResolvedOptions, VueTransformerContext, VueResolvedId } from './types';\r\n\r\nexport { parseVueRequest, VueQuery } from './utils/query';\r\n\r\nclass VueTransformer implements VueTransformerContext {\r\n\tprivate customElementFilter: (id: unknown) => boolean;\r\n\tprivate options: ResolvedOptions;\r\n\tprivate isSSR = (opt: { ssr?: boolean } | boolean | undefined) =>\r\n\t\topt === undefined ? false : typeof opt === 'boolean' ? opt : opt?.ssr === true;\r\n\r\n\tconstructor(rawOptions: Options = {}) {\r\n\t\tconst { include = /\\.vue$/, exclude, customElement = /\\.ce\\.vue$/, reactivityTransform = false } = rawOptions;\r\n\t\tthis.customElementFilter = typeof customElement === 'boolean' ? () => customElement : createFilter(customElement);\r\n\r\n\t\tconst rootDir: string = process.cwd();\r\n\t\tthis.options = {\r\n\t\t\tisProduction: process.env.NODE_ENV === 'production',\r\n\t\t\tcompiler: resolveCompiler(rootDir),\r\n\t\t\t...rawOptions,\r\n\t\t\tinclude,\r\n\t\t\texclude,\r\n\t\t\tcustomElement,\r\n\t\t\treactivityTransform,\r\n\t\t\troot: rootDir,\r\n\t\t\tsourceMap: true\r\n\t\t};\r\n\t}\r\n\r\n\tpublic error = (err: string | RollupError, pos?: number | { column: number; line: number } | undefined): void => {};\r\n\r\n\tpublic resolve = (id: string): VueResolvedId | null => {\r\n\t\t// serve sub-part requests (*?vue) as virtual modules\r\n\t\tif (parseVueRequest(id).query.vue) {\r\n\t\t\treturn { external: false, id: id };\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tpublic warn = (warning: RollupLog | string, pos?: number | { column: number; line: number } | undefined): void => {};\r\n\r\n\tpublic transformCode = (code: string, filename: string) => {\r\n\t\tconst ssr = this.isSSR(false);\r\n\t\tconst result = transformMain(code, filename, this.options, this, ssr, this.customElementFilter(filename));\r\n\t\treturn { code: result?.code, map: result?.map.mappings };\r\n\t};\r\n}\r\n\r\nexport default VueTransformer;\r\n"]}
@@ -1,8 +0,0 @@
1
- import type { RawSourceMap } from 'source-map';
2
- import { VueTransformerContext, ResolvedOptions } from './types';
3
- export declare const transformMain: (code: string, filename: string, options: ResolvedOptions, transformerContext: VueTransformerContext, ssr: boolean, asCustomElement: boolean) => {
4
- code: string;
5
- map: RawSourceMap | {
6
- mappings: string;
7
- };
8
- };
@@ -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;