@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.
- package/LICENSE +21 -0
- package/README.md +17 -2
- package/dist/capture.d.ts +47 -0
- package/dist/capture.d.ts.map +1 -0
- package/dist/capture.js +207 -0
- package/dist/capture.js.map +1 -0
- package/dist/compare.d.ts +11 -0
- package/dist/compare.d.ts.map +1 -0
- package/dist/compare.js +583 -0
- package/dist/compare.js.map +1 -0
- package/dist/constants.d.ts +33 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +56 -0
- package/dist/constants.js.map +1 -0
- package/dist/environment.d.ts +23 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +86 -0
- package/dist/environment.js.map +1 -0
- package/dist/identity.d.ts +35 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +121 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/schema.d.ts +1300 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +328 -0
- package/dist/schema.js.map +1 -0
- package/dist/stats.d.ts +11 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/stats.js +101 -0
- package/dist/stats.js.map +1 -0
- package/dist/storage.d.ts +63 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +305 -0
- package/dist/storage.js.map +1 -0
- package/package.json +50 -3
|
@@ -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":"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"}
|
package/dist/stats.d.ts
ADDED
|
@@ -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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"}
|