@lynxwall/cucumber-tsflow 7.5.5 → 7.7.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 +287 -234
- package/lib/api/convert-configuration.d.ts +1 -0
- package/lib/api/convert-configuration.js +2 -0
- package/lib/api/convert-configuration.js.map +1 -1
- package/lib/api/load-configuration.js +22 -33
- package/lib/api/load-configuration.js.map +1 -1
- package/lib/api/load-support.d.ts +24 -1
- package/lib/api/load-support.js +140 -3
- package/lib/api/load-support.js.map +1 -1
- package/lib/api/loader-worker.d.ts +25 -0
- package/lib/api/loader-worker.js +70 -0
- package/lib/api/loader-worker.js.map +1 -0
- package/lib/api/parallel-loader.d.ts +31 -0
- package/lib/api/parallel-loader.js +169 -0
- package/lib/api/parallel-loader.js.map +1 -0
- package/lib/api/run-cucumber.js +42 -12
- package/lib/api/run-cucumber.js.map +1 -1
- package/lib/api/support.js +3 -0
- package/lib/api/support.js.map +1 -1
- package/lib/api/wrapper.mjs +1 -0
- package/lib/bindings/binding-decorator.d.ts +6 -0
- package/lib/bindings/binding-decorator.js +14 -0
- package/lib/bindings/binding-decorator.js.map +1 -1
- package/lib/bindings/binding-registry.d.ts +31 -1
- package/lib/bindings/binding-registry.js +95 -47
- package/lib/bindings/binding-registry.js.map +1 -1
- package/lib/bindings/step-binding.d.ts +37 -0
- package/lib/bindings/step-binding.js +23 -0
- package/lib/bindings/step-binding.js.map +1 -1
- package/lib/bindings/types.js.map +1 -1
- package/lib/cli/argv-parser.d.ts +1 -0
- package/lib/cli/argv-parser.js +6 -0
- package/lib/cli/argv-parser.js.map +1 -1
- package/lib/formatter/{step-definition-snippit-syntax → step-definition-snippet-syntax}/tsflow-snippet-syntax.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/runtime/coordinator.d.ts +2 -1
- package/lib/runtime/coordinator.js +4 -2
- package/lib/runtime/coordinator.js.map +1 -1
- package/lib/runtime/make-runtime.d.ts +3 -1
- package/lib/runtime/make-runtime.js +5 -4
- package/lib/runtime/make-runtime.js.map +1 -1
- package/lib/runtime/managed-scenario-context.js +2 -32
- package/lib/runtime/managed-scenario-context.js.map +1 -1
- package/lib/runtime/parallel/adapter.d.ts +4 -1
- package/lib/runtime/parallel/adapter.js +10 -2
- package/lib/runtime/parallel/adapter.js.map +1 -1
- package/lib/runtime/serial/adapter.d.ts +2 -1
- package/lib/runtime/serial/adapter.js +13 -3
- package/lib/runtime/serial/adapter.js.map +1 -1
- package/lib/runtime/test-case-runner.d.ts +4 -1
- package/lib/runtime/test-case-runner.js +4 -5
- package/lib/runtime/test-case-runner.js.map +1 -1
- package/lib/runtime/types.d.ts +2 -0
- package/lib/runtime/types.js.map +1 -1
- package/lib/runtime/utils.js +0 -6
- package/lib/runtime/utils.js.map +1 -1
- package/lib/runtime/worker.d.ts +14 -3
- package/lib/runtime/worker.js +91 -12
- package/lib/runtime/worker.js.map +1 -1
- package/lib/snippet.js +1 -1
- package/lib/snippet.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 +8 -9
- 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
- /package/lib/formatter/{step-definition-snippit-syntax → step-definition-snippet-syntax}/tsflow-snippet-syntax.d.ts +0 -0
- /package/lib/formatter/{step-definition-snippit-syntax → step-definition-snippet-syntax}/tsflow-snippet-syntax.js +0 -0
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
const hooks = require('require-extension-hooks');
|
|
7
|
-
const
|
|
4
|
+
const vue_sfc_compiler_1 = require("./vue-sfc-compiler");
|
|
8
5
|
require('ts-node-maintained').register({
|
|
9
6
|
compilerOptions: {
|
|
10
7
|
module: 'nodeNext',
|
|
@@ -26,14 +23,14 @@ require('jsdom-global')();
|
|
|
26
23
|
global.SVGElement = global.window.SVGElement;
|
|
27
24
|
hooks('vue').push(function (params) {
|
|
28
25
|
try {
|
|
29
|
-
const
|
|
30
|
-
|
|
26
|
+
const result = (0, vue_sfc_compiler_1.compileVueSFC)(params.content, params.filename, {
|
|
27
|
+
enableStyle: !!global.enableVueStyle,
|
|
28
|
+
format: 'cjs'
|
|
31
29
|
});
|
|
32
|
-
|
|
33
|
-
return transformResult.code;
|
|
30
|
+
return result.code;
|
|
34
31
|
}
|
|
35
32
|
catch (err) {
|
|
36
|
-
console.
|
|
33
|
+
console.error(err);
|
|
37
34
|
}
|
|
38
35
|
return params.content;
|
|
39
36
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsvue-exp.js","sourceRoot":"","sources":["../../src/transpilers/tsvue-exp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tsvue-exp.js","sourceRoot":"","sources":["../../src/transpilers/tsvue-exp.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACjD,yDAAmD;AAEnD,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC;IACtC,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,MAAM,GAAG,IAAA,gCAAa,EAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;YAC7D,WAAW,EAAE,CAAC,CAAE,MAAc,CAAC,cAAc;YAC7C,MAAM,EAAE,KAAK;SACb,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC,CAAC","sourcesContent":["const hooks = require('require-extension-hooks');\r\nimport { compileVueSFC } from './vue-sfc-compiler';\r\n\r\nrequire('ts-node-maintained').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 result = compileVueSFC(params.content, params.filename, {\r\n\t\t\tenableStyle: !!(global as any).enableVueStyle,\r\n\t\t\tformat: 'cjs'\r\n\t\t});\r\n\t\treturn result.code;\r\n\t} catch (err) {\r\n\t\tconsole.error(err);\r\n\t}\r\n\treturn params.content;\r\n});\r\n"]}
|
package/lib/transpilers/tsvue.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
const hooks = require('require-extension-hooks');
|
|
7
|
-
const
|
|
4
|
+
const vue_sfc_compiler_1 = require("./vue-sfc-compiler");
|
|
8
5
|
require('ts-node-maintained').register({
|
|
9
6
|
compilerOptions: {
|
|
10
7
|
module: 'nodeNext',
|
|
@@ -26,11 +23,11 @@ require('jsdom-global')();
|
|
|
26
23
|
global.SVGElement = global.window.SVGElement;
|
|
27
24
|
hooks('vue').push(function (params) {
|
|
28
25
|
try {
|
|
29
|
-
const
|
|
30
|
-
|
|
26
|
+
const result = (0, vue_sfc_compiler_1.compileVueSFC)(params.content, params.filename, {
|
|
27
|
+
enableStyle: !!global.enableVueStyle,
|
|
28
|
+
format: 'cjs'
|
|
31
29
|
});
|
|
32
|
-
|
|
33
|
-
return transformResult.code;
|
|
30
|
+
return result.code;
|
|
34
31
|
}
|
|
35
32
|
catch (err) {
|
|
36
33
|
console.error(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsvue.js","sourceRoot":"","sources":["../../src/transpilers/tsvue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tsvue.js","sourceRoot":"","sources":["../../src/transpilers/tsvue.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACjD,yDAAmD;AAEnD,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC;IACtC,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,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,MAAM,GAAG,IAAA,gCAAa,EAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;YAC7D,WAAW,EAAE,CAAC,CAAE,MAAc,CAAC,cAAc;YAC7C,MAAM,EAAE,KAAK;SACb,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC,CAAC","sourcesContent":["const hooks = require('require-extension-hooks');\r\nimport { compileVueSFC } from './vue-sfc-compiler';\r\n\r\nrequire('ts-node-maintained').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: 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 result = compileVueSFC(params.content, params.filename, {\r\n\t\t\tenableStyle: !!(global as any).enableVueStyle,\r\n\t\t\tformat: 'cjs'\r\n\t\t});\r\n\t\treturn result.code;\r\n\t} catch (err) {\r\n\t\tconsole.error(err);\r\n\t}\r\n\treturn params.content;\r\n});\r\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type VueSFCFormat = 'cjs' | 'esm';
|
|
2
|
+
export type VueSFCOptions = {
|
|
3
|
+
/** Whether to compile and inject <style> blocks. Default: false */
|
|
4
|
+
enableStyle?: boolean;
|
|
5
|
+
/** Output module format. Default: 'cjs' */
|
|
6
|
+
format?: VueSFCFormat;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Compile a Vue Single File Component to JavaScript.
|
|
10
|
+
*
|
|
11
|
+
* For CJS format: assembles script + template + styles then runs a single
|
|
12
|
+
* esbuild pass (format: 'cjs') over the complete output with TS stripping.
|
|
13
|
+
*
|
|
14
|
+
* For ESM format: transpiles only the script block (if TypeScript), then
|
|
15
|
+
* assembles the result with the already-valid-JS template and style code.
|
|
16
|
+
*
|
|
17
|
+
* @param source - Raw .vue file content
|
|
18
|
+
* @param filename - Absolute path to the .vue file
|
|
19
|
+
* @param options - Compilation options
|
|
20
|
+
*/
|
|
21
|
+
export declare function compileVueSFC(source: string, filename: string, options?: VueSFCOptions): {
|
|
22
|
+
code: string;
|
|
23
|
+
};
|
|
@@ -0,0 +1,242 @@
|
|
|
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.compileVueSFC = compileVueSFC;
|
|
7
|
+
const compiler_sfc_1 = require("vue/compiler-sfc");
|
|
8
|
+
const hash_sum_1 = __importDefault(require("hash-sum"));
|
|
9
|
+
const esbuild_1 = require("esbuild");
|
|
10
|
+
const tsflow_logger_1 = require("../utils/tsflow-logger");
|
|
11
|
+
const logger = (0, tsflow_logger_1.createLogger)('vue-sfc');
|
|
12
|
+
/**
|
|
13
|
+
* Compile a Vue Single File Component to JavaScript.
|
|
14
|
+
*
|
|
15
|
+
* For CJS format: assembles script + template + styles then runs a single
|
|
16
|
+
* esbuild pass (format: 'cjs') over the complete output with TS stripping.
|
|
17
|
+
*
|
|
18
|
+
* For ESM format: transpiles only the script block (if TypeScript), then
|
|
19
|
+
* assembles the result with the already-valid-JS template and style code.
|
|
20
|
+
*
|
|
21
|
+
* @param source - Raw .vue file content
|
|
22
|
+
* @param filename - Absolute path to the .vue file
|
|
23
|
+
* @param options - Compilation options
|
|
24
|
+
*/
|
|
25
|
+
function compileVueSFC(source, filename, options = {}) {
|
|
26
|
+
const { enableStyle = false, format = 'cjs' } = options;
|
|
27
|
+
logger.checkpoint('compileVueSFC started', { filename, format, enableStyle });
|
|
28
|
+
if (!source)
|
|
29
|
+
throw new Error(`Invalid source for ${filename}: source is ${typeof source}`);
|
|
30
|
+
if (!filename)
|
|
31
|
+
throw new Error('Filename is required for Vue SFC compilation');
|
|
32
|
+
// Parse the SFC
|
|
33
|
+
const { descriptor, errors: parseErrors } = (0, compiler_sfc_1.parse)(source, { filename, sourceMap: true });
|
|
34
|
+
if (parseErrors?.length) {
|
|
35
|
+
const msg = parseErrors.map(e => e.message).join('\n');
|
|
36
|
+
logger.error('SFC parse errors', undefined, { filename, errors: parseErrors });
|
|
37
|
+
throw new Error(`Vue SFC parse errors in ${filename}:\n${msg}`);
|
|
38
|
+
}
|
|
39
|
+
// Generate a stable component ID from the filename
|
|
40
|
+
const id = (0, hash_sum_1.default)(filename);
|
|
41
|
+
const hasScoped = descriptor.styles.some(s => s.scoped);
|
|
42
|
+
logger.checkpoint('SFC parsed', {
|
|
43
|
+
hasScript: !!descriptor.script,
|
|
44
|
+
hasScriptSetup: !!descriptor.scriptSetup,
|
|
45
|
+
hasTemplate: !!descriptor.template,
|
|
46
|
+
styleCount: descriptor.styles?.length,
|
|
47
|
+
hasScoped
|
|
48
|
+
});
|
|
49
|
+
const isTS = descriptor.script?.lang === 'ts' || descriptor.scriptSetup?.lang === 'ts';
|
|
50
|
+
// Read experimentalDecorators from global (set by load-configuration before transpilers run)
|
|
51
|
+
const experimentalDecorators = !!global.experimentalDecorators;
|
|
52
|
+
const tsconfigRaw = {
|
|
53
|
+
compilerOptions: {
|
|
54
|
+
experimentalDecorators,
|
|
55
|
+
...(experimentalDecorators ? { importsNotUsedAsValues: 'remove' } : {}),
|
|
56
|
+
strict: true
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// ------------------------------------------------------------------
|
|
60
|
+
// Script block
|
|
61
|
+
// ------------------------------------------------------------------
|
|
62
|
+
// Pre-parse template AST so compileScript can resolve bindings accurately
|
|
63
|
+
let templateAst = null;
|
|
64
|
+
if (descriptor.template) {
|
|
65
|
+
try {
|
|
66
|
+
const { ast } = (0, compiler_sfc_1.compileTemplate)({
|
|
67
|
+
source: descriptor.template.content,
|
|
68
|
+
filename,
|
|
69
|
+
id,
|
|
70
|
+
compilerOptions: { mode: 'module', parseOnly: true }
|
|
71
|
+
});
|
|
72
|
+
templateAst = ast;
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
throw new Error(`Failed to pre-parse template AST in ${filename}: ${e.message}`, { cause: e });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
let rawScriptContent = '';
|
|
79
|
+
let compiledScript;
|
|
80
|
+
if (descriptor.script || descriptor.scriptSetup) {
|
|
81
|
+
try {
|
|
82
|
+
compiledScript = (0, compiler_sfc_1.compileScript)(descriptor, {
|
|
83
|
+
id,
|
|
84
|
+
inlineTemplate: false,
|
|
85
|
+
sourceMap: true,
|
|
86
|
+
genDefaultAs: '_sfc_main',
|
|
87
|
+
templateAst: templateAst,
|
|
88
|
+
resolveComponents: true,
|
|
89
|
+
// Disable asset URL transforms: unit tests don't need asset imports
|
|
90
|
+
templateOptions: { transformAssetUrls: false }
|
|
91
|
+
});
|
|
92
|
+
rawScriptContent = compiledScript.content;
|
|
93
|
+
logger.checkpoint('Script compiled', { contentLength: rawScriptContent.length });
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
throw new Error(`Failed to compile script in ${filename}: ${e.message}`, { cause: e });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// For ESM: transpile the script block now (TS → ESM JS).
|
|
100
|
+
// For CJS: keep raw content; the full assembly is transpiled below.
|
|
101
|
+
let scriptCode = rawScriptContent;
|
|
102
|
+
if (format === 'esm' && isTS && rawScriptContent) {
|
|
103
|
+
try {
|
|
104
|
+
const result = (0, esbuild_1.transformSync)(rawScriptContent, {
|
|
105
|
+
loader: 'ts',
|
|
106
|
+
format: 'esm',
|
|
107
|
+
target: 'es2022',
|
|
108
|
+
sourcemap: 'inline',
|
|
109
|
+
tsconfigRaw
|
|
110
|
+
});
|
|
111
|
+
scriptCode = result.code;
|
|
112
|
+
logger.checkpoint('Script transpiled (ESM)', { outputLength: scriptCode.length });
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
throw new Error(`Failed to transpile TypeScript in ${filename}: ${e.message}`, { cause: e });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// ------------------------------------------------------------------
|
|
119
|
+
// Template block
|
|
120
|
+
// ------------------------------------------------------------------
|
|
121
|
+
let templateCode = '';
|
|
122
|
+
if (descriptor.template) {
|
|
123
|
+
try {
|
|
124
|
+
const template = (0, compiler_sfc_1.compileTemplate)({
|
|
125
|
+
source: descriptor.template.content,
|
|
126
|
+
filename,
|
|
127
|
+
id,
|
|
128
|
+
scoped: hasScoped,
|
|
129
|
+
compilerOptions: {
|
|
130
|
+
mode: 'module',
|
|
131
|
+
bindingMetadata: compiledScript?.bindings
|
|
132
|
+
},
|
|
133
|
+
// Disable asset URL transforms: unit tests don't need asset imports;
|
|
134
|
+
// CJS has no stub loader for binary assets (e.g. *.jpg → require())
|
|
135
|
+
transformAssetUrls: false
|
|
136
|
+
});
|
|
137
|
+
if (template.errors.length) {
|
|
138
|
+
const msg = template.errors.map(e => (typeof e === 'string' ? e : e.message)).join('\n');
|
|
139
|
+
throw new Error(`Template compilation errors in ${filename}:\n${msg}`);
|
|
140
|
+
}
|
|
141
|
+
templateCode = template.code;
|
|
142
|
+
logger.checkpoint('Template compiled', { outputLength: templateCode.length });
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
throw new Error(`Failed to compile template in ${filename}: ${e.message}`, { cause: e });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// ------------------------------------------------------------------
|
|
149
|
+
// Style blocks (optional)
|
|
150
|
+
// ------------------------------------------------------------------
|
|
151
|
+
let styleCode = '';
|
|
152
|
+
if (enableStyle && descriptor.styles.length > 0) {
|
|
153
|
+
const styles = [];
|
|
154
|
+
for (const style of descriptor.styles) {
|
|
155
|
+
try {
|
|
156
|
+
const compiled = (0, compiler_sfc_1.compileStyle)({
|
|
157
|
+
source: style.content,
|
|
158
|
+
filename,
|
|
159
|
+
id,
|
|
160
|
+
scoped: !!style.scoped,
|
|
161
|
+
preprocessLang: style.lang
|
|
162
|
+
});
|
|
163
|
+
const hasPreprocessorError = compiled.errors.length > 0 &&
|
|
164
|
+
compiled.errors.some(e => e.message.includes('sass') ||
|
|
165
|
+
e.message.includes('scss') ||
|
|
166
|
+
e.message.includes('less') ||
|
|
167
|
+
e.message.includes('stylus'));
|
|
168
|
+
if (!hasPreprocessorError && compiled.code) {
|
|
169
|
+
styles.push(compiled.code);
|
|
170
|
+
}
|
|
171
|
+
else if (hasPreprocessorError) {
|
|
172
|
+
logger.warn(`Skipping ${style.lang ?? 'css'} style — preprocessor not available`, { filename });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
if (e.message.includes('Cannot find module')) {
|
|
177
|
+
logger.warn(`Skipping style block — missing module`, { filename, error: e.message });
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
throw new Error(`Failed to compile style in ${filename}: ${e.message}`, { cause: e });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (styles.length > 0) {
|
|
184
|
+
styleCode = `
|
|
185
|
+
// Style injection
|
|
186
|
+
if (typeof document !== 'undefined') {
|
|
187
|
+
(function() {
|
|
188
|
+
const styles = ${JSON.stringify(styles)};
|
|
189
|
+
const id = '${id}';
|
|
190
|
+
if (!document.querySelector(\`[data-vite-vue-id="\${id}"]\`)) {
|
|
191
|
+
styles.forEach((css) => {
|
|
192
|
+
const style = document.createElement('style');
|
|
193
|
+
style.setAttribute('data-vite-vue-id', id);
|
|
194
|
+
if (${hasScoped}) { style.setAttribute('data-v-' + id, ''); }
|
|
195
|
+
style.textContent = css;
|
|
196
|
+
document.head.appendChild(style);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
})();
|
|
200
|
+
}
|
|
201
|
+
`;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// ------------------------------------------------------------------
|
|
205
|
+
// Assemble
|
|
206
|
+
// ------------------------------------------------------------------
|
|
207
|
+
let finalCode = scriptCode;
|
|
208
|
+
if (templateCode) {
|
|
209
|
+
finalCode += '\n' + templateCode;
|
|
210
|
+
finalCode += '\n_sfc_main.render = render;';
|
|
211
|
+
}
|
|
212
|
+
if (hasScoped) {
|
|
213
|
+
finalCode += `\n_sfc_main.__scopeId = 'data-v-${id}';`;
|
|
214
|
+
}
|
|
215
|
+
if (styleCode) {
|
|
216
|
+
finalCode = styleCode + '\n' + finalCode;
|
|
217
|
+
}
|
|
218
|
+
if (!/export\s+default/.test(finalCode)) {
|
|
219
|
+
finalCode += '\nexport default _sfc_main;';
|
|
220
|
+
}
|
|
221
|
+
// ------------------------------------------------------------------
|
|
222
|
+
// CJS: transpile the assembled output in one pass (TS → CJS)
|
|
223
|
+
// ------------------------------------------------------------------
|
|
224
|
+
if (format === 'cjs') {
|
|
225
|
+
try {
|
|
226
|
+
const result = (0, esbuild_1.transformSync)(finalCode, {
|
|
227
|
+
loader: isTS ? 'ts' : 'js',
|
|
228
|
+
format: 'cjs',
|
|
229
|
+
target: 'es2022',
|
|
230
|
+
tsconfigRaw
|
|
231
|
+
});
|
|
232
|
+
finalCode = result.code;
|
|
233
|
+
logger.checkpoint('CJS transpilation complete', { outputLength: finalCode.length });
|
|
234
|
+
}
|
|
235
|
+
catch (e) {
|
|
236
|
+
throw new Error(`Failed to transpile Vue SFC to CJS in ${filename}: ${e.message}`, { cause: e });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
logger.checkpoint('compileVueSFC complete', { filename, outputLength: finalCode.length });
|
|
240
|
+
return { code: finalCode };
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=vue-sfc-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue-sfc-compiler.js","sourceRoot":"","sources":["../../src/transpilers/vue-sfc-compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse, compileScript, compileTemplate, compileStyle } from 'vue/compiler-sfc';\r\nimport hash from 'hash-sum';\r\nimport { transformSync } from 'esbuild';\r\nimport { createLogger } from '../utils/tsflow-logger';\r\n\r\nconst logger = createLogger('vue-sfc');\r\n\r\nexport type VueSFCFormat = 'cjs' | 'esm';\r\n\r\nexport type VueSFCOptions = {\r\n\t/** Whether to compile and inject <style> blocks. Default: false */\r\n\tenableStyle?: boolean;\r\n\t/** Output module format. Default: 'cjs' */\r\n\tformat?: VueSFCFormat;\r\n};\r\n\r\n/**\r\n * Compile a Vue Single File Component to JavaScript.\r\n *\r\n * For CJS format: assembles script + template + styles then runs a single\r\n * esbuild pass (format: 'cjs') over the complete output with TS stripping.\r\n *\r\n * For ESM format: transpiles only the script block (if TypeScript), then\r\n * assembles the result with the already-valid-JS template and style code.\r\n *\r\n * @param source - Raw .vue file content\r\n * @param filename - Absolute path to the .vue file\r\n * @param options - Compilation options\r\n */\r\nexport function compileVueSFC(source: string, filename: string, options: VueSFCOptions = {}): { code: string } {\r\n\tconst { enableStyle = false, format = 'cjs' } = options;\r\n\r\n\tlogger.checkpoint('compileVueSFC started', { filename, format, enableStyle });\r\n\r\n\tif (!source) throw new Error(`Invalid source for ${filename}: source is ${typeof source}`);\r\n\tif (!filename) throw new Error('Filename is required for Vue SFC compilation');\r\n\r\n\t// Parse the SFC\r\n\tconst { descriptor, errors: parseErrors } = parse(source, { filename, sourceMap: true });\r\n\r\n\tif (parseErrors?.length) {\r\n\t\tconst msg = parseErrors.map(e => e.message).join('\\n');\r\n\t\tlogger.error('SFC parse errors', undefined, { filename, errors: parseErrors });\r\n\t\tthrow new Error(`Vue SFC parse errors in ${filename}:\\n${msg}`);\r\n\t}\r\n\r\n\t// Generate a stable component ID from the filename\r\n\tconst id = hash(filename);\r\n\tconst hasScoped = descriptor.styles.some(s => s.scoped);\r\n\r\n\tlogger.checkpoint('SFC parsed', {\r\n\t\thasScript: !!descriptor.script,\r\n\t\thasScriptSetup: !!descriptor.scriptSetup,\r\n\t\thasTemplate: !!descriptor.template,\r\n\t\tstyleCount: descriptor.styles?.length,\r\n\t\thasScoped\r\n\t});\r\n\r\n\tconst isTS = descriptor.script?.lang === 'ts' || descriptor.scriptSetup?.lang === 'ts';\r\n\r\n\t// Read experimentalDecorators from global (set by load-configuration before transpilers run)\r\n\tconst experimentalDecorators = !!(global as any).experimentalDecorators;\r\n\tconst tsconfigRaw = {\r\n\t\tcompilerOptions: {\r\n\t\t\texperimentalDecorators,\r\n\t\t\t...(experimentalDecorators ? { importsNotUsedAsValues: 'remove' as const } : {}),\r\n\t\t\tstrict: true\r\n\t\t}\r\n\t};\r\n\r\n\t// ------------------------------------------------------------------\r\n\t// Script block\r\n\t// ------------------------------------------------------------------\r\n\r\n\t// Pre-parse template AST so compileScript can resolve bindings accurately\r\n\tlet templateAst = null;\r\n\tif (descriptor.template) {\r\n\t\ttry {\r\n\t\t\tconst { ast } = compileTemplate({\r\n\t\t\t\tsource: descriptor.template.content,\r\n\t\t\t\tfilename,\r\n\t\t\t\tid,\r\n\t\t\t\tcompilerOptions: { mode: 'module', parseOnly: true } as any\r\n\t\t\t});\r\n\t\t\ttemplateAst = ast;\r\n\t\t} catch (e: any) {\r\n\t\t\tthrow new Error(`Failed to pre-parse template AST in ${filename}: ${e.message}`, { cause: e });\r\n\t\t}\r\n\t}\r\n\r\n\tlet rawScriptContent = '';\r\n\tlet compiledScript: ReturnType<typeof compileScript> | undefined;\r\n\r\n\tif (descriptor.script || descriptor.scriptSetup) {\r\n\t\ttry {\r\n\t\t\tcompiledScript = compileScript(descriptor, {\r\n\t\t\t\tid,\r\n\t\t\t\tinlineTemplate: false,\r\n\t\t\t\tsourceMap: true,\r\n\t\t\t\tgenDefaultAs: '_sfc_main',\r\n\t\t\t\ttemplateAst: templateAst,\r\n\t\t\t\tresolveComponents: true,\r\n\t\t\t\t// Disable asset URL transforms: unit tests don't need asset imports\r\n\t\t\t\ttemplateOptions: { transformAssetUrls: false }\r\n\t\t\t} as any);\r\n\t\t\trawScriptContent = compiledScript.content;\r\n\t\t\tlogger.checkpoint('Script compiled', { contentLength: rawScriptContent.length });\r\n\t\t} catch (e: any) {\r\n\t\t\tthrow new Error(`Failed to compile script in ${filename}: ${e.message}`, { cause: e });\r\n\t\t}\r\n\t}\r\n\r\n\t// For ESM: transpile the script block now (TS → ESM JS).\r\n\t// For CJS: keep raw content; the full assembly is transpiled below.\r\n\tlet scriptCode = rawScriptContent;\r\n\tif (format === 'esm' && isTS && rawScriptContent) {\r\n\t\ttry {\r\n\t\t\tconst result = transformSync(rawScriptContent, {\r\n\t\t\t\tloader: 'ts',\r\n\t\t\t\tformat: 'esm',\r\n\t\t\t\ttarget: 'es2022',\r\n\t\t\t\tsourcemap: 'inline',\r\n\t\t\t\ttsconfigRaw\r\n\t\t\t});\r\n\t\t\tscriptCode = result.code;\r\n\t\t\tlogger.checkpoint('Script transpiled (ESM)', { outputLength: scriptCode.length });\r\n\t\t} catch (e: any) {\r\n\t\t\tthrow new Error(`Failed to transpile TypeScript in ${filename}: ${e.message}`, { cause: e });\r\n\t\t}\r\n\t}\r\n\r\n\t// ------------------------------------------------------------------\r\n\t// Template block\r\n\t// ------------------------------------------------------------------\r\n\r\n\tlet templateCode = '';\r\n\tif (descriptor.template) {\r\n\t\ttry {\r\n\t\t\tconst template = compileTemplate({\r\n\t\t\t\tsource: descriptor.template.content,\r\n\t\t\t\tfilename,\r\n\t\t\t\tid,\r\n\t\t\t\tscoped: hasScoped,\r\n\t\t\t\tcompilerOptions: {\r\n\t\t\t\t\tmode: 'module',\r\n\t\t\t\t\tbindingMetadata: compiledScript?.bindings\r\n\t\t\t\t},\r\n\t\t\t\t// Disable asset URL transforms: unit tests don't need asset imports;\r\n\t\t\t\t// CJS has no stub loader for binary assets (e.g. *.jpg → require())\r\n\t\t\t\ttransformAssetUrls: false\r\n\t\t\t});\r\n\r\n\t\t\tif (template.errors.length) {\r\n\t\t\t\tconst msg = template.errors.map(e => (typeof e === 'string' ? e : e.message)).join('\\n');\r\n\t\t\t\tthrow new Error(`Template compilation errors in ${filename}:\\n${msg}`);\r\n\t\t\t}\r\n\r\n\t\t\ttemplateCode = template.code;\r\n\t\t\tlogger.checkpoint('Template compiled', { outputLength: templateCode.length });\r\n\t\t} catch (e: any) {\r\n\t\t\tthrow new Error(`Failed to compile template in ${filename}: ${e.message}`, { cause: e });\r\n\t\t}\r\n\t}\r\n\r\n\t// ------------------------------------------------------------------\r\n\t// Style blocks (optional)\r\n\t// ------------------------------------------------------------------\r\n\r\n\tlet styleCode = '';\r\n\tif (enableStyle && descriptor.styles.length > 0) {\r\n\t\tconst styles: string[] = [];\r\n\r\n\t\tfor (const style of descriptor.styles) {\r\n\t\t\ttry {\r\n\t\t\t\tconst compiled = compileStyle({\r\n\t\t\t\t\tsource: style.content,\r\n\t\t\t\t\tfilename,\r\n\t\t\t\t\tid,\r\n\t\t\t\t\tscoped: !!style.scoped,\r\n\t\t\t\t\tpreprocessLang: style.lang as any\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst hasPreprocessorError =\r\n\t\t\t\t\tcompiled.errors.length > 0 &&\r\n\t\t\t\t\tcompiled.errors.some(\r\n\t\t\t\t\t\te =>\r\n\t\t\t\t\t\t\te.message.includes('sass') ||\r\n\t\t\t\t\t\t\te.message.includes('scss') ||\r\n\t\t\t\t\t\t\te.message.includes('less') ||\r\n\t\t\t\t\t\t\te.message.includes('stylus')\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\tif (!hasPreprocessorError && compiled.code) {\r\n\t\t\t\t\tstyles.push(compiled.code);\r\n\t\t\t\t} else if (hasPreprocessorError) {\r\n\t\t\t\t\tlogger.warn(`Skipping ${style.lang ?? 'css'} style — preprocessor not available`, { filename });\r\n\t\t\t\t}\r\n\t\t\t} catch (e: any) {\r\n\t\t\t\tif (e.message.includes('Cannot find module')) {\r\n\t\t\t\t\tlogger.warn(`Skipping style block — missing module`, { filename, error: e.message });\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tthrow new Error(`Failed to compile style in ${filename}: ${e.message}`, { cause: e });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (styles.length > 0) {\r\n\t\t\tstyleCode = `\r\n// Style injection\r\nif (typeof document !== 'undefined') {\r\n (function() {\r\n const styles = ${JSON.stringify(styles)};\r\n const id = '${id}';\r\n if (!document.querySelector(\\`[data-vite-vue-id=\"\\${id}\"]\\`)) {\r\n styles.forEach((css) => {\r\n const style = document.createElement('style');\r\n style.setAttribute('data-vite-vue-id', id);\r\n if (${hasScoped}) { style.setAttribute('data-v-' + id, ''); }\r\n style.textContent = css;\r\n document.head.appendChild(style);\r\n });\r\n }\r\n })();\r\n}\r\n`;\r\n\t\t}\r\n\t}\r\n\r\n\t// ------------------------------------------------------------------\r\n\t// Assemble\r\n\t// ------------------------------------------------------------------\r\n\r\n\tlet finalCode = scriptCode;\r\n\r\n\tif (templateCode) {\r\n\t\tfinalCode += '\\n' + templateCode;\r\n\t\tfinalCode += '\\n_sfc_main.render = render;';\r\n\t}\r\n\r\n\tif (hasScoped) {\r\n\t\tfinalCode += `\\n_sfc_main.__scopeId = 'data-v-${id}';`;\r\n\t}\r\n\r\n\tif (styleCode) {\r\n\t\tfinalCode = styleCode + '\\n' + finalCode;\r\n\t}\r\n\r\n\tif (!/export\\s+default/.test(finalCode)) {\r\n\t\tfinalCode += '\\nexport default _sfc_main;';\r\n\t}\r\n\r\n\t// ------------------------------------------------------------------\r\n\t// CJS: transpile the assembled output in one pass (TS → CJS)\r\n\t// ------------------------------------------------------------------\r\n\r\n\tif (format === 'cjs') {\r\n\t\ttry {\r\n\t\t\tconst result = transformSync(finalCode, {\r\n\t\t\t\tloader: isTS ? 'ts' : 'js',\r\n\t\t\t\tformat: 'cjs',\r\n\t\t\t\ttarget: 'es2022',\r\n\t\t\t\ttsconfigRaw\r\n\t\t\t});\r\n\t\t\tfinalCode = result.code;\r\n\t\t\tlogger.checkpoint('CJS transpilation complete', { outputLength: finalCode.length });\r\n\t\t} catch (e: any) {\r\n\t\t\tthrow new Error(`Failed to transpile Vue SFC to CJS in ${filename}: ${e.message}`, { cause: e });\r\n\t\t}\r\n\t}\r\n\r\n\tlogger.checkpoint('compileVueSFC complete', { filename, outputLength: finalCode.length });\r\n\r\n\treturn { code: finalCode };\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/behave.ts","../src/index.ts","../src/junitbamboo.ts","../src/snippet.ts","../src/version.ts","../src/api/convert-configuration.ts","../src/api/index.ts","../src/api/load-configuration.ts","../src/api/load-support.ts","../src/api/run-cucumber.ts","../src/api/support.ts","../src/bindings/binding-context.ts","../src/bindings/binding-decorator.ts","../src/bindings/binding-registry.ts","../src/bindings/hook-decorators.ts","../src/bindings/step-binding.ts","../src/bindings/step-decorators.ts","../src/bindings/types.ts","../src/cli/argv-parser.ts","../src/cli/index.ts","../src/cli/run.ts","../src/formatter/behave-json-formatter.ts","../src/formatter/junit-bamboo-formatter.ts","../src/formatter/step-definition-
|
|
1
|
+
{"root":["../src/behave.ts","../src/index.ts","../src/junitbamboo.ts","../src/snippet.ts","../src/version.ts","../src/api/convert-configuration.ts","../src/api/index.ts","../src/api/load-configuration.ts","../src/api/load-support.ts","../src/api/loader-worker.ts","../src/api/parallel-loader.ts","../src/api/run-cucumber.ts","../src/api/support.ts","../src/bindings/binding-context.ts","../src/bindings/binding-decorator.ts","../src/bindings/binding-registry.ts","../src/bindings/hook-decorators.ts","../src/bindings/step-binding.ts","../src/bindings/step-decorators.ts","../src/bindings/types.ts","../src/cli/argv-parser.ts","../src/cli/index.ts","../src/cli/run.ts","../src/formatter/behave-json-formatter.ts","../src/formatter/junit-bamboo-formatter.ts","../src/formatter/step-definition-snippet-syntax/tsflow-snippet-syntax.ts","../src/gherkin/configuration.ts","../src/gherkin/gherkin-feature.ts","../src/gherkin/gherkin-manager.ts","../src/gherkin/models.ts","../src/runtime/coordinator.ts","../src/runtime/make-runtime.ts","../src/runtime/managed-scenario-context.ts","../src/runtime/message-collector.ts","../src/runtime/scenario-context.ts","../src/runtime/scenario-info.ts","../src/runtime/test-case-info.ts","../src/runtime/test-case-runner.ts","../src/runtime/types.ts","../src/runtime/utils.ts","../src/runtime/worker.ts","../src/runtime/parallel/adapter.ts","../src/runtime/parallel/run-worker.ts","../src/runtime/parallel/worker.ts","../src/runtime/serial/adapter.ts","../src/transpilers/esbuild-transpiler.ts","../src/transpilers/esbuild.ts","../src/transpilers/esnode.ts","../src/transpilers/esvue.ts","../src/transpilers/tsnode-exp.ts","../src/transpilers/tsnode.ts","../src/transpilers/tsvue-exp.ts","../src/transpilers/tsvue.ts","../src/transpilers/vue-sfc-compiler.ts","../src/types/durations.d.ts","../src/types/global.d.ts","../src/types/lep.d.ts","../src/types/vue-shim.d.ts","../src/utils/helpers.ts","../src/utils/logger.ts","../src/utils/our-callsite.ts","../src/utils/tsflow-logger.ts"],"version":"5.9.2"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "7.
|
|
1
|
+
export declare const version = "7.7.0";
|
package/lib/version.js
CHANGED
package/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AACd,QAAA,OAAO,GAAG,OAAO,CAAA","sourcesContent":["// Generated by genversion.\nexport const version = '7.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AACd,QAAA,OAAO,GAAG,OAAO,CAAA","sourcesContent":["// Generated by genversion.\nexport const version = '7.7.0'\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynxwall/cucumber-tsflow",
|
|
3
|
-
"description": "Provides 'specflow' like bindings for CucumberJS 12.
|
|
4
|
-
"version": "7.
|
|
3
|
+
"description": "Provides 'specflow' like bindings for CucumberJS 12.7.0 in TypeScript 5.9+.",
|
|
4
|
+
"version": "7.7.0",
|
|
5
5
|
"author": "Lonnie Wall <lynxdev@lynxwall.com>",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"keywords": [
|
|
@@ -51,13 +51,16 @@
|
|
|
51
51
|
"./lib/transpilers/esm/tsnode-loader": "./lib/transpilers/esm/tsnode-loader.mjs",
|
|
52
52
|
"./lib/transpilers/esm/esnode-loader": "./lib/transpilers/esm/esnode-loader.mjs",
|
|
53
53
|
"./lib/transpilers/esm/esvue-loader": "./lib/transpilers/esm/esvue-loader.mjs",
|
|
54
|
-
"./lib/transpilers/esm/esbuild-transpiler
|
|
54
|
+
"./lib/transpilers/esm/esbuild-transpiler": "./lib/transpilers/esm/esbuild-transpiler.mjs",
|
|
55
55
|
"./lib/transpilers/esm/vue-jsdom-setup": "./lib/transpilers/esm/vue-jsdom-setup.mjs",
|
|
56
56
|
"./package.json": "./package.json"
|
|
57
57
|
},
|
|
58
58
|
"types": "./lib/index.d.ts",
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=22.0.0"
|
|
61
|
+
},
|
|
59
62
|
"dependencies": {
|
|
60
|
-
"@cucumber/cucumber": "~12.
|
|
63
|
+
"@cucumber/cucumber": "~12.7.0",
|
|
61
64
|
"@jeanbenitez/logical-expression-parser": "~1.0.0",
|
|
62
65
|
"@types/node": "~22.13.10",
|
|
63
66
|
"ansis": "~3.17.0",
|
|
@@ -72,22 +75,18 @@
|
|
|
72
75
|
"lodash.merge": "~4.6.2",
|
|
73
76
|
"polyfill-symbol-metadata": "^0.0.2",
|
|
74
77
|
"require-extension-hooks": "~0.3.3",
|
|
75
|
-
"rollup": "~4.52.0",
|
|
76
78
|
"short-uuid": "~5.2.0",
|
|
77
79
|
"source-map-support": "~0.5.21",
|
|
78
80
|
"ts-node-maintained": "~10.9.6",
|
|
79
81
|
"tsconfig-paths": "~4.2.0",
|
|
80
82
|
"tslib": "2.8.1",
|
|
81
|
-
"typescript": "~5.9.2"
|
|
82
|
-
"underscore": "~1.13.7"
|
|
83
|
+
"typescript": "~5.9.2"
|
|
83
84
|
},
|
|
84
85
|
"devDependencies": {
|
|
85
|
-
"@rollup/pluginutils": "~5.3.0",
|
|
86
86
|
"@types/debug": "~4.1.12",
|
|
87
87
|
"@types/hash-sum": "~1.0.2",
|
|
88
88
|
"@types/lodash.merge": "~4.6.9",
|
|
89
89
|
"@types/source-map-support": "~0.5.10",
|
|
90
|
-
"@types/underscore": "~1.13.0",
|
|
91
90
|
"genversion": "~3.2.0",
|
|
92
91
|
"shx": "0.4.0"
|
|
93
92
|
},
|
|
@@ -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
|
-
};
|