@dev-blinq/cucumber-js 1.0.10 → 1.0.12-stage

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 (257) hide show
  1. package/bin/cucumber-js +0 -0
  2. package/bin/cucumber.js +0 -0
  3. package/bin/download-install.js +126 -0
  4. package/lib/api/console_logger.d.ts +12 -12
  5. package/lib/api/console_logger.js +23 -23
  6. package/lib/api/convert_configuration.d.ts +4 -4
  7. package/lib/api/convert_configuration.js +65 -64
  8. package/lib/api/convert_configuration.js.map +1 -1
  9. package/lib/api/environment.d.ts +2 -2
  10. package/lib/api/environment.js +13 -13
  11. package/lib/api/formatters.d.ts +20 -20
  12. package/lib/api/formatters.js +60 -60
  13. package/lib/api/gherkin.d.ts +21 -21
  14. package/lib/api/gherkin.js +140 -99
  15. package/lib/api/gherkin.js.map +1 -1
  16. package/lib/api/index.d.ts +12 -12
  17. package/lib/api/index.js +27 -27
  18. package/lib/api/load_configuration.d.ts +9 -9
  19. package/lib/api/load_configuration.js +40 -40
  20. package/lib/api/load_sources.d.ts +9 -9
  21. package/lib/api/load_sources.js +52 -52
  22. package/lib/api/load_support.d.ts +10 -10
  23. package/lib/api/load_support.js +29 -29
  24. package/lib/api/paths.d.ts +8 -8
  25. package/lib/api/paths.js +101 -101
  26. package/lib/api/plugins.d.ts +4 -4
  27. package/lib/api/plugins.js +18 -18
  28. package/lib/api/run_cucumber.d.ts +11 -11
  29. package/lib/api/run_cucumber.js +114 -114
  30. package/lib/api/run_cucumber.js.map +1 -1
  31. package/lib/api/runtime.d.ts +21 -21
  32. package/lib/api/runtime.js +35 -35
  33. package/lib/api/support.d.ts +9 -9
  34. package/lib/api/support.js +25 -25
  35. package/lib/api/test_helpers.d.ts +3 -3
  36. package/lib/api/test_helpers.js +30 -30
  37. package/lib/api/types.d.ts +177 -175
  38. package/lib/api/types.js +2 -2
  39. package/lib/api/types.js.map +1 -1
  40. package/lib/cli/helpers.d.ts +39 -37
  41. package/lib/cli/helpers.js +223 -202
  42. package/lib/cli/helpers.js.map +1 -1
  43. package/lib/cli/i18n.d.ts +2 -2
  44. package/lib/cli/i18n.js +69 -69
  45. package/lib/cli/index.d.ts +21 -21
  46. package/lib/cli/index.js +63 -58
  47. package/lib/cli/index.js.map +1 -1
  48. package/lib/cli/install_validator.d.ts +1 -1
  49. package/lib/cli/install_validator.js +13 -13
  50. package/lib/cli/run.d.ts +1 -1
  51. package/lib/cli/run.js +43 -43
  52. package/lib/cli/validate_node_engine_version.d.ts +10 -10
  53. package/lib/cli/validate_node_engine_version.js +23 -23
  54. package/lib/configuration/argv_parser.d.ts +20 -20
  55. package/lib/configuration/argv_parser.js +102 -100
  56. package/lib/configuration/argv_parser.js.map +1 -1
  57. package/lib/configuration/check_schema.d.ts +2 -2
  58. package/lib/configuration/check_schema.js +59 -59
  59. package/lib/configuration/default_configuration.d.ts +2 -2
  60. package/lib/configuration/default_configuration.js +28 -26
  61. package/lib/configuration/default_configuration.js.map +1 -1
  62. package/lib/configuration/from_file.d.ts +3 -3
  63. package/lib/configuration/from_file.js +84 -84
  64. package/lib/configuration/helpers.d.ts +1 -1
  65. package/lib/configuration/helpers.js +10 -10
  66. package/lib/configuration/index.d.ts +7 -7
  67. package/lib/configuration/index.js +28 -28
  68. package/lib/configuration/locate_file.d.ts +1 -1
  69. package/lib/configuration/locate_file.js +20 -20
  70. package/lib/configuration/merge_configurations.d.ts +2 -2
  71. package/lib/configuration/merge_configurations.js +47 -47
  72. package/lib/configuration/option_splitter.d.ts +3 -3
  73. package/lib/configuration/option_splitter.js +22 -22
  74. package/lib/configuration/types.d.ts +30 -28
  75. package/lib/configuration/types.js +2 -2
  76. package/lib/configuration/types.js.map +1 -1
  77. package/lib/configuration/validate_configuration.d.ts +3 -3
  78. package/lib/configuration/validate_configuration.js +12 -12
  79. package/lib/filter_stack_trace.d.ts +3 -3
  80. package/lib/filter_stack_trace.js +37 -37
  81. package/lib/formatter/builder.d.ts +37 -37
  82. package/lib/formatter/builder.js +100 -100
  83. package/lib/formatter/bvt_analysis_formatter.d.ts +18 -0
  84. package/lib/formatter/bvt_analysis_formatter.js +193 -0
  85. package/lib/formatter/bvt_analysis_formatter.js.map +1 -0
  86. package/lib/formatter/feature_data_format.d.ts +23 -14
  87. package/lib/formatter/feature_data_format.js +136 -80
  88. package/lib/formatter/feature_data_format.js.map +1 -1
  89. package/lib/formatter/fixtures/typescript.d.ts +2 -2
  90. package/lib/formatter/fixtures/typescript.js +5 -5
  91. package/lib/formatter/get_color_fns.d.ts +15 -15
  92. package/lib/formatter/get_color_fns.js +55 -55
  93. package/lib/formatter/helpers/duration_helpers.d.ts +2 -2
  94. package/lib/formatter/helpers/duration_helpers.js +8 -8
  95. package/lib/formatter/helpers/event_data_collector.d.ts +30 -30
  96. package/lib/formatter/helpers/event_data_collector.js +125 -125
  97. package/lib/formatter/helpers/formatters.d.ts +6 -6
  98. package/lib/formatter/helpers/formatters.js +44 -44
  99. package/lib/formatter/helpers/formatters.js.map +1 -1
  100. package/lib/formatter/helpers/gherkin_document_parser.d.ts +5 -5
  101. package/lib/formatter/helpers/gherkin_document_parser.js +65 -65
  102. package/lib/formatter/helpers/index.d.ts +10 -10
  103. package/lib/formatter/helpers/index.js +51 -51
  104. package/lib/formatter/helpers/issue_helpers.d.ts +19 -19
  105. package/lib/formatter/helpers/issue_helpers.js +58 -58
  106. package/lib/formatter/helpers/keyword_type.d.ts +11 -11
  107. package/lib/formatter/helpers/keyword_type.js +31 -31
  108. package/lib/formatter/helpers/location_helpers.d.ts +2 -2
  109. package/lib/formatter/helpers/location_helpers.js +16 -16
  110. package/lib/formatter/helpers/pickle_parser.d.ts +17 -17
  111. package/lib/formatter/helpers/pickle_parser.js +27 -27
  112. package/lib/formatter/helpers/report_generator.d.ts +110 -91
  113. package/lib/formatter/helpers/report_generator.js +348 -250
  114. package/lib/formatter/helpers/report_generator.js.map +1 -1
  115. package/lib/formatter/helpers/step_argument_formatter.d.ts +2 -2
  116. package/lib/formatter/helpers/step_argument_formatter.js +47 -47
  117. package/lib/formatter/helpers/summary_helpers.d.ts +9 -9
  118. package/lib/formatter/helpers/summary_helpers.js +95 -95
  119. package/lib/formatter/helpers/test_case_attempt_formatter.d.ts +12 -12
  120. package/lib/formatter/helpers/test_case_attempt_formatter.js +113 -113
  121. package/lib/formatter/helpers/test_case_attempt_parser.d.ts +32 -32
  122. package/lib/formatter/helpers/test_case_attempt_parser.js +134 -134
  123. package/lib/formatter/helpers/upload_serivce.d.ts +13 -9
  124. package/lib/formatter/helpers/upload_serivce.js +103 -46
  125. package/lib/formatter/helpers/upload_serivce.js.map +1 -1
  126. package/lib/formatter/helpers/uploader.d.ts +11 -0
  127. package/lib/formatter/helpers/uploader.js +78 -0
  128. package/lib/formatter/helpers/uploader.js.map +1 -0
  129. package/lib/formatter/helpers/usage_helpers/index.d.ts +23 -23
  130. package/lib/formatter/helpers/usage_helpers/index.js +110 -110
  131. package/lib/formatter/html_formatter.d.ts +7 -7
  132. package/lib/formatter/html_formatter.js +29 -29
  133. package/lib/formatter/index.d.ts +53 -53
  134. package/lib/formatter/index.js +20 -20
  135. package/lib/formatter/json_formatter.d.ts +78 -78
  136. package/lib/formatter/json_formatter.js +229 -229
  137. package/lib/formatter/junit_formatter.d.ts +17 -17
  138. package/lib/formatter/junit_formatter.js +180 -180
  139. package/lib/formatter/message_formatter.d.ts +5 -5
  140. package/lib/formatter/message_formatter.js +14 -14
  141. package/lib/formatter/progress_bar_formatter.d.ts +18 -18
  142. package/lib/formatter/progress_bar_formatter.js +98 -98
  143. package/lib/formatter/progress_formatter.d.ts +9 -9
  144. package/lib/formatter/progress_formatter.js +58 -58
  145. package/lib/formatter/rerun_formatter.d.ts +13 -13
  146. package/lib/formatter/rerun_formatter.js +79 -79
  147. package/lib/formatter/snippets_formatter.d.ts +6 -6
  148. package/lib/formatter/snippets_formatter.js +60 -60
  149. package/lib/formatter/step_definition_snippet_builder/index.d.ts +20 -20
  150. package/lib/formatter/step_definition_snippet_builder/index.js +45 -45
  151. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.d.ts +7 -7
  152. package/lib/formatter/step_definition_snippet_builder/javascript_snippet_syntax.js +45 -45
  153. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.d.ts +16 -16
  154. package/lib/formatter/step_definition_snippet_builder/snippet_syntax.js +10 -10
  155. package/lib/formatter/summary_formatter.d.ts +14 -14
  156. package/lib/formatter/summary_formatter.js +67 -67
  157. package/lib/formatter/usage_formatter.d.ts +6 -6
  158. package/lib/formatter/usage_formatter.js +97 -97
  159. package/lib/formatter/usage_json_formatter.d.ts +7 -7
  160. package/lib/formatter/usage_json_formatter.js +33 -33
  161. package/lib/index.d.ts +58 -58
  162. package/lib/index.js +108 -108
  163. package/lib/logger.d.ts +5 -5
  164. package/lib/logger.js +2 -2
  165. package/lib/models/data_table.d.ts +10 -10
  166. package/lib/models/data_table.js +45 -45
  167. package/lib/models/definition.d.ts +55 -55
  168. package/lib/models/definition.js +21 -21
  169. package/lib/models/gherkin_step_keyword.d.ts +1 -1
  170. package/lib/models/gherkin_step_keyword.js +2 -2
  171. package/lib/models/pickle_order.d.ts +1 -1
  172. package/lib/models/pickle_order.js +2 -2
  173. package/lib/models/step_definition.d.ts +11 -11
  174. package/lib/models/step_definition.js +36 -36
  175. package/lib/models/test_case_hook_definition.d.ts +10 -10
  176. package/lib/models/test_case_hook_definition.js +26 -26
  177. package/lib/models/test_run_hook_definition.d.ts +3 -3
  178. package/lib/models/test_run_hook_definition.js +9 -9
  179. package/lib/models/test_step_hook_definition.d.ts +9 -9
  180. package/lib/models/test_step_hook_definition.js +25 -25
  181. package/lib/pickle_filter.d.ts +42 -42
  182. package/lib/pickle_filter.js +98 -98
  183. package/lib/plugin/index.d.ts +2 -2
  184. package/lib/plugin/index.js +18 -18
  185. package/lib/plugin/plugin_manager.d.ts +13 -13
  186. package/lib/plugin/plugin_manager.js +35 -35
  187. package/lib/plugin/types.d.ts +14 -14
  188. package/lib/plugin/types.js +2 -2
  189. package/lib/publish/http_stream.d.ts +30 -30
  190. package/lib/publish/http_stream.js +111 -111
  191. package/lib/publish/index.d.ts +2 -2
  192. package/lib/publish/index.js +4 -4
  193. package/lib/publish/publish_plugin.d.ts +2 -2
  194. package/lib/publish/publish_plugin.js +47 -47
  195. package/lib/runtime/assemble_test_cases.d.ts +13 -13
  196. package/lib/runtime/assemble_test_cases.js +87 -87
  197. package/lib/runtime/attachment_manager/index.d.ts +33 -33
  198. package/lib/runtime/attachment_manager/index.js +118 -118
  199. package/lib/runtime/format_error.d.ts +2 -2
  200. package/lib/runtime/format_error.js +35 -35
  201. package/lib/runtime/helpers.d.ts +6 -6
  202. package/lib/runtime/helpers.js +100 -100
  203. package/lib/runtime/index.d.ts +40 -40
  204. package/lib/runtime/index.js +75 -75
  205. package/lib/runtime/parallel/command_types.d.ts +32 -32
  206. package/lib/runtime/parallel/command_types.js +2 -2
  207. package/lib/runtime/parallel/coordinator.d.ts +72 -72
  208. package/lib/runtime/parallel/coordinator.js +221 -221
  209. package/lib/runtime/parallel/run_worker.d.ts +1 -1
  210. package/lib/runtime/parallel/run_worker.js +28 -28
  211. package/lib/runtime/parallel/worker.d.ts +26 -26
  212. package/lib/runtime/parallel/worker.js +86 -86
  213. package/lib/runtime/run_test_run_hooks.d.ts +3 -3
  214. package/lib/runtime/run_test_run_hooks.js +27 -27
  215. package/lib/runtime/step_runner.d.ts +16 -16
  216. package/lib/runtime/step_runner.js +87 -87
  217. package/lib/runtime/stopwatch.d.ts +12 -12
  218. package/lib/runtime/stopwatch.js +33 -33
  219. package/lib/runtime/test_case_runner.d.ts +54 -54
  220. package/lib/runtime/test_case_runner.js +267 -267
  221. package/lib/step_arguments.d.ts +6 -6
  222. package/lib/step_arguments.js +18 -18
  223. package/lib/support_code_library_builder/build_parameter_type.d.ts +3 -3
  224. package/lib/support_code_library_builder/build_parameter_type.js +12 -12
  225. package/lib/support_code_library_builder/get_definition_line_and_uri.d.ts +3 -3
  226. package/lib/support_code_library_builder/get_definition_line_and_uri.js +28 -28
  227. package/lib/support_code_library_builder/index.d.ts +74 -74
  228. package/lib/support_code_library_builder/index.js +296 -296
  229. package/lib/support_code_library_builder/parallel_can_assign_helpers.d.ts +2 -2
  230. package/lib/support_code_library_builder/parallel_can_assign_helpers.js +15 -15
  231. package/lib/support_code_library_builder/sourced_parameter_type_registry.d.ts +7 -7
  232. package/lib/support_code_library_builder/sourced_parameter_type_registry.js +18 -18
  233. package/lib/support_code_library_builder/types.d.ts +88 -88
  234. package/lib/support_code_library_builder/types.js +2 -2
  235. package/lib/support_code_library_builder/validate_arguments.d.ts +12 -12
  236. package/lib/support_code_library_builder/validate_arguments.js +72 -72
  237. package/lib/support_code_library_builder/world.d.ts +18 -18
  238. package/lib/support_code_library_builder/world.js +10 -10
  239. package/lib/time.d.ts +18 -18
  240. package/lib/time.js +60 -60
  241. package/lib/try_require.d.ts +7 -7
  242. package/lib/try_require.js +22 -22
  243. package/lib/types/index.d.ts +4 -4
  244. package/lib/types/index.js +2 -2
  245. package/lib/uncaught_exception_manager.d.ts +7 -7
  246. package/lib/uncaught_exception_manager.js +11 -11
  247. package/lib/user_code_runner.d.ts +14 -14
  248. package/lib/user_code_runner.js +81 -81
  249. package/lib/value_checker.d.ts +3 -3
  250. package/lib/value_checker.js +18 -18
  251. package/lib/version.d.ts +1 -1
  252. package/lib/version.js +5 -5
  253. package/lib/version.js.map +1 -1
  254. package/package.json +4 -2
  255. package/lib/formatter/bvt_formatter.d.ts +0 -9
  256. package/lib/formatter/bvt_formatter.js +0 -63
  257. package/lib/formatter/bvt_formatter.js.map +0 -1
@@ -1,21 +1,21 @@
1
- /// <reference types="node" />
2
- import { IRuntime } from '../runtime';
3
- import { EventEmitter } from 'events';
4
- import { EventDataCollector } from '../formatter/helpers';
5
- import { IdGenerator } from '@cucumber/messages';
6
- import { ISupportCodeLibrary } from '../support_code_library_builder/types';
7
- import { IRunOptionsRuntime } from './types';
8
- import { ILogger } from '../logger';
9
- export declare function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options }, }: {
10
- cwd: string;
11
- logger: ILogger;
12
- eventBroadcaster: EventEmitter;
13
- eventDataCollector: EventDataCollector;
14
- newId: IdGenerator.NewId;
15
- pickleIds: string[];
16
- supportCodeLibrary: ISupportCodeLibrary;
17
- requireModules: string[];
18
- requirePaths: string[];
19
- importPaths: string[];
20
- options: IRunOptionsRuntime;
21
- }): IRuntime;
1
+ /// <reference types="node" />
2
+ import { IRuntime } from '../runtime';
3
+ import { EventEmitter } from 'events';
4
+ import { EventDataCollector } from '../formatter/helpers';
5
+ import { IdGenerator } from '@cucumber/messages';
6
+ import { ISupportCodeLibrary } from '../support_code_library_builder/types';
7
+ import { IRunOptionsRuntime } from './types';
8
+ import { ILogger } from '../logger';
9
+ export declare function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options }, }: {
10
+ cwd: string;
11
+ logger: ILogger;
12
+ eventBroadcaster: EventEmitter;
13
+ eventDataCollector: EventDataCollector;
14
+ newId: IdGenerator.NewId;
15
+ pickleIds: string[];
16
+ supportCodeLibrary: ISupportCodeLibrary;
17
+ requireModules: string[];
18
+ requirePaths: string[];
19
+ importPaths: string[];
20
+ options: IRunOptionsRuntime;
21
+ }): IRuntime;
@@ -1,36 +1,36 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.makeRuntime = void 0;
7
- const runtime_1 = __importDefault(require("../runtime"));
8
- const coordinator_1 = __importDefault(require("../runtime/parallel/coordinator"));
9
- function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options }, }) {
10
- if (parallel > 0) {
11
- return new coordinator_1.default({
12
- cwd,
13
- logger,
14
- eventBroadcaster,
15
- eventDataCollector,
16
- pickleIds,
17
- options,
18
- newId,
19
- supportCodeLibrary,
20
- requireModules,
21
- requirePaths,
22
- importPaths,
23
- numberOfWorkers: parallel,
24
- });
25
- }
26
- return new runtime_1.default({
27
- eventBroadcaster,
28
- eventDataCollector,
29
- newId,
30
- pickleIds,
31
- supportCodeLibrary,
32
- options,
33
- });
34
- }
35
- exports.makeRuntime = makeRuntime;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.makeRuntime = void 0;
7
+ const runtime_1 = __importDefault(require("../runtime"));
8
+ const coordinator_1 = __importDefault(require("../runtime/parallel/coordinator"));
9
+ function makeRuntime({ cwd, logger, eventBroadcaster, eventDataCollector, pickleIds, newId, supportCodeLibrary, requireModules, requirePaths, importPaths, options: { parallel, ...options }, }) {
10
+ if (parallel > 0) {
11
+ return new coordinator_1.default({
12
+ cwd,
13
+ logger,
14
+ eventBroadcaster,
15
+ eventDataCollector,
16
+ pickleIds,
17
+ options,
18
+ newId,
19
+ supportCodeLibrary,
20
+ requireModules,
21
+ requirePaths,
22
+ importPaths,
23
+ numberOfWorkers: parallel,
24
+ });
25
+ }
26
+ return new runtime_1.default({
27
+ eventBroadcaster,
28
+ eventDataCollector,
29
+ newId,
30
+ pickleIds,
31
+ supportCodeLibrary,
32
+ options,
33
+ });
34
+ }
35
+ exports.makeRuntime = makeRuntime;
36
36
  //# sourceMappingURL=runtime.js.map
@@ -1,9 +1,9 @@
1
- import { IdGenerator } from '@cucumber/messages';
2
- import { ISupportCodeLibrary } from '../support_code_library_builder/types';
3
- export declare function getSupportCodeLibrary({ cwd, newId, requireModules, requirePaths, importPaths, }: {
4
- cwd: string;
5
- newId: IdGenerator.NewId;
6
- requireModules: string[];
7
- requirePaths: string[];
8
- importPaths: string[];
9
- }): Promise<ISupportCodeLibrary>;
1
+ import { IdGenerator } from '@cucumber/messages';
2
+ import { ISupportCodeLibrary } from '../support_code_library_builder/types';
3
+ export declare function getSupportCodeLibrary({ cwd, newId, requireModules, requirePaths, importPaths, }: {
4
+ cwd: string;
5
+ newId: IdGenerator.NewId;
6
+ requireModules: string[];
7
+ requirePaths: string[];
8
+ importPaths: string[];
9
+ }): Promise<ISupportCodeLibrary>;
@@ -1,26 +1,26 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getSupportCodeLibrary = void 0;
7
- const support_code_library_builder_1 = __importDefault(require("../support_code_library_builder"));
8
- const url_1 = require("url");
9
- const try_require_1 = __importDefault(require("../try_require"));
10
- // eslint-disable-next-line @typescript-eslint/no-var-requires
11
- const { importer } = require('../importer');
12
- async function getSupportCodeLibrary({ cwd, newId, requireModules, requirePaths, importPaths, }) {
13
- support_code_library_builder_1.default.reset(cwd, newId, {
14
- requireModules,
15
- requirePaths,
16
- importPaths,
17
- });
18
- requireModules.map((module) => (0, try_require_1.default)(module));
19
- requirePaths.map((path) => (0, try_require_1.default)(path));
20
- for (const path of importPaths) {
21
- await importer((0, url_1.pathToFileURL)(path));
22
- }
23
- return support_code_library_builder_1.default.finalize();
24
- }
25
- exports.getSupportCodeLibrary = getSupportCodeLibrary;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSupportCodeLibrary = void 0;
7
+ const support_code_library_builder_1 = __importDefault(require("../support_code_library_builder"));
8
+ const url_1 = require("url");
9
+ const try_require_1 = __importDefault(require("../try_require"));
10
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
11
+ const { importer } = require('../importer');
12
+ async function getSupportCodeLibrary({ cwd, newId, requireModules, requirePaths, importPaths, }) {
13
+ support_code_library_builder_1.default.reset(cwd, newId, {
14
+ requireModules,
15
+ requirePaths,
16
+ importPaths,
17
+ });
18
+ requireModules.map((module) => (0, try_require_1.default)(module));
19
+ requirePaths.map((path) => (0, try_require_1.default)(path));
20
+ for (const path of importPaths) {
21
+ await importer((0, url_1.pathToFileURL)(path));
22
+ }
23
+ return support_code_library_builder_1.default.finalize();
24
+ }
25
+ exports.getSupportCodeLibrary = getSupportCodeLibrary;
26
26
  //# sourceMappingURL=support.js.map
@@ -1,3 +1,3 @@
1
- import { IRunEnvironment } from './types';
2
- export declare function setupEnvironment(): Promise<Partial<IRunEnvironment>>;
3
- export declare function teardownEnvironment(environment: IRunEnvironment): Promise<void>;
1
+ import { IRunEnvironment } from './types';
2
+ export declare function setupEnvironment(): Promise<Partial<IRunEnvironment>>;
3
+ export declare function teardownEnvironment(environment: IRunEnvironment): Promise<void>;
@@ -1,36 +1,36 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.teardownEnvironment = exports.setupEnvironment = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const fs_1 = __importDefault(require("mz/fs"));
9
- const reindent_template_literals_1 = require("reindent-template-literals");
10
- const stream_1 = require("stream");
11
- const messages_1 = require("@cucumber/messages");
12
- const newId = messages_1.IdGenerator.uuid();
13
- async function setupEnvironment() {
14
- const cwd = path_1.default.join(__dirname, '..', '..', 'tmp', `api_${newId()}`);
15
- await fs_1.default.mkdir(path_1.default.join(cwd, 'features'), { recursive: true });
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.teardownEnvironment = exports.setupEnvironment = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("mz/fs"));
9
+ const reindent_template_literals_1 = require("reindent-template-literals");
10
+ const stream_1 = require("stream");
11
+ const messages_1 = require("@cucumber/messages");
12
+ const newId = messages_1.IdGenerator.uuid();
13
+ async function setupEnvironment() {
14
+ const cwd = path_1.default.join(__dirname, '..', '..', 'tmp', `api_${newId()}`);
15
+ await fs_1.default.mkdir(path_1.default.join(cwd, 'features'), { recursive: true });
16
16
  await fs_1.default.writeFile(path_1.default.join(cwd, 'features', 'test.feature'), (0, reindent_template_literals_1.reindent)(`Feature: test fixture
17
17
  Scenario: one
18
18
  Given a step
19
- Then another step`));
19
+ Then another step`));
20
20
  await fs_1.default.writeFile(path_1.default.join(cwd, 'features', 'steps.ts'), (0, reindent_template_literals_1.reindent)(`import { Given, Then } from '../../../src'
21
21
  Given('a step', function () {})
22
- Then('another step', function () {})`));
23
- await fs_1.default.writeFile(path_1.default.join(cwd, 'cucumber.mjs'), `export default {paths: ['features/test.feature'], requireModule: ['ts-node/register'], require: ['features/steps.ts']}`);
24
- const stdout = new stream_1.PassThrough();
25
- return { cwd, stdout };
26
- }
27
- exports.setupEnvironment = setupEnvironment;
28
- async function teardownEnvironment(environment) {
29
- return new Promise((resolve) => {
30
- fs_1.default.rm(environment.cwd, { recursive: true }, resolve);
31
- }).then(() => {
32
- environment.stdout.end();
33
- });
34
- }
35
- exports.teardownEnvironment = teardownEnvironment;
22
+ Then('another step', function () {})`));
23
+ await fs_1.default.writeFile(path_1.default.join(cwd, 'cucumber.mjs'), `export default {paths: ['features/test.feature'], requireModule: ['ts-node/register'], require: ['features/steps.ts']}`);
24
+ const stdout = new stream_1.PassThrough();
25
+ return { cwd, stdout };
26
+ }
27
+ exports.setupEnvironment = setupEnvironment;
28
+ async function teardownEnvironment(environment) {
29
+ return new Promise((resolve) => {
30
+ fs_1.default.rm(environment.cwd, { recursive: true }, resolve);
31
+ }).then(() => {
32
+ environment.stdout.end();
33
+ });
34
+ }
35
+ exports.teardownEnvironment = teardownEnvironment;
36
36
  //# sourceMappingURL=test_helpers.js.map
@@ -1,175 +1,177 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { ISupportCodeLibrary } from '../support_code_library_builder/types';
4
- import { FormatOptions, IPublishConfig } from '../formatter';
5
- import { PickleOrder } from '../models/pickle_order';
6
- import { IRuntimeOptions } from '../runtime';
7
- import { IConfiguration } from '../configuration';
8
- import { Writable } from 'stream';
9
- /**
10
- * @public
11
- */
12
- export interface ILoadConfigurationOptions {
13
- /**
14
- * Path to load configuration file from (defaults to `cucumber.(js|cjs|mjs|json)` if omitted).
15
- */
16
- file?: string;
17
- /**
18
- * Zero or more profile names from which to source configuration (if omitted or empty, the `default` profile will be used).
19
- */
20
- profiles?: string[];
21
- /**
22
- * Ad-hoc configuration options to be applied over the top of whatever is loaded from the configuration file/profiles.
23
- */
24
- provided?: Partial<IConfiguration>;
25
- }
26
- /**
27
- * @public
28
- */
29
- export interface IResolvedConfiguration {
30
- /**
31
- * The final flat configuration object resolved from the configuration file/profiles plus any extra provided.
32
- */
33
- useConfiguration: IConfiguration;
34
- /**
35
- * The format that can be passed into `runCucumber`.
36
- */
37
- runConfiguration: IRunConfiguration;
38
- }
39
- /**
40
- * @public
41
- */
42
- export interface ISourcesCoordinates {
43
- defaultDialect: string;
44
- paths: string[];
45
- names: string[];
46
- tagExpression: string;
47
- order: PickleOrder;
48
- }
49
- /**
50
- * @public
51
- */
52
- export interface IPlannedPickle {
53
- name: string;
54
- uri: string;
55
- location: {
56
- line: number;
57
- column?: number;
58
- };
59
- }
60
- /**
61
- * @public
62
- */
63
- export interface ISourcesError {
64
- uri: string;
65
- location: {
66
- line: number;
67
- column?: number;
68
- };
69
- message: string;
70
- }
71
- /**
72
- * @public
73
- */
74
- export interface ILoadSourcesResult {
75
- plan: IPlannedPickle[];
76
- errors: ISourcesError[];
77
- }
78
- /**
79
- * @public
80
- */
81
- export interface ISupportCodeCoordinates {
82
- requireModules: string[];
83
- requirePaths: string[];
84
- importPaths: string[];
85
- }
86
- /**
87
- * @public
88
- */
89
- export interface ILoadSupportOptions {
90
- sources: ISourcesCoordinates;
91
- support: ISupportCodeCoordinates;
92
- }
93
- /**
94
- * @public
95
- */
96
- export interface IRunOptionsRuntime extends IRuntimeOptions {
97
- parallel: number;
98
- }
99
- /**
100
- * @public
101
- */
102
- export interface IRunOptionsFormats {
103
- stdout: string;
104
- files: Record<string, string>;
105
- publish: IPublishConfig | false;
106
- options: FormatOptions;
107
- }
108
- /**
109
- * @public
110
- */
111
- export interface IRunConfiguration {
112
- sources: ISourcesCoordinates;
113
- support: ISupportCodeCoordinates;
114
- runtime: IRunOptionsRuntime;
115
- formats: IRunOptionsFormats;
116
- }
117
- /**
118
- * @public
119
- */
120
- export type ISupportCodeCoordinatesOrLibrary = ISupportCodeCoordinates | ISupportCodeLibrary;
121
- /**
122
- * @public
123
- */
124
- export type { ISupportCodeLibrary };
125
- /**
126
- * @public
127
- */
128
- export interface IRunOptions {
129
- sources: ISourcesCoordinates;
130
- support: ISupportCodeCoordinatesOrLibrary;
131
- runtime: IRunOptionsRuntime;
132
- formats: IRunOptionsFormats;
133
- }
134
- /**
135
- * Contextual data about the project environment.
136
- *
137
- * @public
138
- */
139
- export interface IRunEnvironment {
140
- /**
141
- * Working directory for the project (defaults to `process.cwd()` if omitted).
142
- */
143
- cwd?: string;
144
- /**
145
- * Writable stream where the test run's main output is written (defaults to `process.stdout` if omitted).
146
- */
147
- stdout?: Writable;
148
- /**
149
- * Writable stream where the test run's warning/error output is written (defaults to `process.stderr` if omitted).
150
- */
151
- stderr?: Writable;
152
- /**
153
- * Environment variables (defaults to `process.env` if omitted).
154
- */
155
- env?: NodeJS.ProcessEnv;
156
- /**
157
- * Whether debug logging is enabled.
158
- */
159
- debug?: boolean;
160
- }
161
- /**
162
- * Result of a Cucumber test run.
163
- *
164
- * @public
165
- */
166
- export interface IRunResult {
167
- /**
168
- * Whether the test run was overall successful i.e. no failed scenarios. The exact meaning can vary based on the `strict` configuration option.
169
- */
170
- success: boolean;
171
- /**
172
- * The support code library that was used in the test run; can be reused in subsequent `runCucumber` calls.
173
- */
174
- support: ISupportCodeLibrary;
175
- }
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Writable } from 'stream';
4
+ import { IConfiguration } from '../configuration';
5
+ import { FormatOptions, IPublishConfig } from '../formatter';
6
+ import { PickleOrder } from '../models/pickle_order';
7
+ import { IRuntimeOptions } from '../runtime';
8
+ import { ISupportCodeLibrary } from '../support_code_library_builder/types';
9
+ /**
10
+ * @public
11
+ */
12
+ export interface ILoadConfigurationOptions {
13
+ /**
14
+ * Path to load configuration file from (defaults to `cucumber.(js|cjs|mjs|json)` if omitted).
15
+ */
16
+ file?: string;
17
+ /**
18
+ * Zero or more profile names from which to source configuration (if omitted or empty, the `default` profile will be used).
19
+ */
20
+ profiles?: string[];
21
+ /**
22
+ * Ad-hoc configuration options to be applied over the top of whatever is loaded from the configuration file/profiles.
23
+ */
24
+ provided?: Partial<IConfiguration>;
25
+ }
26
+ /**
27
+ * @public
28
+ */
29
+ export interface IResolvedConfiguration {
30
+ /**
31
+ * The final flat configuration object resolved from the configuration file/profiles plus any extra provided.
32
+ */
33
+ useConfiguration: IConfiguration;
34
+ /**
35
+ * The format that can be passed into `runCucumber`.
36
+ */
37
+ runConfiguration: IRunConfiguration;
38
+ }
39
+ /**
40
+ * @public
41
+ */
42
+ export interface ISourcesCoordinates {
43
+ defaultDialect: string;
44
+ paths: string[];
45
+ names: string[];
46
+ tagExpression: string;
47
+ order: PickleOrder;
48
+ }
49
+ /**
50
+ * @public
51
+ */
52
+ export interface IPlannedPickle {
53
+ name: string;
54
+ uri: string;
55
+ location: {
56
+ line: number;
57
+ column?: number;
58
+ };
59
+ }
60
+ /**
61
+ * @public
62
+ */
63
+ export interface ISourcesError {
64
+ uri: string;
65
+ location: {
66
+ line: number;
67
+ column?: number;
68
+ };
69
+ message: string;
70
+ }
71
+ /**
72
+ * @public
73
+ */
74
+ export interface ILoadSourcesResult {
75
+ plan: IPlannedPickle[];
76
+ errors: ISourcesError[];
77
+ }
78
+ /**
79
+ * @public
80
+ */
81
+ export interface ISupportCodeCoordinates {
82
+ requireModules: string[];
83
+ requirePaths: string[];
84
+ importPaths: string[];
85
+ }
86
+ /**
87
+ * @public
88
+ */
89
+ export interface ILoadSupportOptions {
90
+ sources: ISourcesCoordinates;
91
+ support: ISupportCodeCoordinates;
92
+ }
93
+ /**
94
+ * @public
95
+ */
96
+ export interface IRunOptionsRuntime extends IRuntimeOptions {
97
+ parallel: number;
98
+ }
99
+ /**
100
+ * @public
101
+ */
102
+ export interface IRunOptionsFormats {
103
+ stdout: string;
104
+ files: Record<string, string>;
105
+ publish: IPublishConfig | false;
106
+ options: FormatOptions;
107
+ }
108
+ /**
109
+ * @public
110
+ */
111
+ export interface IRunConfiguration {
112
+ sources: ISourcesCoordinates;
113
+ support: ISupportCodeCoordinates;
114
+ runtime: IRunOptionsRuntime;
115
+ formats: IRunOptionsFormats;
116
+ runName?: string;
117
+ }
118
+ /**
119
+ * @public
120
+ */
121
+ export type ISupportCodeCoordinatesOrLibrary = ISupportCodeCoordinates | ISupportCodeLibrary;
122
+ /**
123
+ * @public
124
+ */
125
+ export type { ISupportCodeLibrary };
126
+ /**
127
+ * @public
128
+ */
129
+ export interface IRunOptions {
130
+ sources: ISourcesCoordinates;
131
+ support: ISupportCodeCoordinatesOrLibrary;
132
+ runtime: IRunOptionsRuntime;
133
+ formats: IRunOptionsFormats;
134
+ runName?: string;
135
+ }
136
+ /**
137
+ * Contextual data about the project environment.
138
+ *
139
+ * @public
140
+ */
141
+ export interface IRunEnvironment {
142
+ /**
143
+ * Working directory for the project (defaults to `process.cwd()` if omitted).
144
+ */
145
+ cwd?: string;
146
+ /**
147
+ * Writable stream where the test run's main output is written (defaults to `process.stdout` if omitted).
148
+ */
149
+ stdout?: Writable;
150
+ /**
151
+ * Writable stream where the test run's warning/error output is written (defaults to `process.stderr` if omitted).
152
+ */
153
+ stderr?: Writable;
154
+ /**
155
+ * Environment variables (defaults to `process.env` if omitted).
156
+ */
157
+ env?: NodeJS.ProcessEnv;
158
+ /**
159
+ * Whether debug logging is enabled.
160
+ */
161
+ debug?: boolean;
162
+ }
163
+ /**
164
+ * Result of a Cucumber test run.
165
+ *
166
+ * @public
167
+ */
168
+ export interface IRunResult {
169
+ /**
170
+ * Whether the test run was overall successful i.e. no failed scenarios. The exact meaning can vary based on the `strict` configuration option.
171
+ */
172
+ success: boolean;
173
+ /**
174
+ * The support code library that was used in the test run; can be reused in subsequent `runCucumber` calls.
175
+ */
176
+ support: ISupportCodeLibrary;
177
+ }
package/lib/api/types.js CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ISupportCodeLibrary } from '../support_code_library_builder/types'\nimport { FormatOptions, IPublishConfig } from '../formatter'\nimport { PickleOrder } from '../models/pickle_order'\nimport { IRuntimeOptions } from '../runtime'\nimport { IConfiguration } from '../configuration'\nimport { Writable } from 'stream'\n\n/**\n * @public\n */\nexport interface ILoadConfigurationOptions {\n /**\n * Path to load configuration file from (defaults to `cucumber.(js|cjs|mjs|json)` if omitted).\n */\n file?: string\n /**\n * Zero or more profile names from which to source configuration (if omitted or empty, the `default` profile will be used).\n */\n profiles?: string[]\n /**\n * Ad-hoc configuration options to be applied over the top of whatever is loaded from the configuration file/profiles.\n */\n provided?: Partial<IConfiguration>\n}\n\n/**\n * @public\n */\nexport interface IResolvedConfiguration {\n /**\n * The final flat configuration object resolved from the configuration file/profiles plus any extra provided.\n */\n useConfiguration: IConfiguration\n /**\n * The format that can be passed into `runCucumber`.\n */\n runConfiguration: IRunConfiguration\n}\n\n/**\n * @public\n */\nexport interface ISourcesCoordinates {\n defaultDialect: string\n paths: string[]\n names: string[]\n tagExpression: string\n order: PickleOrder\n}\n\n/**\n * @public\n */\nexport interface IPlannedPickle {\n name: string\n uri: string\n location: {\n line: number\n column?: number\n }\n}\n\n/**\n * @public\n */\nexport interface ISourcesError {\n uri: string\n location: {\n line: number\n column?: number\n }\n message: string\n}\n\n/**\n * @public\n */\nexport interface ILoadSourcesResult {\n plan: IPlannedPickle[]\n errors: ISourcesError[]\n}\n\n/**\n * @public\n */\nexport interface ISupportCodeCoordinates {\n requireModules: string[]\n requirePaths: string[]\n importPaths: string[]\n}\n\n/**\n * @public\n */\nexport interface ILoadSupportOptions {\n sources: ISourcesCoordinates\n support: ISupportCodeCoordinates\n}\n\n/**\n * @public\n */\nexport interface IRunOptionsRuntime extends IRuntimeOptions {\n parallel: number\n}\n\n/**\n * @public\n */\nexport interface IRunOptionsFormats {\n stdout: string\n files: Record<string, string>\n publish: IPublishConfig | false\n options: FormatOptions\n}\n\n/**\n * @public\n */\nexport interface IRunConfiguration {\n sources: ISourcesCoordinates\n support: ISupportCodeCoordinates\n runtime: IRunOptionsRuntime\n formats: IRunOptionsFormats\n}\n\n/**\n * @public\n */\nexport type ISupportCodeCoordinatesOrLibrary =\n | ISupportCodeCoordinates\n | ISupportCodeLibrary\n\n/**\n * @public\n */\nexport type { ISupportCodeLibrary }\n\n/**\n * @public\n */\nexport interface IRunOptions {\n sources: ISourcesCoordinates\n support: ISupportCodeCoordinatesOrLibrary\n runtime: IRunOptionsRuntime\n formats: IRunOptionsFormats\n}\n\n/**\n * Contextual data about the project environment.\n *\n * @public\n */\nexport interface IRunEnvironment {\n /**\n * Working directory for the project (defaults to `process.cwd()` if omitted).\n */\n cwd?: string\n /**\n * Writable stream where the test run's main output is written (defaults to `process.stdout` if omitted).\n */\n stdout?: Writable\n /**\n * Writable stream where the test run's warning/error output is written (defaults to `process.stderr` if omitted).\n */\n stderr?: Writable\n /**\n * Environment variables (defaults to `process.env` if omitted).\n */\n env?: NodeJS.ProcessEnv\n /**\n * Whether debug logging is enabled.\n */\n debug?: boolean\n}\n\n/**\n * Result of a Cucumber test run.\n *\n * @public\n */\nexport interface IRunResult {\n /**\n * Whether the test run was overall successful i.e. no failed scenarios. The exact meaning can vary based on the `strict` configuration option.\n */\n success: boolean\n /**\n * The support code library that was used in the test run; can be reused in subsequent `runCucumber` calls.\n */\n support: ISupportCodeLibrary\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Writable } from 'stream'\nimport { IConfiguration } from '../configuration'\nimport { FormatOptions, IPublishConfig } from '../formatter'\nimport { PickleOrder } from '../models/pickle_order'\nimport { IRuntimeOptions } from '../runtime'\nimport { ISupportCodeLibrary } from '../support_code_library_builder/types'\n\n/**\n * @public\n */\nexport interface ILoadConfigurationOptions {\n /**\n * Path to load configuration file from (defaults to `cucumber.(js|cjs|mjs|json)` if omitted).\n */\n file?: string\n /**\n * Zero or more profile names from which to source configuration (if omitted or empty, the `default` profile will be used).\n */\n profiles?: string[]\n /**\n * Ad-hoc configuration options to be applied over the top of whatever is loaded from the configuration file/profiles.\n */\n provided?: Partial<IConfiguration>\n}\n\n/**\n * @public\n */\nexport interface IResolvedConfiguration {\n /**\n * The final flat configuration object resolved from the configuration file/profiles plus any extra provided.\n */\n useConfiguration: IConfiguration\n /**\n * The format that can be passed into `runCucumber`.\n */\n runConfiguration: IRunConfiguration\n}\n\n/**\n * @public\n */\nexport interface ISourcesCoordinates {\n defaultDialect: string\n paths: string[]\n names: string[]\n tagExpression: string\n order: PickleOrder\n}\n\n/**\n * @public\n */\nexport interface IPlannedPickle {\n name: string\n uri: string\n location: {\n line: number\n column?: number\n }\n}\n\n/**\n * @public\n */\nexport interface ISourcesError {\n uri: string\n location: {\n line: number\n column?: number\n }\n message: string\n}\n\n/**\n * @public\n */\nexport interface ILoadSourcesResult {\n plan: IPlannedPickle[]\n errors: ISourcesError[]\n}\n\n/**\n * @public\n */\nexport interface ISupportCodeCoordinates {\n requireModules: string[]\n requirePaths: string[]\n importPaths: string[]\n}\n\n/**\n * @public\n */\nexport interface ILoadSupportOptions {\n sources: ISourcesCoordinates\n support: ISupportCodeCoordinates\n}\n\n/**\n * @public\n */\nexport interface IRunOptionsRuntime extends IRuntimeOptions {\n parallel: number\n}\n\n/**\n * @public\n */\nexport interface IRunOptionsFormats {\n stdout: string\n files: Record<string, string>\n publish: IPublishConfig | false\n options: FormatOptions\n}\n\n/**\n * @public\n */\nexport interface IRunConfiguration {\n sources: ISourcesCoordinates\n support: ISupportCodeCoordinates\n runtime: IRunOptionsRuntime\n formats: IRunOptionsFormats\n runName?: string\n}\n\n/**\n * @public\n */\nexport type ISupportCodeCoordinatesOrLibrary =\n | ISupportCodeCoordinates\n | ISupportCodeLibrary\n\n/**\n * @public\n */\nexport type { ISupportCodeLibrary }\n\n/**\n * @public\n */\nexport interface IRunOptions {\n sources: ISourcesCoordinates\n support: ISupportCodeCoordinatesOrLibrary\n runtime: IRunOptionsRuntime\n formats: IRunOptionsFormats\n runName?: string\n}\n\n/**\n * Contextual data about the project environment.\n *\n * @public\n */\nexport interface IRunEnvironment {\n /**\n * Working directory for the project (defaults to `process.cwd()` if omitted).\n */\n cwd?: string\n /**\n * Writable stream where the test run's main output is written (defaults to `process.stdout` if omitted).\n */\n stdout?: Writable\n /**\n * Writable stream where the test run's warning/error output is written (defaults to `process.stderr` if omitted).\n */\n stderr?: Writable\n /**\n * Environment variables (defaults to `process.env` if omitted).\n */\n env?: NodeJS.ProcessEnv\n /**\n * Whether debug logging is enabled.\n */\n debug?: boolean\n}\n\n/**\n * Result of a Cucumber test run.\n *\n * @public\n */\nexport interface IRunResult {\n /**\n * Whether the test run was overall successful i.e. no failed scenarios. The exact meaning can vary based on the `strict` configuration option.\n */\n success: boolean\n /**\n * The support code library that was used in the test run; can be reused in subsequent `runCucumber` calls.\n */\n support: ISupportCodeLibrary\n}\n"]}