@haibun/core 1.46.2 → 1.46.4

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 (171) hide show
  1. package/build/applyEffectFeatures.d.ts +3 -0
  2. package/build/applyEffectFeatures.d.ts.map +1 -0
  3. package/build/applyEffectFeatures.js +32 -0
  4. package/build/applyEffectFeatures.js.map +1 -0
  5. package/build/currentVersion.d.ts +2 -0
  6. package/build/currentVersion.d.ts.map +1 -0
  7. package/build/currentVersion.js +2 -0
  8. package/build/currentVersion.js.map +1 -0
  9. package/build/index.d.ts +2 -0
  10. package/build/index.d.ts.map +1 -0
  11. package/build/index.js +2 -0
  12. package/build/index.js.map +1 -0
  13. package/build/lib/ConnectedLogger.d.ts +13 -0
  14. package/build/lib/ConnectedLogger.d.ts.map +1 -0
  15. package/build/lib/ConnectedLogger.js +22 -0
  16. package/build/lib/ConnectedLogger.js.map +1 -0
  17. package/build/lib/Logger.d.ts +47 -0
  18. package/build/lib/Logger.d.ts.map +1 -0
  19. package/build/lib/Logger.js +79 -0
  20. package/build/lib/Logger.js.map +1 -0
  21. package/build/lib/Logger.test.d.ts +2 -0
  22. package/build/lib/Logger.test.js.map +1 -1
  23. package/build/lib/TestLogger.d.ts +11 -0
  24. package/build/lib/TestLogger.d.ts.map +1 -0
  25. package/build/lib/TestLogger.js +11 -0
  26. package/build/lib/TestLogger.js.map +1 -0
  27. package/build/lib/Timer.d.ts +8 -0
  28. package/build/lib/Timer.d.ts.map +1 -0
  29. package/build/lib/Timer.js +12 -0
  30. package/build/lib/Timer.js.map +1 -0
  31. package/build/lib/contexts.d.ts +22 -0
  32. package/build/lib/contexts.d.ts.map +1 -0
  33. package/build/lib/contexts.js +36 -0
  34. package/build/lib/contexts.js.map +1 -0
  35. package/build/lib/defs.d.ts +260 -0
  36. package/build/lib/defs.d.ts.map +1 -0
  37. package/build/lib/defs.js +50 -0
  38. package/build/lib/defs.js.map +1 -0
  39. package/build/lib/domain-types.d.ts +13 -0
  40. package/build/lib/domain-types.d.ts.map +1 -0
  41. package/build/lib/domain-types.js +7 -0
  42. package/build/lib/domain-types.js.map +1 -0
  43. package/build/lib/features.d.ts +23 -0
  44. package/build/lib/features.d.ts.map +1 -0
  45. package/build/lib/features.js +100 -0
  46. package/build/lib/features.js.map +1 -0
  47. package/build/lib/features.test.d.ts +2 -0
  48. package/build/lib/features.test.js +112 -0
  49. package/build/lib/features.test.js.map +1 -0
  50. package/build/lib/interfaces/artifacts.d.ts +48 -0
  51. package/build/lib/interfaces/artifacts.d.ts.map +1 -0
  52. package/build/lib/interfaces/artifacts.js +2 -0
  53. package/build/lib/interfaces/artifacts.js.map +1 -0
  54. package/build/lib/interfaces/logger.d.ts +55 -0
  55. package/build/lib/interfaces/logger.d.ts.map +1 -0
  56. package/build/lib/interfaces/logger.js +17 -0
  57. package/build/lib/interfaces/logger.js.map +1 -0
  58. package/build/lib/interfaces/messageContexts.d.ts +10 -0
  59. package/build/lib/interfaces/messageContexts.d.ts.map +1 -0
  60. package/build/lib/interfaces/messageContexts.js +2 -0
  61. package/build/lib/interfaces/messageContexts.js.map +1 -0
  62. package/build/lib/namedVars.d.ts +20 -0
  63. package/build/lib/namedVars.d.ts.map +1 -0
  64. package/build/lib/namedVars.js +138 -0
  65. package/build/lib/namedVars.js.map +1 -0
  66. package/build/lib/namedVars.test.d.ts +2 -0
  67. package/build/lib/namedVars.test.js +106 -0
  68. package/build/lib/namedVars.test.js.map +1 -0
  69. package/build/lib/resolver-features.d.ts +18 -0
  70. package/build/lib/resolver-features.d.ts.map +1 -0
  71. package/build/lib/resolver-features.js +12 -0
  72. package/build/lib/resolver-features.js.map +1 -0
  73. package/build/lib/test/SetTimeStepper.d.ts +10 -0
  74. package/build/lib/test/SetTimeStepper.d.ts.map +1 -0
  75. package/build/lib/test/SetTimeStepper.js +20 -0
  76. package/build/lib/test/SetTimeStepper.js.map +1 -0
  77. package/build/lib/test/TestSteps.d.ts +33 -0
  78. package/build/lib/test/TestSteps.d.ts.map +1 -0
  79. package/build/lib/test/TestSteps.js +32 -0
  80. package/build/lib/test/TestSteps.js.map +1 -0
  81. package/build/lib/test/TestStepsWithOptions.d.ts +25 -0
  82. package/build/lib/test/TestStepsWithOptions.d.ts.map +1 -0
  83. package/build/lib/test/TestStepsWithOptions.js +22 -0
  84. package/build/lib/test/TestStepsWithOptions.js.map +1 -0
  85. package/build/lib/test/lib.d.ts +26 -0
  86. package/build/lib/test/lib.d.ts.map +1 -1
  87. package/build/lib/test/lib.js +2 -1
  88. package/build/lib/test/lib.js.map +1 -1
  89. package/build/lib/test/lib.test.d.ts +2 -0
  90. package/build/lib/test/lib.test.d.ts.map +1 -0
  91. package/build/lib/test/lib.test.js +9 -0
  92. package/build/lib/test/lib.test.js.map +1 -0
  93. package/build/lib/util/index.d.ts +77 -0
  94. package/build/lib/util/index.d.ts.map +1 -0
  95. package/build/lib/util/index.js +252 -0
  96. package/build/lib/util/index.js.map +1 -0
  97. package/build/lib/util/util.test.d.ts +2 -0
  98. package/build/lib/util/util.test.d.ts.map +1 -0
  99. package/build/lib/util/util.test.js +238 -0
  100. package/build/lib/util/util.test.js.map +1 -0
  101. package/build/lib/util/workspace-lib.d.ts +15 -0
  102. package/build/lib/util/workspace-lib.d.ts.map +1 -0
  103. package/build/lib/util/workspace-lib.js +47 -0
  104. package/build/lib/util/workspace-lib.js.map +1 -0
  105. package/build/lib/util/workspace-lib.test.d.ts +2 -0
  106. package/build/lib/util/workspace-lib.test.d.ts.map +1 -0
  107. package/build/lib/util/workspace-lib.test.js +20 -0
  108. package/build/lib/util/workspace-lib.test.js.map +1 -0
  109. package/build/phases/Executor.d.ts +20 -0
  110. package/build/phases/Executor.d.ts.map +1 -0
  111. package/build/phases/Executor.js +144 -0
  112. package/build/phases/Executor.js.map +1 -0
  113. package/build/phases/Resolver.d.ts +15 -0
  114. package/build/phases/Resolver.d.ts.map +1 -0
  115. package/build/phases/Resolver.js +93 -0
  116. package/build/phases/Resolver.js.map +1 -0
  117. package/build/phases/Resolver.test.d.ts +2 -0
  118. package/build/phases/Resolver.test.d.ts.map +1 -0
  119. package/build/phases/Resolver.test.js +87 -0
  120. package/build/phases/Resolver.test.js.map +1 -0
  121. package/build/phases/collector.d.ts +15 -0
  122. package/build/phases/collector.d.ts.map +1 -0
  123. package/build/phases/collector.js +49 -0
  124. package/build/phases/collector.js.map +1 -0
  125. package/build/phases/collector.test.d.ts +2 -0
  126. package/build/phases/collector.test.d.ts.map +1 -0
  127. package/build/phases/collector.test.js +96 -0
  128. package/build/phases/collector.test.js.map +1 -0
  129. package/build/runner.d.ts +12 -0
  130. package/build/runner.d.ts.map +1 -0
  131. package/build/runner.js +61 -0
  132. package/build/runner.js.map +1 -0
  133. package/build/runner.test.d.ts +2 -0
  134. package/build/runner.test.d.ts.map +1 -0
  135. package/build/runner.test.js +24 -0
  136. package/build/runner.test.js.map +1 -0
  137. package/build/steps/conformance.d.ts +17 -0
  138. package/build/steps/conformance.d.ts.map +1 -0
  139. package/build/steps/conformance.js +12 -0
  140. package/build/steps/conformance.js.map +1 -0
  141. package/build/steps/credentials.d.ts +25 -0
  142. package/build/steps/credentials.d.ts.map +1 -0
  143. package/build/steps/credentials.js +38 -0
  144. package/build/steps/credentials.js.map +1 -0
  145. package/build/steps/haibun.d.ts +94 -0
  146. package/build/steps/haibun.d.ts.map +1 -1
  147. package/build/steps/haibun.js +8 -1
  148. package/build/steps/haibun.js.map +1 -1
  149. package/build/steps/haibun.test.d.ts +2 -0
  150. package/build/steps/haibun.test.d.ts.map +1 -0
  151. package/build/steps/haibun.test.js +48 -0
  152. package/build/steps/haibun.test.js.map +1 -0
  153. package/build/steps/lib/parse.d.ts +4 -0
  154. package/build/steps/lib/parse.d.ts.map +1 -0
  155. package/build/steps/lib/parse.js +42 -0
  156. package/build/steps/lib/parse.js.map +1 -0
  157. package/build/steps/lib/tts.d.ts +17 -0
  158. package/build/steps/lib/tts.d.ts.map +1 -0
  159. package/build/steps/lib/tts.js +80 -0
  160. package/build/steps/lib/tts.js.map +1 -0
  161. package/build/steps/parse.d.ts +25 -0
  162. package/build/steps/parse.d.ts.map +1 -0
  163. package/build/steps/parse.js +30 -0
  164. package/build/steps/parse.js.map +1 -0
  165. package/build/steps/vars.d.ts +6 -11
  166. package/build/steps/vars.d.ts.map +1 -1
  167. package/build/steps/vars.js.map +1 -1
  168. package/build/steps/vars.test.d.ts +2 -0
  169. package/build/steps/vars.test.js +43 -0
  170. package/build/steps/vars.test.js.map +1 -0
  171. package/package.json +1 -1
@@ -0,0 +1,260 @@
1
+ import { WorldContext } from './contexts.js';
2
+ import { ILogger } from './interfaces/logger.js';
3
+ import { TMessageContext } from './interfaces/messageContexts.js';
4
+ import { Timer } from './Timer.js';
5
+ export type TSpecl = {
6
+ steppers: string[];
7
+ refs?: {
8
+ docs: {
9
+ [name: string]: {
10
+ src: string;
11
+ };
12
+ };
13
+ };
14
+ };
15
+ export type TBaseOptions = {
16
+ DEST: string;
17
+ KEY?: string;
18
+ DESCRIPTION?: string;
19
+ LOG_LEVEL?: string;
20
+ LOG_FOLLOW?: string;
21
+ STAY?: string;
22
+ SETTING?: string;
23
+ [CONTINUE_AFTER_ERROR]?: boolean;
24
+ envVariables?: TEnvVariables;
25
+ };
26
+ export type TEnvVariables = {
27
+ [name: string]: string;
28
+ };
29
+ export type TOptionValue = TAnyFixme;
30
+ export interface IHasOptions {
31
+ options?: {
32
+ [name: string]: {
33
+ required?: boolean;
34
+ altSource?: string;
35
+ default?: string;
36
+ desc: string;
37
+ parse: (input: string, existing?: TOptionValue) => {
38
+ parseError?: string;
39
+ env?: TEnvVariables;
40
+ result?: TAnyFixme;
41
+ };
42
+ };
43
+ };
44
+ }
45
+ export interface IProcessFeatureResults extends AStepper {
46
+ processFeatureResult: (executorResult: TExecutorResult) => Promise<void>;
47
+ }
48
+ export declare const isProcessFeatureResults: (s: AStepper) => s is IProcessFeatureResults;
49
+ export type TModuleOptions = {
50
+ [name: string]: string;
51
+ };
52
+ export type TProtoOptions = {
53
+ options: TBaseOptions;
54
+ moduleOptions: TModuleOptions;
55
+ };
56
+ export type TBase = string[];
57
+ export type TWorld = {
58
+ tag: TTag;
59
+ shared: WorldContext;
60
+ runtime: TRuntime;
61
+ logger: ILogger;
62
+ options: TBaseOptions;
63
+ moduleOptions: TModuleOptions;
64
+ timer: Timer;
65
+ bases: TBase;
66
+ };
67
+ export type TFeatureMeta = {
68
+ base: string;
69
+ name: string;
70
+ path: string;
71
+ };
72
+ export type TFeature = TFeatureMeta & {
73
+ name: string;
74
+ content: string;
75
+ };
76
+ export type TExpandedFeature = TFeatureMeta & {
77
+ name: string;
78
+ expanded: TExpandedLine[];
79
+ };
80
+ export type TExpandedLine = {
81
+ line: string;
82
+ feature: TFeature;
83
+ };
84
+ export type TFeatures = TFeature[];
85
+ export type TResolvedFeature = {
86
+ path: string;
87
+ base: string;
88
+ name: string;
89
+ featureSteps: TFeatureStep[];
90
+ };
91
+ export type TTagValue = number;
92
+ export type TTag = {
93
+ key: string;
94
+ sequence: number;
95
+ featureNum: number;
96
+ params: TAnyFixme;
97
+ trace: boolean;
98
+ };
99
+ export type TFeatureStep = {
100
+ path: string;
101
+ in: string;
102
+ seq: number;
103
+ action: TStepAction;
104
+ };
105
+ export type TAction = (named: TNamed, featureStep: TFeatureStep) => Promise<TActionResult>;
106
+ export type TStepperStep = {
107
+ match?: RegExp;
108
+ gwta?: string;
109
+ exact?: string;
110
+ action: TAction;
111
+ applyEffect?: TApplyEffect;
112
+ };
113
+ export type TApplyEffect = (named: TNamed, featureStep: TFeatureStep, steppers: AStepper[]) => Promise<TFeatureStep[]>;
114
+ export interface CStepper {
115
+ new (): AStepper;
116
+ prototype: {
117
+ steps: {
118
+ [name: string]: TStepperStep;
119
+ };
120
+ setWorld(world: TWorld, steppers: AStepper[]): Promise<void>;
121
+ getWorld(): TWorld;
122
+ };
123
+ }
124
+ export type TAnyFixme = any;
125
+ export type TSteppers = {
126
+ [name: string]: AStepper;
127
+ };
128
+ export type TEndFeature = {
129
+ world: TWorld;
130
+ shouldClose: boolean;
131
+ isLast: boolean;
132
+ okSoFar: boolean;
133
+ continueAfterError: boolean;
134
+ stayOnFailure: boolean;
135
+ thisFeatureOK: boolean;
136
+ };
137
+ export type TStartFeature = TResolvedFeature;
138
+ export interface IStepperCycles {
139
+ startExecution?(): Promise<void>;
140
+ startFeature?(feature: TStartFeature): Promise<void>;
141
+ endFeature?(endedWith?: TEndFeature): Promise<void>;
142
+ onFailure?(result: TStepResult, step: TFeatureStep): Promise<void | TMessageContext>;
143
+ endExecution?(): Promise<void>;
144
+ }
145
+ export declare abstract class AStepper {
146
+ world?: TWorld;
147
+ cycles?: IStepperCycles;
148
+ setWorld(world: TWorld, steppers: AStepper[]): Promise<void>;
149
+ abstract steps: {
150
+ [name: string]: TStepperStep;
151
+ };
152
+ getWorld(): TWorld;
153
+ }
154
+ export type TStepAction = {
155
+ actionName: string;
156
+ stepperName: string;
157
+ step: TStepperStep;
158
+ named?: TNamed | undefined;
159
+ vars?: TNamedVar[];
160
+ };
161
+ export type TNamed = {
162
+ [name: string]: string;
163
+ };
164
+ export type TNamedVar = {
165
+ name: string;
166
+ type: string;
167
+ };
168
+ export declare const OK: TOKActionResult;
169
+ export type TExecutorResultError = {
170
+ details: {
171
+ [name: string]: TAnyFixme;
172
+ stack: string[];
173
+ };
174
+ message: string;
175
+ };
176
+ export type TExecutorResult = {
177
+ ok: boolean;
178
+ tag: TTag;
179
+ shared: WorldContext;
180
+ topics?: TMessageContext;
181
+ featureResults?: TFeatureResult[];
182
+ failure?: {
183
+ stage: string;
184
+ error: TExecutorResultError;
185
+ };
186
+ steppers: AStepper[];
187
+ };
188
+ export type TOKActionResult = {
189
+ ok: true;
190
+ messageContext?: TMessageContext;
191
+ };
192
+ export type TNotOKActionResult = {
193
+ ok: false;
194
+ message: string;
195
+ messageContext?: TMessageContext;
196
+ };
197
+ export type TTrace = {
198
+ [name: string]: {
199
+ url: string;
200
+ since: number;
201
+ trace: TAnyFixme;
202
+ };
203
+ };
204
+ export type TTraces = {
205
+ start?: number;
206
+ end?: number;
207
+ traces?: TTrace[];
208
+ };
209
+ export type TTraceOptions = {
210
+ [event: string]: {
211
+ listener: TAnyFixme;
212
+ };
213
+ };
214
+ export type TActionResult = TOKActionResult | TNotOKActionResult;
215
+ export type TStepActionResult = (TNotOkStepActionResult | TOKStepActionResult) & TTraces;
216
+ type TNamedStepActionResult = {
217
+ name: string;
218
+ };
219
+ export type TNotOkStepActionResult = TNotOKActionResult & TNamedStepActionResult;
220
+ export type TOKStepActionResult = TOKActionResult & TNamedStepActionResult;
221
+ export type TFeatureResult = {
222
+ skip?: boolean;
223
+ path: string;
224
+ ok: boolean;
225
+ stepResults: TStepResult[];
226
+ failure?: TFeatureResultFailure;
227
+ };
228
+ export type TFeatureResultFailure = {
229
+ message: string;
230
+ error: TAnyFixme;
231
+ expected?: TAnyFixme;
232
+ };
233
+ export type TStepResult = {
234
+ ok: boolean;
235
+ actionResult: TStepActionResult;
236
+ in: string;
237
+ path: string;
238
+ seq: number;
239
+ };
240
+ export type TRuntime = {
241
+ [name: string]: TAnyFixme;
242
+ };
243
+ export declare const HAIBUN = "HAIBUN";
244
+ export declare const BASE_PREFIX = "HAIBUN_";
245
+ export declare const CAPTURE = "capture";
246
+ export declare const BASE_DOMAINS: {
247
+ name: string;
248
+ resolve: (inp: string) => string;
249
+ }[];
250
+ export declare const STAY_ALWAYS = "always";
251
+ export declare const STAY_FAILURE = "failure";
252
+ export declare const STAY = "STAY";
253
+ export declare const CHECK_YES = "\u2705";
254
+ export declare const CHECK_NO = "\u274C";
255
+ export declare const STEP_DELAY = "STEP_DELAY";
256
+ export declare const DEFAULT_DEST = "default";
257
+ export declare const CONTINUE_AFTER_ERROR = "CONTINUE_AFTER_ERROR";
258
+ export declare const SCENARIO_START = "scenarioStart";
259
+ export {};
260
+ //# sourceMappingURL=defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../src/lib/defs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { constructorName } from './util/index.js';
2
+ export const isProcessFeatureResults = (s) => s.processFeatureResult !== undefined;
3
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
+ const example = {
5
+ path: 'path',
6
+ base: 'base',
7
+ name: 'name',
8
+ featureSteps: [
9
+ {
10
+ path: 'path',
11
+ in: 'in',
12
+ seq: 0,
13
+ action: {
14
+ actionName: 'actionName',
15
+ stepperName: 'stepperName',
16
+ step: { action: async () => await Promise.resolve(OK) },
17
+ },
18
+ },
19
+ ],
20
+ };
21
+ export class AStepper {
22
+ world;
23
+ cycles;
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ async setWorld(world, steppers) {
26
+ this.world = world;
27
+ await Promise.resolve();
28
+ }
29
+ getWorld() {
30
+ if (!this.world) {
31
+ throw Error(`stepper without world ${constructorName(this)}`);
32
+ }
33
+ return this.world;
34
+ }
35
+ }
36
+ export const OK = { ok: true };
37
+ export const HAIBUN = 'HAIBUN';
38
+ export const BASE_PREFIX = `${HAIBUN}_`;
39
+ export const CAPTURE = 'capture';
40
+ export const BASE_DOMAINS = [{ name: 'string', resolve: (inp) => inp }];
41
+ export const STAY_ALWAYS = 'always';
42
+ export const STAY_FAILURE = 'failure';
43
+ export const STAY = 'STAY';
44
+ export const CHECK_YES = '✅';
45
+ export const CHECK_NO = '❌';
46
+ export const STEP_DELAY = 'STEP_DELAY';
47
+ export const DEFAULT_DEST = 'default';
48
+ export const CONTINUE_AFTER_ERROR = 'CONTINUE_AFTER_ERROR';
49
+ export const SCENARIO_START = 'scenarioStart';
50
+ //# sourceMappingURL=defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../src/lib/defs.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA4ClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAW,EAA+B,EAAE,CAA0B,CAAE,CAAC,oBAAoB,KAAK,SAAS,CAAC;AAkDpJ,6DAA6D;AAC7D,MAAM,OAAO,GAAqB;IACjC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE;QACb;YACC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI;YACR,GAAG,EAAE,CAAC;YACN,MAAM,EAAE;gBACP,UAAU,EAAE,YAAY;gBACxB,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;aACvD;SACD;KACD;CACD,CAAC;AA2DF,MAAM,OAAgB,QAAQ;IAC7B,KAAK,CAAU;IACf,MAAM,CAAkB;IACxB,6DAA6D;IAC7D,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,QAAoB;QACjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC,yBAAyB,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD;AAaD,MAAM,CAAC,MAAM,EAAE,GAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AA2FhD,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,MAAM,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAE3B,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAE5B,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const WEB_PAGE = "webpage";
2
+ export declare const WEB_CONTROL = "webcontrol";
3
+ export declare const SELECTOR = "selector";
4
+ export type TValidator = (content: string) => string | undefined;
5
+ export interface IDependencies {
6
+ requires?: string[];
7
+ }
8
+ export interface ISharedContext {
9
+ get(key: string): unknown;
10
+ set(key: string, value: unknown): void;
11
+ }
12
+ export declare const BASE_TYPES: string[];
13
+ //# sourceMappingURL=domain-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-types.d.ts","sourceRoot":"","sources":["../../src/lib/domain-types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,YAAY,CAAC;AAClC,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,QAAQ,aAAa,CAAC;AAGnC,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAGjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAGD,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACxC;AAGD,eAAO,MAAM,UAAU,UAA8C,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Core types that replace the domain system, used in vars and modules like filesystem, web
2
+ export const WEB_PAGE = 'webpage';
3
+ export const WEB_CONTROL = 'webcontrol';
4
+ export const SELECTOR = 'selector';
5
+ // Type constants
6
+ export const BASE_TYPES = ['string', WEB_CONTROL, WEB_PAGE, SELECTOR];
7
+ //# sourceMappingURL=domain-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-types.js","sourceRoot":"","sources":["../../src/lib/domain-types.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAgBnC,iBAAiB;AACjB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { TExpandedFeature, TFeature, TFeatures } from './defs.js';
2
+ export declare function expand(backgrounds: TFeatures, features: TFeatures): Promise<TExpandedFeature[]>;
3
+ export declare function expandBackgrounds(features: TFeatures): Promise<TFeatures>;
4
+ export declare function findUpper(path: string, features: TFeatures): {
5
+ rem: string;
6
+ upper: TFeature[];
7
+ };
8
+ export declare function expandFeatures(features: TFeature[], backgrounds: TFeature[]): Promise<TExpandedFeature[]>;
9
+ export declare function withNameType(base: any, path: string, content: string): {
10
+ path: string;
11
+ base: any;
12
+ name: string;
13
+ type: string;
14
+ content: string;
15
+ };
16
+ export declare const asFeatureLine: (line: string, feature: TFeature) => {
17
+ line: string;
18
+ feature: TFeature;
19
+ };
20
+ export declare function findFeatures(name: string, backgrounds: TFeatures, type?: string): TFeatures;
21
+ export declare function findFeaturesOfType(backgrounds: TFeatures, type?: string): TFeatures;
22
+ export declare const featureSplit: (content: string) => string[];
23
+ //# sourceMappingURL=features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/lib/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAiB,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGjF,wBAAsB,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAIrG;AAGD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,sBAe1D;AAMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS;;;EAS1D;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAU/G;AAqBD,wBAAgB,YAAY,CAAC,IAAI,KAAA,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;EAK/D;AAED,eAAO,MAAM,aAAa,SAAU,MAAM,WAAW,QAAQ;;;CAAwB,CAAC;AAqBtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,SAAY,GAAG,SAAS,CAG9F;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,SAAY,GAAG,SAAS,CAEtF;AAID,eAAO,MAAM,YAAY,YAAa,MAAM,aAKd,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { getActionable } from './util/index.js';
2
+ export async function expand(backgrounds, features) {
3
+ const expandedBackgrounds = await expandBackgrounds(backgrounds);
4
+ const expandedFeatures = await expandFeatures(features, expandedBackgrounds);
5
+ return expandedFeatures;
6
+ }
7
+ // Expand backgrounds by prepending 'upper' features to 'lower' features
8
+ export async function expandBackgrounds(features) {
9
+ const expanded = [];
10
+ for (const { base, path, content: feature } of features) {
11
+ let res = feature;
12
+ let r = findUpper(path, features);
13
+ while (r.upper.length > 0 && r.rem !== '/') {
14
+ r = findUpper(r.rem, features);
15
+ for (const s of r.upper) {
16
+ res = s.content + '\n' + res;
17
+ }
18
+ }
19
+ expanded.push(withNameType(base, path, res));
20
+ }
21
+ return Promise.resolve(expanded);
22
+ }
23
+ const upperPath = (path) => {
24
+ const r = path.split('/');
25
+ return '/' + r.slice(1, r.length - 1).join('/');
26
+ };
27
+ export function findUpper(path, features) {
28
+ const rem = upperPath(path);
29
+ const upper = features.filter((f) => {
30
+ const p = upperPath(f.path);
31
+ return p === rem;
32
+ });
33
+ return { rem, upper };
34
+ }
35
+ export async function expandFeatures(features, backgrounds) {
36
+ const expandeds = [];
37
+ for (const feature of features) {
38
+ const expanded = await expandIncluded(feature, backgrounds);
39
+ const ex = { path: feature.path, base: feature.base, name: feature.name, expanded };
40
+ expandeds.push(ex);
41
+ }
42
+ return expandeds;
43
+ }
44
+ async function expandIncluded(feature, backgrounds) {
45
+ let lines = [];
46
+ const split = featureSplit(feature.content);
47
+ for (const l of split) {
48
+ const actionable = getActionable(l);
49
+ if (actionable.match(/^Backgrounds: .*$/)) {
50
+ lines = lines.concat(doIncludes(l, backgrounds));
51
+ }
52
+ else if (actionable.match(/^Scenarios: .*$/)) {
53
+ lines = lines.concat(doIncludes(l, backgrounds));
54
+ }
55
+ else {
56
+ const nl = asFeatureLine(l, feature);
57
+ lines.push(nl);
58
+ }
59
+ }
60
+ return Promise.resolve(lines);
61
+ }
62
+ export function withNameType(base, path, content) {
63
+ const s = path.split('.');
64
+ const name = s[0];
65
+ const type = s.length === 3 ? s[1] : 'feature';
66
+ return { path, base, name, type, content };
67
+ }
68
+ export const asFeatureLine = (line, feature) => ({ line, feature });
69
+ function doIncludes(input, backgrounds) {
70
+ const includes = input
71
+ .replace(/^.*?: /, '')
72
+ .split(',')
73
+ .map((a) => a.trim());
74
+ const ret = [];
75
+ for (const l of includes) {
76
+ const bg = findFeatures(l, backgrounds);
77
+ if (bg.length !== 1) {
78
+ throw Error(`can't find single "${l}.feature" from ${backgrounds.map((b) => b.path).join(', ')}`);
79
+ }
80
+ const origin = bg[0];
81
+ for (const l of featureSplit(origin.content)) {
82
+ ret.push(asFeatureLine(l, origin));
83
+ }
84
+ }
85
+ return ret;
86
+ }
87
+ export function findFeatures(name, backgrounds, type = 'feature') {
88
+ const ftype = findFeaturesOfType(backgrounds, type);
89
+ return ftype.filter((f) => f.path.endsWith(`/${name}.${fileTypeToExt(type)}`));
90
+ }
91
+ export function findFeaturesOfType(backgrounds, type = 'feature') {
92
+ return backgrounds.filter((f) => f.path.endsWith(`.${fileTypeToExt(type)}`));
93
+ }
94
+ const fileTypeToExt = (type) => (type === 'feature' ? 'feature' : `${type}.feature`);
95
+ export const featureSplit = (content) => content
96
+ .trim()
97
+ .split('\n')
98
+ .map((a) => a.trim())
99
+ .filter((a) => a.length > 0);
100
+ //# sourceMappingURL=features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/lib/features.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=features.test.d.ts.map
@@ -0,0 +1,112 @@
1
+ import { describe, it, test, expect } from 'vitest';
2
+ import { DEFAULT_DEST } from './defs.js';
3
+ import * as steps from './features.js';
4
+ import { testWithDefaults } from './test/lib.js';
5
+ import { asFeatures } from './resolver-features.js';
6
+ import Vars from '../steps/vars.js';
7
+ const varsStepper = [Vars];
8
+ describe('expandBackgrounds', () => {
9
+ test('simple', async () => {
10
+ const features = asFeatures([{ path: '/f1', content: 'f1_step' }]);
11
+ const res = await steps.expandBackgrounds(features);
12
+ expect(res).toEqual(features);
13
+ });
14
+ test('hierarchical', async () => {
15
+ const features = asFeatures([
16
+ { path: '/f1', content: 'f1_step' },
17
+ { path: '/f1/l1f1', content: 'l1f1_step' },
18
+ ]);
19
+ const expected = asFeatures([
20
+ { path: '/f1', content: 'f1_step' },
21
+ { path: '/f1/l1f1', content: 'f1_step\nl1f1_step' },
22
+ ]);
23
+ const res = await steps.expandBackgrounds(features);
24
+ expect(res).toEqual(expected);
25
+ });
26
+ test('multiple hierarchical', async () => {
27
+ const features = asFeatures([
28
+ { path: '/f1', content: 'f1_step' },
29
+ { path: '/l1/l1f1', content: 'l1_step' },
30
+ { path: '/l2/l2f1', content: 'l2_step' },
31
+ ]);
32
+ const expected = asFeatures([
33
+ { path: '/f1', content: 'f1_step' },
34
+ { path: '/l1/l1f1', content: 'f1_step\nl1_step' },
35
+ { path: '/l2/l2f1', content: 'f1_step\nl2_step' },
36
+ ]);
37
+ const res = await steps.expandBackgrounds(features);
38
+ expect(res).toEqual(expected);
39
+ });
40
+ });
41
+ describe('feature finding', () => {
42
+ const features = asFeatures([
43
+ { path: '/l0.feature', content: 'l0_feature' },
44
+ { path: '/l0/l1.feature', content: 'l1_feature' },
45
+ ]);
46
+ test('does not find partial feature', () => {
47
+ const res = steps.findFeatures('0', features);
48
+ expect(res).toEqual([]);
49
+ });
50
+ test('finds feature', () => {
51
+ const res = steps.findFeatures('l0', features);
52
+ expect(res).toEqual(asFeatures([{ path: '/l0.feature', content: 'l0_feature' }]));
53
+ });
54
+ test('finds l1 feature', () => {
55
+ const res = steps.findFeatures('l1', features);
56
+ expect(res).toEqual(asFeatures([{ path: '/l0/l1.feature', content: 'l1_feature' }]));
57
+ });
58
+ test('finds multiple', () => {
59
+ const res = steps.findFeatures('l1', asFeatures([...features, { path: '/l1/l1.feature', content: 'l1_l1_feature' }]));
60
+ expect(res).toEqual(asFeatures([
61
+ { path: '/l0/l1.feature', content: 'l1_feature' },
62
+ { path: '/l1/l1.feature', content: 'l1_l1_feature' },
63
+ ]));
64
+ });
65
+ test('finds fileType', () => {
66
+ const res = steps.findFeatures('l1', asFeatures([...features, { path: '/l1/l1.mytype.feature', content: 'l1_l1_mytype.feature' }]), 'mytype');
67
+ expect(res).toEqual(asFeatures([{ path: '/l1/l1.mytype.feature', content: 'l1_l1_mytype.feature' }]));
68
+ });
69
+ });
70
+ describe('expand features', () => {
71
+ test('applies backgrounds', async () => {
72
+ const features = asFeatures([{ path: '/f1', content: 'Backgrounds: b1\nExtant' }]);
73
+ const backgrounds = asFeatures([{ path: '/b1.feature', content: 'result' }]);
74
+ const res = await steps.expandFeatures(features, backgrounds);
75
+ expect(res[0].expanded.map((e) => e.line)).toEqual(['result', 'Extant']);
76
+ expect(res[0].expanded.map((e) => e.feature.name)).toEqual(['/b1', '/f1']);
77
+ });
78
+ test('applies backgrounds hierarchical', async () => {
79
+ const features = asFeatures([{ path: '/l1/f1', content: 'Backgrounds: b2' }]);
80
+ const backgrounds = asFeatures([
81
+ { path: '/l1/b1.feature', content: 'non-result' },
82
+ { path: '/l2/b2.feature', content: 'result' },
83
+ ]);
84
+ const res = await steps.expandFeatures(features, backgrounds);
85
+ expect(res[0].expanded.length).toBe(1);
86
+ expect(res[0].expanded[0].line).toEqual('result');
87
+ expect(res[0].expanded[0].feature.name).toEqual('/l2/b2');
88
+ });
89
+ });
90
+ describe('env vars', () => {
91
+ it('env or var or literal finds env', async () => {
92
+ const feature = { path: '/features/test.feature', content: `set "what" to "var"\nset x to {what}` };
93
+ const envVariables = { what: 'env' };
94
+ const { world } = await testWithDefaults([feature], varsStepper, {
95
+ options: { DEST: DEFAULT_DEST, envVariables },
96
+ moduleOptions: {},
97
+ });
98
+ expect(world.shared.get('what')).toBe('var');
99
+ expect(world.shared.get('x')).toBe('env');
100
+ });
101
+ it('env or var or literal finds var', async () => {
102
+ const feature = { path: '/features/test.feature', content: `set "what" to "var"\nset x to what` };
103
+ const { world } = await testWithDefaults([feature], varsStepper);
104
+ expect(world.shared.get('x')).toBe('var');
105
+ });
106
+ it('env or var or literal finds literal', async () => {
107
+ const feature = { path: '/features/test.feature', content: `set x to what` };
108
+ const { world } = await testWithDefaults([feature], varsStepper);
109
+ expect(world.shared.get('x')).toBe('what');
110
+ });
111
+ });
112
+ //# sourceMappingURL=features.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.test.js","sourceRoot":"","sources":["../../src/lib/features.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAEpC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC;AAE3B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAEnE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC;YAC3B,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE;SAC1C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,UAAU,CAAC;YAC3B,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE;SACnD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,UAAU,CAAC;YAC3B,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;YACxC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,UAAU,CAAC;YAC3B,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE;YACjD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE;SACjD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEpD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,MAAM,QAAQ,GAAG,UAAU,CAAC;QAC3B,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE;QAC9C,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE;KACjD,CAAC,CAAC;IACH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QACtH,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAClB,UAAU,CAAC;YACV,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE;SACpD,CAAC,CACF,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAC7B,IAAI,EACJ,UAAU,CAAC,CAAC,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,EAC7F,QAAQ,CACR,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,UAAU,CAAC;YAC9B,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC7C,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;QACpG,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE;YAChE,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;YAC7C,aAAa,EAAE,EAAE;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;QAClG,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAC7E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAE,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}