supercov 0.0.0 → 0.0.2

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 (97) hide show
  1. package/bin/supercov.js +2 -5
  2. package/dist/analyze.d.ts +12 -0
  3. package/dist/analyze.d.ts.map +1 -0
  4. package/dist/analyze.js +699 -0
  5. package/dist/analyze.js.map +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +245 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/instrumenter.d.ts +11 -0
  11. package/dist/instrumenter.d.ts.map +1 -0
  12. package/dist/instrumenter.js +940 -0
  13. package/dist/instrumenter.js.map +1 -0
  14. package/dist/integrity.d.ts +10 -0
  15. package/dist/integrity.d.ts.map +1 -0
  16. package/dist/integrity.js +153 -0
  17. package/dist/integrity.js.map +1 -0
  18. package/dist/playwright.d.ts +13 -0
  19. package/dist/playwright.d.ts.map +1 -0
  20. package/dist/playwright.js +794 -0
  21. package/dist/playwright.js.map +1 -0
  22. package/dist/playwrightReporter.d.ts +6 -0
  23. package/dist/playwrightReporter.d.ts.map +1 -0
  24. package/dist/playwrightReporter.js +40 -0
  25. package/dist/playwrightReporter.js.map +1 -0
  26. package/dist/project.d.ts +11 -0
  27. package/dist/project.d.ts.map +1 -0
  28. package/dist/project.js +112 -0
  29. package/dist/project.js.map +1 -0
  30. package/dist/provenance.d.ts +9 -0
  31. package/dist/provenance.d.ts.map +1 -0
  32. package/dist/provenance.js +51 -0
  33. package/dist/provenance.js.map +1 -0
  34. package/dist/query.d.ts +9 -0
  35. package/dist/query.d.ts.map +1 -0
  36. package/dist/query.js +911 -0
  37. package/dist/query.js.map +1 -0
  38. package/dist/queueAdapters.d.ts +15 -0
  39. package/dist/queueAdapters.d.ts.map +1 -0
  40. package/dist/queueAdapters.js +55 -0
  41. package/dist/queueAdapters.js.map +1 -0
  42. package/dist/register.d.mts +2 -0
  43. package/dist/register.d.mts.map +1 -0
  44. package/dist/register.mjs +112 -0
  45. package/dist/register.mjs.map +1 -0
  46. package/dist/reporter.d.ts +17 -0
  47. package/dist/reporter.d.ts.map +1 -0
  48. package/dist/reporter.js +311 -0
  49. package/dist/reporter.js.map +1 -0
  50. package/dist/resolve-loader.d.mts +2 -0
  51. package/dist/resolve-loader.d.mts.map +1 -0
  52. package/dist/resolve-loader.mjs +40 -0
  53. package/dist/resolve-loader.mjs.map +1 -0
  54. package/dist/runtime.d.ts +46 -0
  55. package/dist/runtime.d.ts.map +1 -0
  56. package/dist/runtime.js +480 -0
  57. package/dist/runtime.js.map +1 -0
  58. package/dist/transport.d.ts +15 -0
  59. package/dist/transport.d.ts.map +1 -0
  60. package/dist/transport.js +100 -0
  61. package/dist/transport.js.map +1 -0
  62. package/dist/types.d.ts +353 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +2 -0
  65. package/dist/types.js.map +1 -0
  66. package/dist/vitePlugin.d.ts +8 -0
  67. package/dist/vitePlugin.d.ts.map +1 -0
  68. package/dist/vitePlugin.js +83 -0
  69. package/dist/vitePlugin.js.map +1 -0
  70. package/dist/vitest.d.ts +2 -0
  71. package/dist/vitest.d.ts.map +1 -0
  72. package/dist/vitest.js +89 -0
  73. package/dist/vitest.js.map +1 -0
  74. package/dist/vitestReporter.d.ts +28 -0
  75. package/dist/vitestReporter.d.ts.map +1 -0
  76. package/dist/vitestReporter.js +48 -0
  77. package/dist/vitestReporter.js.map +1 -0
  78. package/package.json +21 -9
  79. package/src/analyze.ts +0 -993
  80. package/src/cli.ts +0 -336
  81. package/src/instrumenter.ts +0 -1254
  82. package/src/integrity.ts +0 -187
  83. package/src/playwright.ts +0 -1009
  84. package/src/playwrightReporter.ts +0 -55
  85. package/src/project.ts +0 -149
  86. package/src/provenance.ts +0 -69
  87. package/src/query.ts +0 -1354
  88. package/src/queueAdapters.ts +0 -104
  89. package/src/register.mjs +0 -123
  90. package/src/reporter.ts +0 -431
  91. package/src/resolve-loader.mjs +0 -45
  92. package/src/runtime.ts +0 -656
  93. package/src/transport.ts +0 -132
  94. package/src/types.ts +0 -412
  95. package/src/vitePlugin.ts +0 -121
  96. package/src/vitest.ts +0 -101
  97. package/src/vitestReporter.ts +0 -72
@@ -0,0 +1,480 @@
1
+ import { backgroundEvidenceDirectory, backgroundEvidencePath, COVERAGE_CARRIER_ENV, COVERAGE_PHASE_HEADER, COVERAGE_SCOPE_HEADER, decodeCoverageCarrier, decodeCoverageScope, encodeCoverageCarrier, encodeCoverageScope, serverEvidenceDirectory, serverEvidencePath, } from "./transport.js";
2
+ const runtimeGlobal = globalThis;
3
+ const isBrowser = !(typeof process !== "undefined" &&
4
+ typeof process.versions?.node === "string");
5
+ const testId = runtimeGlobal.__SUPERCOV_MCDC_TEST_ID__ ?? "unscoped";
6
+ const storageKey = "__supercov_coverage_" + testId;
7
+ const phaseStorageKey = "__supercov_phase";
8
+ const pendingDefaults = new Map();
9
+ function vectorKey(vector) {
10
+ return (vector.values
11
+ .map((value) => (value === null ? "-" : value ? "T" : "F"))
12
+ .join("") +
13
+ ":" +
14
+ (vector.outcome ? "T" : "F"));
15
+ }
16
+ function getFs() {
17
+ if (isBrowser || typeof process === "undefined")
18
+ return undefined;
19
+ try {
20
+ const getBuiltinModule = process.getBuiltinModule;
21
+ return getBuiltinModule?.("node:fs");
22
+ }
23
+ catch {
24
+ return undefined;
25
+ }
26
+ }
27
+ function createState() {
28
+ const state = {
29
+ decisions: new Map(),
30
+ hits: new Set(),
31
+ events: [],
32
+ eventKeys: new Set(),
33
+ };
34
+ if (!isBrowser)
35
+ return state;
36
+ try {
37
+ const stored = JSON.parse(localStorage.getItem(storageKey) ?? "{}");
38
+ for (const snapshot of stored.decisions ?? []) {
39
+ state.decisions.set(snapshot.meta.id, {
40
+ meta: snapshot.meta,
41
+ vectors: new Map(snapshot.vectors.map((vector) => [vectorKey(vector), vector])),
42
+ });
43
+ }
44
+ for (const id of stored.hits ?? [])
45
+ state.hits.add(id);
46
+ for (const event of stored.events ?? []) {
47
+ state.events.push(event);
48
+ state.eventKeys.add(eventKey(event));
49
+ }
50
+ }
51
+ catch {
52
+ // Corrupt or unavailable storage must not affect application execution.
53
+ }
54
+ return state;
55
+ }
56
+ const state = runtimeGlobal.__SUPERCOV_MCDC_STATE__ ?? createState();
57
+ runtimeGlobal.__SUPERCOV_MCDC_STATE__ = state;
58
+ function createServerPhaseStorage() {
59
+ if (isBrowser || typeof process === "undefined")
60
+ return undefined;
61
+ try {
62
+ const getBuiltinModule = process.getBuiltinModule;
63
+ const AsyncLocalStorage = getBuiltinModule?.("node:async_hooks")?.AsyncLocalStorage;
64
+ return AsyncLocalStorage ? new AsyncLocalStorage() : undefined;
65
+ }
66
+ catch {
67
+ return undefined;
68
+ }
69
+ }
70
+ const serverPhaseStorage = runtimeGlobal.__SUPERCOV_SERVER_PHASE_STORAGE__ ??
71
+ createServerPhaseStorage();
72
+ if (serverPhaseStorage)
73
+ runtimeGlobal.__SUPERCOV_SERVER_PHASE_STORAGE__ =
74
+ serverPhaseStorage;
75
+ function decisionSnapshot() {
76
+ return [...state.decisions.values()].map((decision) => ({
77
+ meta: decision.meta,
78
+ vectors: [...decision.vectors.values()],
79
+ }));
80
+ }
81
+ export function coverageSnapshot() {
82
+ return {
83
+ decisions: decisionSnapshot(),
84
+ hits: [...state.hits],
85
+ events: state.events,
86
+ };
87
+ }
88
+ export function resetCoverage(testId) {
89
+ state.decisions.clear();
90
+ state.hits.clear();
91
+ state.events.length = 0;
92
+ state.eventKeys.clear();
93
+ if (testId)
94
+ runtimeGlobal.__SUPERCOV_MCDC_TEST_ID__ = testId;
95
+ if (isBrowser) {
96
+ try {
97
+ localStorage.removeItem(storageKey);
98
+ }
99
+ catch {
100
+ // Storage is optional in test environments.
101
+ }
102
+ }
103
+ }
104
+ runtimeGlobal.__SUPERCOV_MCDC_SNAPSHOT__ = decisionSnapshot;
105
+ runtimeGlobal.__SUPERCOV_COVERAGE_SNAPSHOT__ = coverageSnapshot;
106
+ runtimeGlobal.__SUPERCOV_RESET__ = resetCoverage;
107
+ function persistBrowser() {
108
+ if (!isBrowser)
109
+ return;
110
+ try {
111
+ localStorage.setItem(storageKey, JSON.stringify(coverageSnapshot()));
112
+ }
113
+ catch {
114
+ // Coverage persistence is best-effort and must never change app behavior.
115
+ }
116
+ }
117
+ function appendServer(record) {
118
+ const fs = getFs();
119
+ if (!fs)
120
+ return;
121
+ const context = currentRequestContext();
122
+ const scope = context.scope;
123
+ const runId = scope?.runId ??
124
+ (typeof process !== "undefined"
125
+ ? process.env["SUPERCOV_RUN_ID"]
126
+ : undefined);
127
+ if (!runId)
128
+ return;
129
+ try {
130
+ const directory = scope
131
+ ? serverEvidenceDirectory(scope)
132
+ : backgroundEvidenceDirectory(runId);
133
+ const path = scope
134
+ ? serverEvidencePath(scope)
135
+ : backgroundEvidencePath(runId);
136
+ fs.mkdirSync(directory, { recursive: true });
137
+ fs.appendFileSync(path, JSON.stringify({ ...record, ...(scope ? { scope } : {}) }) + "\n");
138
+ }
139
+ catch {
140
+ // The instrumented build must remain behaviorally identical if collection fails.
141
+ }
142
+ }
143
+ function environmentRequestContext() {
144
+ if (isBrowser || typeof process === "undefined")
145
+ return undefined;
146
+ const carrier = decodeCoverageCarrier(process.env[COVERAGE_CARRIER_ENV]);
147
+ return carrier
148
+ ? {
149
+ ...(carrier.scope ? { scope: carrier.scope } : {}),
150
+ ...(carrier.phaseId ? { phaseId: carrier.phaseId } : {}),
151
+ }
152
+ : undefined;
153
+ }
154
+ function currentRequestContext() {
155
+ return serverPhaseStorage?.getStore() ?? environmentRequestContext() ?? {};
156
+ }
157
+ export function coverageCarrier() {
158
+ const context = currentRequestContext();
159
+ return {
160
+ version: 1,
161
+ ...(context.scope ? { scope: context.scope } : {}),
162
+ ...(context.phaseId ? { phaseId: context.phaseId } : {}),
163
+ };
164
+ }
165
+ export function withCoverageCarrier(carrier, callback) {
166
+ const decoded = typeof carrier === "string" ? decodeCoverageCarrier(carrier) : carrier;
167
+ if (!serverPhaseStorage || !decoded)
168
+ return callback();
169
+ return serverPhaseStorage.run({
170
+ ...(decoded.scope ? { scope: decoded.scope } : {}),
171
+ ...(decoded.phaseId ? { phaseId: decoded.phaseId } : {}),
172
+ }, callback);
173
+ }
174
+ export function bindCoverageContext(callback, carrier = coverageCarrier()) {
175
+ return function boundCoverageContext(...args) {
176
+ return withCoverageCarrier(carrier, () => Reflect.apply(callback, this, args));
177
+ };
178
+ }
179
+ export function coverageContextHeaders() {
180
+ const context = currentRequestContext();
181
+ if (!context.scope)
182
+ return {};
183
+ return {
184
+ [COVERAGE_SCOPE_HEADER]: encodeCoverageScope(context.scope),
185
+ ...(context.phaseId
186
+ ? { [COVERAGE_PHASE_HEADER]: context.phaseId }
187
+ : {}),
188
+ };
189
+ }
190
+ export function coverageContextEnvironment() {
191
+ return { [COVERAGE_CARRIER_ENV]: encodeCoverageCarrier(coverageCarrier()) };
192
+ }
193
+ function installServerFetchPropagation() {
194
+ if (isBrowser ||
195
+ runtimeGlobal.__SUPERCOV_FETCH_PATCHED__ ||
196
+ typeof globalThis.fetch !== "function")
197
+ return;
198
+ const originalFetch = globalThis.fetch.bind(globalThis);
199
+ globalThis.fetch = ((input, init) => {
200
+ const coverage = coverageContextHeaders();
201
+ if (Object.keys(coverage).length === 0)
202
+ return originalFetch(input, init);
203
+ const headers = new Headers(init?.headers ?? (input instanceof Request ? input.headers : undefined));
204
+ for (const [name, value] of Object.entries(coverage))
205
+ headers.set(name, value);
206
+ return originalFetch(input, { ...init, headers });
207
+ });
208
+ runtimeGlobal.__SUPERCOV_FETCH_PATCHED__ = true;
209
+ }
210
+ installServerFetchPropagation();
211
+ function installServerChildPropagation() {
212
+ if (isBrowser ||
213
+ runtimeGlobal.__SUPERCOV_CHILD_PATCHED__ ||
214
+ typeof process === "undefined")
215
+ return;
216
+ const getBuiltinModule = process.getBuiltinModule;
217
+ const child = getBuiltinModule?.("node:child_process");
218
+ if (!child)
219
+ return;
220
+ const mutableChild = child;
221
+ const optionIndex = (method, args) => {
222
+ if (method === "spawn" ||
223
+ method === "spawnSync" ||
224
+ method === "fork" ||
225
+ method === "execFile" ||
226
+ method === "execFileSync")
227
+ return Array.isArray(args[1]) ? 2 : 1;
228
+ return 1;
229
+ };
230
+ for (const method of [
231
+ "exec",
232
+ "execFile",
233
+ "execFileSync",
234
+ "execSync",
235
+ "fork",
236
+ "spawn",
237
+ "spawnSync",
238
+ ]) {
239
+ const original = mutableChild[method];
240
+ if (typeof original !== "function")
241
+ continue;
242
+ mutableChild[method] = function (...args) {
243
+ const index = optionIndex(method, args);
244
+ const existing = args[index] && typeof args[index] === "object"
245
+ ? args[index]
246
+ : {};
247
+ const options = {
248
+ ...existing,
249
+ env: {
250
+ ...process.env,
251
+ ...(existing.env ?? {}),
252
+ ...coverageContextEnvironment(),
253
+ },
254
+ };
255
+ const scoped = [...args];
256
+ if (typeof scoped[index] === "function")
257
+ scoped.splice(index, 0, options);
258
+ else
259
+ scoped[index] = options;
260
+ return Reflect.apply(original, child, scoped);
261
+ };
262
+ }
263
+ const moduleBuiltin = getBuiltinModule?.("node:module");
264
+ moduleBuiltin?.syncBuiltinESMExports?.();
265
+ runtimeGlobal.__SUPERCOV_CHILD_PATCHED__ = true;
266
+ }
267
+ installServerChildPropagation();
268
+ function currentPhaseId() {
269
+ if (runtimeGlobal.__SUPERCOV_PHASE_ID__)
270
+ return runtimeGlobal.__SUPERCOV_PHASE_ID__;
271
+ if (!isBrowser)
272
+ return currentRequestContext().phaseId;
273
+ try {
274
+ const local = localStorage.getItem(phaseStorageKey);
275
+ if (local)
276
+ return local;
277
+ return undefined;
278
+ }
279
+ catch {
280
+ return undefined;
281
+ }
282
+ }
283
+ function requestHeaders(value) {
284
+ if (!value || typeof value !== "object")
285
+ return undefined;
286
+ const directHeaders = value.headers;
287
+ const request = directHeaders && typeof directHeaders === "object"
288
+ ? value
289
+ : value.request;
290
+ if (!request || typeof request !== "object")
291
+ return undefined;
292
+ const headers = request.headers;
293
+ if (!headers || typeof headers !== "object")
294
+ return undefined;
295
+ const get = headers.get;
296
+ if (typeof get === "function")
297
+ return {
298
+ get(name) {
299
+ return Reflect.apply(get, headers, [name]);
300
+ },
301
+ };
302
+ const values = headers;
303
+ return Object.keys(values).length > 0
304
+ ? {
305
+ get(name) {
306
+ return values[name] ?? values[name.toLowerCase()];
307
+ },
308
+ }
309
+ : undefined;
310
+ }
311
+ function requestCoverageContext(value) {
312
+ const headers = requestHeaders(value);
313
+ if (!headers)
314
+ return {};
315
+ const encodedScope = headers.get(COVERAGE_SCOPE_HEADER);
316
+ const rawPhaseId = headers.get(COVERAGE_PHASE_HEADER);
317
+ const scope = decodeCoverageScope(typeof encodedScope === "string" ? encodedScope : undefined);
318
+ const phaseId = typeof rawPhaseId === "string" && rawPhaseId.length > 0
319
+ ? rawPhaseId
320
+ : undefined;
321
+ return {
322
+ ...(scope ? { scope } : {}),
323
+ ...(phaseId ? { phaseId } : {}),
324
+ };
325
+ }
326
+ export function withRequestPhase(handler) {
327
+ if (!serverPhaseStorage)
328
+ return handler;
329
+ return function coverageRequestPhase(...args) {
330
+ const requestContext = args
331
+ .map((argument) => requestCoverageContext(argument))
332
+ .find((context) => context.scope || context.phaseId) ?? {};
333
+ const inheritedContext = currentRequestContext();
334
+ const context = {
335
+ ...(requestContext.scope ?? inheritedContext.scope
336
+ ? { scope: requestContext.scope ?? inheritedContext.scope }
337
+ : {}),
338
+ ...(requestContext.phaseId ?? inheritedContext.phaseId
339
+ ? { phaseId: requestContext.phaseId ?? inheritedContext.phaseId }
340
+ : {}),
341
+ };
342
+ const invoke = () => Reflect.apply(handler, this, args);
343
+ return context.scope || context.phaseId
344
+ ? serverPhaseStorage.run(context, invoke)
345
+ : invoke();
346
+ };
347
+ }
348
+ function eventKey(event) {
349
+ const suffix = event.type === "decision"
350
+ ? `${event.id}:${vectorKey(event.vector)}`
351
+ : event.id;
352
+ return `${event.phaseId ?? "unscoped"}:${event.type}:${suffix}`;
353
+ }
354
+ function recordBrowserEvent(event) {
355
+ const key = eventKey(event);
356
+ if (state.eventKeys.has(key))
357
+ return false;
358
+ state.eventKeys.add(key);
359
+ state.events.push(event);
360
+ return true;
361
+ }
362
+ export function coverageHit(id) {
363
+ state.hits.add(id);
364
+ const timestampMs = Date.now();
365
+ const phaseId = currentPhaseId();
366
+ if (isBrowser) {
367
+ if (recordBrowserEvent({
368
+ type: "hit",
369
+ id,
370
+ timestampMs,
371
+ ...(phaseId ? { phaseId } : {}),
372
+ environment: "browser",
373
+ }))
374
+ persistBrowser();
375
+ }
376
+ else {
377
+ // The server process cannot directly see the browser's active phase.
378
+ // Keep repeated executions and correlate them to phase time windows in
379
+ // the analyzer; global first-hit de-duplication would lose later actions.
380
+ appendServer({
381
+ type: "hit",
382
+ id,
383
+ timestampMs,
384
+ ...(phaseId ? { phaseId } : {}),
385
+ });
386
+ }
387
+ }
388
+ export function selectionBegin(shortId, rightId) {
389
+ return { shortId, rightId, rightEvaluated: false };
390
+ }
391
+ export function selectionRight(frame, value) {
392
+ frame.rightEvaluated = true;
393
+ return value;
394
+ }
395
+ export function selectionEnd(frame, value) {
396
+ coverageHit(frame.rightEvaluated ? frame.rightId : frame.shortId);
397
+ return value;
398
+ }
399
+ export function optionalSelect(shortId, continuedId, value) {
400
+ coverageHit(value === null || value === undefined ? shortId : continuedId);
401
+ return value;
402
+ }
403
+ export function defaultSelected(defaultId, value) {
404
+ pendingDefaults.set(defaultId, (pendingDefaults.get(defaultId) ?? 0) + 1);
405
+ return value;
406
+ }
407
+ export function defaultEntered(defaultId, providedId) {
408
+ const pending = pendingDefaults.get(defaultId) ?? 0;
409
+ if (pending > 0) {
410
+ pendingDefaults.set(defaultId, pending - 1);
411
+ coverageHit(defaultId);
412
+ }
413
+ else {
414
+ coverageHit(providedId);
415
+ }
416
+ }
417
+ export function tryBegin(successId, catchId) {
418
+ return { successId, catchId, caught: false };
419
+ }
420
+ export function tryCatch(frame, value) {
421
+ frame.caught = true;
422
+ return value;
423
+ }
424
+ export function tryEnd(frame) {
425
+ coverageHit(frame.caught ? frame.catchId : frame.successId);
426
+ }
427
+ export function loopBegin(zeroId, enteredId) {
428
+ return { zeroId, enteredId, entered: false };
429
+ }
430
+ export function loopEntered(frame) {
431
+ frame.entered = true;
432
+ }
433
+ export function loopEnd(frame) {
434
+ coverageHit(frame.entered ? frame.enteredId : frame.zeroId);
435
+ }
436
+ export function mcdcBegin(id, meta) {
437
+ if (!state.decisions.has(id)) {
438
+ state.decisions.set(id, { meta, vectors: new Map() });
439
+ }
440
+ return {
441
+ meta,
442
+ values: Array.from({ length: meta.conditions.length }, () => null),
443
+ };
444
+ }
445
+ export function mcdcCondition(frame, index, value) {
446
+ frame.values[index] = Boolean(value);
447
+ return value;
448
+ }
449
+ export function mcdcEnd(frame, value) {
450
+ const decision = state.decisions.get(frame.meta.id);
451
+ if (!decision)
452
+ return value;
453
+ const vector = { values: frame.values, outcome: Boolean(value) };
454
+ const key = vectorKey(vector);
455
+ decision.vectors.set(key, vector);
456
+ const timestampMs = Date.now();
457
+ const phaseId = currentPhaseId();
458
+ if (isBrowser) {
459
+ if (recordBrowserEvent({
460
+ type: "decision",
461
+ id: decision.meta.id,
462
+ vector,
463
+ timestampMs,
464
+ ...(phaseId ? { phaseId } : {}),
465
+ environment: "browser",
466
+ }))
467
+ persistBrowser();
468
+ }
469
+ else {
470
+ appendServer({
471
+ type: "decision",
472
+ meta: decision.meta,
473
+ vector,
474
+ timestampMs,
475
+ ...(phaseId ? { phaseId } : {}),
476
+ });
477
+ }
478
+ return value;
479
+ }
480
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { CoverageCarrier, CoverageExecutionScope } from "./types.ts";
2
+ export declare const COVERAGE_SCOPE_HEADER = "x-supercov-scope";
3
+ export declare const COVERAGE_PHASE_HEADER = "x-supercov-phase";
4
+ export declare const COVERAGE_CARRIER_ENV = "SUPERCOV_CONTEXT";
5
+ export declare const DEFAULT_SERVER_EVIDENCE_ROOT = "/tmp/supercov-server-evidence";
6
+ export declare function encodeCoverageScope(scope: CoverageExecutionScope): string;
7
+ export declare function decodeCoverageScope(encoded: string | undefined): CoverageExecutionScope | undefined;
8
+ export declare function encodeCoverageCarrier(carrier: CoverageCarrier): string;
9
+ export declare function decodeCoverageCarrier(encoded: string | undefined): CoverageCarrier | undefined;
10
+ export declare function serverRunEvidenceDirectory(runId: string, root?: string): string;
11
+ export declare function serverEvidenceDirectory(scope: CoverageExecutionScope, root?: string): string;
12
+ export declare function serverEvidencePath(scope: CoverageExecutionScope, root?: string): string;
13
+ export declare function backgroundEvidenceDirectory(runId: string, root?: string): string;
14
+ export declare function backgroundEvidencePath(runId: string, processId?: string, root?: string): string;
15
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE1E,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,4BAA4B,kCACR,CAAC;AAelC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAUzE;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,sBAAsB,GAAG,SAAS,CAmCpC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAEtE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,eAAe,GAAG,SAAS,CAiB7B;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,IAAI,SAA+B,GAClC,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,sBAAsB,EAC7B,IAAI,SAA+B,GAClC,MAAM,CAER;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,IAAI,SAA+B,GAClC,MAAM,CAER;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,IAAI,SAA+B,GAClC,MAAM,CAER;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,SAAmE,EAC5E,IAAI,SAA+B,GAClC,MAAM,CAER"}
@@ -0,0 +1,100 @@
1
+ export const COVERAGE_SCOPE_HEADER = "x-supercov-scope";
2
+ export const COVERAGE_PHASE_HEADER = "x-supercov-phase";
3
+ export const COVERAGE_CARRIER_ENV = "SUPERCOV_CONTEXT";
4
+ export const DEFAULT_SERVER_EVIDENCE_ROOT = "/tmp/supercov-server-evidence";
5
+ function nonEmpty(value) {
6
+ return typeof value === "string" && value.length > 0;
7
+ }
8
+ function safeKey(value) {
9
+ return /^[a-zA-Z0-9_-]+$/.test(value);
10
+ }
11
+ function pathComponent(value) {
12
+ const safe = value.replace(/[^a-zA-Z0-9_-]/g, "_");
13
+ return safe || "unscoped";
14
+ }
15
+ export function encodeCoverageScope(scope) {
16
+ return new URLSearchParams({
17
+ v: String(scope.version),
18
+ r: scope.runId,
19
+ w: scope.workerId,
20
+ t: scope.testId,
21
+ k: scope.testKey,
22
+ a: String(scope.retry),
23
+ i: scope.attemptId,
24
+ }).toString();
25
+ }
26
+ export function decodeCoverageScope(encoded) {
27
+ if (!encoded)
28
+ return undefined;
29
+ try {
30
+ const values = new URLSearchParams(encoded);
31
+ const runId = values.get("r");
32
+ const workerId = values.get("w");
33
+ const testId = values.get("t");
34
+ const testKey = values.get("k");
35
+ const attemptId = values.get("i");
36
+ const retry = Number(values.get("a"));
37
+ if (values.get("v") !== "1" ||
38
+ !nonEmpty(runId) ||
39
+ !nonEmpty(workerId) ||
40
+ !nonEmpty(testId) ||
41
+ !nonEmpty(testKey) ||
42
+ !safeKey(testKey) ||
43
+ !nonEmpty(attemptId) ||
44
+ !safeKey(attemptId) ||
45
+ !Number.isSafeInteger(retry) ||
46
+ retry < 0)
47
+ return undefined;
48
+ return {
49
+ version: 1,
50
+ runId,
51
+ workerId,
52
+ testId,
53
+ testKey,
54
+ retry,
55
+ attemptId,
56
+ };
57
+ }
58
+ catch {
59
+ return undefined;
60
+ }
61
+ }
62
+ export function encodeCoverageCarrier(carrier) {
63
+ return Buffer.from(JSON.stringify(carrier), "utf8").toString("base64url");
64
+ }
65
+ export function decodeCoverageCarrier(encoded) {
66
+ if (!encoded)
67
+ return undefined;
68
+ try {
69
+ const value = JSON.parse(Buffer.from(encoded, "base64url").toString("utf8"));
70
+ if (value.version !== 1)
71
+ return undefined;
72
+ if (value.scope) {
73
+ const roundTrip = decodeCoverageScope(encodeCoverageScope(value.scope));
74
+ if (!roundTrip)
75
+ return undefined;
76
+ }
77
+ if (value.phaseId !== undefined && value.phaseId.length === 0)
78
+ return undefined;
79
+ return value;
80
+ }
81
+ catch {
82
+ return undefined;
83
+ }
84
+ }
85
+ export function serverRunEvidenceDirectory(runId, root = DEFAULT_SERVER_EVIDENCE_ROOT) {
86
+ return `${root.replace(/\/+$/, "")}/${pathComponent(runId)}`;
87
+ }
88
+ export function serverEvidenceDirectory(scope, root = DEFAULT_SERVER_EVIDENCE_ROOT) {
89
+ return `${serverRunEvidenceDirectory(scope.runId, root)}/${pathComponent(scope.workerId)}/${scope.testKey}/${scope.retry}`;
90
+ }
91
+ export function serverEvidencePath(scope, root = DEFAULT_SERVER_EVIDENCE_ROOT) {
92
+ return `${serverEvidenceDirectory(scope, root)}/server.jsonl`;
93
+ }
94
+ export function backgroundEvidenceDirectory(runId, root = DEFAULT_SERVER_EVIDENCE_ROOT) {
95
+ return `${serverRunEvidenceDirectory(runId, root)}/background`;
96
+ }
97
+ export function backgroundEvidencePath(runId, processId = typeof process === "undefined" ? "unknown" : String(process.pid), root = DEFAULT_SERVER_EVIDENCE_ROOT) {
98
+ return `${backgroundEvidenceDirectory(runId, root)}/${pathComponent(processId)}.jsonl`;
99
+ }
100
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}