@lynxwall/cucumber-tsflow 4.1.5 → 5.0.1

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 (76) hide show
  1. package/README.md +243 -71
  2. package/bin/cucumber-tsflow +1 -1
  3. package/lib/behave.js +25 -2
  4. package/lib/cli/argv-parser.d.ts +24 -0
  5. package/lib/cli/argv-parser.js +117 -0
  6. package/lib/cli/index.d.ts +22 -0
  7. package/lib/cli/index.js +105 -0
  8. package/lib/cli/load-configuration.d.ts +20 -0
  9. package/lib/cli/load-configuration.js +98 -0
  10. package/lib/cli/run.d.ts +1 -0
  11. package/lib/cli/run.js +54 -0
  12. package/lib/cucumber/binding-decorator.js +75 -87
  13. package/lib/cucumber/binding-registry.d.ts +8 -0
  14. package/lib/cucumber/binding-registry.js +62 -11
  15. package/lib/cucumber/hook-decorators.d.ts +30 -12
  16. package/lib/cucumber/hook-decorators.js +54 -23
  17. package/lib/cucumber/managed-scenario-context.js +6 -3
  18. package/lib/cucumber/message-collector.d.ts +55 -0
  19. package/lib/cucumber/message-collector.js +143 -0
  20. package/lib/cucumber/step-definition-decorators.js +15 -8
  21. package/lib/cucumber/utils.d.ts +16 -0
  22. package/lib/cucumber/utils.js +88 -0
  23. package/lib/esnode.d.ts +0 -0
  24. package/lib/esnode.js +20 -0
  25. package/lib/{tsflow.d.ts → esvue.d.ts} +0 -0
  26. package/lib/esvue.js +52 -0
  27. package/lib/formatters/behave-json-formatter.d.ts +36 -5
  28. package/lib/formatters/behave-json-formatter.js +36 -12
  29. package/lib/formatters/tsflow-snippet-syntax.js +44 -14
  30. package/lib/gherkin/configuration.d.ts +30 -0
  31. package/lib/gherkin/configuration.js +37 -0
  32. package/lib/gherkin/gherkin-feature.d.ts +28 -0
  33. package/lib/gherkin/gherkin-feature.js +345 -0
  34. package/lib/gherkin/gherkin-manager.d.ts +29 -0
  35. package/lib/gherkin/gherkin-manager.js +123 -0
  36. package/lib/gherkin/models.d.ts +45 -0
  37. package/lib/{tsflow.js → gherkin/models.js} +2 -4
  38. package/lib/snippet.d.ts +1 -0
  39. package/lib/snippet.js +38 -0
  40. package/lib/transpilers/esbuild-transpiler.d.ts +4 -0
  41. package/lib/transpilers/esbuild-transpiler.js +31 -0
  42. package/lib/transpilers/esbuild.d.ts +12 -0
  43. package/lib/transpilers/esbuild.js +66 -0
  44. package/lib/transpilers/vue-sfc/compiler.d.ts +7 -0
  45. package/lib/transpilers/vue-sfc/compiler.js +32 -0
  46. package/lib/transpilers/vue-sfc/index.d.ts +25 -0
  47. package/lib/transpilers/vue-sfc/index.js +62 -0
  48. package/lib/transpilers/vue-sfc/main.d.ts +8 -0
  49. package/lib/transpilers/vue-sfc/main.js +266 -0
  50. package/lib/transpilers/vue-sfc/script.d.ts +5 -0
  51. package/lib/transpilers/vue-sfc/script.js +53 -0
  52. package/lib/transpilers/vue-sfc/template.d.ts +8 -0
  53. package/lib/transpilers/vue-sfc/template.js +113 -0
  54. package/lib/transpilers/vue-sfc/types.d.ts +55 -0
  55. package/lib/transpilers/vue-sfc/types.js +13 -0
  56. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +13 -0
  57. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +67 -0
  58. package/lib/transpilers/vue-sfc/utils/error.d.ts +3 -0
  59. package/lib/transpilers/vue-sfc/utils/error.js +33 -0
  60. package/lib/transpilers/vue-sfc/utils/query.d.ts +13 -0
  61. package/lib/transpilers/vue-sfc/utils/query.js +46 -0
  62. package/lib/tsnode.js +7 -9
  63. package/lib/tsvue.d.ts +1 -9
  64. package/lib/tsvue.js +47 -28
  65. package/lib/types/step-binding-flags.d.ts +9 -1
  66. package/lib/types/step-binding-flags.js +10 -2
  67. package/lib/types/step-binding.d.ts +8 -2
  68. package/lib/types/step-binding.js +1 -1
  69. package/lib/utils/helpers.d.ts +6 -0
  70. package/lib/utils/helpers.js +28 -0
  71. package/lib/utils/logger.js +25 -2
  72. package/lib/utils/our-callsite.d.ts +1 -0
  73. package/lib/utils/our-callsite.js +33 -4
  74. package/lib/version.d.ts +1 -0
  75. package/lib/version.js +16 -0
  76. package/package.json +22 -9
@@ -12,6 +12,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
12
12
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
13
13
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
14
14
  };
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
15
18
  (function (factory) {
16
19
  if (typeof module === "object" && typeof module.exports === "object") {
17
20
  var v = factory(require, exports);
@@ -24,7 +27,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
24
27
  "use strict";
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.ManagedScenarioContext = void 0;
27
- const _ = require("underscore");
30
+ const underscore_1 = __importDefault(require("underscore"));
28
31
  const scenario_context_1 = require("../types/scenario-context");
29
32
  /**
30
33
  * Represents a [[ScenarioContext]] implementation that manages a collection of context objects that
@@ -81,7 +84,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
81
84
  return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
82
85
  }
83
86
  };
84
- const contextObjects = _.map(contextTypes, contextType => this.getOrActivateObject(contextType.prototype, () => {
87
+ const contextObjects = underscore_1.default.map(contextTypes, contextType => this.getOrActivateObject(contextType.prototype, () => {
85
88
  return new contextType();
86
89
  }));
87
90
  return invokeBindingConstructor(contextObjects);
@@ -99,4 +102,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
99
102
  exports.ManagedScenarioContext = ManagedScenarioContext;
100
103
  __exportStar(require("../types/scenario-context"), exports);
101
104
  });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zY2VuYXJpby1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL21hbmFnZWQtc2NlbmFyaW8tY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLGdDQUFnQztJQUVoQyxnRUFBMEU7SUFHMUU7OztPQUdHO0lBQ0gsTUFBYSxzQkFBc0I7UUFJbEMsWUFBWSxhQUFxQixFQUFFLElBQWM7WUFGekMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBWSxDQUFDO1lBRzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSwrQkFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQ7OztXQUdHO1FBQ0gsSUFBVyxZQUFZO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMzQixDQUFDO1FBRU0seUJBQXlCLENBQUMsZUFBb0IsRUFBRSxZQUEyQjtZQUNqRixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO2dCQUNyRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO1FBRU0sT0FBTztZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQzFDLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtvQkFDeEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNoQjtZQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVPLG9CQUFvQixDQUFDLGVBQW9CLEVBQUUsWUFBMkI7WUFDN0UsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQVcsRUFBTyxFQUFFO2dCQUNyRCxRQUFRLFlBQVksQ0FBQyxN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
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zY2VuYXJpby1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL21hbmFnZWQtc2NlbmFyaW8tY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLDREQUEyQjtJQUUzQixnRUFBMEU7SUFHMUU7OztPQUdHO0lBQ0gsTUFBYSxzQkFBc0I7UUFJbEMsWUFBWSxhQUFxQixFQUFFLElBQWM7WUFGekMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBWSxDQUFDO1lBRzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSwrQkFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQ7OztXQUdHO1FBQ0gsSUFBVyxZQUFZO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMzQixDQUFDO1FBRU0seUJBQXlCLENBQUMsZUFBb0IsRUFBRSxZQUEyQjtZQUNqRixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO2dCQUNyRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO1FBRU0sT0FBTztZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQzFDLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtvQkFDeEMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNoQjtZQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVPLG9CQUFvQixDQUFDLGVBQW9CLEVBQUUsWUFBMkI7WUFDN0UsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQVcsRUFBTyxFQUFFO2dCQUNyRCxRQUFRLFlBQVksQ0FB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
@@ -0,0 +1,55 @@
1
+ import * as messages from '@cucumber/messages';
2
+ import { StepBinding } from '../types/step-binding';
3
+ import { ManagedScenarioContext } from './managed-scenario-context';
4
+ declare class MessageCollector {
5
+ private pickleMap;
6
+ private testCaseMap;
7
+ private testCaseRunningMap;
8
+ /**
9
+ * Gets the Pickle from hook parameters passed in from Cucumber
10
+ * to find a matching Pickle (scenario) and return the scenario Context
11
+ * @param hookParam
12
+ * @returns
13
+ */
14
+ getHookScenarioContext(hookParam: any): ManagedScenarioContext | undefined;
15
+ /**
16
+ * Uses StepPattern information to find a matching scenario
17
+ * and return the ScenarioContext
18
+ * @param stepBinding
19
+ * @returns
20
+ */
21
+ getStepScenarioContext(stepBinding: StepBinding): ManagedScenarioContext | undefined;
22
+ /**
23
+ * Passed into runCucumber as a callback for all messages.
24
+ * Capture the ones we care about
25
+ * @param envelope
26
+ */
27
+ parseEnvelope(envelope: messages.Envelope): void;
28
+ /**
29
+ * Called when a test case (scenario) starts. Intercepting
30
+ * this message to initialize a new ScenarioContext
31
+ * @param testCaseStarted
32
+ */
33
+ private startTestCase;
34
+ /**
35
+ * Called when a test case (scenario) ends. Intercepting
36
+ * this message to dispose and clear the ScenarioContext
37
+ * @param testCaseFinished
38
+ */
39
+ private endTestCase;
40
+ /**
41
+ * Uses the testCaleId passed in to find the associated Pickle (scenario)
42
+ * @param testCaseId
43
+ * @returns
44
+ */
45
+ private getScenarioForTest;
46
+ /**
47
+ * StepBinding tags are initialized with an astrick when empty.
48
+ * Need to make sure tags has a value and not an astrick
49
+ * @param tags
50
+ * @returns
51
+ */
52
+ private stepHasTags;
53
+ }
54
+ declare const messageCollector: MessageCollector;
55
+ export default messageCollector;
@@ -0,0 +1,143 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./managed-scenario-context", "./utils", "../utils/helpers"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const managed_scenario_context_1 = require("./managed-scenario-context");
13
+ const utils_1 = require("./utils");
14
+ const helpers_1 = require("../utils/helpers");
15
+ class MessageCollector {
16
+ constructor() {
17
+ this.pickleMap = {};
18
+ this.testCaseMap = {};
19
+ this.testCaseRunningMap = {};
20
+ }
21
+ /**
22
+ * Gets the Pickle from hook parameters passed in from Cucumber
23
+ * to find a matching Pickle (scenario) and return the scenario Context
24
+ * @param hookParam
25
+ * @returns
26
+ */
27
+ getHookScenarioContext(hookParam) {
28
+ let scenarioContext;
29
+ if (hookParam) {
30
+ const pickle = hookParam.pickle;
31
+ const scenario = this.pickleMap[pickle.id];
32
+ if (scenario && scenario.scenarioContext) {
33
+ scenarioContext = scenario.scenarioContext;
34
+ }
35
+ }
36
+ return scenarioContext;
37
+ }
38
+ /**
39
+ * Uses StepPattern information to find a matching scenario
40
+ * and return the ScenarioContext
41
+ * @param stepBinding
42
+ * @returns
43
+ */
44
+ getStepScenarioContext(stepBinding) {
45
+ let scenarioContext;
46
+ for (const [, scenario] of Object.entries(this.pickleMap)) {
47
+ for (const step of scenario.steps) {
48
+ if ((0, utils_1.hasMatchingStep)(stepBinding.stepPattern.toString(), step.text)) {
49
+ // if we have tags on the step binding check to see if it matches one in the
50
+ // current scenario, which also includes tags associated with the feature
51
+ if (stepBinding.tags && this.stepHasTags(stepBinding.tags)) {
52
+ if (scenario.tags.length > 0 &&
53
+ (0, utils_1.hasMatchingTags)(stepBinding.tags, scenario.tags.map(x => x.name))) {
54
+ scenarioContext = scenario.scenarioContext;
55
+ }
56
+ }
57
+ else {
58
+ scenarioContext = scenario.scenarioContext;
59
+ }
60
+ }
61
+ if (scenarioContext)
62
+ break;
63
+ }
64
+ if (scenarioContext)
65
+ break;
66
+ }
67
+ return scenarioContext;
68
+ }
69
+ /**
70
+ * Passed into runCucumber as a callback for all messages.
71
+ * Capture the ones we care about
72
+ * @param envelope
73
+ */
74
+ parseEnvelope(envelope) {
75
+ if (envelope.pickle && envelope.pickle.id) {
76
+ this.pickleMap[envelope.pickle.id] = envelope.pickle;
77
+ }
78
+ else if (envelope.testCase && envelope.testCase.id) {
79
+ this.testCaseMap[envelope.testCase.id] = envelope.testCase;
80
+ }
81
+ else if (envelope.testCaseStarted) {
82
+ this.startTestCase(envelope.testCaseStarted);
83
+ }
84
+ else if (envelope.testCaseFinished) {
85
+ this.endTestCase(envelope.testCaseFinished);
86
+ }
87
+ }
88
+ /**
89
+ * Called when a test case (scenario) starts. Intercepting
90
+ * this message to initialize a new ScenarioContext
91
+ * @param testCaseStarted
92
+ */
93
+ startTestCase(testCaseStarted) {
94
+ this.testCaseRunningMap[testCaseStarted.id] = testCaseStarted;
95
+ const scenario = this.getScenarioForTest(testCaseStarted.testCaseId);
96
+ if (scenario) {
97
+ const tags = scenario.tags.map(t => t.name);
98
+ scenario.scenarioContext = new managed_scenario_context_1.ManagedScenarioContext(scenario.name, tags);
99
+ }
100
+ }
101
+ /**
102
+ * Called when a test case (scenario) ends. Intercepting
103
+ * this message to dispose and clear the ScenarioContext
104
+ * @param testCaseFinished
105
+ */
106
+ endTestCase(testCaseFinished) {
107
+ const testCase = this.testCaseRunningMap[testCaseFinished.testCaseStartedId];
108
+ if (testCase) {
109
+ const scenario = this.getScenarioForTest(testCase.testCaseId);
110
+ if (scenario && scenario.scenarioContext) {
111
+ scenario.scenarioContext.dispose();
112
+ scenario.scenarioContext = undefined;
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * Uses the testCaleId passed in to find the associated Pickle (scenario)
118
+ * @param testCaseId
119
+ * @returns
120
+ */
121
+ getScenarioForTest(testCaseId) {
122
+ const testCase = this.testCaseMap[testCaseId];
123
+ if (testCase) {
124
+ return this.pickleMap[testCase.pickleId];
125
+ }
126
+ return undefined;
127
+ }
128
+ /**
129
+ * StepBinding tags are initialized with an astrick when empty.
130
+ * Need to make sure tags has a value and not an astrick
131
+ * @param tags
132
+ * @returns
133
+ */
134
+ stepHasTags(tags) {
135
+ return (0, helpers_1.hasStringValue)(tags) && !(tags === null || tags === void 0 ? void 0 : tags.includes('*'));
136
+ }
137
+ }
138
+ // this needs to be initialized once since it's used
139
+ // throughout the test run in different modules
140
+ const messageCollector = new MessageCollector();
141
+ exports.default = messageCollector;
142
+ });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvbWVzc2FnZS1jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFFQSx5RUFBb0U7SUFDcEUsbUNBQTJEO0lBQzNELDhDQUFrRDtJQU1sRCxNQUFNLGdCQUFnQjtRQUF0QjtZQUNTLGNBQVMsR0FBOEIsRUFBRSxDQUFDO1lBQzFDLGdCQUFXLEdBQXNDLEVBQUUsQ0FBQztZQUNwRCx1QkFBa0IsR0FBNkMsRUFBRSxDQUFDO1FBNEgzRSxDQUFDO1FBMUhBOzs7OztXQUtHO1FBQ0gsc0JBQXNCLENBQUMsU0FBYztZQUNwQyxJQUFJLGVBQW1ELENBQUM7WUFFeEQsSUFBSSxTQUFTLEVBQUU7Z0JBQ2QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQW1CLENBQUM7Z0JBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFO29CQUN6QyxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztpQkFDM0M7YUFDRDtZQUNELE9BQU8sZUFBZSxDQUFDO1FBQ3hCLENBQUM7UUFFRDs7Ozs7V0FLRztRQUNILHNCQUFzQixDQUFDLFdBQXdCO1lBQzlDLElBQUksZUFBbUQsQ0FBQztZQUN4RCxLQUFLLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMxRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUU7b0JBQ2xDLElBQUksSUFBQSx1QkFBZSxFQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNuRSw0RUFBNEU7d0JBQzVFLHlFQUF5RTt3QkFDekUsSUFBSSxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUMzRCxJQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Z0NBQ3hCLElBQUEsdUJBQWUsRUFDZCxXQUFXLENBQUMsSUFBSSxFQUNoQixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDOUIsRUFDQTtnQ0FDRCxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQzs2QkFDM0M7eUJBQ0Q7NkJBQU07NEJBQ04sZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7eUJBQzNDO3FCQUNEO29CQUNELElBQUksZUFBZTt3QkFBRSxNQUFNO2lCQUMzQjtnQkFDRCxJQUFJLGVBQWU7b0JBQUUsTUFBTTthQUMzQjtZQUNELE9BQU8sZUFBZSxDQUFDO1FBQ3hCLENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsYUFBYSxDQUFDLFFBQTJCO1lBQ3hDLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFtQixDQUFDO2FBQ2xFO2lCQUFNLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtnQkFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDM0Q7aUJBQU0sSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUM3QztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUM1QztRQUNGLENBQUM7UUFFRDs7OztXQUlHO1FBQ0ssYUFBYSxDQUFDLGVBQXlDO1lBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDO1lBQzlELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckUsSUFBSSxRQUFRLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxpREFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzNFO1FBQ0YsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSyxXQUFXLENBQUMsZ0JBQTJDO1lBQzlELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdFLElBQUksUUFBUSxFQUFFO2dCQUNiLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzlELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7b0JBQ3pDLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ25DLFFBQVEsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2lCQUNyQzthQUNEO1FBQ0YsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSyxrQkFBa0IsQ0FBQyxVQUFrQjtZQUM1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlDLElBQUksUUFBUSxFQUFFO2dCQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDekM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNsQixDQUFDO1FBRUQ7Ozs7O1dBS0c7UUFDSyxXQUFXLENBQUMsSUFBWTtZQUMvQixPQUFPLElBQUEsd0JBQWMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDO1FBQ3JELENBQUM7S0FDRDtJQUVELG9EQUFvRDtJQUNwRCwrQ0FBK0M7SUFDL0MsTUFBTSxnQkFBZ0IsR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBRWxFLGtCQUFlLGdCQUFnQixDQUFDIn0=
@@ -1,10 +1,13 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
1
4
  (function (factory) {
2
5
  if (typeof module === "object" && typeof module.exports === "object") {
3
6
  var v = factory(require, exports);
4
7
  if (v !== undefined) module.exports = v;
5
8
  }
6
9
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./binding-registry", "../utils/our-callsite", "../types/step-binding"], factory);
10
+ define(["require", "exports", "./binding-registry", "../utils/our-callsite", "../types/step-binding", "short-uuid"], factory);
8
11
  }
9
12
  })(function (require, exports) {
10
13
  "use strict";
@@ -13,6 +16,7 @@
13
16
  const binding_registry_1 = require("./binding-registry");
14
17
  const our_callsite_1 = require("../utils/our-callsite");
15
18
  const step_binding_1 = require("../types/step-binding");
19
+ const short_uuid_1 = __importDefault(require("short-uuid"));
16
20
  /**
17
21
  * A method decorator that marks the associated function as a 'Given' step.
18
22
  *
@@ -29,10 +33,11 @@
29
33
  targetPrototype: target,
30
34
  targetPropertyKey: propertyKey,
31
35
  argsLength: target[propertyKey].length,
32
- tag: tag,
36
+ tags: tag,
33
37
  timeout: timeout,
34
38
  wrapperOption: wrapperOption,
35
- callsite: callsite
39
+ callsite: callsite,
40
+ cucumberKey: (0, short_uuid_1.default)().new()
36
41
  };
37
42
  binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
38
43
  return descriptor;
@@ -55,10 +60,11 @@
55
60
  targetPrototype: target,
56
61
  targetPropertyKey: propertyKey,
57
62
  argsLength: target[propertyKey].length,
58
- tag: tag,
63
+ tags: tag,
59
64
  timeout: timeout,
60
65
  wrapperOption: wrapperOption,
61
- callsite: callsite
66
+ callsite: callsite,
67
+ cucumberKey: (0, short_uuid_1.default)().new()
62
68
  };
63
69
  binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
64
70
  return descriptor;
@@ -81,10 +87,11 @@
81
87
  targetPrototype: target,
82
88
  targetPropertyKey: propertyKey,
83
89
  argsLength: target[propertyKey].length,
84
- tag: tag,
90
+ tags: tag,
85
91
  timeout: timeout,
86
92
  wrapperOption: wrapperOption,
87
- callsite: callsite
93
+ callsite: callsite,
94
+ cucumberKey: (0, short_uuid_1.default)().new()
88
95
  };
89
96
  binding_registry_1.BindingRegistry.instance.registerStepBinding(stepBinding);
90
97
  return descriptor;
@@ -92,4 +99,4 @@
92
99
  }
93
100
  exports.then = then;
94
101
  });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvc3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUEseURBQXFEO0lBQ3JELHdEQUFpRDtJQUNqRCx3REFBc0U7SUFFdEU7Ozs7OztPQU1HO0lBQ0gsU0FBZ0IsS0FBSyxDQUNwQixXQUE0QixFQUM1QixHQUFZLEVBQ1osT0FBZ0IsRUFDaEIsYUFBbUI7UUFFbkIsTUFBTSxRQUFRLEdBQUcsdUJBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQyxPQUFPLENBQUksTUFBVyxFQUFFLFdBQTRCLEVBQUUsVUFBc0MsRUFBRSxFQUFFO1lBQy9GLE1BQU0sV0FBVyxHQUFnQjtnQkFDaEMsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLFdBQVcsRUFBRSwrQkFBZ0IsQ0FBQyxLQUFLO2dCQUNuQyxlQUFlLEVBQUUsTUFBTTtnQkFDdkIsaUJBQWlCLEVBQUUsV0FBVztnQkFDOUIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNO2dCQUN0QyxHQUFHLEVBQUUsR0FBRztnQkFDUixPQUFPLEVBQUUsT0FBTztnQkFDaEIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2FBQ2xCLENBQUM7WUFFRixrQ0FBZSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUUxRCxPQUFPLFVBQVUsQ0FBQztRQUNuQixDQUFDLENBQUM7SUFDSCxDQUFDO0lBekJELHNCQXlCQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQWdCLElBQUksQ0FDbkIsV0FBNEIsRUFDNUIsR0FBWSxFQUNaLE9BQWdCLEVBQ2hCLGFBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLHVCQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEMsT0FBTyxDQUFJLE1BQVcsRUFBRSxXQUE0QixFQUFFLFVBQXNDLEVBQUUsRUFBRTtZQUMvRixNQUFNLFdBQVcsR0FBZ0I7Z0JBQ2hDLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixXQUFXLEVBQUUsK0JBQWdCLENBQUMsSUFBSTtnQkFDbEMsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLGlCQUFpQixFQUFFLFdBQVc7Z0JBQzlCLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTTtnQkFDdEMsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixRQUFRLEVBQUUsUUFBUTthQUNsQixDQUFDO1lBRUYsa0NBQWUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFMUQsT0FBTyxVQUFVLENBQUM7UUFDbkIsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQXpCRCxvQkF5QkM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFnQixJQUFJLENBQ25CLFdBQTRCLEVBQzVCLEdBQVksRUFDWixPQUFnQixFQUNoQixhQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBRyx1QkFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBDLE9BQU8sQ0FBSSxNQUFXLEVBQUUsV0FBNEIsRUFBRSxVQUFzQyxFQUFFLEVBQUU7WUFDL0YsTUFBTSxXQUFXLEdBQWdCO2dCQUNoQyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsV0FBVyxFQUFFLCtCQUFnQixDQUFDLElBQUk7Z0JBQ2xDLGVBQWUsRUFBRSxNQUFNO2dCQUN2QixpQkFBaUIsRUFBRSxXQUFXO2dCQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU07Z0JBQ3RDLEdBQUcsRUFBRSxHQUFHO2dCQUNSLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7YUFDbEIsQ0FBQztZQUVGLGtDQUFlLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTFELE9BQU8sVUFBVSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNILENBQUM7SUF6QkQsb0JBeUJDIn0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvc3RlcC1kZWZpbml0aW9uLWRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQUEseURBQXFEO0lBQ3JELHdEQUFpRDtJQUNqRCx3REFBc0U7SUFDdEUsNERBQW1DO0lBRW5DOzs7Ozs7T0FNRztJQUNILFNBQWdCLEtBQUssQ0FDcEIsV0FBNEIsRUFDNUIsR0FBWSxFQUNaLE9BQWdCLEVBQ2hCLGFBQW1CO1FBRW5CLE1BQU0sUUFBUSxHQUFHLHVCQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEMsT0FBTyxDQUFJLE1BQVcsRUFBRSxXQUE0QixFQUFFLFVBQXNDLEVBQUUsRUFBRTtZQUMvRixNQUFNLFdBQVcsR0FBZ0I7Z0JBQ2hDLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixXQUFXLEVBQUUsK0JBQWdCLENBQUMsS0FBSztnQkFDbkMsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLGlCQUFpQixFQUFFLFdBQVc7Z0JBQzlCLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTTtnQkFDdEMsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsV0FBVyxFQUFFLElBQUEsb0JBQVMsR0FBRSxDQUFDLEdBQUcsRUFBRTthQUM5QixDQUFDO1lBRUYsa0NBQWUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFMUQsT0FBTyxVQUFVLENBQUM7UUFDbkIsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQTFCRCxzQkEwQkM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFnQixJQUFJLENBQ25CLFdBQTRCLEVBQzVCLEdBQVksRUFDWixPQUFnQixFQUNoQixhQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBRyx1QkFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBDLE9BQU8sQ0FBSSxNQUFXLEVBQUUsV0FBNEIsRUFBRSxVQUFzQyxFQUFFLEVBQUU7WUFDL0YsTUFBTSxXQUFXLEdBQWdCO2dCQUNoQyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsV0FBVyxFQUFFLCtCQUFnQixDQUFDLElBQUk7Z0JBQ2xDLGVBQWUsRUFBRSxNQUFNO2dCQUN2QixpQkFBaUIsRUFBRSxXQUFXO2dCQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU07Z0JBQ3RDLElBQUksRUFBRSxHQUFHO2dCQUNULE9BQU8sRUFBRSxPQUFPO2dCQUNoQixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFBLG9CQUFTLEdBQUUsQ0FBQyxHQUFHLEVBQUU7YUFDOUIsQ0FBQztZQUVGLGtDQUFlLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTFELE9BQU8sVUFBVSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNILENBQUM7SUExQkQsb0JBMEJDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBZ0IsSUFBSSxDQUNuQixXQUE0QixFQUM1QixHQUFZLEVBQ1osT0FBZ0IsRUFDaEIsYUFBbUI7UUFFbkIsTUFBTSxRQUFRLEdBQUcsdUJBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQyxPQUFPLENBQUksTUFBVyxFQUFFLFdBQTRCLEVBQUUsVUFBc0MsRUFBRSxFQUFFO1lBQy9GLE1BQU0sV0FBVyxHQUFnQjtnQkFDaEMsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLFdBQVcsRUFBRSwrQkFBZ0IsQ0FBQyxJQUFJO2dCQUNsQyxlQUFlLEVBQUUsTUFBTTtnQkFDdkIsaUJBQWlCLEVBQUUsV0FBVztnQkFDOUIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNO2dCQUN0QyxJQUFJLEVBQUUsR0FBRztnQkFDVCxPQUFPLEVBQUUsT0FBTztnQkFDaEIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixXQUFXLEVBQUUsSUFBQSxvQkFBUyxHQUFFLENBQUMsR0FBRyxFQUFFO2FBQzlCLENBQUM7WUFFRixrQ0FBZSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUUxRCxPQUFPLFVBQVUsQ0FBQztRQUNuQixDQUFDLENBQUM7SUFDSCxDQUFDO0lBMUJELG9CQTBCQyJ9
@@ -0,0 +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;
@@ -0,0 +1,88 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
4
+ (function (factory) {
5
+ if (typeof module === "object" && typeof module.exports === "object") {
6
+ var v = factory(require, exports);
7
+ if (v !== undefined) module.exports = v;
8
+ }
9
+ else if (typeof define === "function" && define.amd) {
10
+ define(["require", "exports", "@jeanbenitez/logical-expression-parser", "../utils/logger"], factory);
11
+ }
12
+ })(function (require, exports) {
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.hasMatchingTags = exports.hasMatchingStep = void 0;
16
+ const logical_expression_parser_1 = __importDefault(require("@jeanbenitez/logical-expression-parser"));
17
+ const logger_1 = __importDefault(require("../utils/logger"));
18
+ /**
19
+ * Uses a regular expression to match a step expression with
20
+ * the feature text passed in
21
+ * @param stepText
22
+ * @param featureText
23
+ * @returns
24
+ */
25
+ const hasMatchingStep = (stepText, featureText) => {
26
+ if (stepText.trim().length === 0)
27
+ return false;
28
+ try {
29
+ const regexStep = new RegExp(getRegTextForStep(stepText));
30
+ const match = featureText.match(regexStep);
31
+ return match !== null && match.length > 0;
32
+ }
33
+ catch (err) {
34
+ logger_1.default.error(err.message);
35
+ return false;
36
+ }
37
+ };
38
+ exports.hasMatchingStep = hasMatchingStep;
39
+ /**
40
+ * Helper that uses a lexical parser to apply the tag patterns used by
41
+ * Cucumber to associate hooks with scenario and feature tags
42
+ * @param tagPattern examples: 'tag1', 'tag1 and tag2', 'tag1 or tag2)
43
+ * @param tags
44
+ * @returns
45
+ */
46
+ const hasMatchingTags = (tagPattern, tags) => {
47
+ return logical_expression_parser_1.default.parse(tagPattern.toLowerCase(), (t) => tags.map(tag => tag.toLowerCase()).includes(t));
48
+ };
49
+ exports.hasMatchingTags = hasMatchingTags;
50
+ const getRegTextForStep = (step) => {
51
+ //Ruby interpolation (like `#{Something}` ) should be replaced with `.*`
52
+ //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/65
53
+ step = step.replace(/#{(.*?)}/g, '.*');
54
+ //Parameter-types
55
+ //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/66
56
+ //https://docs.cucumber.io/cucumber/cucumber-expressions/
57
+ step = step.replace(/{float}/g, '-?\\d*\\.?\\d+');
58
+ step = step.replace(/{bigdecimal}/g, '-?\\d*\\.?\\d+');
59
+ step = step.replace(/{double}/g, '-?\\d*\\.?\\d+');
60
+ step = step.replace(/{int}/g, '-?\\d+');
61
+ step = step.replace(/{biginteger}/g, '-?\\d+');
62
+ step = step.replace(/{byte}/g, '-?\\d+');
63
+ step = step.replace(/{short}/g, '-?\\d+');
64
+ step = step.replace(/{long}/g, '-?\\d+');
65
+ step = step.replace(/{stringInDoubleQuotes}/g, '"[^"]+"');
66
+ step = step.replace(/{word}/g, '[A-Za-z]+');
67
+ step = step.replace(/{string}/g, '("|\')[^\\1]*\\1');
68
+ step = step.replace(/{boolean}/gi, '(true|false)');
69
+ step = step.replace(/{}/g, '.*');
70
+ //Optional Text
71
+ step = step.replace(/\(([a-z]+)\)/g, '($1)?');
72
+ //Alternative text a/b/c === (a|b|c)
73
+ step = step.replace(/([a-zA-Z]+)(?:\/([a-zA-Z]+))+/g, match => `(${match.replace(/\//g, '|')})`);
74
+ //Handle Cucumber Expressions (like `{Something}`) should be replaced with `.*`
75
+ //https://github.com/alexkrechik/VSCucumberAutoComplete/issues/99
76
+ //Cucumber Expressions Custom Parameter Type Documentation
77
+ //https://docs.cucumber.io/cucumber-expressions/#custom-parameters
78
+ step = step.replace(/([^\\]|^){(?![\d,])(.*?)}/g, '$1.*');
79
+ //Escape all the regex symbols to avoid errors
80
+ step = escapeRegExp(step);
81
+ return step;
82
+ };
83
+ const escapeRegExp = (str) => {
84
+ // eslint-disable-next-line no-useless-escape
85
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '$&');
86
+ };
87
+ });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsdUdBQXlEO0lBQ3pELDZEQUFxQztJQUVyQzs7Ozs7O09BTUc7SUFDSSxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWdCLEVBQUUsV0FBbUIsRUFBVyxFQUFFO1FBQ2pGLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFL0MsSUFBSTtZQUNILE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDMUM7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNiLGdCQUFNLENBQUMsS0FBSyxDQUFFLEdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQyxDQUFDO0lBWFcsUUFBQSxlQUFlLG1CQVcxQjtJQUVGOzs7Ozs7T0FNRztJQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFjLEVBQVcsRUFBRTtRQUM5RSxPQUFPLG1DQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLENBQUMsQ0FBQztJQUZXLFFBQUEs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
File without changes
package/lib/esnode.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ require('ts-node').register({
3
+ compilerOptions: {
4
+ module: 'commonjs',
5
+ moduleResolution: 'node',
6
+ target: 'es2021',
7
+ strict: true,
8
+ experimentalDecorators: true,
9
+ allowSyntheticDefaultImports: true,
10
+ resolveJsonModule: true,
11
+ esModuleInterop: true,
12
+ skipLibCheck: true,
13
+ lib: ['es2021']
14
+ },
15
+ ignore: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/'],
16
+ transpileOnly: true,
17
+ transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
18
+ });
19
+ require('tsconfig-paths').register();
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vzbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMzQixlQUFlLEVBQUU7UUFDaEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsZ0JBQWdCLEVBQUUsTUFBTTtRQUN4QixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsSUFBSTtRQUNaLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtRQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNmO0lBQ0QsTUFBTSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7SUFDL0QsYUFBYSxFQUFFLElBQUk7SUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtDQUMxRSxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyJ9
File without changes
package/lib/esvue.js ADDED
@@ -0,0 +1,52 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
4
+ (function (factory) {
5
+ if (typeof module === "object" && typeof module.exports === "object") {
6
+ var v = factory(require, exports);
7
+ if (v !== undefined) module.exports = v;
8
+ }
9
+ else if (typeof define === "function" && define.amd) {
10
+ define(["require", "exports", "./transpilers/vue-sfc"], factory);
11
+ }
12
+ })(function (require, exports) {
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const hooks = require('require-extension-hooks');
16
+ const vue_sfc_1 = __importDefault(require("./transpilers/vue-sfc"));
17
+ require('ts-node').register({
18
+ compilerOptions: {
19
+ module: 'commonjs',
20
+ moduleResolution: 'node',
21
+ target: 'es2021',
22
+ strict: true,
23
+ experimentalDecorators: true,
24
+ allowSyntheticDefaultImports: true,
25
+ resolveJsonModule: true,
26
+ esModuleInterop: true,
27
+ skipLibCheck: true,
28
+ lib: ['es2021']
29
+ },
30
+ ignore: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/'],
31
+ transpileOnly: true,
32
+ transpiler: '@lynxwall/cucumber-tsflow/lib/transpilers/esbuild-transpiler'
33
+ });
34
+ require('tsconfig-paths').register();
35
+ // Register jsdom globally and set SVGElement on global
36
+ require('jsdom-global')();
37
+ global.SVGElement = global.window.SVGElement;
38
+ hooks('vue').push(function (params) {
39
+ try {
40
+ const transformer = new vue_sfc_1.default({
41
+ exclude: ['(?:^|/)node_modules/', '(?:^|/)cucumber-tsflow/lib/']
42
+ });
43
+ const transformResult = transformer.transformCode(params.content, params.filename);
44
+ return transformResult.code;
45
+ }
46
+ catch (err) {
47
+ console.log(err);
48
+ }
49
+ return params.content;
50
+ });
51
+ });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN2dWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXN2dWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7SUFBQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNqRCxvRUFBbUQ7SUFFbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMzQixlQUFlLEVBQUU7WUFDaEIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsSUFBSTtZQUNaLHNCQUFzQixFQUFFLElBQUk7WUFDNUIsNEJBQTRCLEVBQUUsSUFBSTtZQUNsQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztTQUNmO1FBQ0QsTUFBTSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7UUFDL0QsYUFBYSxFQUFFLElBQUk7UUFDbkIsVUFBVSxFQUFFLDhEQUE4RDtLQUMxRSxDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUVyQyx1REFBdUQ7SUFDdkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBYyxDQUFDLFVBQVUsR0FBSSxNQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUUvRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBVztRQUN0QyxJQUFJO1lBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBYyxDQUFDO2dCQUN0QyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQzthQUNoRSxDQUFDLENBQUM7WUFDSCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRW5GLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqQjtRQUNELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQyJ9
@@ -1,5 +1,39 @@
1
- import JsonFormatter, { IJsonStep } from '@cucumber/cucumber/lib/formatter/json_formatter';
2
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
+ }
3
37
  interface IBuildJsonStepOptions {
4
38
  isBeforeHook: boolean;
5
39
  gherkinStepMap: Record<string, messages.Step>;
@@ -8,11 +42,8 @@ interface IBuildJsonStepOptions {
8
42
  testStepAttachments: messages.Attachment[];
9
43
  testStepResult: messages.TestStepResult;
10
44
  }
11
- /**
12
- * Extending JsonFormatter.getStepData to add a name field to before
13
- * and After steps so that json can be exported to Behave Pro (name on steps required)
14
- */
15
45
  export default class BehaveJsonFormatter extends JsonFormatter {
46
+ static readonly documentation: string;
16
47
  getStepData({ isBeforeHook, gherkinStepMap, pickleStepMap, testStep, testStepAttachments, testStepResult }: IBuildJsonStepOptions): IJsonStep;
17
48
  }
18
49
  export {};