@stacknext/regression 0.0.0-stage → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js ADDED
@@ -0,0 +1,328 @@
1
+ import { z } from 'zod';
2
+ import { CORRELATION_STATUSES, STACKNEXT_BASELINE_FORMAT, STACKNEXT_COMPARISON_FORMAT, STACKNEXT_REGRESSION_FORMAT_VERSION, STACKNEXT_RUN_FORMAT, REGRESSION_METRIC_KINDS, REGRESSION_SEVERITIES, REGRESSION_STATUSES, RUN_STATUSES, SAMPLE_EXPECTED_STATUSES, SAMPLE_STATUSES, SCENARIO_ID_PATTERN, SAMPLE_ID_PATTERN, } from './constants.js';
3
+ const runIdSchema = z.string().regex(/^run-[0-9a-f]{16}$/, 'invalid run id');
4
+ const baselineIdSchema = z.string().regex(/^base-[0-9a-f]{16}$/, 'invalid baseline id');
5
+ const comparisonIdSchema = z.string().regex(/^cmp-[0-9a-f]{16}$/, 'invalid comparison id');
6
+ const scenarioIdSchema = z.string().regex(SCENARIO_ID_PATTERN, 'invalid scenario id');
7
+ const sampleIdSchema = z.string().regex(SAMPLE_ID_PATTERN, 'invalid sample id');
8
+ const shortText = (max) => z.string().min(1).max(max);
9
+ const boundedText = (max) => z.string().max(max);
10
+ export const databaseNameSchema = z.string().min(1).max(80);
11
+ export const instrumentationSnapshotSchema = z
12
+ .object({
13
+ verbose: z.boolean(),
14
+ verboseSource: z.string().min(1).max(40),
15
+ captureFetch: z.boolean(),
16
+ captureErrors: z.boolean(),
17
+ })
18
+ .strict();
19
+ export const environmentSnapshotSchema = z
20
+ .object({
21
+ nodeVersion: z.string().min(1).max(100),
22
+ nextVersion: z.string().max(100).nullable(),
23
+ platform: z.string().min(1).max(40),
24
+ arch: z.string().min(1).max(40),
25
+ runtime: z.literal('nodejs'),
26
+ databases: z.array(databaseNameSchema).max(10),
27
+ instrumentation: instrumentationSnapshotSchema,
28
+ sdkVersion: z.string().min(1).max(100),
29
+ playwrightVersion: z.string().max(100).optional(),
30
+ })
31
+ .strict();
32
+ export const scenarioIdentitySchema = z
33
+ .object({
34
+ id: scenarioIdSchema,
35
+ source: z.enum(['annotation', 'test-id', 'title']),
36
+ title: shortText(500),
37
+ file: shortText(1_000),
38
+ project: shortText(200),
39
+ tags: z.array(z.string().min(1).max(100)).max(20),
40
+ })
41
+ .strict();
42
+ export const capturedSpanSchema = z
43
+ .object({
44
+ key: shortText(2_000),
45
+ name: shortText(300),
46
+ kind: z.enum(['internal', 'server', 'client', 'producer', 'consumer']),
47
+ category: z.enum(['database', 'http', 'custom', 'framework', 'other']),
48
+ durationMs: z.number().finite().nonnegative(),
49
+ status: z.enum(['unset', 'ok', 'error']),
50
+ nextSpanType: z.string().max(200).optional(),
51
+ })
52
+ .strict();
53
+ export const capturedQuerySchema = z
54
+ .object({
55
+ key: shortText(2_000),
56
+ shape: boundedText(500),
57
+ durationMs: z.number().finite().nonnegative().nullable(),
58
+ source: z.enum(['drizzle', 'prisma', 'manual']),
59
+ success: z.boolean(),
60
+ })
61
+ .strict();
62
+ export const capturedErrorSchema = z
63
+ .object({
64
+ key: shortText(2_000),
65
+ name: shortText(200),
66
+ message: boundedText(600),
67
+ route: z.string().max(500).nullable(),
68
+ })
69
+ .strict();
70
+ export const capturedFindingSchema = z
71
+ .object({
72
+ key: shortText(2_000),
73
+ ruleId: z.enum([
74
+ 'n-plus-one-queries',
75
+ 'slow-span',
76
+ 'repeated-external-http',
77
+ 'error-fingerprint',
78
+ ]),
79
+ category: z.enum(['database', 'http', 'performance', 'errors', 'runtime']),
80
+ severity: z.enum(['info', 'warning', 'error']),
81
+ status: z.enum(['observed', 'possible', 'insufficient-evidence']),
82
+ })
83
+ .strict();
84
+ export const capturedTraceSchema = z
85
+ .object({
86
+ traceId: z.string().regex(/^[0-9a-f]{32}$/i, 'invalid trace id'),
87
+ injectedSpanId: z.string().regex(/^[0-9a-f]{16}$/i, 'invalid span id'),
88
+ key: shortText(2_000),
89
+ method: z.string().max(32).nullable(),
90
+ route: z.string().max(500).nullable(),
91
+ rootName: shortText(500),
92
+ statusCode: z.number().int().min(100).max(999).nullable(),
93
+ durationMs: z.number().finite().nonnegative(),
94
+ spanCount: z.number().int().nonnegative(),
95
+ errorCount: z.number().int().nonnegative(),
96
+ databaseQueryCount: z.number().int().nonnegative(),
97
+ fetchCount: z.number().int().nonnegative(),
98
+ spans: z.array(capturedSpanSchema).max(500),
99
+ queries: z.array(capturedQuerySchema).max(200),
100
+ errors: z.array(capturedErrorSchema).max(100),
101
+ })
102
+ .strict();
103
+ export const correlationSchema = z
104
+ .object({
105
+ status: z.enum(CORRELATION_STATUSES),
106
+ reasons: z.array(z.string().max(500)).max(20),
107
+ traces: z.array(capturedTraceSchema).max(20),
108
+ })
109
+ .strict();
110
+ export const capturedSampleSchema = z
111
+ .object({
112
+ id: sampleIdSchema,
113
+ status: z.enum(SAMPLE_STATUSES),
114
+ expectedStatus: z.enum(SAMPLE_EXPECTED_STATUSES),
115
+ retry: z.number().int().nonnegative().max(20),
116
+ repeatEachIndex: z.number().int().nonnegative().max(1_000),
117
+ durationMs: z.number().finite().nonnegative(),
118
+ capturedAt: z.number().int().nonnegative(),
119
+ correlation: correlationSchema,
120
+ findings: z.array(capturedFindingSchema).max(100),
121
+ })
122
+ .strict();
123
+ export const scenarioSchema = z
124
+ .object({
125
+ identity: scenarioIdentitySchema,
126
+ samples: z.array(capturedSampleSchema).max(100),
127
+ findings: z.array(capturedFindingSchema).max(100),
128
+ notes: z.array(z.string().max(500)).max(30),
129
+ limitations: z.array(z.string().max(500)).max(30),
130
+ })
131
+ .strict();
132
+ export const regressionStatsSchema = z
133
+ .object({
134
+ scenarios: z.number().int().nonnegative(),
135
+ samples: z.number().int().nonnegative(),
136
+ verifiedSamples: z.number().int().nonnegative(),
137
+ incompleteSamples: z.number().int().nonnegative(),
138
+ traces: z.number().int().nonnegative(),
139
+ requests: z.number().int().nonnegative(),
140
+ spans: z.number().int().nonnegative(),
141
+ errors: z.number().int().nonnegative(),
142
+ databaseQueries: z.number().int().nonnegative(),
143
+ })
144
+ .strict();
145
+ export const commandSnapshotSchema = z
146
+ .object({
147
+ executable: shortText(200),
148
+ args: z.array(z.string().max(500)).max(200),
149
+ exitCode: z.number().int().nullable(),
150
+ signal: z.string().max(40).nullable(),
151
+ durationMs: z.number().finite().nonnegative(),
152
+ })
153
+ .strict();
154
+ export const runCollectorSchema = z
155
+ .object({
156
+ version: z.string().min(1).max(100),
157
+ connected: z.boolean(),
158
+ })
159
+ .strict();
160
+ export const testRunSchema = z
161
+ .object({
162
+ format: z.literal(STACKNEXT_RUN_FORMAT),
163
+ version: z.literal(STACKNEXT_REGRESSION_FORMAT_VERSION),
164
+ id: runIdSchema,
165
+ name: shortText(200),
166
+ projectName: shortText(200),
167
+ status: z.enum(RUN_STATUSES),
168
+ createdAt: z.number().int().nonnegative(),
169
+ completedAt: z.number().int().nonnegative().nullable(),
170
+ command: commandSnapshotSchema,
171
+ environment: environmentSnapshotSchema,
172
+ collector: runCollectorSchema,
173
+ scenarios: z.array(scenarioSchema).max(500),
174
+ warnings: z.array(z.string().max(500)).max(50),
175
+ notes: z.array(z.string().max(500)).max(50),
176
+ limitations: z.array(z.string().max(500)).max(50),
177
+ stats: regressionStatsSchema,
178
+ })
179
+ .strict();
180
+ export const baselineSchema = z
181
+ .object({
182
+ format: z.literal(STACKNEXT_BASELINE_FORMAT),
183
+ version: z.literal(STACKNEXT_REGRESSION_FORMAT_VERSION),
184
+ id: baselineIdSchema,
185
+ name: shortText(200),
186
+ projectName: shortText(200),
187
+ createdAt: z.number().int().nonnegative(),
188
+ sourceRunId: runIdSchema,
189
+ environment: environmentSnapshotSchema,
190
+ scenarios: z.array(scenarioSchema).max(500),
191
+ warnings: z.array(z.string().max(500)).max(50),
192
+ notes: z.array(z.string().max(500)).max(50),
193
+ limitations: z.array(z.string().max(500)).max(50),
194
+ stats: regressionStatsSchema,
195
+ })
196
+ .strict();
197
+ export const comparisonOptionsSchema = z
198
+ .object({
199
+ minSamples: z.number().int().min(1).max(100),
200
+ durationRegressionPct: z.number().finite().nonnegative().max(10_000),
201
+ durationRegressionMs: z.number().finite().nonnegative().max(600_000),
202
+ durationImprovementPct: z.number().finite().nonnegative().max(10_000),
203
+ durationImprovementMs: z.number().finite().nonnegative().max(600_000),
204
+ countRegressionMin: z.number().int().min(1).max(1_000),
205
+ ignoreEnvironment: z.boolean(),
206
+ })
207
+ .strict();
208
+ export const environmentDifferenceSchema = z
209
+ .object({
210
+ field: shortText(100),
211
+ baseline: z.string().max(500),
212
+ candidate: z.string().max(500),
213
+ })
214
+ .strict();
215
+ export const regressionMetricSchema = z
216
+ .object({
217
+ key: shortText(2_000),
218
+ label: shortText(500),
219
+ kind: z.enum(REGRESSION_METRIC_KINDS),
220
+ status: z.enum(REGRESSION_STATUSES),
221
+ severity: z.enum(REGRESSION_SEVERITIES),
222
+ baselineValue: z.number().finite().nullable(),
223
+ candidateValue: z.number().finite().nullable(),
224
+ delta: z.number().finite().nullable(),
225
+ percent: z.number().finite().nullable(),
226
+ sampleCount: z.number().int().nonnegative(),
227
+ note: z.string().max(500).optional(),
228
+ unmeasured: z.boolean().optional(),
229
+ })
230
+ .strict();
231
+ export const scenarioComparisonSideSchema = z
232
+ .object({
233
+ samples: z.number().int().nonnegative(),
234
+ verifiedSamples: z.number().int().nonnegative(),
235
+ incompleteSamples: z.number().int().nonnegative(),
236
+ traces: z.number().int().nonnegative(),
237
+ findings: z.number().int().nonnegative(),
238
+ })
239
+ .strict();
240
+ export const scenarioComparisonSchema = z
241
+ .object({
242
+ scenarioId: scenarioIdSchema,
243
+ title: shortText(500),
244
+ file: shortText(1_000),
245
+ project: shortText(200),
246
+ status: z.enum(REGRESSION_STATUSES),
247
+ severity: z.enum(REGRESSION_SEVERITIES),
248
+ reasons: z.array(z.string().max(500)).max(50),
249
+ metrics: z.array(regressionMetricSchema).max(1_000),
250
+ baseline: scenarioComparisonSideSchema,
251
+ candidate: scenarioComparisonSideSchema,
252
+ })
253
+ .strict();
254
+ export const comparisonSummarySchema = z
255
+ .object({
256
+ scenarios: z.number().int().nonnegative(),
257
+ regressed: z.number().int().nonnegative(),
258
+ improved: z.number().int().nonnegative(),
259
+ unchanged: z.number().int().nonnegative(),
260
+ inconclusive: z.number().int().nonnegative(),
261
+ })
262
+ .strict();
263
+ export const comparisonSchema = z
264
+ .object({
265
+ format: z.literal(STACKNEXT_COMPARISON_FORMAT),
266
+ version: z.literal(STACKNEXT_REGRESSION_FORMAT_VERSION),
267
+ id: comparisonIdSchema,
268
+ projectName: shortText(200),
269
+ createdAt: z.number().int().nonnegative(),
270
+ baselineId: baselineIdSchema,
271
+ candidateId: runIdSchema,
272
+ status: z.enum(REGRESSION_STATUSES),
273
+ severity: z.enum(REGRESSION_SEVERITIES),
274
+ environment: z
275
+ .object({
276
+ compatible: z.boolean(),
277
+ ignored: z.boolean(),
278
+ differences: z.array(environmentDifferenceSchema).max(50),
279
+ })
280
+ .strict(),
281
+ options: comparisonOptionsSchema,
282
+ summary: comparisonSummarySchema,
283
+ scenarios: z.array(scenarioComparisonSchema).max(500),
284
+ warnings: z.array(z.string().max(500)).max(50),
285
+ limitations: z.array(z.string().max(500)).max(50),
286
+ })
287
+ .strict();
288
+ export const traceReferenceSchema = z
289
+ .object({
290
+ traceId: z.string().regex(/^[0-9a-f]{32}$/i, 'invalid trace id'),
291
+ injectedSpanId: z.string().regex(/^[0-9a-f]{16}$/i, 'invalid span id'),
292
+ })
293
+ .strict();
294
+ export const sampleSubmissionSchema = z
295
+ .object({
296
+ id: sampleIdSchema,
297
+ status: z.enum(SAMPLE_STATUSES),
298
+ expectedStatus: z.enum(SAMPLE_EXPECTED_STATUSES),
299
+ retry: z.number().int().nonnegative().max(20),
300
+ repeatEachIndex: z.number().int().nonnegative().max(1_000),
301
+ durationMs: z.number().finite().nonnegative(),
302
+ capturedAt: z.number().int().nonnegative(),
303
+ traces: z.array(traceReferenceSchema).max(20),
304
+ })
305
+ .strict();
306
+ export const createRunRequestSchema = z
307
+ .object({
308
+ name: z.string().min(1).max(200),
309
+ projectName: z.string().min(1).max(200),
310
+ environment: environmentSnapshotSchema,
311
+ collectorVersion: z.string().min(1).max(100),
312
+ command: commandSnapshotSchema,
313
+ })
314
+ .strict();
315
+ export const submitSampleRequestSchema = z
316
+ .object({
317
+ scenario: scenarioIdentitySchema,
318
+ sample: sampleSubmissionSchema,
319
+ })
320
+ .strict();
321
+ export const completeRunRequestSchema = z
322
+ .object({
323
+ status: z.enum(['completed', 'failed', 'interrupted', 'incomplete']),
324
+ warnings: z.array(z.string().max(500)).max(50).optional(),
325
+ command: commandSnapshotSchema.optional(),
326
+ })
327
+ .strict();
328
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,EAC3B,mCAAmC,EACnC,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AAEvB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAA;AAC5E,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAA;AACvF,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAA;AAC1F,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAA;AACrF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAA;AAC/E,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC7D,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC3D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC;KAC3C,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;CAC3B,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,eAAe,EAAE,6BAA6B;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,EAAE,EAAE,gBAAgB;IACpB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClD,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;IACtB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAClD,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACxD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;QACb,oBAAoB;QACpB,WAAW;QACX,wBAAwB;QACxB,mBAAmB;KACpB,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;CAClE,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAChE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IACtE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACzD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAClD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC9C,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC7C,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,EAAE,EAAE,cAAc;IAClB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1C,WAAW,EAAE,iBAAiB;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAClD,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAClD,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC/C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAChD,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;CAC9C,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC;IACvD,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;IACpB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACtD,OAAO,EAAE,qBAAqB;IAC9B,WAAW,EAAE,yBAAyB;IACtC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACjD,KAAK,EAAE,qBAAqB;CAC7B,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC;IACvD,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;IACpB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,yBAAyB;IACtC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACjD,KAAK,EAAE,qBAAqB;CAC7B,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;IACpE,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;IACpE,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;IACrE,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;IACrE,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACtD,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE;CAC/B,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,CAAC;IACN,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;CAC/B,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC/C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACzC,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;IACtB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACnD,QAAQ,EAAE,4BAA4B;IACtC,SAAS,EAAE,4BAA4B;CACxC,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAC7C,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC;IACvD,EAAE,EAAE,kBAAkB;IACtB,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,WAAW;IACxB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;IACvC,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;QACvB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;KAC1D,CAAC;SACD,MAAM,EAAE;IACX,OAAO,EAAE,uBAAuB;IAChC,OAAO,EAAE,uBAAuB;IAChC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAClD,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAChE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;CACvE,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,EAAE,EAAE,cAAc;IAClB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC9C,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,WAAW,EAAE,yBAAyB;IACtC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5C,OAAO,EAAE,qBAAqB;CAC/B,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,QAAQ,EAAE,sBAAsB;IAChC,MAAM,EAAE,sBAAsB;CAC/B,CAAC;KACD,MAAM,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACpE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,OAAO,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,MAAM,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { Baseline, BaselineSummary, CapturedScenario, Comparison, ComparisonSummaryItem, RegressionStats, RunSummary, TestRun } from './schema.js';
2
+ export declare function computeRegressionStats(scenarios: CapturedScenario[]): RegressionStats;
3
+ export declare function runSummary(run: TestRun): RunSummary;
4
+ export declare function baselineSummary(baseline: Baseline): BaselineSummary;
5
+ export declare function comparisonSummaryItem(comparison: Comparison): ComparisonSummaryItem;
6
+ export declare function baselineFromRun(run: TestRun, options: {
7
+ id?: string;
8
+ name: string;
9
+ notes?: string[];
10
+ }, now?: number): Baseline;
11
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,OAAO,EACR,MAAM,aAAa,CAAA;AAEpB,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,gBAAgB,EAAE,GAC5B,eAAe,CA8BjB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAenD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAWnE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,qBAAqB,CAYnF;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IACP,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,EACD,GAAG,SAAa,GACf,QAAQ,CA4BV"}
package/dist/stats.js ADDED
@@ -0,0 +1,101 @@
1
+ import { STACKNEXT_BASELINE_FORMAT, STACKNEXT_REGRESSION_FORMAT_VERSION, REGRESSION_LIMITATIONS, } from './constants.js';
2
+ import { createBaselineId } from './capture.js';
3
+ export function computeRegressionStats(scenarios) {
4
+ const stats = {
5
+ scenarios: scenarios.length,
6
+ samples: 0,
7
+ verifiedSamples: 0,
8
+ incompleteSamples: 0,
9
+ traces: 0,
10
+ requests: 0,
11
+ spans: 0,
12
+ errors: 0,
13
+ databaseQueries: 0,
14
+ };
15
+ for (const scenario of scenarios) {
16
+ for (const sample of scenario.samples) {
17
+ stats.samples += 1;
18
+ if (sample.correlation.status === 'verified') {
19
+ stats.verifiedSamples += 1;
20
+ }
21
+ else {
22
+ stats.incompleteSamples += 1;
23
+ }
24
+ stats.traces += sample.correlation.traces.length;
25
+ stats.requests += sample.correlation.traces.length;
26
+ for (const trace of sample.correlation.traces) {
27
+ stats.spans += trace.spanCount;
28
+ stats.errors += trace.errorCount;
29
+ stats.databaseQueries += trace.databaseQueryCount;
30
+ }
31
+ }
32
+ }
33
+ return stats;
34
+ }
35
+ export function runSummary(run) {
36
+ return {
37
+ id: run.id,
38
+ name: run.name,
39
+ projectName: run.projectName,
40
+ status: run.status,
41
+ createdAt: run.createdAt,
42
+ completedAt: run.completedAt,
43
+ durationMs: run.command.durationMs,
44
+ scenarios: run.stats.scenarios,
45
+ samples: run.stats.samples,
46
+ verifiedSamples: run.stats.verifiedSamples,
47
+ incompleteSamples: run.stats.incompleteSamples,
48
+ environment: run.environment,
49
+ };
50
+ }
51
+ export function baselineSummary(baseline) {
52
+ return {
53
+ id: baseline.id,
54
+ name: baseline.name,
55
+ projectName: baseline.projectName,
56
+ createdAt: baseline.createdAt,
57
+ sourceRunId: baseline.sourceRunId,
58
+ scenarios: baseline.stats.scenarios,
59
+ samples: baseline.stats.samples,
60
+ environment: baseline.environment,
61
+ };
62
+ }
63
+ export function comparisonSummaryItem(comparison) {
64
+ return {
65
+ id: comparison.id,
66
+ projectName: comparison.projectName,
67
+ baselineId: comparison.baselineId,
68
+ candidateId: comparison.candidateId,
69
+ createdAt: comparison.createdAt,
70
+ status: comparison.status,
71
+ severity: comparison.severity,
72
+ summary: comparison.summary,
73
+ environmentCompatible: comparison.environment.compatible,
74
+ };
75
+ }
76
+ export function baselineFromRun(run, options, now = Date.now()) {
77
+ if (run.status !== 'completed') {
78
+ throw new Error(`Run ${run.id} is ${run.status}; only a completed run with verified telemetry can become a baseline.`);
79
+ }
80
+ if (run.stats.verifiedSamples === 0) {
81
+ throw new Error(`Run ${run.id} has no verified sampled traces and cannot become a baseline.`);
82
+ }
83
+ const id = options.id ?? createBaselineId();
84
+ const scenarios = structuredClone(run.scenarios);
85
+ return {
86
+ format: STACKNEXT_BASELINE_FORMAT,
87
+ version: STACKNEXT_REGRESSION_FORMAT_VERSION,
88
+ id,
89
+ name: options.name,
90
+ projectName: run.projectName,
91
+ createdAt: now,
92
+ sourceRunId: run.id,
93
+ environment: structuredClone(run.environment),
94
+ scenarios,
95
+ warnings: [],
96
+ notes: [...(options.notes ?? [])],
97
+ limitations: [...REGRESSION_LIMITATIONS],
98
+ stats: computeRegressionStats(scenarios),
99
+ };
100
+ }
101
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { type Baseline, type BaselineSummary, type Comparison, type ComparisonSummaryItem, type RunSummary, type TestRun } from './schema.js';
2
+ export declare const REGRESSION_DIR_NAME = ".stacknext";
3
+ export declare const RUNS_DIR_NAME = "runs";
4
+ export declare const BASELINES_DIR_NAME = "baselines";
5
+ export declare const COMPARISONS_DIR_NAME = "comparisons";
6
+ export declare class RegressionStorageError extends Error {
7
+ readonly code: 'exists' | 'invalid' | 'too-large' | 'not-found';
8
+ constructor(code: RegressionStorageError['code'], message: string);
9
+ }
10
+ export declare function regressionDir(projectDir: string): string;
11
+ export declare function runsDir(projectDir: string): string;
12
+ export declare function baselinesDir(projectDir: string): string;
13
+ export declare function comparisonsDir(projectDir: string): string;
14
+ export declare function runPath(projectDir: string, id: string): string;
15
+ export declare function baselinePath(projectDir: string, id: string): string;
16
+ export declare function comparisonPath(projectDir: string, id: string): string;
17
+ export declare function ensureRegressionDirs(projectDir: string): Promise<void>;
18
+ export interface ListOptions {
19
+ limit?: number;
20
+ offset?: number;
21
+ }
22
+ export interface StoredRecords<T> {
23
+ items: T[];
24
+ invalid: number;
25
+ }
26
+ export declare function saveRun(projectDir: string, run: TestRun, options?: {
27
+ overwrite?: boolean;
28
+ }): Promise<string>;
29
+ export declare function loadRun(projectDir: string, id: string): Promise<TestRun>;
30
+ export declare function listAllRuns(projectDir: string): Promise<StoredRecords<RunSummary>>;
31
+ export declare function listRuns(projectDir: string, options?: ListOptions): Promise<{
32
+ items: RunSummary[];
33
+ total: number;
34
+ limit: number;
35
+ offset: number;
36
+ invalid: number;
37
+ }>;
38
+ export declare function saveBaseline(projectDir: string, baseline: Baseline, options?: {
39
+ overwrite?: boolean;
40
+ }): Promise<string>;
41
+ export declare function loadBaseline(projectDir: string, id: string): Promise<Baseline>;
42
+ export declare function listAllBaselines(projectDir: string): Promise<StoredRecords<BaselineSummary>>;
43
+ export declare function listBaselines(projectDir: string, options?: ListOptions): Promise<{
44
+ items: BaselineSummary[];
45
+ total: number;
46
+ limit: number;
47
+ offset: number;
48
+ invalid: number;
49
+ }>;
50
+ export declare function removeBaseline(projectDir: string, id: string): Promise<boolean>;
51
+ export declare function saveComparison(projectDir: string, comparison: Comparison, options?: {
52
+ overwrite?: boolean;
53
+ }): Promise<string>;
54
+ export declare function loadComparison(projectDir: string, id: string): Promise<Comparison>;
55
+ export declare function listAllComparisons(projectDir: string): Promise<StoredRecords<ComparisonSummaryItem>>;
56
+ export declare function listComparisons(projectDir: string, options?: ListOptions): Promise<{
57
+ items: ComparisonSummaryItem[];
58
+ total: number;
59
+ limit: number;
60
+ offset: number;
61
+ invalid: number;
62
+ }>;
63
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}