@lynxwall/cucumber-tsflow 6.5.7 → 7.1.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 (235) hide show
  1. package/README.md +130 -35
  2. package/api/index.d.ts +6 -0
  3. package/bin/cucumber-tsflow +3 -3
  4. package/bin/cucumber-tsflow.js +3 -0
  5. package/lib/api/index.d.ts +17 -0
  6. package/lib/api/index.js +30 -0
  7. package/lib/api/index.js.map +1 -0
  8. package/lib/api/load-configuration.d.ts +21 -0
  9. package/lib/api/load-configuration.js +127 -0
  10. package/lib/api/load-configuration.js.map +1 -0
  11. package/lib/api/load-support.d.ts +10 -0
  12. package/lib/api/load-support.js +48 -0
  13. package/lib/api/load-support.js.map +1 -0
  14. package/lib/api/run-cucumber.d.ts +16 -0
  15. package/lib/api/run-cucumber.js +151 -0
  16. package/lib/api/run-cucumber.js.map +1 -0
  17. package/lib/api/wrapper.mjs +6 -0
  18. package/lib/behave.js +19 -9
  19. package/lib/behave.js.map +1 -0
  20. package/lib/bindings/binding-context.d.ts +17 -0
  21. package/lib/bindings/binding-context.js +36 -0
  22. package/lib/bindings/binding-context.js.map +1 -0
  23. package/lib/{cucumber → bindings}/binding-decorator.d.ts +2 -2
  24. package/lib/bindings/binding-decorator.js +201 -0
  25. package/lib/bindings/binding-decorator.js.map +1 -0
  26. package/lib/{cucumber → bindings}/binding-registry.d.ts +10 -10
  27. package/lib/bindings/binding-registry.js +232 -0
  28. package/lib/bindings/binding-registry.js.map +1 -0
  29. package/lib/{cucumber → bindings}/hook-decorators.d.ts +6 -6
  30. package/lib/{cucumber → bindings}/hook-decorators.js +18 -16
  31. package/lib/bindings/hook-decorators.js.map +1 -0
  32. package/lib/bindings/step-binding.d.ts +60 -0
  33. package/lib/bindings/step-binding.js +6 -0
  34. package/lib/bindings/step-binding.js.map +1 -0
  35. package/lib/{cucumber/step-definition-decorators.d.ts → bindings/step-decorators.d.ts} +3 -3
  36. package/lib/bindings/step-decorators.js +97 -0
  37. package/lib/bindings/step-decorators.js.map +1 -0
  38. package/lib/bindings/types.d.ts +72 -0
  39. package/lib/bindings/types.js +58 -0
  40. package/lib/bindings/types.js.map +1 -0
  41. package/lib/cli/argv-parser.js +3 -3
  42. package/lib/cli/argv-parser.js.map +1 -0
  43. package/lib/cli/index.d.ts +1 -2
  44. package/lib/cli/index.js +12 -40
  45. package/lib/cli/index.js.map +1 -0
  46. package/lib/cli/load-configuration.d.ts +2 -1
  47. package/lib/cli/load-configuration.js +12 -10
  48. package/lib/cli/load-configuration.js.map +1 -0
  49. package/lib/cli/run.js +5 -7
  50. package/lib/cli/run.js.map +1 -0
  51. package/lib/cucumber/coordinator.d.ts +15 -0
  52. package/lib/cucumber/coordinator.js +40 -0
  53. package/lib/cucumber/coordinator.js.map +1 -0
  54. package/lib/cucumber/make-runtime.d.ts +12 -16
  55. package/lib/cucumber/make-runtime.js +10 -33
  56. package/lib/cucumber/make-runtime.js.map +1 -0
  57. package/lib/cucumber/managed-scenario-context.d.ts +3 -3
  58. package/lib/cucumber/managed-scenario-context.js +24 -24
  59. package/lib/cucumber/managed-scenario-context.js.map +1 -0
  60. package/lib/cucumber/message-collector.d.ts +3 -0
  61. package/lib/cucumber/message-collector.js +38 -16
  62. package/lib/cucumber/message-collector.js.map +1 -0
  63. package/lib/cucumber/parallel/adapter.d.ts +46 -0
  64. package/lib/cucumber/parallel/adapter.js +156 -0
  65. package/lib/cucumber/parallel/adapter.js.map +1 -0
  66. package/lib/cucumber/parallel/run-worker.d.ts +1 -1
  67. package/lib/cucumber/parallel/run-worker.js +8 -16
  68. package/lib/cucumber/parallel/run-worker.js.map +1 -0
  69. package/lib/cucumber/parallel/worker.d.ts +10 -14
  70. package/lib/cucumber/parallel/worker.js +59 -68
  71. package/lib/cucumber/parallel/worker.js.map +1 -0
  72. package/lib/cucumber/run-cucumber.d.ts +5 -3
  73. package/lib/cucumber/run-cucumber.js +59 -38
  74. package/lib/cucumber/run-cucumber.js.map +1 -0
  75. package/lib/cucumber/serial/adapter.d.ts +12 -0
  76. package/lib/cucumber/serial/adapter.js +24 -0
  77. package/lib/cucumber/serial/adapter.js.map +1 -0
  78. package/lib/cucumber/test-case-info.js +1 -1
  79. package/lib/cucumber/test-case-info.js.map +1 -0
  80. package/lib/cucumber/test-case-runner.d.ts +2 -2
  81. package/lib/cucumber/test-case-runner.js +47 -19
  82. package/lib/cucumber/test-case-runner.js.map +1 -0
  83. package/lib/cucumber/utils.js +1 -1
  84. package/lib/cucumber/utils.js.map +1 -0
  85. package/lib/cucumber/worker.d.ts +17 -0
  86. package/lib/cucumber/worker.js +57 -0
  87. package/lib/cucumber/worker.js.map +1 -0
  88. package/lib/esnode.d.ts +1 -0
  89. package/lib/esnode.js +5 -7
  90. package/lib/esnode.js.map +1 -0
  91. package/lib/esvue.js +3 -6
  92. package/lib/esvue.js.map +1 -0
  93. package/lib/formatter/behave-json-formatter.d.ts +49 -0
  94. package/lib/formatter/behave-json-formatter.js +85 -0
  95. package/lib/formatter/behave-json-formatter.js.map +1 -0
  96. package/lib/formatter/junit-bamboo-formatter.d.ts +17 -0
  97. package/lib/formatter/junit-bamboo-formatter.js +175 -0
  98. package/lib/formatter/junit-bamboo-formatter.js.map +1 -0
  99. package/lib/formatter/step-definition-snippit-syntax/tsflow-snippet-syntax.d.ts +9 -0
  100. package/lib/formatter/step-definition-snippit-syntax/tsflow-snippet-syntax.js +85 -0
  101. package/lib/formatter/step-definition-snippit-syntax/tsflow-snippet-syntax.js.map +1 -0
  102. package/lib/formatters/behave-json-formatter.js +18 -8
  103. package/lib/formatters/behave-json-formatter.js.map +1 -0
  104. package/lib/formatters/junit-bamboo-formatter.js +2 -2
  105. package/lib/formatters/junit-bamboo-formatter.js.map +1 -0
  106. package/lib/formatters/tsflow-snippet-syntax.js +2 -3
  107. package/lib/formatters/tsflow-snippet-syntax.js.map +1 -0
  108. package/lib/gherkin/configuration.d.ts +4 -4
  109. package/lib/gherkin/configuration.js +1 -1
  110. package/lib/gherkin/configuration.js.map +1 -0
  111. package/lib/gherkin/gherkin-feature.js +18 -8
  112. package/lib/gherkin/gherkin-feature.js.map +1 -0
  113. package/lib/gherkin/gherkin-manager.js +2 -2
  114. package/lib/gherkin/gherkin-manager.js.map +1 -0
  115. package/lib/gherkin/models.d.ts +1 -1
  116. package/lib/gherkin/models.js +1 -1
  117. package/lib/gherkin/models.js.map +1 -0
  118. package/lib/index.d.ts +42 -5
  119. package/lib/index.js +114 -8
  120. package/lib/index.js.map +1 -0
  121. package/lib/junitbamboo.js +19 -9
  122. package/lib/junitbamboo.js.map +1 -0
  123. package/lib/runtime/coordinator.d.ts +15 -0
  124. package/lib/runtime/coordinator.js +40 -0
  125. package/lib/runtime/coordinator.js.map +1 -0
  126. package/lib/runtime/make-runtime.d.ts +22 -0
  127. package/lib/runtime/make-runtime.js +17 -0
  128. package/lib/runtime/make-runtime.js.map +1 -0
  129. package/lib/runtime/managed-scenario-context.d.ts +52 -0
  130. package/lib/runtime/managed-scenario-context.js +149 -0
  131. package/lib/runtime/managed-scenario-context.js.map +1 -0
  132. package/lib/runtime/message-collector.d.ts +98 -0
  133. package/lib/runtime/message-collector.js +284 -0
  134. package/lib/runtime/message-collector.js.map +1 -0
  135. package/lib/runtime/parallel/adapter.d.ts +47 -0
  136. package/lib/runtime/parallel/adapter.js +159 -0
  137. package/lib/runtime/parallel/adapter.js.map +1 -0
  138. package/lib/runtime/parallel/run-worker.d.ts +1 -0
  139. package/lib/runtime/parallel/run-worker.js +24 -0
  140. package/lib/runtime/parallel/run-worker.js.map +1 -0
  141. package/lib/runtime/parallel/types.d.ts +13 -0
  142. package/lib/runtime/parallel/types.js +3 -0
  143. package/lib/runtime/parallel/types.js.map +1 -0
  144. package/lib/runtime/parallel/worker.d.ts +44 -0
  145. package/lib/runtime/parallel/worker.js +118 -0
  146. package/lib/runtime/parallel/worker.js.map +1 -0
  147. package/lib/runtime/scenario-context.d.ts +16 -0
  148. package/lib/runtime/scenario-context.js +18 -0
  149. package/lib/runtime/scenario-context.js.map +1 -0
  150. package/lib/runtime/scenario-info.d.ts +16 -0
  151. package/lib/runtime/scenario-info.js +23 -0
  152. package/lib/runtime/scenario-info.js.map +1 -0
  153. package/lib/runtime/serial/adapter.d.ts +12 -0
  154. package/lib/runtime/serial/adapter.js +24 -0
  155. package/lib/runtime/serial/adapter.js.map +1 -0
  156. package/lib/runtime/test-case-info.d.ts +23 -0
  157. package/lib/runtime/test-case-info.js +3 -0
  158. package/lib/runtime/test-case-info.js.map +1 -0
  159. package/lib/runtime/test-case-runner.d.ts +48 -0
  160. package/lib/runtime/test-case-runner.js +345 -0
  161. package/lib/runtime/test-case-runner.js.map +1 -0
  162. package/lib/runtime/utils.d.ts +16 -0
  163. package/lib/runtime/utils.js +78 -0
  164. package/lib/runtime/utils.js.map +1 -0
  165. package/lib/runtime/worker.d.ts +17 -0
  166. package/lib/runtime/worker.js +57 -0
  167. package/lib/runtime/worker.js.map +1 -0
  168. package/lib/snippet.js +20 -10
  169. package/lib/snippet.js.map +1 -0
  170. package/lib/transpilers/esbuild-transpiler.d.ts +1 -1
  171. package/lib/transpilers/esbuild-transpiler.js +1 -1
  172. package/lib/transpilers/esbuild-transpiler.js.map +1 -0
  173. package/lib/transpilers/esbuild.js +4 -4
  174. package/lib/transpilers/esbuild.js.map +1 -0
  175. package/lib/transpilers/vue-sfc/compiler.js +1 -1
  176. package/lib/transpilers/vue-sfc/compiler.js.map +1 -0
  177. package/lib/transpilers/vue-sfc/index.d.ts +4 -4
  178. package/lib/transpilers/vue-sfc/index.js +1 -2
  179. package/lib/transpilers/vue-sfc/index.js.map +1 -0
  180. package/lib/transpilers/vue-sfc/main.d.ts +1 -1
  181. package/lib/transpilers/vue-sfc/main.js +1 -1
  182. package/lib/transpilers/vue-sfc/main.js.map +1 -0
  183. package/lib/transpilers/vue-sfc/script.js +1 -2
  184. package/lib/transpilers/vue-sfc/script.js.map +1 -0
  185. package/lib/transpilers/vue-sfc/template.d.ts +1 -1
  186. package/lib/transpilers/vue-sfc/template.js +2 -3
  187. package/lib/transpilers/vue-sfc/template.js.map +1 -0
  188. package/lib/transpilers/vue-sfc/types.d.ts +2 -2
  189. package/lib/transpilers/vue-sfc/types.js +1 -1
  190. package/lib/transpilers/vue-sfc/types.js.map +1 -0
  191. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +1 -1
  192. package/lib/transpilers/vue-sfc/utils/descriptorCache.js.map +1 -0
  193. package/lib/transpilers/vue-sfc/utils/error.js +1 -1
  194. package/lib/transpilers/vue-sfc/utils/error.js.map +1 -0
  195. package/lib/transpilers/vue-sfc/utils/query.js +1 -1
  196. package/lib/transpilers/vue-sfc/utils/query.js.map +1 -0
  197. package/lib/tsconfig.node.tsbuildinfo +1 -0
  198. package/lib/tsnode.d.ts +1 -0
  199. package/lib/tsnode.js +4 -6
  200. package/lib/tsnode.js.map +1 -0
  201. package/lib/tsvue.js +3 -6
  202. package/lib/tsvue.js.map +1 -0
  203. package/lib/types/parallel.d.ts +11 -0
  204. package/lib/types/parallel.js +3 -0
  205. package/lib/types/parallel.js.map +1 -0
  206. package/lib/types/scenario-context.js +1 -1
  207. package/lib/types/scenario-context.js.map +1 -0
  208. package/lib/types/scenario-info.js +1 -1
  209. package/lib/types/scenario-info.js.map +1 -0
  210. package/lib/types/step-binding-flags.js +1 -1
  211. package/lib/types/step-binding-flags.js.map +1 -0
  212. package/lib/types/step-binding.d.ts +30 -20
  213. package/lib/types/step-binding.js +1 -1
  214. package/lib/types/step-binding.js.map +1 -0
  215. package/lib/types/types.js +1 -1
  216. package/lib/types/types.js.map +1 -0
  217. package/lib/utils/helpers.js +1 -1
  218. package/lib/utils/helpers.js.map +1 -0
  219. package/lib/utils/logger.d.ts +2 -2
  220. package/lib/utils/logger.js +7 -26
  221. package/lib/utils/logger.js.map +1 -0
  222. package/lib/utils/our-callsite.js +18 -8
  223. package/lib/utils/our-callsite.js.map +1 -0
  224. package/lib/version.d.ts +1 -1
  225. package/lib/version.js +2 -2
  226. package/lib/version.js.map +1 -0
  227. package/lib/wrapper.mjs +56 -0
  228. package/package.json +65 -27
  229. package/lib/cucumber/binding-decorator.js +0 -181
  230. package/lib/cucumber/binding-registry.js +0 -231
  231. package/lib/cucumber/parallel/coordinator.d.ts +0 -79
  232. package/lib/cucumber/parallel/coordinator.js +0 -247
  233. package/lib/cucumber/runtime.d.ts +0 -40
  234. package/lib/cucumber/runtime.js +0 -85
  235. package/lib/cucumber/step-definition-decorators.js +0 -92
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Coordinator = void 0;
4
+ const index_1 = require("@cucumber/cucumber/lib/assemble/index");
5
+ const stopwatch_1 = require("@cucumber/cucumber/lib/runtime/stopwatch");
6
+ class Coordinator {
7
+ eventBroadcaster;
8
+ newId;
9
+ sourcedPickles;
10
+ supportCodeLibrary;
11
+ adapter;
12
+ constructor(eventBroadcaster, newId, sourcedPickles, supportCodeLibrary, adapter) {
13
+ this.eventBroadcaster = eventBroadcaster;
14
+ this.newId = newId;
15
+ this.sourcedPickles = sourcedPickles;
16
+ this.supportCodeLibrary = supportCodeLibrary;
17
+ this.adapter = adapter;
18
+ }
19
+ async run() {
20
+ const testRunStartedId = this.newId();
21
+ this.eventBroadcaster.emit('envelope', {
22
+ testRunStarted: {
23
+ id: testRunStartedId,
24
+ timestamp: (0, stopwatch_1.timestamp)(),
25
+ },
26
+ });
27
+ const assembledTestCases = await (0, index_1.assembleTestCases)(testRunStartedId, this.eventBroadcaster, this.newId, this.sourcedPickles, this.supportCodeLibrary);
28
+ const success = await this.adapter.run(assembledTestCases);
29
+ this.eventBroadcaster.emit('envelope', {
30
+ testRunFinished: {
31
+ testRunStartedId,
32
+ timestamp: (0, stopwatch_1.timestamp)(),
33
+ success,
34
+ },
35
+ });
36
+ return success;
37
+ }
38
+ }
39
+ exports.Coordinator = Coordinator;
40
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/cucumber/coordinator.ts"],"names":[],"mappings":";;;AAEA,iEAAwF;AAGxF,wEAAoE;AAGpE,MAAa,WAAW;IAEZ;IACA;IACA;IACA;IACA;IALV,YACU,gBAA8B,EAC9B,KAAwB,EACxB,cAA4C,EAC5C,kBAAsC,EACtC,OAAuB;QAJvB,qBAAgB,GAAhB,gBAAgB,CAAc;QAC9B,UAAK,GAAL,KAAK,CAAmB;QACxB,mBAAc,GAAd,cAAc,CAA8B;QAC5C,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,YAAO,GAAP,OAAO,CAAgB;IAC9B,CAAC;IAEJ,KAAK,CAAC,GAAG;QACP,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAErC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC,cAAc,EAAE;gBACd,EAAE,EAAE,gBAAgB;gBACpB,SAAS,EAAE,IAAA,qBAAS,GAAE;aACvB;SACiB,CAAC,CAAA;QAErB,MAAM,kBAAkB,GAAG,MAAM,IAAA,yBAAiB,EAChD,gBAAgB,EAChB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,kBAAkB,CACxB,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QAE1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC,eAAe,EAAE;gBACf,gBAAgB;gBAChB,SAAS,EAAE,IAAA,qBAAS,GAAE;gBACtB,OAAO;aACR;SACiB,CAAC,CAAA;QAErB,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAvCD,kCAuCC","sourcesContent":["import { EventEmitter } from 'node:events'\r\nimport { Envelope, IdGenerator } from '@cucumber/messages'\r\nimport { assembleTestCases, SourcedPickle } from '@cucumber/cucumber/lib/assemble/index'\r\nimport { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types'\r\nimport { RuntimeAdapter } from '@cucumber/cucumber/lib/runtime/types'\r\nimport { timestamp } from '@cucumber/cucumber/lib/runtime/stopwatch'\r\nimport { Runtime } from '@cucumber/cucumber/lib/runtime/index'\r\n\r\nexport class Coordinator implements Runtime {\r\n constructor(\r\n private eventBroadcaster: EventEmitter,\r\n private newId: IdGenerator.NewId,\r\n private sourcedPickles: ReadonlyArray<SourcedPickle>,\r\n private supportCodeLibrary: SupportCodeLibrary,\r\n private adapter: RuntimeAdapter\r\n ) {}\r\n\r\n async run(): Promise<boolean> {\r\n const testRunStartedId = this.newId()\r\n\r\n this.eventBroadcaster.emit('envelope', {\r\n testRunStarted: {\r\n id: testRunStartedId,\r\n timestamp: timestamp(),\r\n },\r\n } satisfies Envelope)\r\n\r\n const assembledTestCases = await assembleTestCases(\r\n testRunStartedId,\r\n this.eventBroadcaster,\r\n this.newId,\r\n this.sourcedPickles,\r\n this.supportCodeLibrary\r\n )\r\n\r\n const success = await this.adapter.run(assembledTestCases)\r\n\r\n this.eventBroadcaster.emit('envelope', {\r\n testRunFinished: {\r\n testRunStartedId,\r\n timestamp: timestamp(),\r\n success,\r\n },\r\n } satisfies Envelope)\r\n\r\n return success\r\n }\r\n}\r\n"]}
@@ -1,25 +1,21 @@
1
- /// <reference types="node" />
2
- import { IRuntime } from './runtime';
3
- import { EventEmitter } from 'events';
4
- import { EventDataCollector } from '@cucumber/cucumber/lib/formatter/helpers';
1
+ import { EventEmitter } from 'node:events';
5
2
  import { IdGenerator } from '@cucumber/messages';
6
- import { ISupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';
7
- import { IRunOptionsRuntime } from '@cucumber/cucumber/lib/api/types';
8
- import { ILogger } from '@cucumber/cucumber/lib/logger';
3
+ import { IRunOptionsRuntime } from '@cucumber/cucumber/lib/api/index';
4
+ import { ILogger } from '@cucumber/cucumber/lib/environment/index';
5
+ import { SourcedPickle } from '@cucumber/cucumber/lib/assemble/index';
6
+ import { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';
7
+ import { IRunEnvironment } from '@cucumber/cucumber/lib/environment/index';
8
+ import { Runtime } from '@cucumber/cucumber/lib/runtime/types';
9
9
  /**
10
10
  * Extending this function from cucumber.js to use our own implementation
11
11
  * of the Coordinator.
12
12
  */
13
- export declare function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options } }: {
14
- cwd: string;
13
+ export declare function makeRuntime({ environment, logger, eventBroadcaster, sourcedPickles, newId, supportCodeLibrary, options, }: {
14
+ environment: IRunEnvironment;
15
15
  logger: ILogger;
16
16
  eventBroadcaster: EventEmitter;
17
- eventDataCollector: EventDataCollector;
18
17
  newId: IdGenerator.NewId;
19
- pickleIds: string[];
20
- supportCodeLibrary: ISupportCodeLibrary;
21
- requireModules: string[];
22
- requirePaths: string[];
23
- importPaths: string[];
18
+ sourcedPickles: ReadonlyArray<SourcedPickle>;
19
+ supportCodeLibrary: SupportCodeLibrary;
24
20
  options: IRunOptionsRuntime;
25
- }): IRuntime;
21
+ }): Promise<Runtime>;
@@ -1,40 +1,17 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.makeRuntime = void 0;
7
- const runtime_1 = __importDefault(require("./runtime"));
8
- const coordinator_1 = __importDefault(require("./parallel/coordinator"));
3
+ exports.makeRuntime = makeRuntime;
4
+ const adapter_1 = require("./parallel/adapter");
5
+ const adapter_2 = require("./serial/adapter");
6
+ const coordinator_1 = require("./coordinator");
9
7
  /**
10
8
  * Extending this function from cucumber.js to use our own implementation
11
9
  * of the Coordinator.
12
10
  */
13
- function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options } }) {
14
- if (parallel > 0) {
15
- return new coordinator_1.default({
16
- cwd,
17
- logger,
18
- eventBroadcaster,
19
- eventDataCollector,
20
- pickleIds,
21
- options,
22
- newId,
23
- supportCodeLibrary,
24
- requireModules,
25
- requirePaths,
26
- importPaths,
27
- numberOfWorkers: parallel
28
- });
29
- }
30
- return new runtime_1.default({
31
- eventBroadcaster,
32
- eventDataCollector,
33
- newId,
34
- pickleIds,
35
- supportCodeLibrary,
36
- options
37
- });
11
+ async function makeRuntime({ environment, logger, eventBroadcaster, sourcedPickles, newId, supportCodeLibrary, options, }) {
12
+ const adapter = options.parallel > 0
13
+ ? new adapter_1.ChildProcessAdapter(environment, logger, eventBroadcaster, options, supportCodeLibrary)
14
+ : new adapter_2.InProcessAdapter(eventBroadcaster, newId, options, supportCodeLibrary);
15
+ return new coordinator_1.Coordinator(eventBroadcaster, newId, sourcedPickles, supportCodeLibrary, adapter);
38
16
  }
39
- exports.makeRuntime = makeRuntime;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1ydW50aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL21ha2UtcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3REFBOEM7QUFLOUMseUVBQWlEO0FBSWpEOzs7R0FHRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxFQUMzQixHQUFHLEVBQ0gsTUFBTSxFQUNOLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULEtBQUssRUFDTCxrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLFlBQVksRUFDWixXQUFXLEVBQ1gsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBYWpDO0lBQ0EsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sSUFBSSxxQkFBVyxDQUFDO1lBQ3RCLEdBQUc7WUFDSCxNQUFNO1lBQ04sZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixTQUFTO1lBQ1QsT0FBTztZQUNQLEtBQUs7WUFDTCxrQkFBa0I7WUFDbEIsY0FBYztZQUNkLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZSxFQUFFLFFBQVE7U0FDekIsQ0FBQyxDQUFDO0tBQ0g7SUFDRCxPQUFPLElBQUksaUJBQU8sQ0FBQztRQUNsQixnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLEtBQUs7UUFDTCxTQUFTO1FBQ1Qsa0JBQWtCO1FBQ2xCLE9BQU87S0FDUCxDQUFDLENBQUM7QUFDSixDQUFDO0FBakRELGtDQWlEQyJ9
17
+ //# sourceMappingURL=make-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-runtime.js","sourceRoot":"","sources":["../../src/cucumber/make-runtime.ts"],"names":[],"mappings":";;AAgBA,kCAuCC;AA/CD,gDAAwD;AACxD,8CAAmD;AACnD,+CAA2C;AAE3C;;;GAGG;AACI,KAAK,UAAU,WAAW,CAAC,EAChC,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,KAAK,EACL,kBAAkB,EAClB,OAAO,GASR;IACC,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,GAAG,CAAC;QAClB,CAAC,CAAC,IAAI,6BAAmB,CACrB,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,OAAO,EACP,kBAAkB,CACnB;QACH,CAAC,CAAC,IAAI,0BAAgB,CAClB,gBAAgB,EAChB,KAAK,EACL,OAAO,EACP,kBAAkB,CACnB,CAAA;IACP,OAAO,IAAI,yBAAW,CACpB,gBAAgB,EAChB,KAAK,EACL,cAAc,EACd,kBAAkB,EAClB,OAAO,CACR,CAAA;AACH,CAAC","sourcesContent":["import { EventEmitter } from 'node:events'\r\nimport { IdGenerator } from '@cucumber/messages'\r\nimport { IRunOptionsRuntime } from '@cucumber/cucumber/lib/api/index'\r\nimport { ILogger } from '@cucumber/cucumber/lib/environment/index'\r\nimport { SourcedPickle } from '@cucumber/cucumber/lib/assemble/index'\r\nimport { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types'\r\nimport { IRunEnvironment } from '@cucumber/cucumber/lib/environment/index'\r\nimport { Runtime, RuntimeAdapter } from '@cucumber/cucumber/lib/runtime/types'\r\nimport { ChildProcessAdapter } from './parallel/adapter'\r\nimport { InProcessAdapter } from './serial/adapter'\r\nimport { Coordinator } from './coordinator'\r\n\r\n/**\r\n * Extending this function from cucumber.js to use our own implementation\r\n * of the Coordinator.\r\n */\r\nexport async function makeRuntime({\r\n environment,\r\n logger,\r\n eventBroadcaster,\r\n sourcedPickles,\r\n newId,\r\n supportCodeLibrary,\r\n options,\r\n}: {\r\n environment: IRunEnvironment\r\n logger: ILogger\r\n eventBroadcaster: EventEmitter\r\n newId: IdGenerator.NewId\r\n sourcedPickles: ReadonlyArray<SourcedPickle>\r\n supportCodeLibrary: SupportCodeLibrary\r\n options: IRunOptionsRuntime\r\n}): Promise<Runtime> {\r\n const adapter: RuntimeAdapter =\r\n options.parallel > 0\r\n ? new ChildProcessAdapter(\r\n environment,\r\n logger,\r\n eventBroadcaster,\r\n options,\r\n supportCodeLibrary\r\n )\r\n : new InProcessAdapter(\r\n eventBroadcaster,\r\n newId,\r\n options,\r\n supportCodeLibrary\r\n )\r\n return new Coordinator(\r\n eventBroadcaster,\r\n newId,\r\n sourcedPickles,\r\n supportCodeLibrary,\r\n adapter\r\n )\r\n}\r\n"]}
@@ -15,7 +15,7 @@ export declare class ManagedScenarioContext implements ScenarioContext {
15
15
  *
16
16
  */
17
17
  get scenarioInfo(): ScenarioInfo;
18
- getOrActivateBindingClass(targetPrototype: any, contextTypes: ContextType[], worldObj: World): any;
18
+ getOrActivateBindingClass(classPrototype: any, contextTypes: ContextType[], worldObj: World): any;
19
19
  /**
20
20
  * If context objects are passed into our step, this function will
21
21
  * call initialize on the context objects only once.
@@ -32,7 +32,7 @@ export declare class ManagedScenarioContext implements ScenarioContext {
32
32
  /**
33
33
  * Get or activate any object
34
34
  *
35
- * @param targetPrototype prototype for the object
35
+ * @param classPrototype prototype for the object
36
36
  * @param activatorFunc callback function used to create an instance of the object
37
37
  * @param optional optional parameter passed into constructors
38
38
  * @returns
@@ -42,7 +42,7 @@ export declare class ManagedScenarioContext implements ScenarioContext {
42
42
  * Get or activate Context objects. Marks an object as a context
43
43
  * object in ActiveInfo to let the system know it supports an initialize function.
44
44
  *
45
- * @param targetPrototype prototype for the object
45
+ * @param classPrototype prototype for the object
46
46
  * @param activatorFunc callback function used to create an instance of the object
47
47
  * @param optional optional parameter passed into constructors
48
48
  * @returns
@@ -46,9 +46,9 @@ class ManagedScenarioContext {
46
46
  get scenarioInfo() {
47
47
  return this._scenarioInfo;
48
48
  }
49
- getOrActivateBindingClass(targetPrototype, contextTypes, worldObj) {
50
- return this.getOrActivateObject(targetPrototype, () => {
51
- return this.activateBindingClass(targetPrototype, contextTypes, worldObj);
49
+ getOrActivateBindingClass(classPrototype, contextTypes, worldObj) {
50
+ return this.getOrActivateObject(classPrototype, () => {
51
+ return this.activateBindingClass(classPrototype, contextTypes, worldObj);
52
52
  });
53
53
  }
54
54
  /**
@@ -76,31 +76,31 @@ class ManagedScenarioContext {
76
76
  }
77
77
  }
78
78
  }
79
- activateBindingClass(targetPrototype, contextTypes, worldObj) {
79
+ activateBindingClass(classPrototype, contextTypes, worldObj) {
80
80
  const invokeBindingConstructor = (args) => {
81
81
  switch (contextTypes.length) {
82
82
  case 0:
83
- return new targetPrototype.constructor();
83
+ return new classPrototype.constructor();
84
84
  case 1:
85
- return new targetPrototype.constructor(args[0]);
85
+ return new classPrototype.constructor(args[0]);
86
86
  case 2:
87
- return new targetPrototype.constructor(args[0], args[1]);
87
+ return new classPrototype.constructor(args[0], args[1]);
88
88
  case 3:
89
- return new targetPrototype.constructor(args[0], args[1], args[2]);
89
+ return new classPrototype.constructor(args[0], args[1], args[2]);
90
90
  case 4:
91
- return new targetPrototype.constructor(args[0], args[1], args[2], args[3]);
91
+ return new classPrototype.constructor(args[0], args[1], args[2], args[3]);
92
92
  case 5:
93
- return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4]);
93
+ return new classPrototype.constructor(args[0], args[1], args[2], args[3], args[4]);
94
94
  case 6:
95
- return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5]);
95
+ return new classPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5]);
96
96
  case 7:
97
- return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
97
+ return new classPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
98
98
  case 8:
99
- return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
99
+ return new classPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
100
100
  case 9:
101
- return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
101
+ return new classPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
102
102
  case 10:
103
- return new targetPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
103
+ return new classPrototype.constructor(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
104
104
  }
105
105
  };
106
106
  const contextObjects = underscore_1.default.map(contextTypes, contextType => this.getOrActivateContext(contextType.prototype, (worldObj) => {
@@ -111,39 +111,39 @@ class ManagedScenarioContext {
111
111
  /**
112
112
  * Get or activate any object
113
113
  *
114
- * @param targetPrototype prototype for the object
114
+ * @param classPrototype prototype for the object
115
115
  * @param activatorFunc callback function used to create an instance of the object
116
116
  * @param optional optional parameter passed into constructors
117
117
  * @returns
118
118
  */
119
- getOrActivateObject(targetPrototype, activatorFunc, optional) {
120
- let activeObject = this._activeObjects.get(targetPrototype)?.activeObject;
119
+ getOrActivateObject(classPrototype, activatorFunc, optional) {
120
+ let activeObject = this._activeObjects.get(classPrototype)?.activeObject;
121
121
  if (activeObject) {
122
122
  return activeObject;
123
123
  }
124
124
  activeObject = activatorFunc(optional);
125
- this._activeObjects.set(targetPrototype, new ActiveInfo(activeObject));
125
+ this._activeObjects.set(classPrototype, new ActiveInfo(activeObject));
126
126
  return activeObject;
127
127
  }
128
128
  /**
129
129
  * Get or activate Context objects. Marks an object as a context
130
130
  * object in ActiveInfo to let the system know it supports an initialize function.
131
131
  *
132
- * @param targetPrototype prototype for the object
132
+ * @param classPrototype prototype for the object
133
133
  * @param activatorFunc callback function used to create an instance of the object
134
134
  * @param optional optional parameter passed into constructors
135
135
  * @returns
136
136
  */
137
- getOrActivateContext(targetPrototype, activatorFunc, optional) {
138
- let activeObject = this._activeObjects.get(targetPrototype)?.activeObject;
137
+ getOrActivateContext(classPrototype, activatorFunc, optional) {
138
+ let activeObject = this._activeObjects.get(classPrototype)?.activeObject;
139
139
  if (activeObject) {
140
140
  return activeObject;
141
141
  }
142
142
  activeObject = activatorFunc(optional);
143
- this._activeObjects.set(targetPrototype, new ActiveInfo(activeObject, true));
143
+ this._activeObjects.set(classPrototype, new ActiveInfo(activeObject, true));
144
144
  return activeObject;
145
145
  }
146
146
  }
147
147
  exports.ManagedScenarioContext = ManagedScenarioContext;
148
148
  __exportStar(require("../types/scenario-context"), exports);
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zY2VuYXJpby1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2N1Y3VtYmVyL21hbmFnZWQtc2NlbmFyaW8tY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDREQUEyQjtBQUczQixnRUFBMEU7QUFJMUUsTUFBTSxVQUFVO0lBQ2YsWUFBWSxHQUFRLEVBQUUsWUFBcUIsS0FBSztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBQ0QsWUFBWSxDQUFNO0lBQ2xCLFNBQVMsQ0FBVTtJQUNuQixXQUFXLEdBQVksS0FBSyxDQUFDO0NBQzdCO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxzQkFBc0I7SUFDMUIsYUFBYSxDQUFlO0lBQzVCLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUVwRCxZQUFZLGFBQXFCLEVBQUUsSUFBYztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksK0JBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztJQUVNLHlCQUF5QixDQUFDLGVBQW9CLEVBQUUsWUFBMkIsRUFBRSxRQUFlO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDckQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFnQztRQUN2RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNoRCxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO2dCQUNqRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDcEUsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7U0FDRDtJQUNGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUE0QjtRQUNoRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNoRCxJQUFJLE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUNyRCxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUMvRDtTQUNEO0lBQ0YsQ0FBQztJQUVPLG9CQUFvQixDQUFDLGVBQW9CLEVBQUUsWUFBMkIsRUFBRSxRQUFlO1FBQzlGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUFXLEVBQU8sRUFBRTtZQUNyRCxRQUFRLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQzVCLEtBQUssQ0FBQztvQkFDTCxPQUFPLElBQUssZUFBZSxDQUFDLFdBQW1CLEVBQUUsQ0FBQztnQkFDbkQsS0FBSyxDQUFDO29CQUNMLE9BQU8sSUFBSyxlQUFlLENBQUMsV0FBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsS0FBSyxDQUFDO29CQUNMLE9BQU8sSUFBSyxlQUFlLENBQUMsV0FBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLEtBQUssQ0FBQztvQkFDTCxPQUFPLElBQUssZUFBZSxDQUFDLFdBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsS0FBSyxDQUFDO29CQUNMLE9BQU8sSUFBSyxlQUFlLENBQUMsV0FBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckYsS0FBSyxDQUFDO29CQUNMLE9BQU8sSUFBSyxlQUFlLENBQUMsV0FBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLEtBQUssQ0FBQztvQkFDTCxPQUFPLElBQUssZUFBZSxDQUFDLFdBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkcsS0FBSyxDQUFDO29CQUNMLE9BQU8sSUFBSyxlQUFlLENBQUMsV0FBbUIsQ0FDOUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNQLENBQUM7Z0JBQ0gsS0FBSyxDQUFDO29CQUNMLE9BQU8sSUFBSyxlQUFlLENBQUMsV0FBbUIsQ0FDOUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUCxDQUFDO2dCQUNILEtBQUssQ0FBQztvQkFDTCxPQUFPLElBQUssZUFBZSxDQUFDLFdBQW1CLENBQzlDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNQLENBQUM7Z0JBQ0gsS0FBSyxFQUFFO29CQUNOLE9BQU8sSUFBSyxlQUFlLENBQUMsV0FBbUIsQ0FDOUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNQLENBQUM7YUFDSDtRQUNGLENBQUMsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLG9CQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUN4RCxJQUFJLENBQUMsb0JBQW9CLENBQ3hCLFdBQVcsQ0FBQyxTQUFTLEVBQ3JCLENBQUMsUUFBYyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxDQUFDLEVBQ0QsUUFBUSxDQUNSLENBQ0QsQ0FBQztRQUVGLE9BQU8sd0JBQXdCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxtQkFBbUIsQ0FBQyxlQUFvQixFQUFFLGFBQXNDLEVBQUUsUUFBYztRQUN2RyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxZQUFZLENBQUM7UUFDMUUsSUFBSSxZQUFZLEVBQUU7WUFDakIsT0FBTyxZQUFZLENBQUM7U0FDcEI7UUFDRCxZQUFZLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sWUFBWSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLG9CQUFvQixDQUFDLGVBQW9CLEVBQUUsYUFBc0MsRUFBRSxRQUFjO1FBQ3hHLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFlBQVksQ0FBQztRQUMxRSxJQUFJLFlBQVksRUFBRTtZQUNqQixPQUFPLFlBQVksQ0FBQztTQUNwQjtRQUNELFlBQVksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sWUFBWSxDQUFDO0lBQ3JCLENBQUM7Q0FDRDtBQXBLRCx3REFvS0M7QUFFRCw0REFBMEMifQ==
149
+ //# sourceMappingURL=managed-scenario-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-scenario-context.js","sourceRoot":"","sources":["../../src/cucumber/managed-scenario-context.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'underscore';\r\n\r\nimport { ContextType } from '../types/types';\r\nimport { ScenarioContext, ScenarioInfo } from '../types/scenario-context';\r\nimport { EndTestCaseInfo, StartTestCaseInfo } from './test-case-info';\r\nimport { World } from '@cucumber/cucumber';\r\n\r\nclass ActiveInfo {\r\n\tconstructor(obj: any, isContext: boolean = false) {\r\n\t\tthis.activeObject = obj;\r\n\t\tthis.isContext = isContext;\r\n\t}\r\n\tactiveObject: any;\r\n\tisContext: boolean;\r\n\tinitialized: boolean = false;\r\n}\r\n\r\n/**\r\n * Represents a [[ScenarioContext]] implementation that manages a collection of context objects that\r\n * are created and used by binding classes during a running Cucumber scenario.\r\n */\r\nexport class ManagedScenarioContext implements ScenarioContext {\r\n\tprivate _scenarioInfo: ScenarioInfo;\r\n\tprivate _activeObjects = new Map<any, ActiveInfo>();\r\n\r\n\tconstructor(scenarioTitle: string, tags: string[]) {\r\n\t\tthis._scenarioInfo = new ScenarioInfo(scenarioTitle, tags);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets information about the scenario.\r\n\t *\r\n\t */\r\n\tpublic get scenarioInfo(): ScenarioInfo {\r\n\t\treturn this._scenarioInfo;\r\n\t}\r\n\r\n\tpublic getOrActivateBindingClass(classPrototype: any, contextTypes: ContextType[], worldObj: World): any {\r\n\t\treturn this.getOrActivateObject(classPrototype, () => {\r\n\t\t\treturn this.activateBindingClass(classPrototype, contextTypes, worldObj);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * If context objects are passed into our step, this function will\r\n\t * call initialize on the context objects only once.\r\n\t * Using Promise.resolve so that initialize can be synchronous or async.\r\n\t */\r\n\tpublic async initialize(startTestCase: StartTestCaseInfo): Promise<void> {\r\n\t\tfor (const [_key, value] of this._activeObjects) {\r\n\t\t\tif (value.isContext && !value.initialized && typeof value.activeObject.initialize === 'function') {\r\n\t\t\t\tawait Promise.resolve(value.activeObject.initialize(startTestCase));\r\n\t\t\t\tvalue.initialized = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * All objects support dispose, which is executed when a\r\n\t * test run is ended. Using Promise.resolve to support\r\n\t * synchronous or async functions.\r\n\t */\r\n\tpublic async dispose(endTestCase: EndTestCaseInfo): Promise<void> {\r\n\t\tfor (const [_key, value] of this._activeObjects) {\r\n\t\t\tif (typeof value.activeObject.dispose === 'function') {\r\n\t\t\t\tawait Promise.resolve(value.activeObject.dispose(endTestCase));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate activateBindingClass(classPrototype: any, contextTypes: ContextType[], worldObj: World): any {\r\n\t\tconst invokeBindingConstructor = (args: any[]): any => {\r\n\t\t\tswitch (contextTypes.length) {\r\n\t\t\t\tcase 0:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)();\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(args[0]);\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(args[0], args[1]);\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(args[0], args[1], args[2]);\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(args[0], args[1], args[2], args[3]);\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(args[0], args[1], args[2], args[3], args[4]);\r\n\t\t\t\tcase 6:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(args[0], args[1], args[2], args[3], args[4], args[5]);\r\n\t\t\t\tcase 7:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\r\n\t\t\t\tcase 8:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(\r\n\t\t\t\t\t\targs[0],\r\n\t\t\t\t\t\targs[1],\r\n\t\t\t\t\t\targs[2],\r\n\t\t\t\t\t\targs[3],\r\n\t\t\t\t\t\targs[4],\r\n\t\t\t\t\t\targs[5],\r\n\t\t\t\t\t\targs[6],\r\n\t\t\t\t\t\targs[7]\r\n\t\t\t\t\t);\r\n\t\t\t\tcase 9:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(\r\n\t\t\t\t\t\targs[0],\r\n\t\t\t\t\t\targs[1],\r\n\t\t\t\t\t\targs[2],\r\n\t\t\t\t\t\targs[3],\r\n\t\t\t\t\t\targs[4],\r\n\t\t\t\t\t\targs[5],\r\n\t\t\t\t\t\targs[6],\r\n\t\t\t\t\t\targs[7],\r\n\t\t\t\t\t\targs[8]\r\n\t\t\t\t\t);\r\n\t\t\t\tcase 10:\r\n\t\t\t\t\treturn new (classPrototype.constructor as any)(\r\n\t\t\t\t\t\targs[0],\r\n\t\t\t\t\t\targs[1],\r\n\t\t\t\t\t\targs[2],\r\n\t\t\t\t\t\targs[3],\r\n\t\t\t\t\t\targs[4],\r\n\t\t\t\t\t\targs[5],\r\n\t\t\t\t\t\targs[6],\r\n\t\t\t\t\t\targs[7],\r\n\t\t\t\t\t\targs[8],\r\n\t\t\t\t\t\targs[9]\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst contextObjects = _.map(contextTypes, contextType =>\r\n\t\t\tthis.getOrActivateContext(\r\n\t\t\t\tcontextType.prototype,\r\n\t\t\t\t(worldObj?: any) => {\r\n\t\t\t\t\treturn new contextType(worldObj);\r\n\t\t\t\t},\r\n\t\t\t\tworldObj\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\treturn invokeBindingConstructor(contextObjects);\r\n\t}\r\n\r\n\t/**\r\n\t * Get or activate any object\r\n\t *\r\n\t * @param classPrototype prototype for the object\r\n\t * @param activatorFunc callback function used to create an instance of the object\r\n\t * @param optional optional parameter passed into constructors\r\n\t * @returns\r\n\t */\r\n\tprivate getOrActivateObject(classPrototype: any, activatorFunc: (...args: any[]) => any, optional?: any): any {\r\n\t\tlet activeObject = this._activeObjects.get(classPrototype)?.activeObject;\r\n\t\tif (activeObject) {\r\n\t\t\treturn activeObject;\r\n\t\t}\r\n\t\tactiveObject = activatorFunc(optional);\r\n\t\tthis._activeObjects.set(classPrototype, new ActiveInfo(activeObject));\r\n\t\treturn activeObject;\r\n\t}\r\n\r\n\t/**\r\n\t * Get or activate Context objects. Marks an object as a context\r\n\t * object in ActiveInfo to let the system know it supports an initialize function.\r\n\t *\r\n\t * @param classPrototype prototype for the object\r\n\t * @param activatorFunc callback function used to create an instance of the object\r\n\t * @param optional optional parameter passed into constructors\r\n\t * @returns\r\n\t */\r\n\tprivate getOrActivateContext(classPrototype: any, activatorFunc: (...args: any[]) => any, optional?: any): any {\r\n\t\tlet activeObject = this._activeObjects.get(classPrototype)?.activeObject;\r\n\t\tif (activeObject) {\r\n\t\t\treturn activeObject;\r\n\t\t}\r\n\t\tactiveObject = activatorFunc(optional);\r\n\t\tthis._activeObjects.set(classPrototype, new ActiveInfo(activeObject, true));\r\n\t\treturn activeObject;\r\n\t}\r\n}\r\n\r\nexport * from '../types/scenario-context';\r\n"]}
@@ -2,6 +2,7 @@ import * as messages from '@cucumber/messages';
2
2
  import { StepBinding } from '../types/step-binding';
3
3
  import { ManagedScenarioContext } from './managed-scenario-context';
4
4
  import { EndTestCaseInfo } from './test-case-info';
5
+ import { IMessageData } from '../types/parallel';
5
6
  export interface ITestCaseAttempt {
6
7
  attempt: number;
7
8
  willBeRetried: boolean;
@@ -31,6 +32,8 @@ export default class MessageCollector {
31
32
  private testCaseRunningMap;
32
33
  private collectorEvents;
33
34
  onTestCaseEnd(Handler: (testCaseFinished: messages.TestCaseFinished) => void): void;
35
+ addMessageData(messageData: IMessageData): void;
36
+ getMessageData(): IMessageData;
34
37
  addPickleAndTestCase(pickle: messages.Pickle, testCase: messages.TestCase): void;
35
38
  hasFailures(): boolean;
36
39
  getGherkinDocument(uri: string): messages.GherkinDocument;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
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
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -54,6 +64,18 @@ class MessageCollector {
54
64
  onTestCaseEnd(Handler) {
55
65
  this.collectorEvents.on('testCaseEnd', Handler);
56
66
  }
67
+ addMessageData(messageData) {
68
+ this.gherkinDocumentMap = messageData.gherkinDocumentMap;
69
+ this.pickleMap = messageData.pickleMap;
70
+ this.testCaseMap = messageData.testCaseMap;
71
+ }
72
+ getMessageData() {
73
+ const data = {};
74
+ data.gherkinDocumentMap = this.gherkinDocumentMap;
75
+ data.pickleMap = this.pickleMap;
76
+ data.testCaseMap = this.testCaseMap;
77
+ return data;
78
+ }
57
79
  // Used during parallel execution to add the current pickle and testCase
58
80
  // to a new Worker instance of the MessageCollector
59
81
  addPickleAndTestCase(pickle, testCase) {
@@ -98,29 +120,29 @@ class MessageCollector {
98
120
  };
99
121
  }
100
122
  parseEnvelope(envelope) {
101
- if (envelope.gherkinDocument && envelope.gherkinDocument.uri) {
123
+ if ((0, value_checker_1.doesHaveValue)(envelope.gherkinDocument)) {
102
124
  this.gherkinDocumentMap[envelope.gherkinDocument.uri] = envelope.gherkinDocument;
103
125
  }
104
- else if (envelope.pickle && envelope.pickle.id) {
126
+ else if ((0, value_checker_1.doesHaveValue)(envelope.pickle)) {
105
127
  this.pickleMap[envelope.pickle.id] = envelope.pickle;
106
128
  }
107
- else if (envelope.undefinedParameterType) {
129
+ else if ((0, value_checker_1.doesHaveValue)(envelope.undefinedParameterType)) {
108
130
  this.undefinedParameterTypes.push(envelope.undefinedParameterType);
109
131
  }
110
- else if (envelope.testCase && envelope.testCase.id) {
132
+ else if ((0, value_checker_1.doesHaveValue)(envelope.testCase)) {
111
133
  this.testCaseMap[envelope.testCase.id] = envelope.testCase;
112
134
  }
113
- else if (envelope.testCaseStarted) {
135
+ else if ((0, value_checker_1.doesHaveValue)(envelope.testCaseStarted)) {
114
136
  this.initTestCaseAttempt(envelope.testCaseStarted);
115
137
  this.startTestCase(envelope.testCaseStarted);
116
138
  }
117
- else if (envelope.attachment) {
139
+ else if ((0, value_checker_1.doesHaveValue)(envelope.attachment)) {
118
140
  this.storeAttachment(envelope.attachment);
119
141
  }
120
- else if (envelope.testStepFinished) {
142
+ else if ((0, value_checker_1.doesHaveValue)(envelope.testStepFinished)) {
121
143
  this.storeTestStepResult(envelope.testStepFinished);
122
144
  }
123
- else if (envelope.testCaseFinished) {
145
+ else if ((0, value_checker_1.doesHaveValue)(envelope.testCaseFinished)) {
124
146
  this.storeTestCaseResult(envelope.testCaseFinished);
125
147
  }
126
148
  }
@@ -255,4 +277,4 @@ class MessageCollector {
255
277
  }
256
278
  }
257
279
  exports.default = MessageCollector;
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1jb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VjdW1iZXIvbWVzc2FnZS1jb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUErQztBQUMvQyx3RUFBd0U7QUFFeEUseUVBQW9FO0FBQ3BFLG1DQUEyRDtBQUMzRCw4Q0FBa0Q7QUFDbEQsaURBQTBEO0FBQzFELG9EQUFrQztBQTJCbEM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBcUIsZ0JBQWdCO0lBQzVCLGtCQUFrQixHQUE2QyxFQUFFLENBQUM7SUFDbEUsU0FBUyxHQUFvQyxFQUFFLENBQUM7SUFDaEQsV0FBVyxHQUFzQyxFQUFFLENBQUM7SUFDcEQsc0JBQXNCLEdBQXlDLEVBQUUsQ0FBQztJQUNqRSx1QkFBdUIsR0FBc0MsRUFBRSxDQUFDO0lBQ2pFLGtCQUFrQixHQUE2QyxFQUFFLENBQUM7SUFFbEUsZUFBZSxHQUFHLElBQUksZ0JBQVksRUFBRSxDQUFDO0lBRTdDLGFBQWEsQ0FBQyxPQUE4RDtRQUMzRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxtREFBbUQ7SUFDbkQsb0JBQW9CLENBQUMsTUFBdUIsRUFBRSxRQUEyQjtRQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1YsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUNyRSxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRTtnQkFDOUIsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLCtCQUFvQixDQUFDLE1BQU0sRUFBRTtvQkFDNUQsT0FBTyxJQUFJLENBQUM7aUJBQ1o7YUFDRDtTQUNEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBVztRQUM3QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUN2RSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUFDLGlCQUF5QjtRQUMzQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsT0FBTztZQUNOLGVBQWUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNwRCxNQUFNO1lBQ04sUUFBUTtZQUNSLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO1lBQ3BDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxhQUFhO1lBQ2hELGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxlQUFlO1lBQ3BELFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXO1lBQzVDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLG1CQUFtQjtTQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUEyQjtRQUN4QyxJQUFJLFFBQVEsQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztTQUNqRjthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUNyRDthQUFNLElBQUksUUFBUSxDQUFDLHNCQUFzQixFQUFFO1lBQzNDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDbkU7YUFBTSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7U0FDM0Q7YUFBTSxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM3QzthQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxQzthQUFNLElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNwRDthQUFNLElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNwRDtJQUNGLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxlQUF5QztRQUNwRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHO1lBQ2pELE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTztZQUNoQyxhQUFhLEVBQUUsS0FBSztZQUNwQixVQUFVLEVBQUUsZUFBZSxDQUFDLFVBQVU7WUFDdEMsZUFBZSxFQUFFLEVBQUU7WUFDbkIsV0FBVyxFQUFFLEVBQUU7WUFDZixtQkFBbUIsRUFBRTtnQkFDcEIsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU87YUFDN0M7U0FDRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUErQjtRQUM5QyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3JELElBQUksaUJBQWlCLElBQUksVUFBVSxFQUFFO1lBQ3BDLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzRSxJQUFJLElBQUEsZ0NBQWdCLEVBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xELGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDakM7WUFDRCxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzdDO0lBQ0YsQ0FBQztJQUVELG1CQUFtQixDQUFDLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBNkI7UUFDL0YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztJQUN6RixDQUFDO0lBRUQsbUJBQW1CLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQTZCO1FBQ2xGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsU0FBYztRQUNwQyxJQUFJLGVBQW1ELENBQUM7UUFFeEQsSUFBSSxTQUFTLEVBQUU7WUFDZCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBYyxDQUFDO1lBQ3hELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pDLGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO2FBQzNDO1NBQ0Q7UUFDRCxPQUFPLGVBQWUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBQyxXQUF3QjtRQUM5QyxJQUFJLGVBQW1ELENBQUM7UUFDeEQsS0FBSyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxNQUFtQixDQUFDO1lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtnQkFDbEMsSUFBSSxJQUFBLHVCQUFlLEVBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ25FLDRFQUE0RTtvQkFDNUUseUVBQXlFO29CQUN6RSxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQzNELElBQ0MsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQzs0QkFDeEIsSUFBQSx1QkFBZSxFQUNkLFdBQVcsQ0FBQyxJQUFJLEVBQ2hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUM5QixFQUNBOzRCQUNELGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO3lCQUMzQztxQkFDRDt5QkFBTTt3QkFDTixlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztxQkFDM0M7aUJBQ0Q7Z0JBQ0QsSUFBSSxlQUFlO29CQUFFLE1BQU07YUFDM0I7WUFDRCxJQUFJLGVBQWU7Z0JBQUUsTUFBTTtTQUMzQjtRQUNELE9BQU8sZUFBZSxDQUFDO0lBQ3hCLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLGVBQXlDO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQzlELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsSUFBSSxRQUFRLEVBQUU7WUFDYixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxRQUFRLENBQUMsZUFBZSxHQUFHLElBQUksaURBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzRTtJQUNGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUE0QjtRQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEUsSUFBSSxRQUFRLEVBQUU7WUFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pDLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3BELFFBQVEsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2FBQ3JDO1NBQ0Q7SUFDRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGtCQUFrQixDQUFDLFVBQWtCO1FBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxRQUFRLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBYyxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssV0FBVyxDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFBLHdCQUFjLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRDtBQWhPRCxtQ0FnT0MifQ==
280
+ //# sourceMappingURL=message-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-collector.js","sourceRoot":"","sources":["../../src/cucumber/message-collector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA+C;AAC/C,wEAAuF;AAEvF,yEAAoE;AACpE,mCAA2D;AAC3D,8CAAkD;AAClD,iDAA0D;AAC1D,oDAAkC;AA4BlC;;;;;;;;;GASG;AACH,MAAqB,gBAAgB;IAC5B,kBAAkB,GAA6C,EAAE,CAAC;IAClE,SAAS,GAAoC,EAAE,CAAC;IAChD,WAAW,GAAsC,EAAE,CAAC;IACpD,sBAAsB,GAAyC,EAAE,CAAC;IACjE,uBAAuB,GAAsC,EAAE,CAAC;IACjE,kBAAkB,GAA6C,EAAE,CAAC;IAElE,eAAe,GAAG,IAAI,gBAAY,EAAE,CAAC;IAE7C,aAAa,CAAC,OAA8D;QAC3E,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,cAAc,CAAC,WAAyB;QACvC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,cAAc;QACb,MAAM,IAAI,GAAG,EAAkB,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAEpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,wEAAwE;IACxE,mDAAmD;IACnD,oBAAoB,CAAC,MAAuB,EAAE,QAA2B;QACxE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAC1C,CAAC;IAED,WAAW;QACV,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;YACrE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,+BAAoB,CAAC,MAAM,EAAE,CAAC;oBAC7D,OAAO,IAAI,CAAC;gBACb,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,GAAW;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,QAAgB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,iBAAyB;QAC3C,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO;YACN,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC;YACpD,MAAM;YACN,QAAQ;YACR,OAAO,EAAE,mBAAmB,CAAC,OAAO;YACpC,aAAa,EAAE,mBAAmB,CAAC,aAAa;YAChD,eAAe,EAAE,mBAAmB,CAAC,eAAe;YACpD,WAAW,EAAE,mBAAmB,CAAC,WAAW;YAC5C,mBAAmB,EAAE,mBAAmB,CAAC,mBAAmB;SAC5D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,QAA2B;QACxC,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClF,CAAC;aAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QACtD,CAAC;aAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC5D,CAAC;aAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,IAAA,6BAAa,EAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC;IACF,CAAC;IAEO,mBAAmB,CAAC,eAAyC;QACpE,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG;YACjD,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,eAAe,CAAC,UAAU;YACtC,eAAe,EAAE,EAAE;YACnB,WAAW,EAAE,EAAE;YACf,mBAAmB,EAAE;gBACpB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;gBAClC,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,OAAO;aAC7C;SACD,CAAC;IACH,CAAC;IAED,eAAe,CAAC,UAA+B;QAC9C,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;QACrD,IAAI,iBAAiB,IAAI,UAAU,EAAE,CAAC;YACrC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;YAC3E,IAAI,IAAA,gCAAgB,EAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBACnD,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAClC,CAAC;YACD,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;IACF,CAAC;IAED,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAA6B;QAC/F,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC;IACzF,CAAC;IAED,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAA6B;QAClF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC;QAC9F,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAClH,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,aAAa,GAAG,aAAa,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,SAAc;QACpC,IAAI,eAAmD,CAAC;QAExD,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAc,CAAC;YACxD,IAAI,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC1C,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;YAC5C,CAAC;QACF,CAAC;QACD,OAAO,eAAe,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,WAAwB;QAC9C,IAAI,eAAmD,CAAC;QACxD,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAmB,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnC,IAAI,IAAA,uBAAe,EAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpE,4EAA4E;oBAC5E,yEAAyE;oBACzE,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5D,IACC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;4BACxB,IAAA,uBAAe,EACd,WAAW,CAAC,IAAI,EAChB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9B,EACA,CAAC;4BACF,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;wBAC5C,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;oBAC5C,CAAC;gBACF,CAAC;gBACD,IAAI,eAAe;oBAAE,MAAM;YAC5B,CAAC;YACD,IAAI,eAAe;gBAAE,MAAM;QAC5B,CAAC;QACD,OAAO,eAAe,CAAC;IACxB,CAAC;IACD;;;;OAIG;IACK,aAAa,CAAC,eAAyC;QAC9D,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,QAAQ,CAAC,eAAe,GAAG,IAAI,iDAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,WAA4B;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACxE,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC1C,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACpD,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,UAAkB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAc,CAAC;QACvD,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,IAAY;QAC/B,OAAO,IAAA,wBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;CACD;AA/OD,mCA+OC","sourcesContent":["import * as messages from '@cucumber/messages';\r\nimport { doesHaveValue, doesNotHaveValue } from '@cucumber/cucumber/lib/value_checker';\r\nimport { StepBinding } from '../types/step-binding';\r\nimport { ManagedScenarioContext } from './managed-scenario-context';\r\nimport { hasMatchingStep, hasMatchingTags } from './utils';\r\nimport { hasStringValue } from '../utils/helpers';\r\nimport { TestStepResultStatus } from '@cucumber/messages';\r\nimport EventEmitter from 'events';\r\nimport { EndTestCaseInfo } from './test-case-info';\r\nimport { IMessageData } from '../types/parallel';\r\n\r\ninterface ITestCaseAttemptData {\r\n\tattempt: number;\r\n\twillBeRetried: boolean;\r\n\ttestCaseId: string;\r\n\tstepAttachments: Record<string, messages.Attachment[]>;\r\n\tstepResults: Record<string, messages.TestStepResult>;\r\n\tworstTestStepResult: messages.TestStepResult;\r\n}\r\n\r\nexport interface ITestCaseAttempt {\r\n\tattempt: number;\r\n\twillBeRetried: boolean;\r\n\tgherkinDocument: messages.GherkinDocument;\r\n\tpickle: messages.Pickle;\r\n\tstepAttachments: Record<string, messages.Attachment[]>;\r\n\tstepResults: Record<string, messages.TestStepResult>;\r\n\ttestCase: messages.TestCase;\r\n\tworstTestStepResult: messages.TestStepResult;\r\n}\r\n\r\ninterface IScenario extends messages.Pickle {\r\n\tscenarioContext: ManagedScenarioContext | undefined;\r\n}\r\n\r\n/**\r\n * Custom implementation of the EventDataCollector from cucumber.js\r\n *\r\n * This implements all of the functions from the original EventDataCollector along\r\n * with new functions to support binding to tsFlow tests.\r\n *\r\n * By extending the original version we're also reducing the amount of data stored\r\n * during test runs because the original MessageCollector was capturing the same\r\n * pickle and testCase data that the EventDataCollector does.\r\n */\r\nexport default class MessageCollector {\r\n\tprivate gherkinDocumentMap: Record<string, messages.GherkinDocument> = {};\r\n\tprivate pickleMap: Record<string, messages.Pickle> = {};\r\n\tprivate testCaseMap: Record<string, messages.TestCase> = {};\r\n\tprivate testCaseAttemptDataMap: Record<string, ITestCaseAttemptData> = {};\r\n\treadonly undefinedParameterTypes: messages.UndefinedParameterType[] = [];\r\n\tprivate testCaseRunningMap: Record<string, messages.TestCaseStarted> = {};\r\n\r\n\tprivate collectorEvents = new EventEmitter();\r\n\r\n\tonTestCaseEnd(Handler: (testCaseFinished: messages.TestCaseFinished) => void): void {\r\n\t\tthis.collectorEvents.on('testCaseEnd', Handler);\r\n\t}\r\n\r\n\taddMessageData(messageData: IMessageData): void {\r\n\t\tthis.gherkinDocumentMap = messageData.gherkinDocumentMap;\r\n\t\tthis.pickleMap = messageData.pickleMap;\r\n\t\tthis.testCaseMap = messageData.testCaseMap;\r\n\t}\r\n\r\n\tgetMessageData(): IMessageData {\r\n\t\tconst data = {} as IMessageData;\r\n\t\tdata.gherkinDocumentMap = this.gherkinDocumentMap;\r\n\t\tdata.pickleMap = this.pickleMap;\r\n\t\tdata.testCaseMap = this.testCaseMap;\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t// Used during parallel execution to add the current pickle and testCase\r\n\t// to a new Worker instance of the MessageCollector\r\n\taddPickleAndTestCase(pickle: messages.Pickle, testCase: messages.TestCase) {\r\n\t\tthis.pickleMap[pickle.id] = pickle;\r\n\t\tthis.testCaseMap[testCase.id] = testCase;\r\n\t}\r\n\r\n\thasFailures(): boolean {\r\n\t\tfor (const caseKey in this.testCaseAttemptDataMap) {\r\n\t\t\tconst stepResults = this.testCaseAttemptDataMap[caseKey].stepResults;\r\n\t\t\tfor (const key in stepResults) {\r\n\t\t\t\tif (stepResults[key].status === TestStepResultStatus.FAILED) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetGherkinDocument(uri: string): messages.GherkinDocument {\r\n\t\treturn this.gherkinDocumentMap[uri];\r\n\t}\r\n\r\n\tgetPickle(pickleId: string): messages.Pickle {\r\n\t\treturn this.pickleMap[pickleId];\r\n\t}\r\n\r\n\tgetTestCaseAttempts(): ITestCaseAttempt[] {\r\n\t\treturn Object.keys(this.testCaseAttemptDataMap).map(testCaseStartedId => {\r\n\t\t\treturn this.getTestCaseAttempt(testCaseStartedId);\r\n\t\t});\r\n\t}\r\n\r\n\tgetTestCaseAttempt(testCaseStartedId: string): ITestCaseAttempt {\r\n\t\tconst testCaseAttemptData = this.testCaseAttemptDataMap[testCaseStartedId];\r\n\t\tconst testCase = this.testCaseMap[testCaseAttemptData.testCaseId];\r\n\t\tconst pickle = this.pickleMap[testCase.pickleId];\r\n\t\treturn {\r\n\t\t\tgherkinDocument: this.gherkinDocumentMap[pickle.uri],\r\n\t\t\tpickle,\r\n\t\t\ttestCase,\r\n\t\t\tattempt: testCaseAttemptData.attempt,\r\n\t\t\twillBeRetried: testCaseAttemptData.willBeRetried,\r\n\t\t\tstepAttachments: testCaseAttemptData.stepAttachments,\r\n\t\t\tstepResults: testCaseAttemptData.stepResults,\r\n\t\t\tworstTestStepResult: testCaseAttemptData.worstTestStepResult\r\n\t\t};\r\n\t}\r\n\r\n\tparseEnvelope(envelope: messages.Envelope): void {\r\n\t\tif (doesHaveValue(envelope.gherkinDocument)) {\r\n\t\t\tthis.gherkinDocumentMap[envelope.gherkinDocument.uri] = envelope.gherkinDocument;\r\n\t\t} else if (doesHaveValue(envelope.pickle)) {\r\n\t\t\tthis.pickleMap[envelope.pickle.id] = envelope.pickle;\r\n\t\t} else if (doesHaveValue(envelope.undefinedParameterType)) {\r\n\t\t\tthis.undefinedParameterTypes.push(envelope.undefinedParameterType);\r\n\t\t} else if (doesHaveValue(envelope.testCase)) {\r\n\t\t\tthis.testCaseMap[envelope.testCase.id] = envelope.testCase;\r\n\t\t} else if (doesHaveValue(envelope.testCaseStarted)) {\r\n\t\t\tthis.initTestCaseAttempt(envelope.testCaseStarted);\r\n\t\t\tthis.startTestCase(envelope.testCaseStarted);\r\n\t\t} else if (doesHaveValue(envelope.attachment)) {\r\n\t\t\tthis.storeAttachment(envelope.attachment);\r\n\t\t} else if (doesHaveValue(envelope.testStepFinished)) {\r\n\t\t\tthis.storeTestStepResult(envelope.testStepFinished);\r\n\t\t} else if (doesHaveValue(envelope.testCaseFinished)) {\r\n\t\t\tthis.storeTestCaseResult(envelope.testCaseFinished);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initTestCaseAttempt(testCaseStarted: messages.TestCaseStarted): void {\r\n\t\tthis.testCaseAttemptDataMap[testCaseStarted.id] = {\r\n\t\t\tattempt: testCaseStarted.attempt,\r\n\t\t\twillBeRetried: false,\r\n\t\t\ttestCaseId: testCaseStarted.testCaseId,\r\n\t\t\tstepAttachments: {},\r\n\t\t\tstepResults: {},\r\n\t\t\tworstTestStepResult: {\r\n\t\t\t\tduration: { seconds: 0, nanos: 0 },\r\n\t\t\t\tstatus: messages.TestStepResultStatus.UNKNOWN\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tstoreAttachment(attachment: messages.Attachment): void {\r\n\t\tconst { testCaseStartedId, testStepId } = attachment;\r\n\t\tif (testCaseStartedId && testStepId) {\r\n\t\t\tconst { stepAttachments } = this.testCaseAttemptDataMap[testCaseStartedId];\r\n\t\t\tif (doesNotHaveValue(stepAttachments[testStepId])) {\r\n\t\t\t\tstepAttachments[testStepId] = [];\r\n\t\t\t}\r\n\t\t\tstepAttachments[testStepId].push(attachment);\r\n\t\t}\r\n\t}\r\n\r\n\tstoreTestStepResult({ testCaseStartedId, testStepId, testStepResult }: messages.TestStepFinished): void {\r\n\t\tthis.testCaseAttemptDataMap[testCaseStartedId].stepResults[testStepId] = testStepResult;\r\n\t}\r\n\r\n\tstoreTestCaseResult({ testCaseStartedId, willBeRetried }: messages.TestCaseFinished): void {\r\n\t\tconst stepResults = Object.values(this.testCaseAttemptDataMap[testCaseStartedId].stepResults);\r\n\t\tthis.testCaseAttemptDataMap[testCaseStartedId].worstTestStepResult = messages.getWorstTestStepResult(stepResults);\r\n\t\tthis.testCaseAttemptDataMap[testCaseStartedId].willBeRetried = willBeRetried;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the Pickle from hook parameters passed in from Cucumber\r\n\t * to find a matching Pickle (scenario) and return the scenario Context\r\n\t * @param hookParam\r\n\t * @returns\r\n\t */\r\n\tgetHookScenarioContext(hookParam: any): ManagedScenarioContext | undefined {\r\n\t\tlet scenarioContext: ManagedScenarioContext | undefined;\r\n\r\n\t\tif (hookParam) {\r\n\t\t\tconst pickle = hookParam.pickle;\r\n\t\t\tconst scenario = this.pickleMap[pickle.id] as IScenario;\r\n\t\t\tif (scenario && scenario.scenarioContext) {\r\n\t\t\t\tscenarioContext = scenario.scenarioContext;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn scenarioContext;\r\n\t}\r\n\r\n\t/**\r\n\t * Uses StepPattern information to find a matching scenario\r\n\t * and return the ScenarioContext\r\n\t * @param stepBinding\r\n\t * @returns\r\n\t */\r\n\tgetStepScenarioContext(stepBinding: StepBinding): ManagedScenarioContext | undefined {\r\n\t\tlet scenarioContext: ManagedScenarioContext | undefined;\r\n\t\tfor (const [, pickle] of Object.entries(this.pickleMap)) {\r\n\t\t\tconst scenario = pickle as IScenario;\r\n\t\t\tfor (const step of scenario.steps) {\r\n\t\t\t\tif (hasMatchingStep(stepBinding.stepPattern.toString(), step.text)) {\r\n\t\t\t\t\t// if we have tags on the step binding check to see if it matches one in the\r\n\t\t\t\t\t// current scenario, which also includes tags associated with the feature\r\n\t\t\t\t\tif (stepBinding.tags && this.stepHasTags(stepBinding.tags)) {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tscenario.tags.length > 0 &&\r\n\t\t\t\t\t\t\thasMatchingTags(\r\n\t\t\t\t\t\t\t\tstepBinding.tags,\r\n\t\t\t\t\t\t\t\tscenario.tags.map(x => x.name)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tscenarioContext = scenario.scenarioContext;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscenarioContext = scenario.scenarioContext;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (scenarioContext) break;\r\n\t\t\t}\r\n\t\t\tif (scenarioContext) break;\r\n\t\t}\r\n\t\treturn scenarioContext;\r\n\t}\r\n\t/**\r\n\t * Called when a test case (scenario) starts. Intercepting\r\n\t * this message to initialize a new ScenarioContext\r\n\t * @param testCaseStarted\r\n\t */\r\n\tprivate startTestCase(testCaseStarted: messages.TestCaseStarted): void {\r\n\t\tthis.testCaseRunningMap[testCaseStarted.id] = testCaseStarted;\r\n\t\tconst scenario = this.getScenarioForTest(testCaseStarted.testCaseId);\r\n\t\tif (scenario) {\r\n\t\t\tconst tags = scenario.tags.map(t => t.name);\r\n\t\t\tscenario.scenarioContext = new ManagedScenarioContext(scenario.name, tags);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Called when a test case (scenario) ends. Intercepting\r\n\t * this message to dispose and clear the ScenarioContext\r\n\t * @param testCaseFinished\r\n\t */\r\n\tpublic async endTestCase(endTestCase: EndTestCaseInfo): Promise<void> {\r\n\t\tconst testCase = this.testCaseRunningMap[endTestCase.testCaseStartedId];\r\n\t\tif (testCase) {\r\n\t\t\tconst scenario = this.getScenarioForTest(testCase.testCaseId);\r\n\t\t\tif (scenario && scenario.scenarioContext) {\r\n\t\t\t\tawait scenario.scenarioContext.dispose(endTestCase);\r\n\t\t\t\tscenario.scenarioContext = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Uses the testCaleId passed in to find the associated Pickle (scenario)\r\n\t * @param testCaseId\r\n\t * @returns\r\n\t */\r\n\tprivate getScenarioForTest(testCaseId: string): IScenario | undefined {\r\n\t\tconst testCase = this.testCaseMap[testCaseId];\r\n\t\tif (testCase) {\r\n\t\t\treturn this.pickleMap[testCase.pickleId] as IScenario;\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * StepBinding tags are initialized with an astrick when empty.\r\n\t * Need to make sure tags has a value and not an astrick\r\n\t * @param tags\r\n\t * @returns\r\n\t */\r\n\tprivate stepHasTags(tags: string): boolean {\r\n\t\treturn hasStringValue(tags) && !tags?.includes('*');\r\n\t}\r\n}\r\n"]}
@@ -0,0 +1,46 @@
1
+ import { ChildProcess } from 'node:child_process';
2
+ import { EventEmitter } from 'node:events';
3
+ import { SupportCodeLibrary } from '@cucumber/cucumber/lib/support_code_library_builder/types';
4
+ import { AssembledTestCase } from '@cucumber/cucumber/lib/assemble/index';
5
+ import { ILogger, IRunEnvironment } from '@cucumber/cucumber/lib/environment/index';
6
+ import { RuntimeAdapter } from '@cucumber/cucumber/lib/runtime/types';
7
+ import { IRunOptionsRuntime } from '@cucumber/cucumber/lib/api/index';
8
+ import { WorkerToCoordinatorEvent } from '@cucumber/cucumber/lib/runtime/parallel/types';
9
+ declare const enum WorkerState {
10
+ 'idle' = 0,
11
+ 'closed' = 1,
12
+ 'running' = 2,
13
+ 'new' = 3
14
+ }
15
+ interface ManagedWorker {
16
+ state: WorkerState;
17
+ process: ChildProcess;
18
+ id: string;
19
+ }
20
+ interface WorkPlacement {
21
+ index: number;
22
+ item: AssembledTestCase;
23
+ }
24
+ export declare class ChildProcessAdapter implements RuntimeAdapter {
25
+ private readonly environment;
26
+ private readonly logger;
27
+ private readonly eventBroadcaster;
28
+ private readonly options;
29
+ private readonly supportCodeLibrary;
30
+ private idleInterventions;
31
+ private failing;
32
+ private onFinish;
33
+ private todo;
34
+ private readonly inProgress;
35
+ private readonly workers;
36
+ constructor(environment: IRunEnvironment, logger: ILogger, eventBroadcaster: EventEmitter, options: IRunOptionsRuntime, supportCodeLibrary: SupportCodeLibrary);
37
+ parseWorkerMessage(worker: ManagedWorker, message: WorkerToCoordinatorEvent): void;
38
+ awakenWorkers(triggeringWorker: ManagedWorker): void;
39
+ startWorker(id: string, total: number): void;
40
+ onWorkerProcessClose(exitCode: number): void;
41
+ run(assembledTestCases: ReadonlyArray<AssembledTestCase>): Promise<boolean>;
42
+ nextWorkPlacement(): WorkPlacement | null;
43
+ placementAt(index: number): WorkPlacement;
44
+ giveWork(worker: ManagedWorker, force?: boolean): void;
45
+ }
46
+ export {};