@arke-institute/rhiza 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +106 -0
  2. package/dist/__tests__/fixtures/index.d.ts +9 -0
  3. package/dist/__tests__/fixtures/index.d.ts.map +1 -0
  4. package/dist/__tests__/fixtures/index.js +12 -0
  5. package/dist/__tests__/fixtures/index.js.map +1 -0
  6. package/dist/__tests__/fixtures/kladoi/index.d.ts +165 -0
  7. package/dist/__tests__/fixtures/kladoi/index.d.ts.map +1 -0
  8. package/dist/__tests__/fixtures/kladoi/index.js +270 -0
  9. package/dist/__tests__/fixtures/kladoi/index.js.map +1 -0
  10. package/dist/__tests__/fixtures/logs/index.d.ts +19 -0
  11. package/dist/__tests__/fixtures/logs/index.d.ts.map +1 -0
  12. package/dist/__tests__/fixtures/logs/index.js +545 -0
  13. package/dist/__tests__/fixtures/logs/index.js.map +1 -0
  14. package/dist/__tests__/fixtures/mock-client.d.ts +127 -0
  15. package/dist/__tests__/fixtures/mock-client.d.ts.map +1 -0
  16. package/dist/__tests__/fixtures/mock-client.js +415 -0
  17. package/dist/__tests__/fixtures/mock-client.js.map +1 -0
  18. package/dist/__tests__/fixtures/rhizai/index.d.ts +54 -0
  19. package/dist/__tests__/fixtures/rhizai/index.d.ts.map +1 -0
  20. package/dist/__tests__/fixtures/rhizai/index.js +283 -0
  21. package/dist/__tests__/fixtures/rhizai/index.js.map +1 -0
  22. package/dist/__tests__/unit/fixtures.test.d.ts +10 -0
  23. package/dist/__tests__/unit/fixtures.test.d.ts.map +1 -0
  24. package/dist/__tests__/unit/fixtures.test.js +275 -0
  25. package/dist/__tests__/unit/fixtures.test.js.map +1 -0
  26. package/dist/__tests__/unit/handoff/gather.test.d.ts +8 -0
  27. package/dist/__tests__/unit/handoff/gather.test.d.ts.map +1 -0
  28. package/dist/__tests__/unit/handoff/gather.test.js +176 -0
  29. package/dist/__tests__/unit/handoff/gather.test.js.map +1 -0
  30. package/dist/__tests__/unit/handoff/interpret.test.d.ts +9 -0
  31. package/dist/__tests__/unit/handoff/interpret.test.d.ts.map +1 -0
  32. package/dist/__tests__/unit/handoff/interpret.test.js +370 -0
  33. package/dist/__tests__/unit/handoff/interpret.test.js.map +1 -0
  34. package/dist/__tests__/unit/handoff/route.test.d.ts +8 -0
  35. package/dist/__tests__/unit/handoff/route.test.d.ts.map +1 -0
  36. package/dist/__tests__/unit/handoff/route.test.js +271 -0
  37. package/dist/__tests__/unit/handoff/route.test.js.map +1 -0
  38. package/dist/__tests__/unit/handoff/scatter.test.d.ts +7 -0
  39. package/dist/__tests__/unit/handoff/scatter.test.d.ts.map +1 -0
  40. package/dist/__tests__/unit/handoff/scatter.test.js +54 -0
  41. package/dist/__tests__/unit/handoff/scatter.test.js.map +1 -0
  42. package/dist/__tests__/unit/resume.test.d.ts +8 -0
  43. package/dist/__tests__/unit/resume.test.d.ts.map +1 -0
  44. package/dist/__tests__/unit/resume.test.js +134 -0
  45. package/dist/__tests__/unit/resume.test.js.map +1 -0
  46. package/dist/__tests__/unit/status.test.d.ts +8 -0
  47. package/dist/__tests__/unit/status.test.d.ts.map +1 -0
  48. package/dist/__tests__/unit/status.test.js +164 -0
  49. package/dist/__tests__/unit/status.test.js.map +1 -0
  50. package/dist/__tests__/unit/target.test.d.ts +8 -0
  51. package/dist/__tests__/unit/target.test.d.ts.map +1 -0
  52. package/dist/__tests__/unit/target.test.js +116 -0
  53. package/dist/__tests__/unit/target.test.js.map +1 -0
  54. package/dist/__tests__/unit/traverse.test.d.ts +8 -0
  55. package/dist/__tests__/unit/traverse.test.d.ts.map +1 -0
  56. package/dist/__tests__/unit/traverse.test.js +143 -0
  57. package/dist/__tests__/unit/traverse.test.js.map +1 -0
  58. package/dist/__tests__/unit/validation/klados.test.d.ts +16 -0
  59. package/dist/__tests__/unit/validation/klados.test.d.ts.map +1 -0
  60. package/dist/__tests__/unit/validation/klados.test.js +275 -0
  61. package/dist/__tests__/unit/validation/klados.test.js.map +1 -0
  62. package/dist/__tests__/unit/validation/rhiza.test.d.ts +16 -0
  63. package/dist/__tests__/unit/validation/rhiza.test.d.ts.map +1 -0
  64. package/dist/__tests__/unit/validation/rhiza.test.js +612 -0
  65. package/dist/__tests__/unit/validation/rhiza.test.js.map +1 -0
  66. package/dist/__tests__/unit/validation/runtime.test.d.ts +11 -0
  67. package/dist/__tests__/unit/validation/runtime.test.d.ts.map +1 -0
  68. package/dist/__tests__/unit/validation/runtime.test.js +553 -0
  69. package/dist/__tests__/unit/validation/runtime.test.js.map +1 -0
  70. package/dist/__tests__/unit/worker/errors.test.d.ts +2 -0
  71. package/dist/__tests__/unit/worker/errors.test.d.ts.map +1 -0
  72. package/dist/__tests__/unit/worker/errors.test.js +226 -0
  73. package/dist/__tests__/unit/worker/errors.test.js.map +1 -0
  74. package/dist/__tests__/unit/worker/job.test.d.ts +2 -0
  75. package/dist/__tests__/unit/worker/job.test.d.ts.map +1 -0
  76. package/dist/__tests__/unit/worker/job.test.js +233 -0
  77. package/dist/__tests__/unit/worker/job.test.js.map +1 -0
  78. package/dist/client/index.d.ts +10 -0
  79. package/dist/client/index.d.ts.map +1 -0
  80. package/dist/client/index.js +8 -0
  81. package/dist/client/index.js.map +1 -0
  82. package/dist/client/interface.d.ts +142 -0
  83. package/dist/client/interface.d.ts.map +1 -0
  84. package/dist/client/interface.js +8 -0
  85. package/dist/client/interface.js.map +1 -0
  86. package/dist/client/mock.d.ts +95 -0
  87. package/dist/client/mock.d.ts.map +1 -0
  88. package/dist/client/mock.js +795 -0
  89. package/dist/client/mock.js.map +1 -0
  90. package/dist/client/types.d.ts +344 -0
  91. package/dist/client/types.d.ts.map +1 -0
  92. package/dist/client/types.js +8 -0
  93. package/dist/client/types.js.map +1 -0
  94. package/dist/handoff/gather-api.d.ts +60 -0
  95. package/dist/handoff/gather-api.d.ts.map +1 -0
  96. package/dist/handoff/gather-api.js +130 -0
  97. package/dist/handoff/gather-api.js.map +1 -0
  98. package/dist/handoff/gather.d.ts +59 -0
  99. package/dist/handoff/gather.d.ts.map +1 -0
  100. package/dist/handoff/gather.js +134 -0
  101. package/dist/handoff/gather.js.map +1 -0
  102. package/dist/handoff/index.d.ts +19 -0
  103. package/dist/handoff/index.d.ts.map +1 -0
  104. package/dist/handoff/index.js +25 -0
  105. package/dist/handoff/index.js.map +1 -0
  106. package/dist/handoff/interpret.d.ts +79 -0
  107. package/dist/handoff/interpret.d.ts.map +1 -0
  108. package/dist/handoff/interpret.js +197 -0
  109. package/dist/handoff/interpret.js.map +1 -0
  110. package/dist/handoff/invoke.d.ts +82 -0
  111. package/dist/handoff/invoke.d.ts.map +1 -0
  112. package/dist/handoff/invoke.js +196 -0
  113. package/dist/handoff/invoke.js.map +1 -0
  114. package/dist/handoff/route.d.ts +25 -0
  115. package/dist/handoff/route.d.ts.map +1 -0
  116. package/dist/handoff/route.js +65 -0
  117. package/dist/handoff/route.js.map +1 -0
  118. package/dist/handoff/scatter-api.d.ts +62 -0
  119. package/dist/handoff/scatter-api.d.ts.map +1 -0
  120. package/dist/handoff/scatter-api.js +81 -0
  121. package/dist/handoff/scatter-api.js.map +1 -0
  122. package/dist/handoff/scatter.d.ts +19 -0
  123. package/dist/handoff/scatter.d.ts.map +1 -0
  124. package/dist/handoff/scatter.js +27 -0
  125. package/dist/handoff/scatter.js.map +1 -0
  126. package/dist/handoff/target.d.ts +16 -0
  127. package/dist/handoff/target.d.ts.map +1 -0
  128. package/dist/handoff/target.js +51 -0
  129. package/dist/handoff/target.js.map +1 -0
  130. package/dist/index.d.ts +42 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +52 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/logging/index.d.ts +4 -0
  135. package/dist/logging/index.d.ts.map +1 -0
  136. package/dist/logging/index.js +3 -0
  137. package/dist/logging/index.js.map +1 -0
  138. package/dist/logging/logger.d.ts +52 -0
  139. package/dist/logging/logger.d.ts.map +1 -0
  140. package/dist/logging/logger.js +70 -0
  141. package/dist/logging/logger.js.map +1 -0
  142. package/dist/logging/writer.d.ts +63 -0
  143. package/dist/logging/writer.d.ts.map +1 -0
  144. package/dist/logging/writer.js +160 -0
  145. package/dist/logging/writer.js.map +1 -0
  146. package/dist/resume/index.d.ts +77 -0
  147. package/dist/resume/index.d.ts.map +1 -0
  148. package/dist/resume/index.js +110 -0
  149. package/dist/resume/index.js.map +1 -0
  150. package/dist/status/index.d.ts +54 -0
  151. package/dist/status/index.d.ts.map +1 -0
  152. package/dist/status/index.js +107 -0
  153. package/dist/status/index.js.map +1 -0
  154. package/dist/traverse/index.d.ts +53 -0
  155. package/dist/traverse/index.d.ts.map +1 -0
  156. package/dist/traverse/index.js +142 -0
  157. package/dist/traverse/index.js.map +1 -0
  158. package/dist/types/batch.d.ts +53 -0
  159. package/dist/types/batch.d.ts.map +1 -0
  160. package/dist/types/batch.js +2 -0
  161. package/dist/types/batch.js.map +1 -0
  162. package/dist/types/index.d.ts +10 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +2 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/types/klados.d.ts +63 -0
  167. package/dist/types/klados.d.ts.map +1 -0
  168. package/dist/types/klados.js +2 -0
  169. package/dist/types/klados.js.map +1 -0
  170. package/dist/types/log.d.ts +107 -0
  171. package/dist/types/log.d.ts.map +1 -0
  172. package/dist/types/log.js +2 -0
  173. package/dist/types/log.js.map +1 -0
  174. package/dist/types/refs.d.ts +58 -0
  175. package/dist/types/refs.d.ts.map +1 -0
  176. package/dist/types/refs.js +43 -0
  177. package/dist/types/refs.js.map +1 -0
  178. package/dist/types/request.d.ts +69 -0
  179. package/dist/types/request.d.ts.map +1 -0
  180. package/dist/types/request.js +2 -0
  181. package/dist/types/request.js.map +1 -0
  182. package/dist/types/response.d.ts +31 -0
  183. package/dist/types/response.d.ts.map +1 -0
  184. package/dist/types/response.js +2 -0
  185. package/dist/types/response.js.map +1 -0
  186. package/dist/types/rhiza.d.ts +100 -0
  187. package/dist/types/rhiza.d.ts.map +1 -0
  188. package/dist/types/rhiza.js +2 -0
  189. package/dist/types/rhiza.js.map +1 -0
  190. package/dist/types/status.d.ts +84 -0
  191. package/dist/types/status.d.ts.map +1 -0
  192. package/dist/types/status.js +2 -0
  193. package/dist/types/status.js.map +1 -0
  194. package/dist/utils/id.d.ts +15 -0
  195. package/dist/utils/id.d.ts.map +1 -0
  196. package/dist/utils/id.js +25 -0
  197. package/dist/utils/id.js.map +1 -0
  198. package/dist/utils/index.d.ts +2 -0
  199. package/dist/utils/index.d.ts.map +1 -0
  200. package/dist/utils/index.js +2 -0
  201. package/dist/utils/index.js.map +1 -0
  202. package/dist/validation/index.d.ts +9 -0
  203. package/dist/validation/index.d.ts.map +1 -0
  204. package/dist/validation/index.js +9 -0
  205. package/dist/validation/index.js.map +1 -0
  206. package/dist/validation/validate-klados.d.ts +38 -0
  207. package/dist/validation/validate-klados.d.ts.map +1 -0
  208. package/dist/validation/validate-klados.js +139 -0
  209. package/dist/validation/validate-klados.js.map +1 -0
  210. package/dist/validation/validate-rhiza.d.ts +29 -0
  211. package/dist/validation/validate-rhiza.d.ts.map +1 -0
  212. package/dist/validation/validate-rhiza.js +382 -0
  213. package/dist/validation/validate-rhiza.js.map +1 -0
  214. package/dist/validation/validate-runtime.d.ts +28 -0
  215. package/dist/validation/validate-runtime.d.ts.map +1 -0
  216. package/dist/validation/validate-runtime.js +212 -0
  217. package/dist/validation/validate-runtime.js.map +1 -0
  218. package/dist/worker/errors.d.ts +77 -0
  219. package/dist/worker/errors.d.ts.map +1 -0
  220. package/dist/worker/errors.js +143 -0
  221. package/dist/worker/errors.js.map +1 -0
  222. package/dist/worker/index.d.ts +8 -0
  223. package/dist/worker/index.d.ts.map +1 -0
  224. package/dist/worker/index.js +8 -0
  225. package/dist/worker/index.js.map +1 -0
  226. package/dist/worker/job.d.ts +150 -0
  227. package/dist/worker/job.d.ts.map +1 -0
  228. package/dist/worker/job.js +280 -0
  229. package/dist/worker/job.js.map +1 -0
  230. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/unit/validation/runtime.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,553 @@
1
+ /**
2
+ * Runtime Validation Tests
3
+ *
4
+ * Tests for validateRhizaRuntime() which validates a rhiza at invoke time.
5
+ * This requires loading all targets from the API and checking:
6
+ * - All targets exist (as klados or rhiza) and are active
7
+ * - Cardinality compatibility between producers and consumers
8
+ * - Type compatibility (warnings only)
9
+ */
10
+ import { describe, it, expect, beforeEach } from 'vitest';
11
+ import { validateRhizaRuntime } from '../../../validation';
12
+ import { createMockClient, scatterGatherKladoi, linearKladoi, scatterGatherRhizaProperties, linearRhizaProperties, producerKlados, workerKlados, aggregatorKlados, passthroughKlados, inactiveKlados, } from '../../fixtures';
13
+ describe('validateRhizaRuntime', () => {
14
+ let client;
15
+ beforeEach(() => {
16
+ client = createMockClient({
17
+ kladoi: {
18
+ ...scatterGatherKladoi,
19
+ ...linearKladoi,
20
+ },
21
+ });
22
+ });
23
+ // =========================================================================
24
+ // Target Resolution
25
+ // =========================================================================
26
+ describe('target resolution', () => {
27
+ it('passes when all kladoi exist and are active', async () => {
28
+ const result = await validateRhizaRuntime(client, linearRhizaProperties);
29
+ expect(result.valid).toBe(true);
30
+ expect(result.errors).toHaveLength(0);
31
+ });
32
+ it('returns loaded kladoi map on success', async () => {
33
+ const result = await validateRhizaRuntime(client, linearRhizaProperties);
34
+ expect(result.valid).toBe(true);
35
+ expect(result.kladoi.size).toBe(3); // a, b, c
36
+ expect(result.kladoi.has('II01klados_a')).toBe(true);
37
+ expect(result.kladoi.has('II01klados_b')).toBe(true);
38
+ expect(result.kladoi.has('II01klados_c')).toBe(true);
39
+ });
40
+ it('fails when klados not found', async () => {
41
+ const clientWithMissing = createMockClient({
42
+ kladoi: {
43
+ 'II01klados_a': passthroughKlados,
44
+ // Missing: II01klados_b, II01klados_c
45
+ },
46
+ });
47
+ const result = await validateRhizaRuntime(clientWithMissing, linearRhizaProperties);
48
+ expect(result.valid).toBe(false);
49
+ expect(result.errors).toContainEqual(expect.objectContaining({
50
+ code: 'TARGET_NOT_FOUND',
51
+ }));
52
+ });
53
+ it('fails when klados is not active (disabled)', async () => {
54
+ const clientWithInactive = createMockClient({
55
+ kladoi: {
56
+ 'II01klados_a': passthroughKlados,
57
+ 'II01klados_b': inactiveKlados, // status: 'disabled'
58
+ 'II01klados_c': passthroughKlados,
59
+ },
60
+ });
61
+ const result = await validateRhizaRuntime(clientWithInactive, linearRhizaProperties);
62
+ expect(result.valid).toBe(false);
63
+ expect(result.errors).toContainEqual(expect.objectContaining({
64
+ code: 'KLADOS_NOT_ACTIVE',
65
+ }));
66
+ });
67
+ it('fails when klados is not active (development)', async () => {
68
+ const clientWithDev = createMockClient({
69
+ kladoi: {
70
+ 'II01klados_a': passthroughKlados,
71
+ 'II01klados_b': {
72
+ properties: { ...passthroughKlados.properties, status: 'development' },
73
+ },
74
+ 'II01klados_c': passthroughKlados,
75
+ },
76
+ });
77
+ const result = await validateRhizaRuntime(clientWithDev, linearRhizaProperties);
78
+ expect(result.valid).toBe(false);
79
+ expect(result.errors).toContainEqual(expect.objectContaining({
80
+ code: 'KLADOS_NOT_ACTIVE',
81
+ }));
82
+ });
83
+ it('reports all missing targets, not just first', async () => {
84
+ const clientWithNone = createMockClient({
85
+ kladoi: {},
86
+ });
87
+ const result = await validateRhizaRuntime(clientWithNone, linearRhizaProperties);
88
+ expect(result.valid).toBe(false);
89
+ const notFoundErrors = result.errors.filter((e) => e.code === 'TARGET_NOT_FOUND');
90
+ expect(notFoundErrors.length).toBe(3); // All three are missing
91
+ });
92
+ });
93
+ // =========================================================================
94
+ // Cardinality Validation - Scatter
95
+ // =========================================================================
96
+ describe('scatter cardinality validation', () => {
97
+ it('passes when scatter klados produces many', async () => {
98
+ const result = await validateRhizaRuntime(client, scatterGatherRhizaProperties);
99
+ expect(result.valid).toBe(true);
100
+ });
101
+ it('fails when scatter klados produces one', async () => {
102
+ // Create a producer that produces 'one' instead of 'many'
103
+ const clientWithBadProducer = createMockClient({
104
+ kladoi: {
105
+ 'II01klados_producer': {
106
+ properties: {
107
+ ...producerKlados.properties,
108
+ produces: { types: ['item/*'], cardinality: 'one' }, // Wrong!
109
+ },
110
+ },
111
+ 'II01klados_worker': workerKlados,
112
+ 'II01klados_aggregator': aggregatorKlados,
113
+ },
114
+ });
115
+ const result = await validateRhizaRuntime(clientWithBadProducer, scatterGatherRhizaProperties);
116
+ expect(result.valid).toBe(false);
117
+ expect(result.errors).toContainEqual(expect.objectContaining({
118
+ code: 'PRODUCER_CARDINALITY_MISMATCH',
119
+ }));
120
+ });
121
+ it('fails when scatter target accepts many (should accept one)', async () => {
122
+ // Create a worker that accepts 'many' instead of 'one'
123
+ const clientWithBadWorker = createMockClient({
124
+ kladoi: {
125
+ 'II01klados_producer': producerKlados,
126
+ 'II01klados_worker': {
127
+ properties: {
128
+ ...workerKlados.properties,
129
+ accepts: { types: ['item/*'], cardinality: 'many' }, // Wrong!
130
+ },
131
+ },
132
+ 'II01klados_aggregator': aggregatorKlados,
133
+ },
134
+ });
135
+ const result = await validateRhizaRuntime(clientWithBadWorker, scatterGatherRhizaProperties);
136
+ expect(result.valid).toBe(false);
137
+ expect(result.errors).toContainEqual(expect.objectContaining({
138
+ code: 'TARGET_CARDINALITY_MISMATCH',
139
+ }));
140
+ });
141
+ });
142
+ // =========================================================================
143
+ // Cardinality Validation - Gather
144
+ // =========================================================================
145
+ describe('gather cardinality validation', () => {
146
+ it('passes when gather target accepts many', async () => {
147
+ const result = await validateRhizaRuntime(client, scatterGatherRhizaProperties);
148
+ expect(result.valid).toBe(true);
149
+ });
150
+ it('fails when gather target accepts one (should accept many)', async () => {
151
+ // Create an aggregator that accepts 'one' instead of 'many'
152
+ const clientWithBadAggregator = createMockClient({
153
+ kladoi: {
154
+ 'II01klados_producer': producerKlados,
155
+ 'II01klados_worker': workerKlados,
156
+ 'II01klados_aggregator': {
157
+ properties: {
158
+ ...aggregatorKlados.properties,
159
+ accepts: { types: ['result/*'], cardinality: 'one' }, // Wrong!
160
+ },
161
+ },
162
+ },
163
+ });
164
+ const result = await validateRhizaRuntime(clientWithBadAggregator, scatterGatherRhizaProperties);
165
+ expect(result.valid).toBe(false);
166
+ expect(result.errors).toContainEqual(expect.objectContaining({
167
+ code: 'TARGET_CARDINALITY_MISMATCH',
168
+ }));
169
+ });
170
+ });
171
+ // =========================================================================
172
+ // Cardinality Validation - Pass
173
+ // =========================================================================
174
+ describe('pass cardinality validation', () => {
175
+ it('passes when cardinalities match (one to one)', async () => {
176
+ const result = await validateRhizaRuntime(client, linearRhizaProperties);
177
+ expect(result.valid).toBe(true);
178
+ // No cardinality mismatch warning
179
+ const cardinalityWarnings = result.warnings.filter((w) => w.code === 'CARDINALITY_MISMATCH');
180
+ expect(cardinalityWarnings).toHaveLength(0);
181
+ });
182
+ it('warns about cardinality mismatch in pass (many to one)', async () => {
183
+ const clientWithMismatch = createMockClient({
184
+ kladoi: {
185
+ 'II01klados_a': {
186
+ properties: {
187
+ ...passthroughKlados.properties,
188
+ produces: { types: ['*'], cardinality: 'many' }, // Produces many
189
+ },
190
+ },
191
+ 'II01klados_b': {
192
+ properties: {
193
+ ...passthroughKlados.properties,
194
+ accepts: { types: ['*'], cardinality: 'one' }, // Accepts one
195
+ },
196
+ },
197
+ 'II01klados_c': passthroughKlados,
198
+ },
199
+ });
200
+ const result = await validateRhizaRuntime(clientWithMismatch, linearRhizaProperties);
201
+ // Valid but with warning
202
+ expect(result.valid).toBe(true);
203
+ expect(result.warnings).toContainEqual(expect.objectContaining({
204
+ code: 'CARDINALITY_MISMATCH',
205
+ }));
206
+ });
207
+ it('warns about cardinality mismatch in pass (one to many)', async () => {
208
+ const clientWithMismatch = createMockClient({
209
+ kladoi: {
210
+ 'II01klados_a': {
211
+ properties: {
212
+ ...passthroughKlados.properties,
213
+ produces: { types: ['*'], cardinality: 'one' }, // Produces one
214
+ },
215
+ },
216
+ 'II01klados_b': {
217
+ properties: {
218
+ ...passthroughKlados.properties,
219
+ accepts: { types: ['*'], cardinality: 'many' }, // Accepts many
220
+ },
221
+ },
222
+ 'II01klados_c': passthroughKlados,
223
+ },
224
+ });
225
+ const result = await validateRhizaRuntime(clientWithMismatch, linearRhizaProperties);
226
+ expect(result.valid).toBe(true);
227
+ expect(result.warnings).toContainEqual(expect.objectContaining({
228
+ code: 'CARDINALITY_MISMATCH',
229
+ }));
230
+ });
231
+ });
232
+ // =========================================================================
233
+ // Type Compatibility
234
+ // =========================================================================
235
+ describe('type compatibility', () => {
236
+ it('passes without warning when types match exactly', async () => {
237
+ const clientWithMatchingTypes = createMockClient({
238
+ kladoi: {
239
+ 'II01klados_a': {
240
+ properties: {
241
+ ...passthroughKlados.properties,
242
+ produces: { types: ['file/pdf'], cardinality: 'one' },
243
+ },
244
+ },
245
+ 'II01klados_b': {
246
+ properties: {
247
+ ...passthroughKlados.properties,
248
+ accepts: { types: ['file/pdf'], cardinality: 'one' },
249
+ },
250
+ },
251
+ 'II01klados_c': passthroughKlados,
252
+ },
253
+ });
254
+ const result = await validateRhizaRuntime(clientWithMatchingTypes, linearRhizaProperties);
255
+ expect(result.valid).toBe(true);
256
+ const typeWarnings = result.warnings.filter((w) => w.code === 'TYPE_MISMATCH');
257
+ expect(typeWarnings).toHaveLength(0);
258
+ });
259
+ it('passes without warning when producer uses wildcard', async () => {
260
+ const clientWithWildcard = createMockClient({
261
+ kladoi: {
262
+ 'II01klados_a': {
263
+ properties: {
264
+ ...passthroughKlados.properties,
265
+ produces: { types: ['*'], cardinality: 'one' },
266
+ },
267
+ },
268
+ 'II01klados_b': {
269
+ properties: {
270
+ ...passthroughKlados.properties,
271
+ accepts: { types: ['file/pdf'], cardinality: 'one' },
272
+ },
273
+ },
274
+ 'II01klados_c': passthroughKlados,
275
+ },
276
+ });
277
+ const result = await validateRhizaRuntime(clientWithWildcard, linearRhizaProperties);
278
+ expect(result.valid).toBe(true);
279
+ const typeWarnings = result.warnings.filter((w) => w.code === 'TYPE_MISMATCH');
280
+ expect(typeWarnings).toHaveLength(0);
281
+ });
282
+ it('passes without warning when consumer uses wildcard', async () => {
283
+ const clientWithWildcard = createMockClient({
284
+ kladoi: {
285
+ 'II01klados_a': {
286
+ properties: {
287
+ ...passthroughKlados.properties,
288
+ produces: { types: ['file/pdf'], cardinality: 'one' },
289
+ },
290
+ },
291
+ 'II01klados_b': {
292
+ properties: {
293
+ ...passthroughKlados.properties,
294
+ accepts: { types: ['*'], cardinality: 'one' },
295
+ },
296
+ },
297
+ 'II01klados_c': passthroughKlados,
298
+ },
299
+ });
300
+ const result = await validateRhizaRuntime(clientWithWildcard, linearRhizaProperties);
301
+ expect(result.valid).toBe(true);
302
+ const typeWarnings = result.warnings.filter((w) => w.code === 'TYPE_MISMATCH');
303
+ expect(typeWarnings).toHaveLength(0);
304
+ });
305
+ it('warns about type mismatch when types do not overlap', async () => {
306
+ const clientWithTypeMismatch = createMockClient({
307
+ kladoi: {
308
+ 'II01klados_a': {
309
+ properties: {
310
+ ...passthroughKlados.properties,
311
+ produces: { types: ['file/pdf'], cardinality: 'one' },
312
+ },
313
+ },
314
+ 'II01klados_b': {
315
+ properties: {
316
+ ...passthroughKlados.properties,
317
+ accepts: { types: ['file/jpeg'], cardinality: 'one' }, // Mismatch!
318
+ },
319
+ },
320
+ 'II01klados_c': passthroughKlados,
321
+ },
322
+ });
323
+ const result = await validateRhizaRuntime(clientWithTypeMismatch, linearRhizaProperties);
324
+ // Valid but with warning
325
+ expect(result.valid).toBe(true);
326
+ expect(result.warnings).toContainEqual(expect.objectContaining({
327
+ code: 'TYPE_MISMATCH',
328
+ }));
329
+ });
330
+ it('passes when glob pattern matches (file/* accepts file/pdf)', async () => {
331
+ const clientWithGlob = createMockClient({
332
+ kladoi: {
333
+ 'II01klados_a': {
334
+ properties: {
335
+ ...passthroughKlados.properties,
336
+ produces: { types: ['file/pdf'], cardinality: 'one' },
337
+ },
338
+ },
339
+ 'II01klados_b': {
340
+ properties: {
341
+ ...passthroughKlados.properties,
342
+ accepts: { types: ['file/*'], cardinality: 'one' }, // Glob pattern
343
+ },
344
+ },
345
+ 'II01klados_c': passthroughKlados,
346
+ },
347
+ });
348
+ const result = await validateRhizaRuntime(clientWithGlob, linearRhizaProperties);
349
+ expect(result.valid).toBe(true);
350
+ const typeWarnings = result.warnings.filter((w) => w.code === 'TYPE_MISMATCH');
351
+ expect(typeWarnings).toHaveLength(0);
352
+ });
353
+ it('passes when multiple producer types overlap with accepted types', async () => {
354
+ const clientWithMultiple = createMockClient({
355
+ kladoi: {
356
+ 'II01klados_a': {
357
+ properties: {
358
+ ...passthroughKlados.properties,
359
+ produces: { types: ['file/pdf', 'file/doc', 'file/txt'], cardinality: 'one' },
360
+ },
361
+ },
362
+ 'II01klados_b': {
363
+ properties: {
364
+ ...passthroughKlados.properties,
365
+ accepts: { types: ['file/doc', 'file/txt'], cardinality: 'one' }, // Partial overlap
366
+ },
367
+ },
368
+ 'II01klados_c': passthroughKlados,
369
+ },
370
+ });
371
+ const result = await validateRhizaRuntime(clientWithMultiple, linearRhizaProperties);
372
+ expect(result.valid).toBe(true);
373
+ const typeWarnings = result.warnings.filter((w) => w.code === 'TYPE_MISMATCH');
374
+ expect(typeWarnings).toHaveLength(0);
375
+ });
376
+ });
377
+ // =========================================================================
378
+ // Rhiza Targets (Sub-workflows)
379
+ // =========================================================================
380
+ describe('rhiza targets', () => {
381
+ it('passes when target is a valid active rhiza', async () => {
382
+ // Flow that references a sub-rhiza
383
+ const flowWithSubRhiza = {
384
+ label: 'Main Workflow',
385
+ version: '1.0.0',
386
+ entry: 'II01klados_a',
387
+ flow: {
388
+ 'II01klados_a': { then: { pass: 'II01rhiza_sub' } },
389
+ 'II01rhiza_sub': { then: { done: true } }, // This is actually a rhiza reference
390
+ },
391
+ status: 'active',
392
+ };
393
+ const clientWithRhiza = createMockClient({
394
+ kladoi: {
395
+ 'II01klados_a': passthroughKlados,
396
+ },
397
+ rhizai: {
398
+ 'II01rhiza_sub': {
399
+ properties: {
400
+ label: 'Sub Workflow',
401
+ version: '1.0.0',
402
+ entry: 'II01klados_sub_a',
403
+ flow: {
404
+ 'II01klados_sub_a': { then: { done: true } },
405
+ },
406
+ status: 'active',
407
+ },
408
+ },
409
+ },
410
+ });
411
+ const result = await validateRhizaRuntime(clientWithRhiza, flowWithSubRhiza);
412
+ expect(result.valid).toBe(true);
413
+ expect(result.rhizai.has('II01rhiza_sub')).toBe(true);
414
+ });
415
+ it('fails when sub-rhiza is not active', async () => {
416
+ const flowWithSubRhiza = {
417
+ label: 'Main Workflow',
418
+ version: '1.0.0',
419
+ entry: 'II01klados_a',
420
+ flow: {
421
+ 'II01klados_a': { then: { pass: 'II01rhiza_sub' } },
422
+ 'II01rhiza_sub': { then: { done: true } },
423
+ },
424
+ status: 'active',
425
+ };
426
+ const clientWithInactiveRhiza = createMockClient({
427
+ kladoi: {
428
+ 'II01klados_a': passthroughKlados,
429
+ },
430
+ rhizai: {
431
+ 'II01rhiza_sub': {
432
+ properties: {
433
+ label: 'Sub Workflow',
434
+ version: '1.0.0',
435
+ entry: 'II01klados_sub_a',
436
+ flow: {
437
+ 'II01klados_sub_a': { then: { done: true } },
438
+ },
439
+ status: 'disabled', // Not active!
440
+ },
441
+ },
442
+ },
443
+ });
444
+ const result = await validateRhizaRuntime(clientWithInactiveRhiza, flowWithSubRhiza);
445
+ expect(result.valid).toBe(false);
446
+ expect(result.errors).toContainEqual(expect.objectContaining({
447
+ code: 'RHIZA_NOT_ACTIVE',
448
+ }));
449
+ });
450
+ });
451
+ // =========================================================================
452
+ // Route Targets
453
+ // =========================================================================
454
+ describe('route targets', () => {
455
+ it('validates all route target kladoi', async () => {
456
+ const flowWithRoutes = {
457
+ label: 'Conditional Workflow',
458
+ version: '1.0.0',
459
+ entry: 'II01klados_router',
460
+ flow: {
461
+ 'II01klados_router': {
462
+ then: {
463
+ pass: 'II01klados_default',
464
+ route: [
465
+ { where: { property: 'type', equals: 'pdf' }, target: 'II01klados_pdf' },
466
+ { where: { property: 'type', equals: 'image' }, target: 'II01klados_image' },
467
+ ],
468
+ },
469
+ },
470
+ 'II01klados_default': { then: { done: true } },
471
+ 'II01klados_pdf': { then: { done: true } },
472
+ 'II01klados_image': { then: { done: true } },
473
+ },
474
+ status: 'active',
475
+ };
476
+ const clientWithAllTargets = createMockClient({
477
+ kladoi: {
478
+ 'II01klados_router': passthroughKlados,
479
+ 'II01klados_default': passthroughKlados,
480
+ 'II01klados_pdf': passthroughKlados,
481
+ 'II01klados_image': passthroughKlados,
482
+ },
483
+ });
484
+ const result = await validateRhizaRuntime(clientWithAllTargets, flowWithRoutes);
485
+ expect(result.valid).toBe(true);
486
+ expect(result.kladoi.size).toBe(4);
487
+ });
488
+ it('fails when route target klados not found', async () => {
489
+ const flowWithRoutes = {
490
+ label: 'Conditional Workflow',
491
+ version: '1.0.0',
492
+ entry: 'II01klados_router',
493
+ flow: {
494
+ 'II01klados_router': {
495
+ then: {
496
+ pass: 'II01klados_default',
497
+ route: [
498
+ { where: { property: 'type', equals: 'pdf' }, target: 'II01klados_missing' },
499
+ ],
500
+ },
501
+ },
502
+ 'II01klados_default': { then: { done: true } },
503
+ 'II01klados_missing': { then: { done: true } },
504
+ },
505
+ status: 'active',
506
+ };
507
+ const clientMissingRouteTarget = createMockClient({
508
+ kladoi: {
509
+ 'II01klados_router': passthroughKlados,
510
+ 'II01klados_default': passthroughKlados,
511
+ // Missing: II01klados_missing
512
+ },
513
+ });
514
+ const result = await validateRhizaRuntime(clientMissingRouteTarget, flowWithRoutes);
515
+ expect(result.valid).toBe(false);
516
+ expect(result.errors).toContainEqual(expect.objectContaining({
517
+ code: 'TARGET_NOT_FOUND',
518
+ }));
519
+ });
520
+ });
521
+ // =========================================================================
522
+ // Edge Cases
523
+ // =========================================================================
524
+ describe('edge cases', () => {
525
+ it('handles single klados workflow', async () => {
526
+ const singleKladosFlow = {
527
+ label: 'Single',
528
+ version: '1.0.0',
529
+ entry: 'II01klados_only',
530
+ flow: {
531
+ 'II01klados_only': { then: { done: true } },
532
+ },
533
+ status: 'active',
534
+ };
535
+ const clientSingle = createMockClient({
536
+ kladoi: {
537
+ 'II01klados_only': passthroughKlados,
538
+ },
539
+ });
540
+ const result = await validateRhizaRuntime(clientSingle, singleKladosFlow);
541
+ expect(result.valid).toBe(true);
542
+ expect(result.kladoi.size).toBe(1);
543
+ });
544
+ it('skips cardinality validation when target not found', async () => {
545
+ // If we can't load the target, we shouldn't try to validate cardinality
546
+ const result = await validateRhizaRuntime(createMockClient({ kladoi: {} }), linearRhizaProperties);
547
+ expect(result.valid).toBe(false);
548
+ // Should have TARGET_NOT_FOUND but not cardinality errors
549
+ expect(result.errors.every((e) => e.code === 'TARGET_NOT_FOUND' || e.code.includes('NOT_ACTIVE'))).toBe(true);
550
+ });
551
+ });
552
+ });
553
+ //# sourceMappingURL=runtime.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.test.js","sourceRoot":"","sources":["../../../../src/__tests__/unit/validation/runtime.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAEhB,mBAAmB,EACnB,YAAY,EACZ,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,MAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,gBAAgB,CAAC;YACxB,MAAM,EAAE;gBACN,GAAG,mBAAmB;gBACtB,GAAG,YAAY;aAChB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAEzE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAEzE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;gBACzC,MAAM,EAAE;oBACN,cAAc,EAAE,iBAAiB;oBACjC,sCAAsC;iBACvC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;YAEpF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;gBAC1C,MAAM,EAAE;oBACN,cAAc,EAAE,iBAAiB;oBACjC,cAAc,EAAE,cAAc,EAAE,qBAAqB;oBACrD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,aAAa,GAAG,gBAAgB,CAAC;gBACrC,MAAM,EAAE;oBACN,cAAc,EAAE,iBAAiB;oBACjC,cAAc,EAAE;wBACd,UAAU,EAAE,EAAE,GAAG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE;qBACvE;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;YAEhF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,cAAc,GAAG,gBAAgB,CAAC;gBACtC,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;YAEjF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;YAClF,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,mCAAmC;IACnC,4EAA4E;IAE5E,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;YAEhF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,0DAA0D;YAC1D,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;gBAC7C,MAAM,EAAE;oBACN,qBAAqB,EAAE;wBACrB,UAAU,EAAE;4BACV,GAAG,cAAc,CAAC,UAAU;4BAC5B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS;yBAC/D;qBACF;oBACD,mBAAmB,EAAE,YAAY;oBACjC,uBAAuB,EAAE,gBAAgB;iBAC1C;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,CAAC;YAE/F,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,+BAA+B;aACtC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,uDAAuD;YACvD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;gBAC3C,MAAM,EAAE;oBACN,qBAAqB,EAAE,cAAc;oBACrC,mBAAmB,EAAE;wBACnB,UAAU,EAAE;4BACV,GAAG,YAAY,CAAC,UAAU;4BAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS;yBAC/D;qBACF;oBACD,uBAAuB,EAAE,gBAAgB;iBAC1C;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;YAE7F,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,6BAA6B;aACpC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,kCAAkC;IAClC,4EAA4E;IAE5E,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;YAEhF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,4DAA4D;YAC5D,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;gBAC/C,MAAM,EAAE;oBACN,qBAAqB,EAAE,cAAc;oBACrC,mBAAmB,EAAE,YAAY;oBACjC,uBAAuB,EAAE;wBACvB,UAAU,EAAE;4BACV,GAAG,gBAAgB,CAAC,UAAU;4BAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS;yBAChE;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,EAAE,4BAA4B,CAAC,CAAC;YAEjG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,6BAA6B;aACpC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,gCAAgC;IAChC,4EAA4E;IAE5E,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAEzE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,kCAAkC;YAClC,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;YAC7F,MAAM,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;gBAC1C,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,gBAAgB;yBAClE;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,cAAc;yBAC9D;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;YAErF,yBAAyB;YACzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CACpC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;gBAC1C,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,eAAe;yBAChE;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,eAAe;yBAChE;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CACpC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,qBAAqB;IACrB,4EAA4E;IAE5E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;gBAC/C,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBACtD;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBACrD;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC;YAE1F,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;YAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;gBAC1C,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBAC/C;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBACrD;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;YAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;gBAC1C,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBACtD;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBAC9C;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;YAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;gBAC9C,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBACtD;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,YAAY;yBACpE;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;YAEzF,yBAAyB;YACzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CACpC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,eAAe;aACtB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,cAAc,GAAG,gBAAgB,CAAC;gBACtC,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBACtD;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,eAAe;yBACpE;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;YAEjF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;YAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;gBAC1C,MAAM,EAAE;oBACN,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;yBAC9E;qBACF;oBACD,cAAc,EAAE;wBACd,UAAU,EAAE;4BACV,GAAG,iBAAiB,CAAC,UAAU;4BAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,kBAAkB;yBACrF;qBACF;oBACD,cAAc,EAAE,iBAAiB;iBAClC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;YAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,gCAAgC;IAChC,4EAA4E;IAE5E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,mCAAmC;YACnC,MAAM,gBAAgB,GAAG;gBACvB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE;oBACJ,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;oBACnD,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE,EAAE,qCAAqC;iBAC1F;gBACD,MAAM,EAAE,QAAiB;aAC1B,CAAC;YAEF,MAAM,eAAe,GAAG,gBAAgB,CAAC;gBACvC,MAAM,EAAE;oBACN,cAAc,EAAE,iBAAiB;iBAClC;gBACD,MAAM,EAAE;oBACN,eAAe,EAAE;wBACf,UAAU,EAAE;4BACV,KAAK,EAAE,cAAc;4BACrB,OAAO,EAAE,OAAO;4BAChB,KAAK,EAAE,kBAAkB;4BACzB,IAAI,EAAE;gCACJ,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;6BACtD;4BACD,MAAM,EAAE,QAAQ;yBACjB;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;YAE7E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,gBAAgB,GAAG;gBACvB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE;oBACJ,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;oBACnD,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;iBACnD;gBACD,MAAM,EAAE,QAAiB;aAC1B,CAAC;YAEF,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;gBAC/C,MAAM,EAAE;oBACN,cAAc,EAAE,iBAAiB;iBAClC;gBACD,MAAM,EAAE;oBACN,eAAe,EAAE;wBACf,UAAU,EAAE;4BACV,KAAK,EAAE,cAAc;4BACrB,OAAO,EAAE,OAAO;4BAChB,KAAK,EAAE,kBAAkB;4BACzB,IAAI,EAAE;gCACJ,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;6BACtD;4BACD,MAAM,EAAE,UAAU,EAAE,cAAc;yBACnC;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,gBAAgB;IAChB,4EAA4E;IAE5E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,cAAc,GAAG;gBACrB,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,mBAAmB;gBAC1B,IAAI,EAAE;oBACJ,mBAAmB,EAAE;wBACnB,IAAI,EAAE;4BACJ,IAAI,EAAE,oBAAoB;4BAC1B,KAAK,EAAE;gCACL,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;gCACxE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;6BAC7E;yBACF;qBACF;oBACD,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;oBACvD,gBAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;oBACnD,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;iBACtD;gBACD,MAAM,EAAE,QAAiB;aAC1B,CAAC;YAEF,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;gBAC5C,MAAM,EAAE;oBACN,mBAAmB,EAAE,iBAAiB;oBACtC,oBAAoB,EAAE,iBAAiB;oBACvC,gBAAgB,EAAE,iBAAiB;oBACnC,kBAAkB,EAAE,iBAAiB;iBACtC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;YAEhF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,cAAc,GAAG;gBACrB,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,mBAAmB;gBAC1B,IAAI,EAAE;oBACJ,mBAAmB,EAAE;wBACnB,IAAI,EAAE;4BACJ,IAAI,EAAE,oBAAoB;4BAC1B,KAAK,EAAE;gCACL,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE;6BAC7E;yBACF;qBACF;oBACD,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;oBACvD,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;iBACxD;gBACD,MAAM,EAAE,QAAiB;aAC1B,CAAC;YAEF,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;gBAChD,MAAM,EAAE;oBACN,mBAAmB,EAAE,iBAAiB;oBACtC,oBAAoB,EAAE,iBAAiB;oBACvC,8BAA8B;iBAC/B;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;YAEpF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,kBAAkB;aACzB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,gBAAgB,GAAG;gBACvB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE;oBACJ,iBAAiB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,EAAE;iBACrD;gBACD,MAAM,EAAE,QAAiB;aAC1B,CAAC;YAEF,MAAM,YAAY,GAAG,gBAAgB,CAAC;gBACpC,MAAM,EAAE;oBACN,iBAAiB,EAAE,iBAAiB;iBACrC;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAE1E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,wEAAwE;YACxE,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAChC,qBAAqB,CACtB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,0DAA0D;YAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC/D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/unit/worker/errors.test.ts"],"names":[],"mappings":""}