@haibun/core 1.59.0 → 1.61.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 (53) hide show
  1. package/build/currentVersion.d.ts +1 -1
  2. package/build/currentVersion.js +1 -2
  3. package/build/lib/defs.d.ts +21 -5
  4. package/build/lib/defs.d.ts.map +1 -1
  5. package/build/lib/defs.js.map +1 -1
  6. package/build/lib/domain-types.d.ts.map +1 -1
  7. package/build/lib/domain-types.js +1 -1
  8. package/build/lib/domain-types.js.map +1 -1
  9. package/build/lib/features.d.ts +9 -14
  10. package/build/lib/features.d.ts.map +1 -1
  11. package/build/lib/features.js +12 -45
  12. package/build/lib/features.js.map +1 -1
  13. package/build/lib/interfaces/logger.d.ts +15 -2
  14. package/build/lib/interfaces/logger.d.ts.map +1 -1
  15. package/build/lib/interfaces/logger.js.map +1 -1
  16. package/build/lib/namedVars.d.ts +3 -3
  17. package/build/lib/namedVars.d.ts.map +1 -1
  18. package/build/lib/namedVars.js +8 -8
  19. package/build/lib/namedVars.js.map +1 -1
  20. package/build/lib/resolver-features.d.ts +3 -2
  21. package/build/lib/resolver-features.d.ts.map +1 -1
  22. package/build/lib/resolver-features.js.map +1 -1
  23. package/build/lib/test/TestSteps.d.ts +1 -1
  24. package/build/lib/test/resolvedTestFeatures.d.ts +30 -0
  25. package/build/lib/test/resolvedTestFeatures.d.ts.map +1 -0
  26. package/build/lib/test/resolvedTestFeatures.js +41 -0
  27. package/build/lib/test/resolvedTestFeatures.js.map +1 -0
  28. package/build/lib/util/index.d.ts +5 -0
  29. package/build/lib/util/index.d.ts.map +1 -1
  30. package/build/lib/util/index.js +9 -0
  31. package/build/lib/util/index.js.map +1 -1
  32. package/build/phases/Executor.d.ts.map +1 -1
  33. package/build/phases/Executor.js +23 -11
  34. package/build/phases/Executor.js.map +1 -1
  35. package/build/phases/Resolver.d.ts.map +1 -1
  36. package/build/phases/Resolver.js +7 -2
  37. package/build/phases/Resolver.js.map +1 -1
  38. package/build/phases/collector.js +5 -5
  39. package/build/phases/collector.js.map +1 -1
  40. package/build/runner.d.ts +1 -1
  41. package/build/runner.d.ts.map +1 -1
  42. package/build/runner.js +7 -8
  43. package/build/runner.js.map +1 -1
  44. package/build/steps/haibun.d.ts.map +1 -1
  45. package/build/steps/haibun.js +3 -3
  46. package/build/steps/haibun.js.map +1 -1
  47. package/build/steps/parse.d.ts +1 -1
  48. package/build/steps/variables-stepper.d.ts +55 -0
  49. package/build/steps/variables-stepper.d.ts.map +1 -0
  50. package/build/steps/variables-stepper.js +117 -0
  51. package/build/steps/variables-stepper.js.map +1 -0
  52. package/build/steps/vars.d.ts +4 -4
  53. package/package.json +1 -1
@@ -0,0 +1,117 @@
1
+ import { OK } from '../lib/defs.js';
2
+ import { AStepper } from '../lib/astepper.js';
3
+ import { EExecutionMessageType } from '../lib/interfaces/logger.js';
4
+ import { actionNotOK } from '../lib/util/index.js';
5
+ import { FeatureVariables } from '../lib/feature-variables.js';
6
+ // FIXME see https://github.com/withhaibun/haibun/issues/18
7
+ const getOrCond = (fr) => fr.replace(/.* is set or /, '');
8
+ const clearVars = (vars) => async () => {
9
+ vars.getWorld().shared.clear();
10
+ return Promise.resolve();
11
+ };
12
+ const cycles = (variablesStepper) => ({
13
+ endScenario: clearVars(variablesStepper),
14
+ startFeature: clearVars(variablesStepper),
15
+ startScenario: ({ featureVars }) => {
16
+ variablesStepper.getWorld().shared = new FeatureVariables(variablesStepper.getWorld().tag.toString(), { ...featureVars.all() });
17
+ return Promise.resolve();
18
+ },
19
+ });
20
+ class VariablesStepper extends AStepper {
21
+ cycles = cycles(this);
22
+ set = async (named, featureStep) => {
23
+ // FIXME see https://github.com/withhaibun/haibun/issues/18
24
+ const emptyOnly = !!featureStep.in.match(/set empty /);
25
+ const res = setShared(named, featureStep, this.getWorld(), emptyOnly);
26
+ return Promise.resolve(res);
27
+ };
28
+ checkIsSet(what) {
29
+ return this.getVarValue(what) !== undefined;
30
+ }
31
+ // FIXME provide explicit mapping to more carefully handle env, etc.
32
+ getVarValue(what) {
33
+ const envVal = this.getWorld().options.envVariables[what];
34
+ if (envVal !== undefined) {
35
+ return envVal;
36
+ }
37
+ return this.getWorld().shared.get(what);
38
+ }
39
+ isSet(what, orCond) {
40
+ if (this.checkIsSet(what)) {
41
+ return OK;
42
+ }
43
+ const [warning, response] = orCond.split(':').map((t) => t.trim());
44
+ const incident = {
45
+ incident: EExecutionMessageType.ACTION, incidentDetails: { summary: warning || response, }, tag: this.getWorld().tag
46
+ };
47
+ return actionNotOK(`${what} not set${orCond && ': ' + orCond}`, incident);
48
+ }
49
+ steps = {
50
+ combine: {
51
+ gwta: 'combine {p1} and {p2} as {what}',
52
+ action: async ({ p1, p2, what }, featureStep) => await this.set({ what, value: `${p1}${p2}` }, featureStep),
53
+ },
54
+ showEnv: {
55
+ gwta: 'show env',
56
+ action: async (n, featureStep) => {
57
+ console.info('env', this.world.options.envVariables);
58
+ return await this.set(n, featureStep);
59
+ },
60
+ },
61
+ showVars: {
62
+ gwta: 'show vars',
63
+ action: async () => {
64
+ console.info('vars', JSON.stringify(this.world.shared));
65
+ return Promise.resolve(OK);
66
+ },
67
+ },
68
+ set: {
69
+ gwta: 'set( empty)? {what: string} to {value: string}',
70
+ action: async (n, featureStep) => {
71
+ return await this.set(n, featureStep);
72
+ },
73
+ },
74
+ is: {
75
+ gwta: 'variable {what: string} is "{value}"',
76
+ action: async ({ what, value }) => {
77
+ const val = this.getVarValue(what);
78
+ return Promise.resolve(val === value ? OK : actionNotOK(`${what} is "${val}", not "${value}"`));
79
+ },
80
+ },
81
+ isSet: {
82
+ gwta: 'variable {what: string} is set( or .*)?',
83
+ action: async ({ what }, featureStep) => Promise.resolve(this.isSet(what, getOrCond(featureStep.in))),
84
+ },
85
+ isNotSet: {
86
+ gwta: 'variable {what: string} is not set?',
87
+ action: async ({ what }) => this.checkIsSet(what) ? actionNotOK(`${what} is set`) : Promise.resolve(OK),
88
+ },
89
+ background: {
90
+ match: /^Background: ?(?<background>.+)?$/,
91
+ action: async ({ background }) => {
92
+ this.getWorld().shared.set('background', background);
93
+ return Promise.resolve(OK);
94
+ },
95
+ },
96
+ display: {
97
+ gwta: 'display {what}',
98
+ action: async ({ what }) => {
99
+ this.getWorld().logger.info(`is ${JSON.stringify(what)}`);
100
+ return Promise.resolve(OK);
101
+ },
102
+ },
103
+ };
104
+ }
105
+ export default VariablesStepper;
106
+ export const didNotOverwrite = (what, present, value) => ({
107
+ overwrite: { summary: `did not overwrite ${what} value of "${present}" with "${value}"` },
108
+ });
109
+ export const setShared = ({ what, value }, featureStep, world, emptyOnly = false) => {
110
+ const { shared } = world;
111
+ if (!emptyOnly || shared.get(what) === undefined) {
112
+ shared.set(what, value);
113
+ return OK;
114
+ }
115
+ return OK;
116
+ };
117
+ //# sourceMappingURL=variables-stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables-stepper.js","sourceRoot":"","sources":["../../src/steps/variables-stepper.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ declare class Vars extends AStepper {
5
5
  set: (named: TNamed, featureStep: TFeatureStep) => Promise<import("../lib/defs.js").TOKActionResult>;
6
6
  checkIsSet(what: string): boolean;
7
7
  private getVarValue;
8
- isSet(what: string, orCond: string): import("../lib/defs.js").TNotOKActionResult | import("../lib/defs.js").TOKActionResult;
8
+ isSet(what: string, orCond: string): import("../lib/defs.js").TOKActionResult | import("../lib/defs.js").TNotOKActionResult;
9
9
  steps: {
10
10
  combine: {
11
11
  gwta: string;
@@ -25,15 +25,15 @@ declare class Vars extends AStepper {
25
25
  };
26
26
  is: {
27
27
  gwta: string;
28
- action: ({ what, value }: TNamed) => Promise<import("../lib/defs.js").TNotOKActionResult | import("../lib/defs.js").TOKActionResult>;
28
+ action: ({ what, value }: TNamed) => Promise<import("../lib/defs.js").TOKActionResult | import("../lib/defs.js").TNotOKActionResult>;
29
29
  };
30
30
  isSet: {
31
31
  gwta: string;
32
- action: ({ what }: TNamed, featureStep: TFeatureStep) => Promise<import("../lib/defs.js").TNotOKActionResult | import("../lib/defs.js").TOKActionResult>;
32
+ action: ({ what }: TNamed, featureStep: TFeatureStep) => Promise<import("../lib/defs.js").TOKActionResult | import("../lib/defs.js").TNotOKActionResult>;
33
33
  };
34
34
  isNotSet: {
35
35
  gwta: string;
36
- action: ({ what }: TNamed) => Promise<import("../lib/defs.js").TNotOKActionResult | import("../lib/defs.js").TOKActionResult>;
36
+ action: ({ what }: TNamed) => Promise<import("../lib/defs.js").TOKActionResult | import("../lib/defs.js").TNotOKActionResult>;
37
37
  };
38
38
  background: {
39
39
  match: RegExp;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@haibun/core",
3
3
  "type": "module",
4
- "version": "1.59.0",
4
+ "version": "1.61.0",
5
5
  "description": "",
6
6
  "author": "",
7
7
  "xexports": {