@stacknext/core 0.6.1 → 0.8.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.
@@ -0,0 +1,77 @@
1
+ import { type StackNextConfig } from './config.js';
2
+ import { TelemetryStore } from './store.js';
3
+ import type { ExportResponse, SnapshotPayload, SnapshotSource, SnapshotSummary } from './types.js';
4
+ export declare const SNAPSHOTS_DIR_NAME = "snapshots";
5
+ export declare const SNAPSHOT_MAX_BYTES: number;
6
+ export declare const SNAPSHOT_LIMITATIONS: string[];
7
+ export declare const AUTOMATIC_SNAPSHOT_SOURCES: readonly SnapshotSource[];
8
+ export declare class SnapshotStorageError extends Error {
9
+ readonly code: 'exists' | 'invalid' | 'too-large' | 'not-found';
10
+ constructor(code: SnapshotStorageError['code'], message: string);
11
+ }
12
+ export declare function snapshotsDir(projectDir: string): string;
13
+ export declare function snapshotPath(projectDir: string, id: string): string;
14
+ export declare function snapshotSummaryPath(projectDir: string, id: string): string;
15
+ export declare function isSnapshotId(value: string): boolean;
16
+ export declare function newSnapshotId(): string;
17
+ export declare function ensureSnapshotDirs(projectDir: string): Promise<void>;
18
+ export interface CreateSnapshotOptions {
19
+ store: TelemetryStore;
20
+ id?: string;
21
+ createdAt?: number;
22
+ source: SnapshotSource;
23
+ projectName: string;
24
+ collectorVersion: string;
25
+ config: StackNextConfig;
26
+ label?: string;
27
+ slowRequestMs?: number;
28
+ }
29
+ /** Builds a redacted snapshot payload from the current in-memory sample. */
30
+ export declare function createSnapshotPayload(options: CreateSnapshotOptions): SnapshotPayload;
31
+ export declare function snapshotSummary(payload: SnapshotPayload, bytes: number): SnapshotSummary;
32
+ export interface SaveSnapshotOptions {
33
+ maxBytes?: number;
34
+ }
35
+ export declare function saveSnapshot(projectDir: string, payload: SnapshotPayload, options?: SaveSnapshotOptions): Promise<SnapshotSummary>;
36
+ export declare function loadSnapshotPayload(projectDir: string, id: string, options?: SaveSnapshotOptions): Promise<SnapshotPayload>;
37
+ export declare function loadSnapshotSummary(projectDir: string, id: string): Promise<SnapshotSummary>;
38
+ export interface SnapshotListOptions {
39
+ limit?: number;
40
+ offset?: number;
41
+ }
42
+ export declare function listSnapshots(projectDir: string, options?: SnapshotListOptions): Promise<{
43
+ items: SnapshotSummary[];
44
+ total: number;
45
+ limit: number;
46
+ offset: number;
47
+ invalid: number;
48
+ }>;
49
+ export declare function listAllSnapshots(projectDir: string): Promise<{
50
+ items: SnapshotSummary[];
51
+ invalid: number;
52
+ }>;
53
+ export declare function removeSnapshot(projectDir: string, id: string): Promise<boolean>;
54
+ /**
55
+ * Deletes only automatic snapshots beyond the newest `keep`. Manual and
56
+ * imported snapshots are never removed by rotation.
57
+ */
58
+ export declare function rotateAutomaticSnapshots(projectDir: string, keep: number): Promise<string[]>;
59
+ /**
60
+ * Creates a detached read-only store for a snapshot. The clock is pinned to
61
+ * the save time and the retention window is widened so imported records never
62
+ * expire while the snapshot is being viewed.
63
+ */
64
+ export declare function createSnapshotView(payload: SnapshotPayload): TelemetryStore;
65
+ export declare function snapshotExport(payload: SnapshotPayload): ExportResponse;
66
+ export interface ImportSnapshotOptions {
67
+ maxBytes?: number;
68
+ label?: string;
69
+ createdAt?: number;
70
+ }
71
+ /**
72
+ * Imports a snapshot payload or a StackNext export. Imported records are
73
+ * normalized and redacted again before being written, and always receive a
74
+ * fresh snapshot id.
75
+ */
76
+ export declare function importSnapshot(projectDir: string, contents: string, options?: ImportSnapshotOptions): Promise<SnapshotSummary>;
77
+ //# sourceMappingURL=snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.d.ts","sourceRoot":"","sources":["../src/snapshots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,453 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { access, chmod, link, mkdir, readFile, readdir, rename, rm, stat, unlink, writeFile, } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { parseStackNextConfig } from './config.js';
5
+ import { normalizeDatabaseQuery, normalizeError, normalizeSpan } from './normalize.js';
6
+ import { snapshotImportSchema, snapshotPayloadSchema, snapshotSummarySchema, } from './schema.js';
7
+ import { TelemetryStore } from './store.js';
8
+ export const SNAPSHOTS_DIR_NAME = 'snapshots';
9
+ export const SNAPSHOT_MAX_BYTES = 64 * 1024 * 1024;
10
+ const SUMMARY_MAX_BYTES = 1024 * 1024;
11
+ export const SNAPSHOT_LIMITATIONS = [
12
+ 'A snapshot is a frozen, redacted copy of one collector sample. It is not live telemetry.',
13
+ 'Diagnostics and coverage are not stored in a snapshot; both describe the live sample only.',
14
+ 'Bodies, headers, cookies, URL query values and SQL bind parameters are never captured.',
15
+ 'Drizzle query durations remain null because the adapter cannot measure them.',
16
+ 'Edge Runtime and production deployments are not supported.',
17
+ ];
18
+ export const AUTOMATIC_SNAPSHOT_SOURCES = ['exit', 'error'];
19
+ export class SnapshotStorageError extends Error {
20
+ code;
21
+ constructor(code, message) {
22
+ super(message);
23
+ this.name = 'SnapshotStorageError';
24
+ this.code = code;
25
+ }
26
+ }
27
+ export function snapshotsDir(projectDir) {
28
+ return path.join(projectDir, '.stacknext', SNAPSHOTS_DIR_NAME);
29
+ }
30
+ export function snapshotPath(projectDir, id) {
31
+ return path.join(snapshotsDir(projectDir), `${id}.json`);
32
+ }
33
+ export function snapshotSummaryPath(projectDir, id) {
34
+ return path.join(snapshotsDir(projectDir), `${id}.summary.json`);
35
+ }
36
+ export function isSnapshotId(value) {
37
+ return /^snap-[0-9a-f]{16}$/.test(value);
38
+ }
39
+ export function newSnapshotId() {
40
+ return `snap-${randomBytes(8).toString('hex')}`;
41
+ }
42
+ async function exists(file) {
43
+ try {
44
+ await access(file);
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ export async function ensureSnapshotDirs(projectDir) {
52
+ const root = path.join(projectDir, '.stacknext');
53
+ await mkdir(root, { recursive: true, mode: 0o700 });
54
+ await chmod(root, 0o700).catch(() => undefined);
55
+ const gitignore = path.join(root, '.gitignore');
56
+ try {
57
+ await writeFile(gitignore, '*\n', { mode: 0o600, flag: 'wx' });
58
+ }
59
+ catch (error) {
60
+ if (error.code !== 'EEXIST')
61
+ throw error;
62
+ }
63
+ const directory = snapshotsDir(projectDir);
64
+ await mkdir(directory, { recursive: true, mode: 0o700 });
65
+ await chmod(directory, 0o700).catch(() => undefined);
66
+ }
67
+ async function writeAtomic(file, body, maxBytes, overwrite = false) {
68
+ const bytes = Buffer.byteLength(body, 'utf8');
69
+ if (bytes > maxBytes) {
70
+ throw new SnapshotStorageError('too-large', `Snapshot is ${bytes} bytes, which exceeds the ${maxBytes} byte limit. Nothing was written. Reduce collector retention or raise snapshots.maxBytes.`);
71
+ }
72
+ await mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
73
+ await chmod(path.dirname(file), 0o700).catch(() => undefined);
74
+ if (!overwrite && (await exists(file))) {
75
+ throw new SnapshotStorageError('exists', 'Snapshot record already exists and snapshots are never overwritten implicitly.');
76
+ }
77
+ const temporary = `${file}.${process.pid}.${Date.now()}.tmp`;
78
+ try {
79
+ await writeFile(temporary, body, { mode: 0o600, flag: 'wx' });
80
+ await chmod(temporary, 0o600).catch(() => undefined);
81
+ if (overwrite) {
82
+ await rename(temporary, file);
83
+ return bytes;
84
+ }
85
+ try {
86
+ await link(temporary, file);
87
+ }
88
+ catch (error) {
89
+ const code = error.code;
90
+ if (code === 'EEXIST') {
91
+ throw new SnapshotStorageError('exists', 'Snapshot record already exists and snapshots are never overwritten implicitly.');
92
+ }
93
+ if (code === 'EPERM' || code === 'ENOSYS' || code === 'EOPNOTSUPP') {
94
+ if (await exists(file)) {
95
+ throw new SnapshotStorageError('exists', 'Snapshot record already exists and snapshots are never overwritten implicitly.');
96
+ }
97
+ await rename(temporary, file);
98
+ return bytes;
99
+ }
100
+ throw error;
101
+ }
102
+ finally {
103
+ await unlink(temporary).catch(() => undefined);
104
+ }
105
+ return bytes;
106
+ }
107
+ catch (error) {
108
+ await rm(temporary, { force: true }).catch(() => undefined);
109
+ throw error;
110
+ }
111
+ }
112
+ async function readJson(file, schema, maxBytes, label) {
113
+ let info;
114
+ try {
115
+ info = await stat(file);
116
+ }
117
+ catch (error) {
118
+ if (error.code === 'ENOENT') {
119
+ throw new SnapshotStorageError('not-found', `${label} record does not exist.`);
120
+ }
121
+ throw error;
122
+ }
123
+ if (info.size > maxBytes) {
124
+ throw new SnapshotStorageError('too-large', `${label} record is larger than the ${maxBytes} byte limit.`);
125
+ }
126
+ let parsed;
127
+ try {
128
+ parsed = JSON.parse(await readFile(file, 'utf8'));
129
+ }
130
+ catch {
131
+ throw new SnapshotStorageError('invalid', `${label} record is not valid JSON.`);
132
+ }
133
+ const result = schema.safeParse(parsed);
134
+ if (!result.success) {
135
+ throw new SnapshotStorageError('invalid', `${label} record failed validation: ${result.error.issues
136
+ .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)
137
+ .join('; ')}`);
138
+ }
139
+ return result.data;
140
+ }
141
+ function latestTime(spans, errors, queries) {
142
+ const times = [
143
+ ...spans.map((span) => span.startTime),
144
+ ...errors.map((error) => error.timestamp),
145
+ ...queries.map((query) => query.timestamp),
146
+ ];
147
+ if (times.length === 0)
148
+ return { first: null, last: null };
149
+ return { first: Math.min(...times), last: Math.max(...times) };
150
+ }
151
+ /** Builds a redacted snapshot payload from the current in-memory sample. */
152
+ export function createSnapshotPayload(options) {
153
+ const data = options.store.exportAll();
154
+ const summary = options.store.summary(options.slowRequestMs ?? 500);
155
+ const times = latestTime(data.spans, data.errors, data.databaseQueries);
156
+ return {
157
+ format: 'stacknext-snapshot',
158
+ version: 1,
159
+ id: options.id ?? newSnapshotId(),
160
+ createdAt: options.createdAt ?? Date.now(),
161
+ source: options.source,
162
+ projectName: options.projectName,
163
+ collectorVersion: options.collectorVersion,
164
+ ...(options.label ? { label: options.label.slice(0, 200) } : {}),
165
+ config: options.config,
166
+ sample: {
167
+ firstEventTime: times.first ?? summary.firstEventTime,
168
+ lastEventTime: times.last ?? summary.lastEventTime,
169
+ retentionMs: options.store.retentionMs,
170
+ },
171
+ spans: data.spans,
172
+ errors: data.errors,
173
+ databaseQueries: data.databaseQueries,
174
+ stats: {
175
+ requests: summary.totalRequests,
176
+ errors: data.errors.length,
177
+ databaseQueries: data.databaseQueries.length,
178
+ spans: data.spans.length,
179
+ },
180
+ limitations: [...SNAPSHOT_LIMITATIONS],
181
+ };
182
+ }
183
+ export function snapshotSummary(payload, bytes) {
184
+ return {
185
+ id: payload.id,
186
+ createdAt: payload.createdAt,
187
+ source: payload.source,
188
+ projectName: payload.projectName,
189
+ collectorVersion: payload.collectorVersion,
190
+ ...(payload.label ? { label: payload.label } : {}),
191
+ sample: payload.sample,
192
+ stats: payload.stats,
193
+ bytes,
194
+ };
195
+ }
196
+ export async function saveSnapshot(projectDir, payload, options = {}) {
197
+ const parsed = snapshotPayloadSchema.parse(payload);
198
+ await ensureSnapshotDirs(projectDir);
199
+ const body = `${JSON.stringify(parsed)}\n`;
200
+ const bytes = await writeAtomic(snapshotPath(projectDir, parsed.id), body, options.maxBytes ?? SNAPSHOT_MAX_BYTES);
201
+ const summary = snapshotSummary(parsed, bytes);
202
+ try {
203
+ await writeAtomic(snapshotSummaryPath(projectDir, parsed.id), `${JSON.stringify(snapshotSummarySchema.parse(summary))}\n`, SUMMARY_MAX_BYTES);
204
+ }
205
+ catch (error) {
206
+ await rm(snapshotPath(projectDir, parsed.id), { force: true }).catch(() => undefined);
207
+ throw error;
208
+ }
209
+ return summary;
210
+ }
211
+ export async function loadSnapshotPayload(projectDir, id, options = {}) {
212
+ if (!isSnapshotId(id)) {
213
+ throw new SnapshotStorageError('invalid', `Invalid snapshot id "${id}".`);
214
+ }
215
+ return readJson(snapshotPath(projectDir, id), snapshotPayloadSchema, options.maxBytes ?? SNAPSHOT_MAX_BYTES, 'Snapshot');
216
+ }
217
+ export async function loadSnapshotSummary(projectDir, id) {
218
+ if (!isSnapshotId(id)) {
219
+ throw new SnapshotStorageError('invalid', `Invalid snapshot id "${id}".`);
220
+ }
221
+ return readJson(snapshotSummaryPath(projectDir, id), snapshotSummarySchema, SUMMARY_MAX_BYTES, 'Snapshot summary');
222
+ }
223
+ async function readSummaries(projectDir) {
224
+ let names;
225
+ try {
226
+ names = await readdir(snapshotsDir(projectDir));
227
+ }
228
+ catch (error) {
229
+ if (error.code === 'ENOENT') {
230
+ return { items: [], invalid: 0 };
231
+ }
232
+ throw error;
233
+ }
234
+ const items = [];
235
+ let invalid = 0;
236
+ for (const name of names) {
237
+ if (!/^snap-[0-9a-f]{16}\.summary\.json$/.test(name))
238
+ continue;
239
+ const id = name.slice(0, -'.summary.json'.length);
240
+ try {
241
+ if (!(await exists(snapshotPath(projectDir, id)))) {
242
+ invalid += 1;
243
+ continue;
244
+ }
245
+ items.push(await loadSnapshotSummary(projectDir, id));
246
+ }
247
+ catch {
248
+ invalid += 1;
249
+ }
250
+ }
251
+ items.sort((left, right) => right.createdAt - left.createdAt ||
252
+ (left.id < right.id ? -1 : left.id > right.id ? 1 : 0));
253
+ return { items, invalid };
254
+ }
255
+ export async function listSnapshots(projectDir, options = {}) {
256
+ const records = await readSummaries(projectDir);
257
+ const limit = Math.min(Math.max(options.limit ?? 50, 1), 200);
258
+ const offset = Math.max(options.offset ?? 0, 0);
259
+ return {
260
+ items: records.items.slice(offset, offset + limit),
261
+ total: records.items.length,
262
+ limit,
263
+ offset,
264
+ invalid: records.invalid,
265
+ };
266
+ }
267
+ export async function listAllSnapshots(projectDir) {
268
+ return readSummaries(projectDir);
269
+ }
270
+ export async function removeSnapshot(projectDir, id) {
271
+ if (!isSnapshotId(id)) {
272
+ throw new SnapshotStorageError('invalid', `Invalid snapshot id "${id}".`);
273
+ }
274
+ const file = snapshotPath(projectDir, id);
275
+ const present = await exists(file);
276
+ await rm(file, { force: true });
277
+ await rm(snapshotSummaryPath(projectDir, id), { force: true });
278
+ return present;
279
+ }
280
+ /**
281
+ * Deletes only automatic snapshots beyond the newest `keep`. Manual and
282
+ * imported snapshots are never removed by rotation.
283
+ */
284
+ export async function rotateAutomaticSnapshots(projectDir, keep) {
285
+ const records = await readSummaries(projectDir);
286
+ const automatic = records.items
287
+ .filter((item) => AUTOMATIC_SNAPSHOT_SOURCES.includes(item.source))
288
+ .sort((left, right) => right.createdAt - left.createdAt);
289
+ const removed = [];
290
+ for (const item of automatic.slice(Math.max(0, keep))) {
291
+ if (await removeSnapshot(projectDir, item.id))
292
+ removed.push(item.id);
293
+ }
294
+ return removed;
295
+ }
296
+ /**
297
+ * Creates a detached read-only store for a snapshot. The clock is pinned to
298
+ * the save time and the retention window is widened so imported records never
299
+ * expire while the snapshot is being viewed.
300
+ */
301
+ export function createSnapshotView(payload) {
302
+ const receivedTimes = [
303
+ ...payload.spans.map((span) => span.receivedAt),
304
+ ...payload.errors.map((error) => error.receivedAt),
305
+ ...payload.databaseQueries.map((query) => query.receivedAt),
306
+ ];
307
+ const earliest = receivedTimes.length > 0 ? Math.min(...receivedTimes) : payload.createdAt;
308
+ const retentionMs = Math.max(payload.config.collector.retentionMs, payload.createdAt - earliest + 1);
309
+ const store = new TelemetryStore({
310
+ maxSpans: Math.max(payload.config.collector.maxSpans, payload.spans.length, payload.errors.length * 5, payload.databaseQueries.length * 2, 100),
311
+ retentionMs,
312
+ now: () => payload.createdAt,
313
+ });
314
+ store.restore({
315
+ spans: payload.spans,
316
+ errors: payload.errors,
317
+ databaseQueries: payload.databaseQueries,
318
+ });
319
+ return store;
320
+ }
321
+ export function snapshotExport(payload) {
322
+ return {
323
+ format: 'stacknext-export',
324
+ version: 1,
325
+ exportedAt: payload.createdAt,
326
+ projectName: payload.projectName,
327
+ collectorVersion: payload.collectorVersion,
328
+ config: payload.config,
329
+ spans: payload.spans,
330
+ errors: payload.errors,
331
+ databaseQueries: payload.databaseQueries,
332
+ stats: payload.stats,
333
+ limitations: [
334
+ `Export generated from ${payload.id} (${payload.source}).`,
335
+ ...payload.limitations,
336
+ ],
337
+ };
338
+ }
339
+ function recomputePayload(source, config) {
340
+ const view = createSnapshotView({
341
+ ...source,
342
+ config,
343
+ sample: { firstEventTime: null, lastEventTime: null, retentionMs: config.collector.retentionMs },
344
+ stats: { requests: 0, errors: 0, databaseQueries: 0, spans: 0 },
345
+ });
346
+ const summary = view.summary(config.slowRequestMs);
347
+ const times = latestTime(source.spans, source.errors, source.databaseQueries);
348
+ return {
349
+ sample: {
350
+ firstEventTime: times.first,
351
+ lastEventTime: times.last,
352
+ retentionMs: config.collector.retentionMs,
353
+ },
354
+ stats: {
355
+ requests: summary.totalRequests,
356
+ errors: source.errors.length,
357
+ databaseQueries: source.databaseQueries.length,
358
+ spans: source.spans.length,
359
+ },
360
+ };
361
+ }
362
+ function sanitizeImportedRecords(parsed) {
363
+ return {
364
+ spans: parsed.spans.map((span) => normalizeSpan(span, span.receivedAt)),
365
+ errors: parsed.errors.map((error) => normalizeError(error, error.receivedAt)),
366
+ databaseQueries: parsed.databaseQueries.map((query) => normalizeDatabaseQuery(query, query.receivedAt)),
367
+ };
368
+ }
369
+ /**
370
+ * Imports a snapshot payload or a StackNext export. Imported records are
371
+ * normalized and redacted again before being written, and always receive a
372
+ * fresh snapshot id.
373
+ */
374
+ export async function importSnapshot(projectDir, contents, options = {}) {
375
+ if (Buffer.byteLength(contents, 'utf8') > (options.maxBytes ?? SNAPSHOT_MAX_BYTES)) {
376
+ throw new SnapshotStorageError('too-large', `Import is larger than the ${options.maxBytes ?? SNAPSHOT_MAX_BYTES} byte snapshot limit.`);
377
+ }
378
+ let raw;
379
+ try {
380
+ raw = JSON.parse(contents);
381
+ }
382
+ catch {
383
+ throw new SnapshotStorageError('invalid', 'Import file is not valid JSON.');
384
+ }
385
+ const format = raw?.format;
386
+ let common;
387
+ if (format === 'stacknext-snapshot') {
388
+ const parsed = snapshotPayloadSchema.safeParse(raw);
389
+ if (!parsed.success) {
390
+ throw new SnapshotStorageError('invalid', `Snapshot import failed validation: ${parsed.error.issues
391
+ .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)
392
+ .join('; ')}`);
393
+ }
394
+ common = {
395
+ projectName: parsed.data.projectName,
396
+ collectorVersion: parsed.data.collectorVersion,
397
+ ...(parsed.data.label ? { label: parsed.data.label } : {}),
398
+ config: parseStackNextConfig(parsed.data.config),
399
+ spans: parsed.data.spans,
400
+ errors: parsed.data.errors,
401
+ databaseQueries: parsed.data.databaseQueries,
402
+ };
403
+ }
404
+ else if (format === 'stacknext-export') {
405
+ const parsed = snapshotImportSchema.safeParse(raw);
406
+ if (!parsed.success) {
407
+ throw new SnapshotStorageError('invalid', `Export import failed validation: ${parsed.error.issues
408
+ .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)
409
+ .join('; ')}`);
410
+ }
411
+ common = {
412
+ projectName: parsed.data.projectName,
413
+ collectorVersion: parsed.data.collectorVersion,
414
+ config: parseStackNextConfig(parsed.data.config),
415
+ spans: parsed.data.spans,
416
+ errors: parsed.data.errors,
417
+ databaseQueries: parsed.data.databaseQueries,
418
+ };
419
+ }
420
+ else {
421
+ throw new SnapshotStorageError('invalid', 'Unrecognized import format. Use a stacknext-snapshot or stacknext-export JSON file.');
422
+ }
423
+ const sanitized = sanitizeImportedRecords(common);
424
+ const payload = {
425
+ format: 'stacknext-snapshot',
426
+ version: 1,
427
+ id: newSnapshotId(),
428
+ createdAt: options.createdAt ?? Date.now(),
429
+ source: 'import',
430
+ projectName: common.projectName,
431
+ collectorVersion: common.collectorVersion,
432
+ ...(options.label ?? common.label ? { label: (options.label ?? common.label)?.slice(0, 200) } : {}),
433
+ config: common.config,
434
+ sample: {
435
+ firstEventTime: null,
436
+ lastEventTime: null,
437
+ retentionMs: common.config.collector.retentionMs,
438
+ },
439
+ spans: sanitized.spans,
440
+ errors: sanitized.errors,
441
+ databaseQueries: sanitized.databaseQueries,
442
+ stats: { requests: 0, errors: 0, databaseQueries: 0, spans: 0 },
443
+ limitations: [
444
+ ...SNAPSHOT_LIMITATIONS,
445
+ 'This snapshot was imported from a local JSON file and re-redacted on import.',
446
+ ],
447
+ };
448
+ const computed = recomputePayload(payload, common.config);
449
+ payload.sample = computed.sample;
450
+ payload.stats = computed.stats;
451
+ return saveSnapshot(projectDir, payload, { maxBytes: options.maxBytes });
452
+ }
453
+ //# sourceMappingURL=snapshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../src/snapshots.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -61,8 +61,8 @@ export declare class TelemetryStore {
61
61
  private traceIndex;
62
62
  listRequests(filters?: RequestFilters, slowRequestMs?: number): PageResult<RequestSummary>;
63
63
  listTraces(filters?: RequestFilters, slowRequestMs?: number): TraceListResult;
64
+ private listTracePage;
64
65
  getTrace(traceId: string, slowRequestMs?: number): TraceDetail | null;
65
- getRequest(traceId: string, slowRequestMs?: number): TraceDetail | null;
66
66
  listErrors(filters?: ErrorFilters): PageResult<ErrorListItem> & {
67
67
  groups: ErrorGroup[];
68
68
  };
@@ -92,5 +92,14 @@ export declare class TelemetryStore {
92
92
  stats: StoreStats;
93
93
  };
94
94
  clear(): void;
95
+ /**
96
+ * Loads already-normalized records into this store. Used only for detached
97
+ * snapshot views; live ingestion must go through ingest().
98
+ */
99
+ restore(data: {
100
+ spans: StackNextSpan[];
101
+ errors: StackNextError[];
102
+ databaseQueries: StackNextDatabaseQuery[];
103
+ }): void;
95
104
  }
96
105
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}