@autometa/coordinator 0.1.28 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @autometa/coordinator
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 04ed85d: feat: added HTP client based on axios
8
+ - Updated dependencies [04ed85d]
9
+ - @autometa/jest-executor@0.2.13
10
+ - @autometa/test-builder@0.1.30
11
+ - @autometa/asserters@0.1.4
12
+ - @autometa/gherkin@0.5.2
13
+ - @autometa/config@0.1.13
14
+ - @autometa/errors@0.1.4
15
+ - @autometa/events@0.2.5
16
+ - @autometa/scopes@0.4.1
17
+ - @autometa/app@0.1.13
18
+
19
+ ## 0.2.0
20
+
21
+ ### Minor Changes
22
+
23
+ - de6dad7: Feat: Expressions are now loaded using config
24
+
25
+ ### Patch Changes
26
+
27
+ - Updated dependencies [de6dad7]
28
+ - @autometa/scopes@0.4.0
29
+ - @autometa/jest-executor@0.2.12
30
+ - @autometa/test-builder@0.1.29
31
+
3
32
  ## 0.1.28
4
33
 
5
34
  ### Patch Changes
package/dist/esm/index.js CHANGED
@@ -49,6 +49,7 @@ var Coordinator = class {
49
49
  }
50
50
  start(gherkin, feature, events, executor) {
51
51
  this.global.unlock();
52
+ this.loadParameterTypes();
52
53
  this.loadSteps();
53
54
  this.global.lock();
54
55
  __privateSet(this, _builder, new TestBuilder(gherkin));
@@ -67,8 +68,8 @@ var Coordinator = class {
67
68
  }
68
69
  fileSystem(caller) {
69
70
  const { roots } = this.config;
70
- const { steps, features, app } = roots;
71
- __privateSet(this, _fs, new Files().withFeatureRoot(features).withCallerFile(caller).withStepsRoot(steps).withAppRoot(app));
71
+ const { steps, features, app, parameterTypes } = roots;
72
+ __privateSet(this, _fs, new Files().withFeatureRoot(features).withCallerFile(caller).withStepsRoot(steps).withParameterTypes(parameterTypes).withAppRoot(app));
72
73
  return this.fs;
73
74
  }
74
75
  loadSteps() {
@@ -81,6 +82,19 @@ var Coordinator = class {
81
82
  this.fs.fromUrlPattern(stepRoot).loadStepDefinitions();
82
83
  }
83
84
  }
85
+ loadParameterTypes() {
86
+ const { parameterTypes } = this.config.roots;
87
+ if (parameterTypes === void 0) {
88
+ return;
89
+ }
90
+ if (typeof parameterTypes === "string") {
91
+ this.fs.fromUrlPattern(parameterTypes).loadParameterTypes();
92
+ return;
93
+ }
94
+ for (const paramTypeRoot of parameterTypes) {
95
+ this.fs.fromUrlPattern(paramTypeRoot).loadParameterTypes();
96
+ }
97
+ }
84
98
  };
85
99
  _fs = new WeakMap();
86
100
  _builder = new WeakMap();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/coordinator.ts"],"sourcesContent":["import { Config } from \"@autometa/config\";\nimport { FeatureBridge, TestBuilder } from \"@autometa/test-builder\";\nimport { AutometaApp, AutometaWorld } from \"@autometa/app\";\nimport { TestEventEmitter } from \"@autometa/events\";\nimport { Class } from \"@autometa/types\";\nimport { FeatureScope, Files, GlobalScope } from \"@autometa/scopes\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { AssertDefined } from \"@autometa/asserters\";\nimport { CoordinatorOpts } from \"./types\";\nimport { Feature } from \"@autometa/gherkin\";\nexport class Coordinator {\n #fs: Files;\n #builder: TestBuilder;\n #bridge: FeatureBridge;\n constructor(\n readonly global: GlobalScope,\n readonly configs: Config,\n readonly opts: Record<string, CoordinatorOpts>\n ) {\n AssertDefined(configs, \"Config\");\n }\n\n run(\n feature: FeatureScope,\n caller: string,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n AssertDefined(executor, \"Executor\");\n\n const fs = this.fileSystem(caller);\n const path = fs.fromUrlPattern(feature.path);\n path.loadApps();\n\n const gherkin = path.getFeatureFile();\n if (!Array.isArray(gherkin)) {\n this.start(gherkin, feature, events, executor);\n } else {\n for (const featGherkin of gherkin) {\n this.start(featGherkin, feature, events, executor);\n }\n }\n }\n\n private start(\n gherkin: Feature,\n feature: FeatureScope,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n this.global.unlock();\n this.loadSteps();\n this.global.lock();\n this.#builder = new TestBuilder(gherkin);\n this.#bridge = this.#builder.onFeatureExecuted(feature);\n const { app, world } = this.opts[this.config.environment ?? \"default\"];\n executor({ app, world }, this.global, this.#bridge, events, this.configs);\n }\n\n get fs() {\n if (!this.#fs) {\n throw new AutomationError(\"File System not initialized\");\n }\n return this.#fs;\n }\n\n get config() {\n return this.configs.current;\n }\n\n fileSystem(caller: string) {\n const { roots } = this.config;\n const { steps, features, app } = roots;\n\n this.#fs = new Files()\n .withFeatureRoot(features)\n .withCallerFile(caller)\n .withStepsRoot(steps)\n .withAppRoot(app);\n return this.fs;\n }\n\n loadSteps() {\n const { steps } = this.config.roots;\n if (typeof steps === \"string\") {\n this.fs.fromUrlPattern(steps).loadStepDefinitions();\n return;\n }\n for (const stepRoot of steps) {\n this.fs.fromUrlPattern(stepRoot).loadStepDefinitions();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,SAAwB,mBAAmB;AAI3C,SAAuB,aAA0B;AACjD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAP9B;AAUO,IAAM,cAAN,MAAkB;AAAA,EAIvB,YACW,QACA,SACA,MACT;AAHS;AACA;AACA;AANX;AACA;AACA;AAME,kBAAc,SAAS,QAAQ;AAAA,EACjC;AAAA,EAEA,IACE,SACA,QACA,QACA,UAOA;AACA,kBAAc,UAAU,UAAU;AAElC,UAAM,KAAK,KAAK,WAAW,MAAM;AACjC,UAAM,OAAO,GAAG,eAAe,QAAQ,IAAI;AAC3C,SAAK,SAAS;AAEd,UAAM,UAAU,KAAK,eAAe;AACpC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,WAAK,MAAM,SAAS,SAAS,QAAQ,QAAQ;AAAA,IAC/C,OAAO;AACL,iBAAW,eAAe,SAAS;AACjC,aAAK,MAAM,aAAa,SAAS,QAAQ,QAAQ;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,MACN,SACA,SACA,QACA,UAOA;AACA,SAAK,OAAO,OAAO;AACnB,SAAK,UAAU;AACf,SAAK,OAAO,KAAK;AACjB,uBAAK,UAAW,IAAI,YAAY,OAAO;AACvC,uBAAK,SAAU,mBAAK,UAAS,kBAAkB,OAAO;AACtD,UAAM,EAAE,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,OAAO,eAAe,SAAS;AACrE,aAAS,EAAE,KAAK,MAAM,GAAG,KAAK,QAAQ,mBAAK,UAAS,QAAQ,KAAK,OAAO;AAAA,EAC1E;AAAA,EAEA,IAAI,KAAK;AACP,QAAI,CAAC,mBAAK,MAAK;AACb,YAAM,IAAI,gBAAgB,6BAA6B;AAAA,IACzD;AACA,WAAO,mBAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,WAAW,QAAgB;AACzB,UAAM,EAAE,MAAM,IAAI,KAAK;AACvB,UAAM,EAAE,OAAO,UAAU,IAAI,IAAI;AAEjC,uBAAK,KAAM,IAAI,MAAM,EAClB,gBAAgB,QAAQ,EACxB,eAAe,MAAM,EACrB,cAAc,KAAK,EACnB,YAAY,GAAG;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY;AACV,UAAM,EAAE,MAAM,IAAI,KAAK,OAAO;AAC9B,QAAI,OAAO,UAAU,UAAU;AAC7B,WAAK,GAAG,eAAe,KAAK,EAAE,oBAAoB;AAClD;AAAA,IACF;AACA,eAAW,YAAY,OAAO;AAC5B,WAAK,GAAG,eAAe,QAAQ,EAAE,oBAAoB;AAAA,IACvD;AAAA,EACF;AACF;AA7FE;AACA;AACA;","names":[]}
1
+ {"version":3,"sources":["../../src/coordinator.ts"],"sourcesContent":["import { Config } from \"@autometa/config\";\nimport { FeatureBridge, TestBuilder } from \"@autometa/test-builder\";\nimport { AutometaApp, AutometaWorld } from \"@autometa/app\";\nimport { TestEventEmitter } from \"@autometa/events\";\nimport { Class } from \"@autometa/types\";\nimport { FeatureScope, Files, GlobalScope } from \"@autometa/scopes\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { AssertDefined } from \"@autometa/asserters\";\nimport { CoordinatorOpts } from \"./types\";\nimport { Feature } from \"@autometa/gherkin\";\nexport class Coordinator {\n #fs: Files;\n #builder: TestBuilder;\n #bridge: FeatureBridge;\n constructor(\n readonly global: GlobalScope,\n readonly configs: Config,\n readonly opts: Record<string, CoordinatorOpts>\n ) {\n AssertDefined(configs, \"Config\");\n }\n\n run(\n feature: FeatureScope,\n caller: string,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n AssertDefined(executor, \"Executor\");\n\n const fs = this.fileSystem(caller);\n const path = fs.fromUrlPattern(feature.path);\n path.loadApps();\n\n const gherkin = path.getFeatureFile();\n if (!Array.isArray(gherkin)) {\n this.start(gherkin, feature, events, executor);\n } else {\n for (const featGherkin of gherkin) {\n this.start(featGherkin, feature, events, executor);\n }\n }\n }\n\n private start(\n gherkin: Feature,\n feature: FeatureScope,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n this.global.unlock();\n this.loadParameterTypes();\n this.loadSteps();\n this.global.lock();\n this.#builder = new TestBuilder(gherkin);\n this.#bridge = this.#builder.onFeatureExecuted(feature);\n const { app, world } = this.opts[this.config.environment ?? \"default\"];\n executor({ app, world }, this.global, this.#bridge, events, this.configs);\n }\n\n get fs() {\n if (!this.#fs) {\n throw new AutomationError(\"File System not initialized\");\n }\n return this.#fs;\n }\n\n get config() {\n return this.configs.current;\n }\n\n fileSystem(caller: string) {\n const { roots } = this.config;\n const { steps, features, app, parameterTypes } = roots;\n\n this.#fs = new Files()\n .withFeatureRoot(features)\n .withCallerFile(caller)\n .withStepsRoot(steps)\n .withParameterTypes(parameterTypes)\n .withAppRoot(app);\n return this.fs;\n }\n\n loadSteps() {\n const { steps } = this.config.roots;\n if (typeof steps === \"string\") {\n this.fs.fromUrlPattern(steps).loadStepDefinitions();\n return;\n }\n for (const stepRoot of steps) {\n this.fs.fromUrlPattern(stepRoot).loadStepDefinitions();\n }\n }\n\n loadParameterTypes() {\n const { parameterTypes } = this.config.roots;\n if (parameterTypes === undefined) {\n return;\n }\n\n if (typeof parameterTypes === \"string\") {\n this.fs.fromUrlPattern(parameterTypes).loadParameterTypes();\n return;\n }\n\n for (const paramTypeRoot of parameterTypes) {\n this.fs.fromUrlPattern(paramTypeRoot).loadParameterTypes();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,SAAwB,mBAAmB;AAI3C,SAAuB,aAA0B;AACjD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAP9B;AAUO,IAAM,cAAN,MAAkB;AAAA,EAIvB,YACW,QACA,SACA,MACT;AAHS;AACA;AACA;AANX;AACA;AACA;AAME,kBAAc,SAAS,QAAQ;AAAA,EACjC;AAAA,EAEA,IACE,SACA,QACA,QACA,UAOA;AACA,kBAAc,UAAU,UAAU;AAElC,UAAM,KAAK,KAAK,WAAW,MAAM;AACjC,UAAM,OAAO,GAAG,eAAe,QAAQ,IAAI;AAC3C,SAAK,SAAS;AAEd,UAAM,UAAU,KAAK,eAAe;AACpC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,WAAK,MAAM,SAAS,SAAS,QAAQ,QAAQ;AAAA,IAC/C,OAAO;AACL,iBAAW,eAAe,SAAS;AACjC,aAAK,MAAM,aAAa,SAAS,QAAQ,QAAQ;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,MACN,SACA,SACA,QACA,UAOA;AACA,SAAK,OAAO,OAAO;AACnB,SAAK,mBAAmB;AACxB,SAAK,UAAU;AACf,SAAK,OAAO,KAAK;AACjB,uBAAK,UAAW,IAAI,YAAY,OAAO;AACvC,uBAAK,SAAU,mBAAK,UAAS,kBAAkB,OAAO;AACtD,UAAM,EAAE,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,OAAO,eAAe,SAAS;AACrE,aAAS,EAAE,KAAK,MAAM,GAAG,KAAK,QAAQ,mBAAK,UAAS,QAAQ,KAAK,OAAO;AAAA,EAC1E;AAAA,EAEA,IAAI,KAAK;AACP,QAAI,CAAC,mBAAK,MAAK;AACb,YAAM,IAAI,gBAAgB,6BAA6B;AAAA,IACzD;AACA,WAAO,mBAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,WAAW,QAAgB;AACzB,UAAM,EAAE,MAAM,IAAI,KAAK;AACvB,UAAM,EAAE,OAAO,UAAU,KAAK,eAAe,IAAI;AAEjD,uBAAK,KAAM,IAAI,MAAM,EAClB,gBAAgB,QAAQ,EACxB,eAAe,MAAM,EACrB,cAAc,KAAK,EACnB,mBAAmB,cAAc,EACjC,YAAY,GAAG;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY;AACV,UAAM,EAAE,MAAM,IAAI,KAAK,OAAO;AAC9B,QAAI,OAAO,UAAU,UAAU;AAC7B,WAAK,GAAG,eAAe,KAAK,EAAE,oBAAoB;AAClD;AAAA,IACF;AACA,eAAW,YAAY,OAAO;AAC5B,WAAK,GAAG,eAAe,QAAQ,EAAE,oBAAoB;AAAA,IACvD;AAAA,EACF;AAAA,EAEA,qBAAqB;AACnB,UAAM,EAAE,eAAe,IAAI,KAAK,OAAO;AACvC,QAAI,mBAAmB,QAAW;AAChC;AAAA,IACF;AAEA,QAAI,OAAO,mBAAmB,UAAU;AACtC,WAAK,GAAG,eAAe,cAAc,EAAE,mBAAmB;AAC1D;AAAA,IACF;AAEA,eAAW,iBAAiB,gBAAgB;AAC1C,WAAK,GAAG,eAAe,aAAa,EAAE,mBAAmB;AAAA,IAC3D;AAAA,EACF;AACF;AA/GE;AACA;AACA;","names":[]}
package/dist/index.d.cts CHANGED
@@ -45,6 +45,7 @@ declare class Coordinator {
45
45
  };
46
46
  fileSystem(caller: string): Files;
47
47
  loadSteps(): void;
48
+ loadParameterTypes(): void;
48
49
  }
49
50
 
50
51
  export { Coordinator, CoordinatorOpts };
package/dist/index.d.ts CHANGED
@@ -45,6 +45,7 @@ declare class Coordinator {
45
45
  };
46
46
  fileSystem(caller: string): Files;
47
47
  loadSteps(): void;
48
+ loadParameterTypes(): void;
48
49
  }
49
50
 
50
51
  export { Coordinator, CoordinatorOpts };
package/dist/index.js CHANGED
@@ -74,6 +74,7 @@ var Coordinator = class {
74
74
  }
75
75
  start(gherkin, feature, events, executor) {
76
76
  this.global.unlock();
77
+ this.loadParameterTypes();
77
78
  this.loadSteps();
78
79
  this.global.lock();
79
80
  __privateSet(this, _builder, new import_test_builder.TestBuilder(gherkin));
@@ -92,8 +93,8 @@ var Coordinator = class {
92
93
  }
93
94
  fileSystem(caller) {
94
95
  const { roots } = this.config;
95
- const { steps, features, app } = roots;
96
- __privateSet(this, _fs, new import_scopes.Files().withFeatureRoot(features).withCallerFile(caller).withStepsRoot(steps).withAppRoot(app));
96
+ const { steps, features, app, parameterTypes } = roots;
97
+ __privateSet(this, _fs, new import_scopes.Files().withFeatureRoot(features).withCallerFile(caller).withStepsRoot(steps).withParameterTypes(parameterTypes).withAppRoot(app));
97
98
  return this.fs;
98
99
  }
99
100
  loadSteps() {
@@ -106,6 +107,19 @@ var Coordinator = class {
106
107
  this.fs.fromUrlPattern(stepRoot).loadStepDefinitions();
107
108
  }
108
109
  }
110
+ loadParameterTypes() {
111
+ const { parameterTypes } = this.config.roots;
112
+ if (parameterTypes === void 0) {
113
+ return;
114
+ }
115
+ if (typeof parameterTypes === "string") {
116
+ this.fs.fromUrlPattern(parameterTypes).loadParameterTypes();
117
+ return;
118
+ }
119
+ for (const paramTypeRoot of parameterTypes) {
120
+ this.fs.fromUrlPattern(paramTypeRoot).loadParameterTypes();
121
+ }
122
+ }
109
123
  };
110
124
  _fs = new WeakMap();
111
125
  _builder = new WeakMap();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/coordinator.ts"],"sourcesContent":["export * from \"./coordinator\";\nexport * from \"./types\";\n","import { Config } from \"@autometa/config\";\nimport { FeatureBridge, TestBuilder } from \"@autometa/test-builder\";\nimport { AutometaApp, AutometaWorld } from \"@autometa/app\";\nimport { TestEventEmitter } from \"@autometa/events\";\nimport { Class } from \"@autometa/types\";\nimport { FeatureScope, Files, GlobalScope } from \"@autometa/scopes\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { AssertDefined } from \"@autometa/asserters\";\nimport { CoordinatorOpts } from \"./types\";\nimport { Feature } from \"@autometa/gherkin\";\nexport class Coordinator {\n #fs: Files;\n #builder: TestBuilder;\n #bridge: FeatureBridge;\n constructor(\n readonly global: GlobalScope,\n readonly configs: Config,\n readonly opts: Record<string, CoordinatorOpts>\n ) {\n AssertDefined(configs, \"Config\");\n }\n\n run(\n feature: FeatureScope,\n caller: string,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n AssertDefined(executor, \"Executor\");\n\n const fs = this.fileSystem(caller);\n const path = fs.fromUrlPattern(feature.path);\n path.loadApps();\n\n const gherkin = path.getFeatureFile();\n if (!Array.isArray(gherkin)) {\n this.start(gherkin, feature, events, executor);\n } else {\n for (const featGherkin of gherkin) {\n this.start(featGherkin, feature, events, executor);\n }\n }\n }\n\n private start(\n gherkin: Feature,\n feature: FeatureScope,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n this.global.unlock();\n this.loadSteps();\n this.global.lock();\n this.#builder = new TestBuilder(gherkin);\n this.#bridge = this.#builder.onFeatureExecuted(feature);\n const { app, world } = this.opts[this.config.environment ?? \"default\"];\n executor({ app, world }, this.global, this.#bridge, events, this.configs);\n }\n\n get fs() {\n if (!this.#fs) {\n throw new AutomationError(\"File System not initialized\");\n }\n return this.#fs;\n }\n\n get config() {\n return this.configs.current;\n }\n\n fileSystem(caller: string) {\n const { roots } = this.config;\n const { steps, features, app } = roots;\n\n this.#fs = new Files()\n .withFeatureRoot(features)\n .withCallerFile(caller)\n .withStepsRoot(steps)\n .withAppRoot(app);\n return this.fs;\n }\n\n loadSteps() {\n const { steps } = this.config.roots;\n if (typeof steps === \"string\") {\n this.fs.fromUrlPattern(steps).loadStepDefinitions();\n return;\n }\n for (const stepRoot of steps) {\n this.fs.fromUrlPattern(stepRoot).loadStepDefinitions();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,0BAA2C;AAI3C,oBAAiD;AACjD,oBAAgC;AAChC,uBAA8B;AAP9B;AAUO,IAAM,cAAN,MAAkB;AAAA,EAIvB,YACW,QACA,SACA,MACT;AAHS;AACA;AACA;AANX;AACA;AACA;AAME,wCAAc,SAAS,QAAQ;AAAA,EACjC;AAAA,EAEA,IACE,SACA,QACA,QACA,UAOA;AACA,wCAAc,UAAU,UAAU;AAElC,UAAM,KAAK,KAAK,WAAW,MAAM;AACjC,UAAM,OAAO,GAAG,eAAe,QAAQ,IAAI;AAC3C,SAAK,SAAS;AAEd,UAAM,UAAU,KAAK,eAAe;AACpC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,WAAK,MAAM,SAAS,SAAS,QAAQ,QAAQ;AAAA,IAC/C,OAAO;AACL,iBAAW,eAAe,SAAS;AACjC,aAAK,MAAM,aAAa,SAAS,QAAQ,QAAQ;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,MACN,SACA,SACA,QACA,UAOA;AACA,SAAK,OAAO,OAAO;AACnB,SAAK,UAAU;AACf,SAAK,OAAO,KAAK;AACjB,uBAAK,UAAW,IAAI,gCAAY,OAAO;AACvC,uBAAK,SAAU,mBAAK,UAAS,kBAAkB,OAAO;AACtD,UAAM,EAAE,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,OAAO,eAAe,SAAS;AACrE,aAAS,EAAE,KAAK,MAAM,GAAG,KAAK,QAAQ,mBAAK,UAAS,QAAQ,KAAK,OAAO;AAAA,EAC1E;AAAA,EAEA,IAAI,KAAK;AACP,QAAI,CAAC,mBAAK,MAAK;AACb,YAAM,IAAI,8BAAgB,6BAA6B;AAAA,IACzD;AACA,WAAO,mBAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,WAAW,QAAgB;AACzB,UAAM,EAAE,MAAM,IAAI,KAAK;AACvB,UAAM,EAAE,OAAO,UAAU,IAAI,IAAI;AAEjC,uBAAK,KAAM,IAAI,oBAAM,EAClB,gBAAgB,QAAQ,EACxB,eAAe,MAAM,EACrB,cAAc,KAAK,EACnB,YAAY,GAAG;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY;AACV,UAAM,EAAE,MAAM,IAAI,KAAK,OAAO;AAC9B,QAAI,OAAO,UAAU,UAAU;AAC7B,WAAK,GAAG,eAAe,KAAK,EAAE,oBAAoB;AAClD;AAAA,IACF;AACA,eAAW,YAAY,OAAO;AAC5B,WAAK,GAAG,eAAe,QAAQ,EAAE,oBAAoB;AAAA,IACvD;AAAA,EACF;AACF;AA7FE;AACA;AACA;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/coordinator.ts"],"sourcesContent":["export * from \"./coordinator\";\nexport * from \"./types\";\n","import { Config } from \"@autometa/config\";\nimport { FeatureBridge, TestBuilder } from \"@autometa/test-builder\";\nimport { AutometaApp, AutometaWorld } from \"@autometa/app\";\nimport { TestEventEmitter } from \"@autometa/events\";\nimport { Class } from \"@autometa/types\";\nimport { FeatureScope, Files, GlobalScope } from \"@autometa/scopes\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { AssertDefined } from \"@autometa/asserters\";\nimport { CoordinatorOpts } from \"./types\";\nimport { Feature } from \"@autometa/gherkin\";\nexport class Coordinator {\n #fs: Files;\n #builder: TestBuilder;\n #bridge: FeatureBridge;\n constructor(\n readonly global: GlobalScope,\n readonly configs: Config,\n readonly opts: Record<string, CoordinatorOpts>\n ) {\n AssertDefined(configs, \"Config\");\n }\n\n run(\n feature: FeatureScope,\n caller: string,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n AssertDefined(executor, \"Executor\");\n\n const fs = this.fileSystem(caller);\n const path = fs.fromUrlPattern(feature.path);\n path.loadApps();\n\n const gherkin = path.getFeatureFile();\n if (!Array.isArray(gherkin)) {\n this.start(gherkin, feature, events, executor);\n } else {\n for (const featGherkin of gherkin) {\n this.start(featGherkin, feature, events, executor);\n }\n }\n }\n\n private start(\n gherkin: Feature,\n feature: FeatureScope,\n events: TestEventEmitter,\n executor: (\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n global: GlobalScope,\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n ) => void\n ) {\n this.global.unlock();\n this.loadParameterTypes();\n this.loadSteps();\n this.global.lock();\n this.#builder = new TestBuilder(gherkin);\n this.#bridge = this.#builder.onFeatureExecuted(feature);\n const { app, world } = this.opts[this.config.environment ?? \"default\"];\n executor({ app, world }, this.global, this.#bridge, events, this.configs);\n }\n\n get fs() {\n if (!this.#fs) {\n throw new AutomationError(\"File System not initialized\");\n }\n return this.#fs;\n }\n\n get config() {\n return this.configs.current;\n }\n\n fileSystem(caller: string) {\n const { roots } = this.config;\n const { steps, features, app, parameterTypes } = roots;\n\n this.#fs = new Files()\n .withFeatureRoot(features)\n .withCallerFile(caller)\n .withStepsRoot(steps)\n .withParameterTypes(parameterTypes)\n .withAppRoot(app);\n return this.fs;\n }\n\n loadSteps() {\n const { steps } = this.config.roots;\n if (typeof steps === \"string\") {\n this.fs.fromUrlPattern(steps).loadStepDefinitions();\n return;\n }\n for (const stepRoot of steps) {\n this.fs.fromUrlPattern(stepRoot).loadStepDefinitions();\n }\n }\n\n loadParameterTypes() {\n const { parameterTypes } = this.config.roots;\n if (parameterTypes === undefined) {\n return;\n }\n\n if (typeof parameterTypes === \"string\") {\n this.fs.fromUrlPattern(parameterTypes).loadParameterTypes();\n return;\n }\n\n for (const paramTypeRoot of parameterTypes) {\n this.fs.fromUrlPattern(paramTypeRoot).loadParameterTypes();\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,0BAA2C;AAI3C,oBAAiD;AACjD,oBAAgC;AAChC,uBAA8B;AAP9B;AAUO,IAAM,cAAN,MAAkB;AAAA,EAIvB,YACW,QACA,SACA,MACT;AAHS;AACA;AACA;AANX;AACA;AACA;AAME,wCAAc,SAAS,QAAQ;AAAA,EACjC;AAAA,EAEA,IACE,SACA,QACA,QACA,UAOA;AACA,wCAAc,UAAU,UAAU;AAElC,UAAM,KAAK,KAAK,WAAW,MAAM;AACjC,UAAM,OAAO,GAAG,eAAe,QAAQ,IAAI;AAC3C,SAAK,SAAS;AAEd,UAAM,UAAU,KAAK,eAAe;AACpC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,WAAK,MAAM,SAAS,SAAS,QAAQ,QAAQ;AAAA,IAC/C,OAAO;AACL,iBAAW,eAAe,SAAS;AACjC,aAAK,MAAM,aAAa,SAAS,QAAQ,QAAQ;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,MACN,SACA,SACA,QACA,UAOA;AACA,SAAK,OAAO,OAAO;AACnB,SAAK,mBAAmB;AACxB,SAAK,UAAU;AACf,SAAK,OAAO,KAAK;AACjB,uBAAK,UAAW,IAAI,gCAAY,OAAO;AACvC,uBAAK,SAAU,mBAAK,UAAS,kBAAkB,OAAO;AACtD,UAAM,EAAE,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,OAAO,eAAe,SAAS;AACrE,aAAS,EAAE,KAAK,MAAM,GAAG,KAAK,QAAQ,mBAAK,UAAS,QAAQ,KAAK,OAAO;AAAA,EAC1E;AAAA,EAEA,IAAI,KAAK;AACP,QAAI,CAAC,mBAAK,MAAK;AACb,YAAM,IAAI,8BAAgB,6BAA6B;AAAA,IACzD;AACA,WAAO,mBAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,WAAW,QAAgB;AACzB,UAAM,EAAE,MAAM,IAAI,KAAK;AACvB,UAAM,EAAE,OAAO,UAAU,KAAK,eAAe,IAAI;AAEjD,uBAAK,KAAM,IAAI,oBAAM,EAClB,gBAAgB,QAAQ,EACxB,eAAe,MAAM,EACrB,cAAc,KAAK,EACnB,mBAAmB,cAAc,EACjC,YAAY,GAAG;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY;AACV,UAAM,EAAE,MAAM,IAAI,KAAK,OAAO;AAC9B,QAAI,OAAO,UAAU,UAAU;AAC7B,WAAK,GAAG,eAAe,KAAK,EAAE,oBAAoB;AAClD;AAAA,IACF;AACA,eAAW,YAAY,OAAO;AAC5B,WAAK,GAAG,eAAe,QAAQ,EAAE,oBAAoB;AAAA,IACvD;AAAA,EACF;AAAA,EAEA,qBAAqB;AACnB,UAAM,EAAE,eAAe,IAAI,KAAK,OAAO;AACvC,QAAI,mBAAmB,QAAW;AAChC;AAAA,IACF;AAEA,QAAI,OAAO,mBAAmB,UAAU;AACtC,WAAK,GAAG,eAAe,cAAc,EAAE,mBAAmB;AAC1D;AAAA,IACF;AAEA,eAAW,iBAAiB,gBAAgB;AAC1C,WAAK,GAAG,eAAe,aAAa,EAAE,mBAAmB;AAAA,IAC3D;AAAA,EACF;AACF;AA/GE;AACA;AACA;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autometa/coordinator",
3
- "version": "0.1.28",
3
+ "version": "0.2.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,18 +27,18 @@
27
27
  "tsconfig": " *",
28
28
  "tsup": "^7.2.0",
29
29
  "typescript": "^4.9.5",
30
- "vitest": "^0.29.8"
30
+ "vitest": "0.34.6"
31
31
  },
32
32
  "dependencies": {
33
- "@autometa/app": "^0.1.12",
34
- "@autometa/asserters": "^0.1.3",
35
- "@autometa/config": "^0.1.12",
36
- "@autometa/errors": "^0.1.3",
37
- "@autometa/events": "^0.2.4",
38
- "@autometa/gherkin": "^0.5.1",
39
- "@autometa/jest-executor": "^0.2.11",
40
- "@autometa/scopes": "^0.3.6",
41
- "@autometa/test-builder": "^0.1.28",
33
+ "@autometa/app": "^0.1.13",
34
+ "@autometa/asserters": "^0.1.4",
35
+ "@autometa/config": "^0.1.13",
36
+ "@autometa/errors": "^0.1.4",
37
+ "@autometa/events": "^0.2.5",
38
+ "@autometa/gherkin": "^0.5.2",
39
+ "@autometa/jest-executor": "^0.2.13",
40
+ "@autometa/scopes": "^0.4.1",
41
+ "@autometa/test-builder": "^0.1.30",
42
42
  "@autometa/types": "^0.4.1",
43
43
  "tsyringe": "^4.8.0"
44
44
  },