@lynxwall/cucumber-tsflow 5.1.3 → 6.0.2

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 (99) hide show
  1. package/README.md +546 -544
  2. package/bin/cucumber-tsflow +1 -1
  3. package/lib/behave.d.ts +1 -1
  4. package/lib/behave.js +27 -27
  5. package/lib/cli/argv-parser.d.ts +24 -24
  6. package/lib/cli/argv-parser.js +103 -103
  7. package/lib/cli/index.d.ts +22 -22
  8. package/lib/cli/index.js +101 -96
  9. package/lib/cli/load-configuration.d.ts +20 -20
  10. package/lib/cli/load-configuration.js +92 -92
  11. package/lib/cli/run.d.ts +1 -1
  12. package/lib/cli/run.js +49 -44
  13. package/lib/cucumber/binding-decorator.d.ts +10 -10
  14. package/lib/cucumber/binding-decorator.js +180 -180
  15. package/lib/cucumber/binding-registry.d.ts +82 -82
  16. package/lib/cucumber/binding-registry.js +216 -218
  17. package/lib/cucumber/hook-decorators.d.ts +46 -46
  18. package/lib/cucumber/hook-decorators.js +102 -102
  19. package/lib/cucumber/managed-scenario-context.d.ts +21 -21
  20. package/lib/cucumber/managed-scenario-context.js +96 -95
  21. package/lib/cucumber/message-collector.d.ts +81 -80
  22. package/lib/cucumber/message-collector.js +251 -241
  23. package/lib/cucumber/parallel/coordinator.d.ts +79 -78
  24. package/lib/cucumber/parallel/coordinator.js +247 -228
  25. package/lib/cucumber/parallel/run-worker.d.ts +1 -1
  26. package/lib/cucumber/parallel/run-worker.js +31 -31
  27. package/lib/cucumber/parallel/worker.d.ts +30 -31
  28. package/lib/cucumber/parallel/worker.js +104 -104
  29. package/lib/cucumber/run-cucumber.d.ts +14 -14
  30. package/lib/cucumber/run-cucumber.js +117 -117
  31. package/lib/cucumber/runtime.d.ts +25 -25
  32. package/lib/cucumber/runtime.js +39 -39
  33. package/lib/cucumber/step-definition-decorators.d.ts +24 -24
  34. package/lib/cucumber/step-definition-decorators.js +91 -91
  35. package/lib/cucumber/utils.d.ts +16 -16
  36. package/lib/cucumber/utils.js +77 -77
  37. package/lib/esnode.js +19 -19
  38. package/lib/esvue.d.ts +1 -1
  39. package/lib/esvue.js +41 -41
  40. package/lib/formatters/behave-json-formatter.d.ts +49 -49
  41. package/lib/formatters/behave-json-formatter.js +75 -75
  42. package/lib/formatters/tsflow-snippet-syntax.d.ts +9 -9
  43. package/lib/formatters/tsflow-snippet-syntax.js +90 -93
  44. package/lib/gherkin/configuration.d.ts +30 -30
  45. package/lib/gherkin/configuration.js +26 -26
  46. package/lib/gherkin/gherkin-feature.d.ts +28 -28
  47. package/lib/gherkin/gherkin-feature.js +333 -335
  48. package/lib/gherkin/gherkin-manager.d.ts +29 -29
  49. package/lib/gherkin/gherkin-manager.js +114 -113
  50. package/lib/gherkin/models.d.ts +45 -45
  51. package/lib/gherkin/models.js +2 -2
  52. package/lib/index.d.ts +4 -4
  53. package/lib/index.js +22 -22
  54. package/lib/snippet.d.ts +1 -1
  55. package/lib/snippet.js +27 -27
  56. package/lib/transpilers/esbuild-transpiler.d.ts +4 -4
  57. package/lib/transpilers/esbuild-transpiler.js +19 -21
  58. package/lib/transpilers/esbuild.d.ts +12 -12
  59. package/lib/transpilers/esbuild.js +54 -54
  60. package/lib/transpilers/vue-sfc/compiler.d.ts +7 -7
  61. package/lib/transpilers/vue-sfc/compiler.js +21 -21
  62. package/lib/transpilers/vue-sfc/index.d.ts +23 -23
  63. package/lib/transpilers/vue-sfc/index.js +47 -45
  64. package/lib/transpilers/vue-sfc/main.d.ts +8 -8
  65. package/lib/transpilers/vue-sfc/main.js +248 -248
  66. package/lib/transpilers/vue-sfc/script.d.ts +5 -5
  67. package/lib/transpilers/vue-sfc/script.js +41 -41
  68. package/lib/transpilers/vue-sfc/template.d.ts +8 -8
  69. package/lib/transpilers/vue-sfc/template.js +101 -101
  70. package/lib/transpilers/vue-sfc/types.d.ts +55 -55
  71. package/lib/transpilers/vue-sfc/types.js +2 -2
  72. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +13 -13
  73. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +67 -67
  74. package/lib/transpilers/vue-sfc/utils/error.d.ts +3 -3
  75. package/lib/transpilers/vue-sfc/utils/error.js +22 -22
  76. package/lib/transpilers/vue-sfc/utils/query.d.ts +13 -13
  77. package/lib/transpilers/vue-sfc/utils/query.js +35 -35
  78. package/lib/tsnode.js +17 -17
  79. package/lib/tsvue.d.ts +1 -1
  80. package/lib/tsvue.js +39 -39
  81. package/lib/types/scenario-context.d.ts +16 -16
  82. package/lib/types/scenario-context.js +17 -17
  83. package/lib/types/scenario-info.d.ts +16 -16
  84. package/lib/types/scenario-info.js +23 -21
  85. package/lib/types/step-binding-flags.d.ts +53 -53
  86. package/lib/types/step-binding-flags.js +58 -58
  87. package/lib/types/step-binding.d.ts +50 -50
  88. package/lib/types/step-binding.js +17 -17
  89. package/lib/types/types.d.ts +21 -21
  90. package/lib/types/types.js +2 -2
  91. package/lib/utils/helpers.d.ts +6 -6
  92. package/lib/utils/helpers.js +17 -17
  93. package/lib/utils/logger.d.ts +3 -3
  94. package/lib/utils/logger.js +29 -29
  95. package/lib/utils/our-callsite.d.ts +27 -27
  96. package/lib/utils/our-callsite.js +73 -71
  97. package/lib/version.d.ts +1 -1
  98. package/lib/version.js +5 -5
  99. package/package.json +58 -58
package/lib/esvue.js CHANGED
@@ -1,41 +1,41 @@
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("./transpilers/vue-sfc"));
8
- require('ts-node').register({
9
- compilerOptions: {
10
- module: 'commonjs',
11
- moduleResolution: 'node',
12
- target: 'es2020',
13
- strict: true,
14
- experimentalDecorators: true,
15
- allowSyntheticDefaultImports: true,
16
- resolveJsonModule: true,
17
- esModuleInterop: true,
18
- skipLibCheck: true,
19
- lib: ['es2020']
20
- },
21
- transpileOnly: true,
22
- transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
23
- });
24
- require('tsconfig-paths').register();
25
- // Register jsdom globally and set SVGElement on global
26
- require('jsdom-global')();
27
- global.SVGElement = global.window.SVGElement;
28
- hooks('vue').push(function (params) {
29
- try {
30
- const transformer = new vue_sfc_1.default({
31
- exclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']
32
- });
33
- const transformResult = transformer.transformCode(params.content, params.filename);
34
- return transformResult.code;
35
- }
36
- catch (err) {
37
- console.log(err);
38
- }
39
- return params.content;
40
- });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN2dWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXN2dWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUNqRCxvRUFBbUQ7QUFFbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMzQixlQUFlLEVBQUU7UUFDaEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsZ0JBQWdCLEVBQUUsTUFBTTtRQUN4QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtRQUNaLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtRQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNmO0lBQ0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtDQUMxRSxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVyQyx1REFBdUQ7QUFDdkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7QUFDekIsTUFBYyxDQUFDLFVBQVUsR0FBSSxNQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUUvRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBVztJQUN0QyxJQUFJO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBYyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDZCQUE2QixDQUFDO1NBQ2hFLENBQUMsQ0FBQztRQUNILE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkYsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO0tBQzVCO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIn0=
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("./transpilers/vue-sfc"));
8
+ require('ts-node').register({
9
+ compilerOptions: {
10
+ module: 'es2022',
11
+ moduleResolution: 'node',
12
+ target: 'es2022',
13
+ strict: true,
14
+ experimentalDecorators: true,
15
+ allowSyntheticDefaultImports: true,
16
+ resolveJsonModule: true,
17
+ esModuleInterop: true,
18
+ skipLibCheck: true,
19
+ lib: ['es2022']
20
+ },
21
+ transpileOnly: true,
22
+ transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
23
+ });
24
+ require('tsconfig-paths').register();
25
+ // Register jsdom globally and set SVGElement on global
26
+ require('jsdom-global')();
27
+ global.SVGElement = global.window.SVGElement;
28
+ hooks('vue').push(function (params) {
29
+ try {
30
+ const transformer = new vue_sfc_1.default({
31
+ exclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']
32
+ });
33
+ const transformResult = transformer.transformCode(params.content, params.filename);
34
+ return transformResult.code;
35
+ }
36
+ catch (err) {
37
+ console.log(err);
38
+ }
39
+ return params.content;
40
+ });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN2dWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXN2dWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUNqRCxvRUFBbUQ7QUFFbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMzQixlQUFlLEVBQUU7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsZ0JBQWdCLEVBQUUsTUFBTTtRQUN4QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtRQUNaLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtRQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNmO0lBQ0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtDQUMxRSxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVyQyx1REFBdUQ7QUFDdkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7QUFDekIsTUFBYyxDQUFDLFVBQVUsR0FBSSxNQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUUvRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBVztJQUN0QyxJQUFJO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBYyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDZCQUE2QixDQUFDO1NBQ2hFLENBQUMsQ0FBQztRQUNILE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkYsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO0tBQzVCO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIn0=
@@ -1,49 +1,49 @@
1
- import * as messages from '@cucumber/messages';
2
- import JsonFormatter from '@cucumber/cucumber/lib/formatter/json_formatter';
3
- export interface IJsonFeature {
4
- description: string;
5
- elements: IJsonScenario[];
6
- id: string;
7
- keyword: string;
8
- line: number;
9
- name: string;
10
- tags: IJsonTag[];
11
- uri: string;
12
- }
13
- export interface IJsonScenario {
14
- description: string;
15
- id: string;
16
- keyword: string;
17
- line: number;
18
- name: string;
19
- steps: IJsonStep[];
20
- tags: IJsonTag[];
21
- type: string;
22
- }
23
- export interface IJsonStep {
24
- arguments?: any;
25
- embeddings?: any;
26
- hidden?: boolean;
27
- keyword?: string;
28
- line?: number;
29
- match?: any;
30
- name?: string;
31
- result?: any;
32
- }
33
- export interface IJsonTag {
34
- name: string;
35
- line: number;
36
- }
37
- interface IBuildJsonStepOptions {
38
- isBeforeHook: boolean;
39
- gherkinStepMap: Record<string, messages.Step>;
40
- pickleStepMap: Record<string, messages.PickleStep>;
41
- testStep: messages.TestStep;
42
- testStepAttachments: messages.Attachment[];
43
- testStepResult: messages.TestStepResult;
44
- }
45
- export default class BehaveJsonFormatter extends JsonFormatter {
46
- static readonly documentation: string;
47
- getStepData({ isBeforeHook, gherkinStepMap, pickleStepMap, testStep, testStepAttachments, testStepResult }: IBuildJsonStepOptions): IJsonStep;
48
- }
49
- export {};
1
+ import * as messages from '@cucumber/messages';
2
+ import JsonFormatter from '@cucumber/cucumber/lib/formatter/json_formatter';
3
+ export interface IJsonFeature {
4
+ description: string;
5
+ elements: IJsonScenario[];
6
+ id: string;
7
+ keyword: string;
8
+ line: number;
9
+ name: string;
10
+ tags: IJsonTag[];
11
+ uri: string;
12
+ }
13
+ export interface IJsonScenario {
14
+ description: string;
15
+ id: string;
16
+ keyword: string;
17
+ line: number;
18
+ name: string;
19
+ steps: IJsonStep[];
20
+ tags: IJsonTag[];
21
+ type: string;
22
+ }
23
+ export interface IJsonStep {
24
+ arguments?: any;
25
+ embeddings?: any;
26
+ hidden?: boolean;
27
+ keyword?: string;
28
+ line?: number;
29
+ match?: any;
30
+ name?: string;
31
+ result?: any;
32
+ }
33
+ export interface IJsonTag {
34
+ name: string;
35
+ line: number;
36
+ }
37
+ interface IBuildJsonStepOptions {
38
+ isBeforeHook: boolean;
39
+ gherkinStepMap: Record<string, messages.Step>;
40
+ pickleStepMap: Record<string, messages.PickleStep>;
41
+ testStep: messages.TestStep;
42
+ testStepAttachments: messages.Attachment[];
43
+ testStepResult: messages.TestStepResult;
44
+ }
45
+ export default class BehaveJsonFormatter extends JsonFormatter {
46
+ static readonly documentation: string;
47
+ getStepData({ isBeforeHook, gherkinStepMap, pickleStepMap, testStep, testStepAttachments, testStepResult }: IBuildJsonStepOptions): IJsonStep;
48
+ }
49
+ export {};
@@ -1,75 +1,75 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const index_1 = require("@cucumber/cucumber/lib/formatter/helpers/index");
30
- const messages = __importStar(require("@cucumber/messages"));
31
- const value_checker_1 = require("@cucumber/cucumber/lib/value_checker");
32
- const json_formatter_1 = __importDefault(require("@cucumber/cucumber/lib/formatter/json_formatter"));
33
- const { getStepKeyword } = index_1.PickleParser;
34
- class BehaveJsonFormatter extends json_formatter_1.default {
35
- getStepData({ isBeforeHook, gherkinStepMap, pickleStepMap, testStep, testStepAttachments, testStepResult }) {
36
- const data = {};
37
- if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId)) {
38
- const pickleStep = pickleStepMap[testStep.pickleStepId];
39
- data.arguments = this.formatStepArgument(pickleStep.argument, gherkinStepMap[pickleStep.astNodeIds[0]]);
40
- data.keyword = getStepKeyword({ pickleStep, gherkinStepMap });
41
- data.line = gherkinStepMap[pickleStep.astNodeIds[0]].location.line;
42
- data.name = pickleStep.text;
43
- }
44
- else {
45
- data.keyword = isBeforeHook ? 'Before' : 'After';
46
- data.hidden = true;
47
- data.name = '';
48
- }
49
- if ((0, value_checker_1.doesHaveValue)(testStep.stepDefinitionIds) && testStep.stepDefinitionIds?.length === 1) {
50
- const stepDefinitionId = testStep.stepDefinitionIds[0];
51
- const stepDefinition = this.supportCodeLibrary.stepDefinitions.find(s => s.id === stepDefinitionId);
52
- data.match = { location: (0, index_1.formatLocation)(stepDefinition) };
53
- }
54
- const { message, status } = testStepResult;
55
- data.result = {
56
- status: messages.TestStepResultStatus[status].toLowerCase()
57
- };
58
- if ((0, value_checker_1.doesHaveValue)(testStepResult.duration)) {
59
- data.result.duration = messages.TimeConversion.durationToMilliseconds(testStepResult.duration) * 1000000;
60
- }
61
- if (status === messages.TestStepResultStatus.FAILED && (0, value_checker_1.doesHaveValue)(message)) {
62
- data.result.error_message = message;
63
- }
64
- if (testStepAttachments?.length > 0) {
65
- data.embeddings = testStepAttachments.map(attachment => ({
66
- data: attachment.body,
67
- mime_type: attachment.mediaType
68
- }));
69
- }
70
- return data;
71
- }
72
- }
73
- exports.default = BehaveJsonFormatter;
74
- BehaveJsonFormatter.documentation = 'Prints the feature as JSON that can be used with Behave Pro';
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoYXZlLWpzb24tZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdHRlcnMvYmVoYXZlLWpzb24tZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBOEY7QUFDOUYsNkRBQStDO0FBQy9DLHdFQUFxRTtBQUNyRSxxR0FBNEU7QUFFNUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLG9CQUFZLENBQUM7QUErQ3hDLE1BQXFCLG1CQUFvQixTQUFRLHdCQUFhO0lBRzdELFdBQVcsQ0FBQyxFQUNYLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsY0FBYyxFQUNTO1FBQ3ZCLE1BQU0sSUFBSSxHQUFjLEVBQUUsQ0FBQztRQUMzQixJQUFJLElBQUEsNkJBQWEsRUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDekMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFzQixDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ3ZDLFVBQVUsQ0FBQyxRQUF1QyxFQUNsRCxjQUFjLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN4QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7U0FDNUI7YUFBTTtZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUNmO1FBQ0QsSUFBSSxJQUFBLDZCQUFhLEVBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksUUFBUSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUYsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLGdCQUFnQixDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFBLHNCQUFjLEVBQUMsY0FBNkIsQ0FBQyxFQUFFLENBQUM7U0FDekU7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUU7U0FDM0QsQ0FBQztRQUNGLElBQUksSUFBQSw2QkFBYSxFQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDekc7UUFDRCxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxJQUFJLElBQUEsNkJBQWEsRUFBQyxPQUFPLENBQUMsRUFBRTtZQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7U0FDcEM7UUFDRCxJQUFJLG1CQUFtQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUzthQUMvQixDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDOztBQWhERixzQ0FpREM7QUFoRHVCLGlDQUFhLEdBQVcsNkRBQTZELENBQUMifQ==
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const index_1 = require("@cucumber/cucumber/lib/formatter/helpers/index");
30
+ const messages = __importStar(require("@cucumber/messages"));
31
+ const value_checker_1 = require("@cucumber/cucumber/lib/value_checker");
32
+ const json_formatter_1 = __importDefault(require("@cucumber/cucumber/lib/formatter/json_formatter"));
33
+ const { getStepKeyword } = index_1.PickleParser;
34
+ class BehaveJsonFormatter extends json_formatter_1.default {
35
+ static documentation = 'Prints the feature as JSON that can be used with Behave Pro';
36
+ getStepData({ isBeforeHook, gherkinStepMap, pickleStepMap, testStep, testStepAttachments, testStepResult }) {
37
+ const data = {};
38
+ if ((0, value_checker_1.doesHaveValue)(testStep.pickleStepId)) {
39
+ const pickleStep = pickleStepMap[testStep.pickleStepId];
40
+ data.arguments = this.formatStepArgument(pickleStep.argument, gherkinStepMap[pickleStep.astNodeIds[0]]);
41
+ data.keyword = getStepKeyword({ pickleStep, gherkinStepMap });
42
+ data.line = gherkinStepMap[pickleStep.astNodeIds[0]].location.line;
43
+ data.name = pickleStep.text;
44
+ }
45
+ else {
46
+ data.keyword = isBeforeHook ? 'Before' : 'After';
47
+ data.hidden = true;
48
+ data.name = '';
49
+ }
50
+ if ((0, value_checker_1.doesHaveValue)(testStep.stepDefinitionIds) && testStep.stepDefinitionIds?.length === 1) {
51
+ const stepDefinitionId = testStep.stepDefinitionIds[0];
52
+ const stepDefinition = this.supportCodeLibrary.stepDefinitions.find(s => s.id === stepDefinitionId);
53
+ data.match = { location: (0, index_1.formatLocation)(stepDefinition) };
54
+ }
55
+ const { message, status } = testStepResult;
56
+ data.result = {
57
+ status: messages.TestStepResultStatus[status].toLowerCase()
58
+ };
59
+ if ((0, value_checker_1.doesHaveValue)(testStepResult.duration)) {
60
+ data.result.duration = messages.TimeConversion.durationToMilliseconds(testStepResult.duration) * 1000000;
61
+ }
62
+ if (status === messages.TestStepResultStatus.FAILED && (0, value_checker_1.doesHaveValue)(message)) {
63
+ data.result.error_message = message;
64
+ }
65
+ if (testStepAttachments?.length > 0) {
66
+ data.embeddings = testStepAttachments.map(attachment => ({
67
+ data: attachment.body,
68
+ mime_type: attachment.mediaType
69
+ }));
70
+ }
71
+ return data;
72
+ }
73
+ }
74
+ exports.default = BehaveJsonFormatter;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoYXZlLWpzb24tZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdHRlcnMvYmVoYXZlLWpzb24tZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBOEY7QUFDOUYsNkRBQStDO0FBQy9DLHdFQUFxRTtBQUNyRSxxR0FBNEU7QUFFNUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLG9CQUFZLENBQUM7QUErQ3hDLE1BQXFCLG1CQUFvQixTQUFRLHdCQUFhO0lBQ3RELE1BQU0sQ0FBVSxhQUFhLEdBQVcsNkRBQTZELENBQUM7SUFFN0csV0FBVyxDQUFDLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixjQUFjLEVBQ1M7UUFDdkIsTUFBTSxJQUFJLEdBQWMsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBQSw2QkFBYSxFQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN6QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQXNCLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FDdkMsVUFBVSxDQUFDLFFBQXVDLEVBQ2xELGNBQWMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3hDLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ25FLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztTQUM1QjthQUFNO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLElBQUEsNkJBQWEsRUFBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxRixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztZQUNwRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUEsc0JBQWMsRUFBQyxjQUE2QixDQUFDLEVBQUUsQ0FBQztTQUN6RTtRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDYixNQUFNLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRTtTQUMzRCxDQUFDO1FBQ0YsSUFBSSxJQUFBLDZCQUFhLEVBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUN6RztRQUNELElBQUksTUFBTSxLQUFLLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLElBQUksSUFBQSw2QkFBYSxFQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztTQUNwQztRQUNELElBQUksbUJBQW1CLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO2FBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7O0FBaERGLHNDQWlEQyJ9
@@ -1,9 +1,9 @@
1
- import { ISnippetSnytax, SnippetInterface } from '@cucumber/cucumber/lib/formatter/step_definition_snippet_builder/snippet_syntax';
2
- /**
3
- * Generate snippets for tsflow.
4
- * NOTE: Needs to be an exported function for cucumber to
5
- * load this correctly from common.js configuration
6
- * @param snippetInterface
7
- * @returns
8
- */
9
- export declare function TsflowSnippetSyntax(snippetInterface: SnippetInterface): ISnippetSnytax;
1
+ import { ISnippetSnytax, SnippetInterface } from '@cucumber/cucumber/lib/formatter/step_definition_snippet_builder/snippet_syntax';
2
+ /**
3
+ * Generate snippets for tsflow.
4
+ * NOTE: Needs to be an exported function for cucumber to
5
+ * load this correctly from common.js configuration
6
+ * @param snippetInterface
7
+ * @returns
8
+ */
9
+ export declare function TsflowSnippetSyntax(snippetInterface: SnippetInterface): ISnippetSnytax;
@@ -1,93 +1,90 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TsflowSnippetSyntax = void 0;
4
- const snippet_syntax_1 = require("@cucumber/cucumber/lib/formatter/step_definition_snippet_builder/snippet_syntax");
5
- const CALLBACK_NAME = 'callback';
6
- const toCamelCase = (str) => {
7
- return str
8
- .replace(/\s(.)/g, function ($1) {
9
- return $1.toUpperCase();
10
- })
11
- .replace(/\s/g, '')
12
- .replace(/[^\w]/g, '')
13
- .replace(/^(.)/, function ($1) {
14
- return $1.toLowerCase();
15
- });
16
- };
17
- /**
18
- * format cucumber expression parameters for typescript
19
- * @param parameters
20
- * @returns
21
- */
22
- const formatParameters = (parameters) => {
23
- const params = parameters.map(param => {
24
- return `${param}: ${matchType(param)}`;
25
- });
26
- return params.join(', ');
27
- };
28
- /**
29
- * match the parameter name passed in with a typescript
30
- * primitive type (string, number or boolean)
31
- * @param paramName
32
- * @returns
33
- */
34
- const matchType = (paramName) => {
35
- const numberTypes = ['int', 'float', 'bigdecimal', 'double', 'biginteger', 'byte', 'short', 'long'];
36
- const stringTypes = ['string', 'word'];
37
- if (stringTypes.find(x => paramName.indexOf(x) >= 0)) {
38
- return 'string';
39
- }
40
- if (numberTypes.find(x => paramName.indexOf(x) >= 0)) {
41
- return 'number';
42
- }
43
- if (paramName.indexOf('boolean') >= 0) {
44
- return 'boolean';
45
- }
46
- return 'any';
47
- };
48
- /**
49
- * Generate snippets for tsflow.
50
- * NOTE: Needs to be an exported function for cucumber to
51
- * load this correctly from common.js configuration
52
- * @param snippetInterface
53
- * @returns
54
- */
55
- function TsflowSnippetSyntax(snippetInterface) {
56
- return {
57
- build({ comment, generatedExpressions, functionName, stepParameterNames }) {
58
- let functionKeyword = '';
59
- if (snippetInterface === snippet_syntax_1.SnippetInterface.AsyncAwait) {
60
- functionKeyword = 'async ';
61
- }
62
- else if (snippetInterface === snippet_syntax_1.SnippetInterface.Generator) {
63
- functionKeyword = '*';
64
- }
65
- let implementation;
66
- if (snippetInterface === snippet_syntax_1.SnippetInterface.Callback) {
67
- implementation = `${CALLBACK_NAME}(null, 'pending');`;
68
- }
69
- else if (snippetInterface === snippet_syntax_1.SnippetInterface.Promise) {
70
- implementation = "return Promise.resolve('pending');";
71
- }
72
- else {
73
- implementation = "return 'pending';";
74
- }
75
- // we only care about the first expression. TypeScript has a
76
- // small number of primitive types
77
- const generatedExpression = generatedExpressions[0];
78
- const allParameterNames = generatedExpression.parameterNames.concat(stepParameterNames);
79
- if (snippetInterface === snippet_syntax_1.SnippetInterface.Callback) {
80
- allParameterNames.push(CALLBACK_NAME);
81
- }
82
- const pattern = generatedExpression.source.replace(/'/g, "\\'");
83
- const methodName = toCamelCase(pattern);
84
- const parametersStr = allParameterNames.length > 0 ? formatParameters(allParameterNames) : '';
85
- const definitionChoices = `@${functionName.toLowerCase()}('${pattern}')\n` + `${functionKeyword}${methodName}(${parametersStr}): any {\n`;
86
- return `${definitionChoices} //${comment}\n ${implementation}\n}`;
87
- }
88
- };
89
- }
90
- exports.TsflowSnippetSyntax = TsflowSnippetSyntax;
91
- // This is needed so that cucumber.js can load the function
92
- module.exports = TsflowSnippetSyntax;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNmbG93LXNuaXBwZXQtc3ludGF4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdHRlcnMvdHNmbG93LXNuaXBwZXQtc3ludGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9IQUl5RjtBQUV6RixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNuQyxPQUFPLEdBQUc7U0FDUixPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRTtRQUM5QixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUM7U0FDRCxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztTQUNsQixPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUNyQixPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUM1QixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsVUFBb0IsRUFBVSxFQUFFO0lBQ3pELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckMsT0FBTyxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sU0FBUyxHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFO0lBQy9DLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFN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
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TsflowSnippetSyntax = void 0;
4
+ const snippet_syntax_1 = require("@cucumber/cucumber/lib/formatter/step_definition_snippet_builder/snippet_syntax");
5
+ const CALLBACK_NAME = 'callback';
6
+ const toCamelCase = (str) => {
7
+ return str
8
+ .replace(/\s(.)/g, function ($1) {
9
+ return $1.toUpperCase();
10
+ })
11
+ .replace(/\s/g, '')
12
+ .replace(/[^\w]/g, '')
13
+ .replace(/^(.)/, function ($1) {
14
+ return $1.toLowerCase();
15
+ });
16
+ };
17
+ /**
18
+ * format cucumber expression parameters for typescript
19
+ * @param parameters
20
+ * @returns
21
+ */
22
+ const formatParameters = (parameters) => {
23
+ const params = parameters.map(param => {
24
+ return `${param}: ${matchType(param)}`;
25
+ });
26
+ return params.join(', ');
27
+ };
28
+ /**
29
+ * match the parameter name passed in with a typescript
30
+ * primitive type (string, number or boolean)
31
+ * @param paramName
32
+ * @returns
33
+ */
34
+ const matchType = (paramName) => {
35
+ const numberTypes = ['int', 'float', 'bigdecimal', 'double', 'biginteger', 'byte', 'short', 'long'];
36
+ const stringTypes = ['string', 'word'];
37
+ if (stringTypes.find(x => paramName.indexOf(x) >= 0)) {
38
+ return 'string';
39
+ }
40
+ if (numberTypes.find(x => paramName.indexOf(x) >= 0)) {
41
+ return 'number';
42
+ }
43
+ if (paramName.indexOf('boolean') >= 0) {
44
+ return 'boolean';
45
+ }
46
+ return 'any';
47
+ };
48
+ /**
49
+ * Generate snippets for tsflow.
50
+ * NOTE: Needs to be an exported function for cucumber to
51
+ * load this correctly from common.js configuration
52
+ * @param snippetInterface
53
+ * @returns
54
+ */
55
+ function TsflowSnippetSyntax(snippetInterface) {
56
+ return {
57
+ build({ comment, generatedExpressions, functionName, stepParameterNames }) {
58
+ let functionKeyword = '';
59
+ if (snippetInterface === snippet_syntax_1.SnippetInterface.AsyncAwait) {
60
+ functionKeyword = 'async ';
61
+ }
62
+ let implementation;
63
+ if (snippetInterface === snippet_syntax_1.SnippetInterface.Callback) {
64
+ implementation = `${CALLBACK_NAME}(null, 'pending');`;
65
+ }
66
+ else if (snippetInterface === snippet_syntax_1.SnippetInterface.Promise) {
67
+ implementation = "return Promise.resolve('pending');";
68
+ }
69
+ else {
70
+ implementation = "return 'pending';";
71
+ }
72
+ // we only care about the first expression. TypeScript has a
73
+ // small number of primitive types
74
+ const generatedExpression = generatedExpressions[0];
75
+ const allParameterNames = generatedExpression.parameterNames.concat(stepParameterNames);
76
+ if (snippetInterface === snippet_syntax_1.SnippetInterface.Callback) {
77
+ allParameterNames.push(CALLBACK_NAME);
78
+ }
79
+ const pattern = generatedExpression.source.replace(/'/g, "\\'");
80
+ const methodName = toCamelCase(pattern);
81
+ const parametersStr = allParameterNames.length > 0 ? formatParameters(allParameterNames) : '';
82
+ const definitionChoices = `@${functionName.toLowerCase()}('${pattern}')\n` + `${functionKeyword}${methodName}(${parametersStr}): any {\n`;
83
+ return `${definitionChoices} //${comment}\n ${implementation}\n}`;
84
+ }
85
+ };
86
+ }
87
+ exports.TsflowSnippetSyntax = TsflowSnippetSyntax;
88
+ // This is needed so that cucumber.js can load the function
89
+ module.exports = TsflowSnippetSyntax;
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNmbG93LXNuaXBwZXQtc3ludGF4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdHRlcnMvdHNmbG93LXNuaXBwZXQtc3ludGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9IQUl5RjtBQUV6RixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNuQyxPQUFPLEdBQUc7U0FDUixPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRTtRQUM5QixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUM7U0FDRCxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztTQUNsQixPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUNyQixPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRTtRQUM1QixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsVUFBb0IsRUFBVSxFQUFFO0lBQ3pELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDckMsT0FBTyxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sU0FBUyxHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFO0lBQy9DLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFN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
@@ -1,30 +1,30 @@
1
- export declare type ErrorOptions = {
2
- scenariosMustMatchFeatureFile: boolean;
3
- stepsMustMatchFeatureFile: boolean;
4
- allowScenariosNotInFeatureFile: boolean;
5
- };
6
- export declare type Options = {
7
- loadRelativePath?: boolean;
8
- tagFilter?: string;
9
- errors?: ErrorOptions | boolean;
10
- scenarioNameTemplate?: (vars: ScenarioNameTemplateVars) => string;
11
- };
12
- export declare type ScenarioNameTemplateVars = {
13
- featureTitle: string;
14
- scenarioTitle: string;
15
- scenarioTags: string[];
16
- featureTags: string[];
17
- };
18
- export declare const defaultErrorSettings: {
19
- scenariosMustMatchFeatureFile: boolean;
20
- stepsMustMatchFeatureFile: boolean;
21
- allowScenariosNotInFeatureFile: boolean;
22
- };
23
- export declare const defaultConfiguration: Options;
24
- export declare const getJestCucumberConfiguration: (options?: Options | undefined) => {
25
- loadRelativePath?: boolean | undefined;
26
- tagFilter?: string | undefined;
27
- errors?: boolean | ErrorOptions | undefined;
28
- scenarioNameTemplate?: ((vars: ScenarioNameTemplateVars) => string) | undefined;
29
- };
30
- export declare const setJestCucumberConfiguration: (options: Options) => void;
1
+ export type ErrorOptions = {
2
+ scenariosMustMatchFeatureFile: boolean;
3
+ stepsMustMatchFeatureFile: boolean;
4
+ allowScenariosNotInFeatureFile: boolean;
5
+ };
6
+ export type Options = {
7
+ loadRelativePath?: boolean;
8
+ tagFilter?: string;
9
+ errors?: ErrorOptions | boolean;
10
+ scenarioNameTemplate?: (vars: ScenarioNameTemplateVars) => string;
11
+ };
12
+ export type ScenarioNameTemplateVars = {
13
+ featureTitle: string;
14
+ scenarioTitle: string;
15
+ scenarioTags: string[];
16
+ featureTags: string[];
17
+ };
18
+ export declare const defaultErrorSettings: {
19
+ scenariosMustMatchFeatureFile: boolean;
20
+ stepsMustMatchFeatureFile: boolean;
21
+ allowScenariosNotInFeatureFile: boolean;
22
+ };
23
+ export declare const defaultConfiguration: Options;
24
+ export declare const getJestCucumberConfiguration: (options?: Options) => {
25
+ loadRelativePath?: boolean | undefined;
26
+ tagFilter?: string | undefined;
27
+ errors?: boolean | ErrorOptions | undefined;
28
+ scenarioNameTemplate?: ((vars: ScenarioNameTemplateVars) => string) | undefined;
29
+ };
30
+ export declare const setJestCucumberConfiguration: (options: Options) => void;