@lynxwall/cucumber-tsflow 6.1.1 → 6.2.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 +62 -21
  2. package/lib/behave.d.ts +1 -1
  3. package/lib/behave.js +27 -27
  4. package/lib/cli/argv-parser.d.ts +24 -24
  5. package/lib/cli/argv-parser.js +103 -103
  6. package/lib/cli/index.d.ts +21 -22
  7. package/lib/cli/index.js +95 -101
  8. package/lib/cli/load-configuration.d.ts +20 -20
  9. package/lib/cli/load-configuration.js +101 -90
  10. package/lib/cli/run.d.ts +1 -1
  11. package/lib/cli/run.js +49 -47
  12. package/lib/cucumber/binding-decorator.d.ts +10 -10
  13. package/lib/cucumber/binding-decorator.js +180 -180
  14. package/lib/cucumber/binding-registry.d.ts +82 -82
  15. package/lib/cucumber/binding-registry.js +215 -215
  16. package/lib/cucumber/hook-decorators.d.ts +46 -46
  17. package/lib/cucumber/hook-decorators.js +102 -102
  18. package/lib/cucumber/managed-scenario-context.d.ts +21 -21
  19. package/lib/cucumber/managed-scenario-context.js +95 -95
  20. package/lib/cucumber/message-collector.d.ts +81 -81
  21. package/lib/cucumber/message-collector.js +250 -250
  22. package/lib/cucumber/parallel/coordinator.d.ts +79 -79
  23. package/lib/cucumber/parallel/coordinator.js +246 -246
  24. package/lib/cucumber/parallel/run-worker.d.ts +1 -1
  25. package/lib/cucumber/parallel/run-worker.js +31 -31
  26. package/lib/cucumber/parallel/worker.d.ts +30 -30
  27. package/lib/cucumber/parallel/worker.js +103 -103
  28. package/lib/cucumber/run-cucumber.d.ts +14 -14
  29. package/lib/cucumber/run-cucumber.js +118 -118
  30. package/lib/cucumber/runtime.d.ts +25 -25
  31. package/lib/cucumber/runtime.js +39 -39
  32. package/lib/cucumber/step-definition-decorators.d.ts +24 -24
  33. package/lib/cucumber/step-definition-decorators.js +91 -91
  34. package/lib/cucumber/utils.d.ts +16 -16
  35. package/lib/cucumber/utils.js +77 -77
  36. package/lib/esnode.js +18 -18
  37. package/lib/esvue.d.ts +1 -1
  38. package/lib/esvue.js +40 -40
  39. package/lib/formatters/behave-json-formatter.d.ts +49 -49
  40. package/lib/formatters/behave-json-formatter.js +74 -74
  41. package/lib/formatters/tsflow-snippet-syntax.d.ts +9 -9
  42. package/lib/formatters/tsflow-snippet-syntax.js +89 -89
  43. package/lib/gherkin/configuration.d.ts +30 -30
  44. package/lib/gherkin/configuration.js +26 -26
  45. package/lib/gherkin/gherkin-feature.d.ts +28 -28
  46. package/lib/gherkin/gherkin-feature.js +352 -352
  47. package/lib/gherkin/gherkin-manager.d.ts +29 -29
  48. package/lib/gherkin/gherkin-manager.js +143 -143
  49. package/lib/gherkin/models.d.ts +46 -46
  50. package/lib/gherkin/models.js +2 -2
  51. package/lib/index.d.ts +4 -4
  52. package/lib/index.js +22 -22
  53. package/lib/snippet.d.ts +1 -1
  54. package/lib/snippet.js +27 -27
  55. package/lib/transpilers/esbuild-transpiler.d.ts +4 -4
  56. package/lib/transpilers/esbuild-transpiler.js +18 -18
  57. package/lib/transpilers/esbuild.d.ts +12 -12
  58. package/lib/transpilers/esbuild.js +54 -54
  59. package/lib/transpilers/vue-sfc/compiler.d.ts +7 -7
  60. package/lib/transpilers/vue-sfc/compiler.js +21 -21
  61. package/lib/transpilers/vue-sfc/index.d.ts +23 -23
  62. package/lib/transpilers/vue-sfc/index.js +46 -46
  63. package/lib/transpilers/vue-sfc/main.d.ts +8 -8
  64. package/lib/transpilers/vue-sfc/main.js +247 -247
  65. package/lib/transpilers/vue-sfc/script.d.ts +5 -5
  66. package/lib/transpilers/vue-sfc/script.js +41 -41
  67. package/lib/transpilers/vue-sfc/template.d.ts +8 -8
  68. package/lib/transpilers/vue-sfc/template.js +101 -101
  69. package/lib/transpilers/vue-sfc/types.d.ts +55 -55
  70. package/lib/transpilers/vue-sfc/types.js +2 -2
  71. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +13 -13
  72. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +67 -67
  73. package/lib/transpilers/vue-sfc/utils/error.d.ts +3 -3
  74. package/lib/transpilers/vue-sfc/utils/error.js +22 -22
  75. package/lib/transpilers/vue-sfc/utils/query.d.ts +13 -13
  76. package/lib/transpilers/vue-sfc/utils/query.js +35 -35
  77. package/lib/tsnode.js +17 -17
  78. package/lib/tsvue.d.ts +1 -1
  79. package/lib/tsvue.js +39 -39
  80. package/lib/types/scenario-context.d.ts +16 -16
  81. package/lib/types/scenario-context.js +17 -17
  82. package/lib/types/scenario-info.d.ts +16 -16
  83. package/lib/types/scenario-info.js +22 -22
  84. package/lib/types/step-binding-flags.d.ts +53 -53
  85. package/lib/types/step-binding-flags.js +59 -59
  86. package/lib/types/step-binding.d.ts +50 -50
  87. package/lib/types/step-binding.js +17 -17
  88. package/lib/types/types.d.ts +21 -21
  89. package/lib/types/types.js +2 -2
  90. package/lib/utils/helpers.d.ts +6 -6
  91. package/lib/utils/helpers.js +17 -17
  92. package/lib/utils/logger.d.ts +3 -3
  93. package/lib/utils/logger.js +29 -29
  94. package/lib/utils/our-callsite.d.ts +27 -27
  95. package/lib/utils/our-callsite.js +72 -72
  96. package/lib/version.d.ts +1 -1
  97. package/lib/version.js +5 -5
  98. package/package.json +11 -11
@@ -1,24 +1,24 @@
1
- /**
2
- * A method decorator that marks the associated function as a 'Given' step.
3
- *
4
- * @param stepPattern The regular expression that will be used to match steps.
5
- * @param tag An optional tag.
6
- * @param timeout An optional timeout.
7
- */
8
- export declare function given(stepPattern: RegExp | string, tag?: string, timeout?: number, wrapperOption?: any): MethodDecorator;
9
- /**
10
- * A method decorator that marks the associated function as a 'When' step.
11
- *
12
- * @param stepPattern The regular expression that will be used to match steps.
13
- * @param tag An optional tag.
14
- * @param timeout An optional timeout.
15
- */
16
- export declare function when(stepPattern: RegExp | string, tag?: string, timeout?: number, wrapperOption?: any): MethodDecorator;
17
- /**
18
- * A method decorator that marks the associated function as a 'Then' step.
19
- *
20
- * @param stepPattern The regular expression that will be used to match steps.
21
- * @param tag An optional tag.
22
- * @param timeout An optional timeout.
23
- */
24
- export declare function then(stepPattern: RegExp | string, tag?: string, timeout?: number, wrapperOption?: any): MethodDecorator;
1
+ /**
2
+ * A method decorator that marks the associated function as a 'Given' step.
3
+ *
4
+ * @param stepPattern The regular expression that will be used to match steps.
5
+ * @param tag An optional tag.
6
+ * @param timeout An optional timeout.
7
+ */
8
+ export declare function given(stepPattern: RegExp | string, tag?: string, timeout?: number, wrapperOption?: any): MethodDecorator;
9
+ /**
10
+ * A method decorator that marks the associated function as a 'When' step.
11
+ *
12
+ * @param stepPattern The regular expression that will be used to match steps.
13
+ * @param tag An optional tag.
14
+ * @param timeout An optional timeout.
15
+ */
16
+ export declare function when(stepPattern: RegExp | string, tag?: string, timeout?: number, wrapperOption?: any): MethodDecorator;
17
+ /**
18
+ * A method decorator that marks the associated function as a 'Then' step.
19
+ *
20
+ * @param stepPattern The regular expression that will be used to match steps.
21
+ * @param tag An optional tag.
22
+ * @param timeout An optional timeout.
23
+ */
24
+ export declare function then(stepPattern: RegExp | string, tag?: string, timeout?: number, wrapperOption?: any): MethodDecorator;
@@ -1,92 +1,92 @@
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.then = exports.when = exports.given = void 0;
7
- const binding_registry_1 = require("./binding-registry");
8
- const our_callsite_1 = require("../utils/our-callsite");
9
- const step_binding_1 = require("../types/step-binding");
10
- const short_uuid_1 = __importDefault(require("short-uuid"));
11
- /**
12
- * A method decorator that marks the associated function as a 'Given' step.
13
- *
14
- * @param stepPattern The regular expression that will be used to match steps.
15
- * @param tag An optional tag.
16
- * @param timeout An optional timeout.
17
- */
18
- function given(stepPattern, tag, timeout, wrapperOption) {
19
- const callsite = our_callsite_1.Callsite.capture();
20
- return (target, propertyKey, descriptor) => {
21
- const stepBinding = {
22
- stepPattern: stepPattern,
23
- bindingType: step_binding_1.StepBindingFlags.given,
24
- targetPrototype: target,
25
- targetPropertyKey: propertyKey,
26
- argsLength: target[propertyKey].length,
27
- tags: tag,
28
- timeout: timeout,
29
- wrapperOption: wrapperOption,
30
- callsite: callsite,
31
- cucumberKey: (0, short_uuid_1.default)().new()
32
- };
33
- binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
34
- return descriptor;
35
- };
36
- }
37
- exports.given = given;
38
- /**
39
- * A method decorator that marks the associated function as a 'When' step.
40
- *
41
- * @param stepPattern The regular expression that will be used to match steps.
42
- * @param tag An optional tag.
43
- * @param timeout An optional timeout.
44
- */
45
- function when(stepPattern, tag, timeout, wrapperOption) {
46
- const callsite = our_callsite_1.Callsite.capture();
47
- return (target, propertyKey, descriptor) => {
48
- const stepBinding = {
49
- stepPattern: stepPattern,
50
- bindingType: step_binding_1.StepBindingFlags.when,
51
- targetPrototype: target,
52
- targetPropertyKey: propertyKey,
53
- argsLength: target[propertyKey].length,
54
- tags: tag,
55
- timeout: timeout,
56
- wrapperOption: wrapperOption,
57
- callsite: callsite,
58
- cucumberKey: (0, short_uuid_1.default)().new()
59
- };
60
- binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
61
- return descriptor;
62
- };
63
- }
64
- exports.when = when;
65
- /**
66
- * A method decorator that marks the associated function as a 'Then' step.
67
- *
68
- * @param stepPattern The regular expression that will be used to match steps.
69
- * @param tag An optional tag.
70
- * @param timeout An optional timeout.
71
- */
72
- function then(stepPattern, tag, timeout, wrapperOption) {
73
- const callsite = our_callsite_1.Callsite.capture();
74
- return (target, propertyKey, descriptor) => {
75
- const stepBinding = {
76
- stepPattern: stepPattern,
77
- bindingType: step_binding_1.StepBindingFlags.then,
78
- targetPrototype: target,
79
- targetPropertyKey: propertyKey,
80
- argsLength: target[propertyKey].length,
81
- tags: tag,
82
- timeout: timeout,
83
- wrapperOption: wrapperOption,
84
- callsite: callsite,
85
- cucumberKey: (0, short_uuid_1.default)().new()
86
- };
87
- binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
88
- return descriptor;
89
- };
90
- }
91
- exports.then = then;
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.then = exports.when = exports.given = void 0;
7
+ const binding_registry_1 = require("./binding-registry");
8
+ const our_callsite_1 = require("../utils/our-callsite");
9
+ const step_binding_1 = require("../types/step-binding");
10
+ const short_uuid_1 = __importDefault(require("short-uuid"));
11
+ /**
12
+ * A method decorator that marks the associated function as a 'Given' step.
13
+ *
14
+ * @param stepPattern The regular expression that will be used to match steps.
15
+ * @param tag An optional tag.
16
+ * @param timeout An optional timeout.
17
+ */
18
+ function given(stepPattern, tag, timeout, wrapperOption) {
19
+ const callsite = our_callsite_1.Callsite.capture();
20
+ return (target, propertyKey, descriptor) => {
21
+ const stepBinding = {
22
+ stepPattern: stepPattern,
23
+ bindingType: step_binding_1.StepBindingFlags.given,
24
+ targetPrototype: target,
25
+ targetPropertyKey: propertyKey,
26
+ argsLength: target[propertyKey].length,
27
+ tags: tag,
28
+ timeout: timeout,
29
+ wrapperOption: wrapperOption,
30
+ callsite: callsite,
31
+ cucumberKey: (0, short_uuid_1.default)().new()
32
+ };
33
+ binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
34
+ return descriptor;
35
+ };
36
+ }
37
+ exports.given = given;
38
+ /**
39
+ * A method decorator that marks the associated function as a 'When' step.
40
+ *
41
+ * @param stepPattern The regular expression that will be used to match steps.
42
+ * @param tag An optional tag.
43
+ * @param timeout An optional timeout.
44
+ */
45
+ function when(stepPattern, tag, timeout, wrapperOption) {
46
+ const callsite = our_callsite_1.Callsite.capture();
47
+ return (target, propertyKey, descriptor) => {
48
+ const stepBinding = {
49
+ stepPattern: stepPattern,
50
+ bindingType: step_binding_1.StepBindingFlags.when,
51
+ targetPrototype: target,
52
+ targetPropertyKey: propertyKey,
53
+ argsLength: target[propertyKey].length,
54
+ tags: tag,
55
+ timeout: timeout,
56
+ wrapperOption: wrapperOption,
57
+ callsite: callsite,
58
+ cucumberKey: (0, short_uuid_1.default)().new()
59
+ };
60
+ binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
61
+ return descriptor;
62
+ };
63
+ }
64
+ exports.when = when;
65
+ /**
66
+ * A method decorator that marks the associated function as a 'Then' step.
67
+ *
68
+ * @param stepPattern The regular expression that will be used to match steps.
69
+ * @param tag An optional tag.
70
+ * @param timeout An optional timeout.
71
+ */
72
+ function then(stepPattern, tag, timeout, wrapperOption) {
73
+ const callsite = our_callsite_1.Callsite.capture();
74
+ return (target, propertyKey, descriptor) => {
75
+ const stepBinding = {
76
+ stepPattern: stepPattern,
77
+ bindingType: step_binding_1.StepBindingFlags.then,
78
+ targetPrototype: target,
79
+ targetPropertyKey: propertyKey,
80
+ argsLength: target[propertyKey].length,
81
+ tags: tag,
82
+ timeout: timeout,
83
+ wrapperOption: wrapperOption,
84
+ callsite: callsite,
85
+ cucumberKey: (0, short_uuid_1.default)().new()
86
+ };
87
+ binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
88
+ return descriptor;
89
+ };
90
+ }
91
+ exports.then = then;
92
92
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvc3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseURBQXFEO0FBQ3JELHdEQUFpRDtBQUNqRCx3REFBc0U7QUFDdEUsNERBQW1DO0FBRW5DOzs7Ozs7R0FNRztBQUNILFNBQWdCLEtBQUssQ0FDcEIsV0FBNEIsRUFDNUIsR0FBWSxFQUNaLE9BQWdCLEVBQ2hCLGFBQW1CO0lBRW5CLE1BQU0sUUFBUSxHQUFHLHVCQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFcEMsT0FBTyxDQUFJLE1BQVcsRUFBRSxXQUE0QixFQUFFLFVBQXNDLEVBQUUsRUFBRTtRQUMvRixNQUFNLFdBQVcsR0FBZ0I7WUFDaEMsV0FBVyxFQUFFLFdBQVc7WUFDeEIsV0FBVyxFQUFFLCtCQUFnQixDQUFDLEtBQUs7WUFDbkMsZUFBZSxFQUFFLE1BQU07WUFDdkIsaUJBQWlCLEVBQUUsV0FBVztZQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU07WUFDdEMsSUFBSSxFQUFFLEdBQUc7WUFDVCxPQUFPLEVBQUUsT0FBTztZQUNoQixhQUFhLEVBQUUsYUFBYTtZQUM1QixRQUFRLEVBQUUsUUFBUTtZQUNsQixXQUFXLEVBQUUsSUFBQSxvQkFBUyxHQUFFLENBQUMsR0FBRyxFQUFFO1NBQzlCLENBQUM7UUFFRixrQ0FBZSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLENBQUM7QUFDSCxDQUFDO0FBMUJELHNCQTBCQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLElBQUksQ0FDbkIsV0FBNEIsRUFDNUIsR0FBWSxFQUNaLE9BQWdCLEVBQ2hCLGFBQW1CO0lBRW5CLE1BQU0sUUFBUSxHQUFHLHVCQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFcEMsT0FBTyxDQUFJLE1BQVcsRUFBRSxXQUE0QixFQUFFLFVBQXNDLEVBQUUsRUFBRTtRQUMvRixNQUFNLFdBQVcsR0FBZ0I7WUFDaEMsV0FBVyxFQUFFLFdBQVc7WUFDeEIsV0FBVyxFQUFFLCtCQUFnQixDQUFDLElBQUk7WUFDbEMsZUFBZSxFQUFFLE1BQU07WUFDdkIsaUJBQWlCLEVBQUUsV0FBVztZQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU07WUFDdEMsSUFBSSxFQUFFLEdBQUc7WUFDVCxPQUFPLEVBQUUsT0FBTztZQUNoQixhQUFhLEVBQUUsYUFBYTtZQUM1QixRQUFRLEVBQUUsUUFBUTtZQUNsQixXQUFXLEVBQUUsSUFBQSxvQkFBUyxHQUFFLENBQUMsR0FBRyxFQUFFO1NBQzlCLENBQUM7UUFFRixrQ0FBZSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLENBQUM7QUFDSCxDQUFDO0FBMUJELG9CQTBCQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLElBQUksQ0FDbkIsV0FBNEIsRUFDNUIsR0FBWSxFQUNaLE9BQWdCLEVBQ2hCLGFBQW1CO0lBRW5CLE1BQU0sUUFBUSxHQUFHLHVCQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFcEMsT0FBTyxDQUFJLE1BQVcsRUFBRSxXQUE0QixFQUFFLFVBQXNDLEVBQUUsRUFBRTtRQUMvRixNQUFNLFdBQVcsR0FBZ0I7WUFDaEMsV0FBVyxFQUFFLFdBQVc7WUFDeEIsV0FBVyxFQUFFLCtCQUFnQixDQUFDLElBQUk7WUFDbEMsZUFBZSxFQUFFLE1BQU07WUFDdkIsaUJBQWlCLEVBQUUsV0FBVztZQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU07WUFDdEMsSUFBSSxFQUFFLEdBQUc7WUFDVCxPQUFPLEVBQUUsT0FBTztZQUNoQixhQUFhLEVBQUUsYUFBYTtZQUM1QixRQUFRLEVBQUUsUUFBUTtZQUNsQixXQUFXLEVBQUUsSUFBQSxvQkFBUyxHQUFFLENBQUMsR0FBRyxFQUFFO1NBQzlCLENBQUM7UUFFRixrQ0FBZSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLENBQUM7QUFDSCxDQUFDO0FBMUJELG9CQTBCQyJ9
@@ -1,16 +1,16 @@
1
- /**
2
- * Uses a regular expression to match a step expression with
3
- * the feature text passed in
4
- * @param stepText
5
- * @param featureText
6
- * @returns
7
- */
8
- export declare const hasMatchingStep: (stepText: string, featureText: string) => boolean;
9
- /**
10
- * Helper that uses a lexical parser to apply the tag patterns used by
11
- * Cucumber to associate hooks with scenario and feature tags
12
- * @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)
13
- * @param tags
14
- * @returns
15
- */
16
- export declare const hasMatchingTags: (tagPattern: string, tags: string[]) => boolean;
1
+ /**
2
+ * Uses a regular expression to match a step expression with
3
+ * the feature text passed in
4
+ * @param stepText
5
+ * @param featureText
6
+ * @returns
7
+ */
8
+ export declare const hasMatchingStep: (stepText: string, featureText: string) => boolean;
9
+ /**
10
+ * Helper that uses a lexical parser to apply the tag patterns used by
11
+ * Cucumber to associate hooks with scenario and feature tags
12
+ * @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)
13
+ * @param tags
14
+ * @returns
15
+ */
16
+ export declare const hasMatchingTags: (tagPattern: string, tags: string[]) => boolean;
@@ -1,78 +1,78 @@
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.hasMatchingTags = exports.hasMatchingStep = void 0;
7
- const logical_expression_parser_1 = __importDefault(require("@jeanbenitez/logical-expression-parser"));
8
- const logger_1 = __importDefault(require("../utils/logger"));
9
- /**
10
- * Uses a regular expression to match a step expression with
11
- * the feature text passed in
12
- * @param stepText
13
- * @param featureText
14
- * @returns
15
- */
16
- const hasMatchingStep = (stepText, featureText) => {
17
- if (stepText.trim().length === 0)
18
- return false;
19
- try {
20
- const regexStep = new RegExp(getRegTextForStep(stepText));
21
- const match = featureText.match(regexStep);
22
- return match !== null && match.length > 0;
23
- }
24
- catch (err) {
25
- logger_1.default.error(err.message);
26
- return false;
27
- }
28
- };
29
- exports.hasMatchingStep = hasMatchingStep;
30
- /**
31
- * Helper that uses a lexical parser to apply the tag patterns used by
32
- * Cucumber to associate hooks with scenario and feature tags
33
- * @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)
34
- * @param tags
35
- * @returns
36
- */
37
- const hasMatchingTags = (tagPattern, tags) => {
38
- return logical_expression_parser_1.default.parse(tagPattern.toLowerCase(), (t) => tags.map(tag => tag.toLowerCase()).includes(t));
39
- };
40
- exports.hasMatchingTags = hasMatchingTags;
41
- const getRegTextForStep = (step) => {
42
- //Ruby interpolation (like `#{Something}` ) should be replaced with `.*`
43
- //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/65
44
- step = step.replace(/#{(.*?)}/g, '.*');
45
- //Parameter-types
46
- //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/66
47
- //https://docs.cucumber.io/cucumber/cucumber-expressions/
48
- step = step.replace(/{float}/g, '-?\\d*\\.?\\d+');
49
- step = step.replace(/{bigdecimal}/g, '-?\\d*\\.?\\d+');
50
- step = step.replace(/{double}/g, '-?\\d*\\.?\\d+');
51
- step = step.replace(/{int}/g, '-?\\d+');
52
- step = step.replace(/{biginteger}/g, '-?\\d+');
53
- step = step.replace(/{byte}/g, '-?\\d+');
54
- step = step.replace(/{short}/g, '-?\\d+');
55
- step = step.replace(/{long}/g, '-?\\d+');
56
- step = step.replace(/{stringInDoubleQuotes}/g, '"[^"]+"');
57
- step = step.replace(/{word}/g, '[A-Za-z]+');
58
- step = step.replace(/{string}/g, '("|\')[^\\1]*\\1');
59
- step = step.replace(/{boolean}/g, 'true|false');
60
- step = step.replace(/{}/g, '.*');
61
- //Optional Text
62
- step = step.replace(/\(([a-z]+)\)/g, '($1)?');
63
- //Alternative text a/b/c === (a|b|c)
64
- step = step.replace(/([a-zA-Z]+)(?:\/([a-zA-Z]+))+/g, match => `(${match.replace(/\//g, '|')})`);
65
- //Handle Cucumber Expressions (like `{Something}`) should be replaced with `.*`
66
- //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/99
67
- //Cucumber Expressions Custom Parameter Type Documentation
68
- //https://docs.cucumber.io/cucumber-expressions/#custom-parameters
69
- step = step.replace(/([^\\]|^){(?![\d,])(.*?)}/g, '$1.*');
70
- //Escape all the regex symbols to avoid errors
71
- step = escapeRegExp(step);
72
- return step;
73
- };
74
- const escapeRegExp = (str) => {
75
- // eslint-disable-next-line no-useless-escape
76
- return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '$&');
77
- };
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.hasMatchingTags = exports.hasMatchingStep = void 0;
7
+ const logical_expression_parser_1 = __importDefault(require("@jeanbenitez/logical-expression-parser"));
8
+ const logger_1 = __importDefault(require("../utils/logger"));
9
+ /**
10
+ * Uses a regular expression to match a step expression with
11
+ * the feature text passed in
12
+ * @param stepText
13
+ * @param featureText
14
+ * @returns
15
+ */
16
+ const hasMatchingStep = (stepText, featureText) => {
17
+ if (stepText.trim().length === 0)
18
+ return false;
19
+ try {
20
+ const regexStep = new RegExp(getRegTextForStep(stepText));
21
+ const match = featureText.match(regexStep);
22
+ return match !== null && match.length > 0;
23
+ }
24
+ catch (err) {
25
+ logger_1.default.error(err.message);
26
+ return false;
27
+ }
28
+ };
29
+ exports.hasMatchingStep = hasMatchingStep;
30
+ /**
31
+ * Helper that uses a lexical parser to apply the tag patterns used by
32
+ * Cucumber to associate hooks with scenario and feature tags
33
+ * @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)
34
+ * @param tags
35
+ * @returns
36
+ */
37
+ const hasMatchingTags = (tagPattern, tags) => {
38
+ return logical_expression_parser_1.default.parse(tagPattern.toLowerCase(), (t) => tags.map(tag => tag.toLowerCase()).includes(t));
39
+ };
40
+ exports.hasMatchingTags = hasMatchingTags;
41
+ const getRegTextForStep = (step) => {
42
+ //Ruby interpolation (like `#{Something}` ) should be replaced with `.*`
43
+ //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/65
44
+ step = step.replace(/#{(.*?)}/g, '.*');
45
+ //Parameter-types
46
+ //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/66
47
+ //https://docs.cucumber.io/cucumber/cucumber-expressions/
48
+ step = step.replace(/{float}/g, '-?\\d*\\.?\\d+');
49
+ step = step.replace(/{bigdecimal}/g, '-?\\d*\\.?\\d+');
50
+ step = step.replace(/{double}/g, '-?\\d*\\.?\\d+');
51
+ step = step.replace(/{int}/g, '-?\\d+');
52
+ step = step.replace(/{biginteger}/g, '-?\\d+');
53
+ step = step.replace(/{byte}/g, '-?\\d+');
54
+ step = step.replace(/{short}/g, '-?\\d+');
55
+ step = step.replace(/{long}/g, '-?\\d+');
56
+ step = step.replace(/{stringInDoubleQuotes}/g, '"[^"]+"');
57
+ step = step.replace(/{word}/g, '[A-Za-z]+');
58
+ step = step.replace(/{string}/g, '("|\')[^\\1]*\\1');
59
+ step = step.replace(/{boolean}/g, 'true|false');
60
+ step = step.replace(/{}/g, '.*');
61
+ //Optional Text
62
+ step = step.replace(/\(([a-z]+)\)/g, '($1)?');
63
+ //Alternative text a/b/c === (a|b|c)
64
+ step = step.replace(/([a-zA-Z]+)(?:\/([a-zA-Z]+))+/g, match => `(${match.replace(/\//g, '|')})`);
65
+ //Handle Cucumber Expressions (like `{Something}`) should be replaced with `.*`
66
+ //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/99
67
+ //Cucumber Expressions Custom Parameter Type Documentation
68
+ //https://docs.cucumber.io/cucumber-expressions/#custom-parameters
69
+ step = step.replace(/([^\\]|^){(?![\d,])(.*?)}/g, '$1.*');
70
+ //Escape all the regex symbols to avoid errors
71
+ step = escapeRegExp(step);
72
+ return step;
73
+ };
74
+ const escapeRegExp = (str) => {
75
+ // eslint-disable-next-line no-useless-escape
76
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '$&');
77
+ };
78
78
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdUdBQXlEO0FBQ3pELDZEQUFxQztBQUVyQzs7Ozs7O0dBTUc7QUFDSSxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWdCLEVBQUUsV0FBbUIsRUFBVyxFQUFFO0lBQ2pGLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFL0MsSUFBSTtRQUNILE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDMUM7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNiLGdCQUFNLENBQUMsS0FBSyxDQUFFLEdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQztLQUNiO0FBQ0YsQ0FBQyxDQUFDO0FBWFcsUUFBQSxlQUFlLG1CQVcxQjtBQUVGOzs7Ozs7R0FNRztBQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFjLEVBQVcsRUFBRTtJQUM5RSxPQUFPLG1DQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNHLENBQUMsQ0FBQztBQUZXLFFBQUEsZUFBZSxtQkFF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
package/lib/esnode.js CHANGED
@@ -1,19 +1,19 @@
1
- "use strict";
2
- require('ts-node').register({
3
- compilerOptions: {
4
- module: 'es2020',
5
- moduleResolution: 'node',
6
- target: 'es2020',
7
- strict: true,
8
- experimentalDecorators: true,
9
- allowSyntheticDefaultImports: true,
10
- resolveJsonModule: true,
11
- esModuleInterop: true,
12
- skipLibCheck: true,
13
- lib: ['es2020']
14
- },
15
- transpileOnly: true,
16
- transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
17
- });
18
- require('tsconfig-paths').register();
1
+ "use strict";
2
+ require('ts-node').register({
3
+ compilerOptions: {
4
+ module: 'es2020',
5
+ moduleResolution: 'node',
6
+ target: 'es2020',
7
+ strict: true,
8
+ experimentalDecorators: true,
9
+ allowSyntheticDefaultImports: true,
10
+ resolveJsonModule: true,
11
+ esModuleInterop: true,
12
+ skipLibCheck: true,
13
+ lib: ['es2020']
14
+ },
15
+ transpileOnly: true,
16
+ transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
17
+ });
18
+ require('tsconfig-paths').register();
19
19
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vzbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMzQixlQUFlLEVBQUU7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsZ0JBQWdCLEVBQUUsTUFBTTtRQUN4QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtRQUNaLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtRQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNmO0lBQ0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtDQUMxRSxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyJ9
package/lib/esvue.d.ts CHANGED
@@ -1 +1 @@
1
- export {};
1
+ export {};
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: '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
- });
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
41
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN2dWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXN2dWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUNqRCxvRUFBbUQ7QUFFbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMzQixlQUFlLEVBQUU7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsZ0JBQWdCLEVBQUUsTUFBTTtRQUN4QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtRQUNaLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtRQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNmO0lBQ0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtDQUMxRSxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVyQyx1REFBdUQ7QUFDdkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7QUFDekIsTUFBYyxDQUFDLFVBQVUsR0FBSSxNQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUUvRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBVztJQUN0QyxJQUFJO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBYyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDZCQUE2QixDQUFDO1NBQ2hFLENBQUMsQ0FBQztRQUNILE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkYsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO0tBQzVCO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIn0=