@gate-forge/witness 0.12.0 → 0.13.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.
Files changed (41) hide show
  1. package/dist/client/witness-client.d.ts +10 -1
  2. package/dist/client/witness-client.d.ts.map +1 -1
  3. package/dist/client/witness-client.js +11 -3
  4. package/dist/client/witness-client.js.map +1 -1
  5. package/dist/constants.d.ts +15 -0
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +21 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/witness/api-settlement.d.ts +88 -0
  10. package/dist/witness/api-settlement.d.ts.map +1 -0
  11. package/dist/witness/api-settlement.js +160 -0
  12. package/dist/witness/api-settlement.js.map +1 -0
  13. package/dist/witness/browser.d.ts +14 -3
  14. package/dist/witness/browser.d.ts.map +1 -1
  15. package/dist/witness/browser.js +208 -2
  16. package/dist/witness/browser.js.map +1 -1
  17. package/dist/witness/classifications.d.ts +4 -6
  18. package/dist/witness/classifications.d.ts.map +1 -1
  19. package/dist/witness/classifications.js.map +1 -1
  20. package/dist/witness/page-live-channels.d.ts +46 -0
  21. package/dist/witness/page-live-channels.d.ts.map +1 -0
  22. package/dist/witness/page-live-channels.js +68 -0
  23. package/dist/witness/page-live-channels.js.map +1 -0
  24. package/dist/witness/page-observation.d.ts +108 -0
  25. package/dist/witness/page-observation.d.ts.map +1 -0
  26. package/dist/witness/page-observation.js +134 -0
  27. package/dist/witness/page-observation.js.map +1 -0
  28. package/dist/witness/page-observer-registration.d.ts +86 -0
  29. package/dist/witness/page-observer-registration.d.ts.map +1 -0
  30. package/dist/witness/page-observer-registration.js +258 -0
  31. package/dist/witness/page-observer-registration.js.map +1 -0
  32. package/dist/witness/page-observer.d.ts +20 -0
  33. package/dist/witness/page-observer.d.ts.map +1 -0
  34. package/dist/witness/page-observer.js +520 -0
  35. package/dist/witness/page-observer.js.map +1 -0
  36. package/dist/witness/server.d.ts.map +1 -1
  37. package/dist/witness/server.js +201 -1
  38. package/dist/witness/server.js.map +1 -1
  39. package/dist/witness/types.d.ts +82 -0
  40. package/dist/witness/types.d.ts.map +1 -1
  41. package/package.json +2 -2
@@ -0,0 +1,520 @@
1
+ import { apiRequestsSettled, gradePageVisit, } from './page-observation.js';
2
+ import { trackPageApiSettlement } from './api-settlement.js';
3
+ import { LiveChannelTracker, appHostsOfOrigins, liveChannelSnapshot } from './page-live-channels.js';
4
+ import { ENGINE_PAGE_VISIT_ADDRESS_TIMEOUT_MS, ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS, } from '../constants.js';
5
+ /** The request resource types that carry application data exchanges. */
6
+ const API_RESOURCE_TYPES = { fetch: true, xhr: true };
7
+ /** Same-document navigation check (hash-only changes never close a window). */
8
+ function sameWindowUrl(previous, next) {
9
+ try {
10
+ const before = new URL(previous);
11
+ const after = new URL(next);
12
+ return before.origin === after.origin && before.pathname === after.pathname && before.search === after.search;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ /** The correlation key of one app data request (method + full URL). */
19
+ function apiExchangeKey(method, url) {
20
+ return `${method} ${url}`;
21
+ }
22
+ /** Case-insensitive response header value; null when absent. */
23
+ function headerValue(headers, wanted) {
24
+ for (const [name, value] of Object.entries(headers)) {
25
+ if (name.toLowerCase() === wanted)
26
+ return value;
27
+ }
28
+ return null;
29
+ }
30
+ /**
31
+ * Counts this window's still-outstanding Playwright requests that the
32
+ * CDP completion session proves done. Per key (method + full URL) the
33
+ * upgrade requires the CDP session to have seen AT LEAST as many
34
+ * requestWillBeSent events as Playwright saw requests (a late attach or
35
+ * a session that never opened saw fewer and upgrades nothing — fail
36
+ * closed, never a false settle) AND at least as many completed
37
+ * exchanges (loadingFinished, or every declared Content-Length byte
38
+ * received) as Playwright requests of that key it has not finished.
39
+ */
40
+ function cdpSettledCount(window) {
41
+ const outstandingByKey = new Map();
42
+ for (const request of window.outstanding) {
43
+ const key = apiExchangeKey(request.method(), request.url());
44
+ outstandingByKey.set(key, (outstandingByKey.get(key) ?? 0) + 1);
45
+ }
46
+ let settled = 0;
47
+ for (const [key, count] of outstandingByKey) {
48
+ if ((window.cdpSends.get(key) ?? 0) < (window.playwrightOpens.get(key) ?? 0))
49
+ continue;
50
+ const unfinished = (window.playwrightOpens.get(key) ?? 0) - (window.playwrightFinished.get(key) ?? 0);
51
+ if ((window.cdpCompletes.get(key) ?? 0) >= unfinished)
52
+ settled += count;
53
+ }
54
+ return settled;
55
+ }
56
+ /** Attach the witness's independent Playwright/CDP client to an existing browser. */
57
+ export async function observePageBrowser(options) {
58
+ if (!Number.isInteger(options.debuggingPort) || options.debuggingPort < 1 || options.debuggingPort > 65535) {
59
+ throw new RangeError('debuggingPort must be a TCP port number');
60
+ }
61
+ // Dynamic import is REQUIRED here: Playwright is an optional peer that may
62
+ // not be installed at all (TYPE-ONLY contract, see browser.ts) — a static
63
+ // import would crash every witness start without a browser. Load it only
64
+ // when a browser observation is requested.
65
+ const { chromium } = await import('playwright');
66
+ const browser = await chromium.connectOverCDP(`http://127.0.0.1:${options.debuggingPort}`);
67
+ const states = new Map();
68
+ const contextsWatched = new Set();
69
+ let closed = false;
70
+ const isAppOrigin = (url) => {
71
+ try {
72
+ return options.appOrigins.includes(new URL(url).origin);
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ };
78
+ const live = new LiveChannelTracker(options.liveChannels ?? [], appHostsOfOrigins(options.appOrigins));
79
+ const tryParseUrl = (raw) => {
80
+ try {
81
+ return new URL(raw);
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ };
87
+ /** The app data exchange URL of a network event, or null when irrelevant. */
88
+ const apiExchangeUrl = (raw, resourceType) => {
89
+ try {
90
+ const url = new URL(raw);
91
+ return isAppOrigin(url.href) &&
92
+ (url.pathname.startsWith('/api/') || API_RESOURCE_TYPES[resourceType] === true)
93
+ ? url
94
+ : null;
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ };
100
+ const settle = (state) => {
101
+ if (closed)
102
+ return;
103
+ clearTimeout(state.settleTimer);
104
+ state.settleResolve?.();
105
+ const generation = ++state.generation;
106
+ let resolveSettlement;
107
+ let rejectSettlement;
108
+ const settlement = new Promise((resolve, reject) => {
109
+ resolveSettlement = resolve;
110
+ rejectSettlement = reject;
111
+ });
112
+ void settlement.catch(() => undefined);
113
+ state.settlePromise = settlement;
114
+ state.settleResolve = resolveSettlement;
115
+ state.settleTimer = setTimeout(() => {
116
+ state.settleTimer = undefined;
117
+ void (async () => {
118
+ if (closed || state.generation !== generation || state.page.url() === 'about:blank')
119
+ return;
120
+ const window = state.window;
121
+ // Wait for in-flight app data requests, bounded (fail closed on
122
+ // hang). A request the CDP completion session proves done (unread
123
+ // Content-Length body the browser finished) no longer holds the
124
+ // window — see cdpSettledCount.
125
+ const deadline = Date.now() + ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS;
126
+ while (window.outstanding.size - cdpSettledCount(window) > 0) {
127
+ if (closed || state.generation !== generation)
128
+ return;
129
+ const remaining = deadline - Date.now();
130
+ if (remaining <= 0)
131
+ break;
132
+ const notified = new Promise((resolve) => { window.settleNotify = resolve; });
133
+ if (window.outstanding.size === 0)
134
+ break;
135
+ let timer;
136
+ try {
137
+ await Promise.race([
138
+ notified,
139
+ new Promise((resolve) => { timer = setTimeout(() => resolve(null), remaining); }),
140
+ ]);
141
+ }
142
+ finally {
143
+ clearTimeout(timer);
144
+ }
145
+ }
146
+ if (closed || state.generation !== generation)
147
+ return;
148
+ // Bounded response collections (address lookups) land before grading,
149
+ // so no emission ever grades before its responses were collected.
150
+ while (window.pendingResponses.size > 0) {
151
+ if (closed || state.generation !== generation)
152
+ return;
153
+ await Promise.all([...window.pendingResponses]);
154
+ }
155
+ if (closed || state.generation !== generation)
156
+ return;
157
+ let url = state.page.url();
158
+ let domMarkerHit = false;
159
+ try {
160
+ const text = await state.page.locator('body').innerText({ timeout: 1_000 });
161
+ domMarkerHit = options.errorMarkers.some((marker) => text.includes(marker));
162
+ url = state.page.url();
163
+ // Proof bookkeeping: record the REAL reading so a later salvage
164
+ // carries an actually observed DOM state instead of a guess.
165
+ window.domMarkerHit = domMarkerHit;
166
+ window.domGraded = true;
167
+ }
168
+ catch {
169
+ // A destroyed/closing page has no readable settled DOM; page errors remain in the record.
170
+ }
171
+ if (closed || state.generation !== generation)
172
+ return;
173
+ const visit = {
174
+ url,
175
+ navigations: [...window.navigations],
176
+ exceptions: [...window.exceptions],
177
+ domMarkerHit,
178
+ apiResponses: [...window.apiResponses],
179
+ apiRequestsSettled: apiRequestsSettled({
180
+ outstandingCount: Math.max(0, window.outstanding.size - cdpSettledCount(window)),
181
+ failures: window.failedRequests,
182
+ completions: window.completedRequests,
183
+ }),
184
+ liveChannels: liveChannelSnapshot(window.liveChannels),
185
+ };
186
+ // Evidence is NOT cleared: repeated quiet emissions of the SAME
187
+ // navigation preserve earlier errors and API statuses; only a new
188
+ // navigation boundary opens a fresh window.
189
+ const verdict = gradePageVisit({ pages: options.pages, loginRoutes: options.loginRoutes, visit });
190
+ await options.onVisit(visit, verdict);
191
+ window.emitted = true;
192
+ window.dirty = false;
193
+ })().then(resolveSettlement, rejectSettlement).finally(() => {
194
+ if (state.generation === generation) {
195
+ state.settlePromise = undefined;
196
+ state.settleResolve = undefined;
197
+ }
198
+ });
199
+ }, options.quietMs ?? 300);
200
+ };
201
+ /**
202
+ * Salvages a window a navigation boundary closed before its quiet
203
+ * emission carried everything: emits the accumulated evidence as-is
204
+ * (requests still outstanding count as unsettled — fail closed). The
205
+ * document is already replaced, so its error markers cannot be re-read;
206
+ * the salvage carries the window's last REAL DOM reading instead.
207
+ */
208
+ const finalizeWindow = (state, window) => {
209
+ if (!window.dirty)
210
+ return; // every observation of this window was emitted
211
+ // Fail closed: without a settled DOM marker read there is no honest
212
+ // loads proof to mint for this document, so the window is not salvaged
213
+ // at all — a missing record can never satisfy an obligation.
214
+ if (!window.domGraded)
215
+ return;
216
+ const finished = (async () => {
217
+ while (window.pendingResponses.size > 0) {
218
+ await Promise.all([...window.pendingResponses]);
219
+ }
220
+ const visit = {
221
+ url: window.url,
222
+ navigations: [...window.navigations],
223
+ exceptions: [...window.exceptions],
224
+ // The last actually observed DOM state of the replaced document —
225
+ // never a fabricated clean reading.
226
+ domMarkerHit: window.domMarkerHit,
227
+ apiResponses: [...window.apiResponses],
228
+ apiRequestsSettled: apiRequestsSettled({
229
+ outstandingCount: Math.max(0, window.outstanding.size - cdpSettledCount(window)),
230
+ failures: window.failedRequests,
231
+ completions: window.completedRequests,
232
+ }),
233
+ liveChannels: liveChannelSnapshot(window.liveChannels),
234
+ };
235
+ const verdict = gradePageVisit({ pages: options.pages, loginRoutes: options.loginRoutes, visit });
236
+ await options.onVisit(visit, verdict);
237
+ })();
238
+ state.pendingFinalizations.add(finished);
239
+ void finished.then(() => state.pendingFinalizations.delete(finished), () => state.pendingFinalizations.delete(finished));
240
+ };
241
+ const flush = async () => {
242
+ for (;;) {
243
+ const pending = [...states.values()].flatMap((state) => [
244
+ ...(state.settlePromise === undefined ? [] : [state.settlePromise]),
245
+ ...state.window.pendingResponses,
246
+ ...state.pendingFinalizations,
247
+ ]);
248
+ if (pending.length === 0)
249
+ return;
250
+ await Promise.all(pending);
251
+ }
252
+ };
253
+ const watch = (page) => {
254
+ if (states.has(page))
255
+ return;
256
+ const state = {
257
+ page,
258
+ window: {
259
+ url: page.url(),
260
+ navigations: [],
261
+ exceptions: [],
262
+ apiResponses: [],
263
+ outstanding: new Set(),
264
+ settleNotify: undefined,
265
+ failedRequests: [],
266
+ completedRequests: [],
267
+ liveChannels: new Set(),
268
+ playwrightOpens: new Map(),
269
+ playwrightFinished: new Map(),
270
+ cdpSends: new Map(),
271
+ cdpCompletes: new Map(),
272
+ pendingResponses: new Set(),
273
+ domMarkerHit: false,
274
+ domGraded: false,
275
+ emitted: false,
276
+ dirty: false,
277
+ },
278
+ settleTimer: undefined,
279
+ settlePromise: undefined,
280
+ settleResolve: undefined,
281
+ requestWindows: new Map(),
282
+ cdp: undefined,
283
+ pendingFinalizations: new Set(),
284
+ generation: 0,
285
+ };
286
+ states.set(page, state);
287
+ // Extra COMPLETION signal only: a per-page CDP session shares the
288
+ // browser's own network events with the Playwright request ledger. The
289
+ // shared settlement rule (loadingFinished, or every declared
290
+ // Content-Length byte received) upgrades an unread body once the
291
+ // browser finished it; correlation is conservative per window and per
292
+ // method+URL (see cdpSettledCount), so a late or failed session can
293
+ // never mint a false settle — it only leaves requests unsettled.
294
+ void trackPageApiSettlement(page, {
295
+ isAppDataExchange: (url, resourceType) => apiExchangeUrl(url.href, resourceType) !== null,
296
+ onExchangeOpen: (exchange) => {
297
+ const window = state.window;
298
+ const key = apiExchangeKey(exchange.method, exchange.url);
299
+ window.cdpSends.set(key, (window.cdpSends.get(key) ?? 0) + 1);
300
+ settle(state);
301
+ },
302
+ onExchangeHeaders: () => settle(state),
303
+ onExchangeSettled: (exchange, settlement) => {
304
+ if (settlement.kind !== 'completed')
305
+ return;
306
+ const window = state.window;
307
+ const key = apiExchangeKey(exchange.method, exchange.url);
308
+ window.cdpCompletes.set(key, (window.cdpCompletes.get(key) ?? 0) + 1);
309
+ if (window.outstanding.size - cdpSettledCount(window) <= 0)
310
+ window.settleNotify?.();
311
+ // Completion lets body-driven JS/DOM/next fetches run; the same
312
+ // quiet window restarts before any emission grades them.
313
+ settle(state);
314
+ },
315
+ onActivity: () => settle(state),
316
+ }).then((tracker) => {
317
+ state.cdp = tracker;
318
+ }).catch(() => undefined);
319
+ page.on('framenavigated', (frame) => {
320
+ if (frame !== page.mainFrame())
321
+ return;
322
+ const url = frame.url();
323
+ const window = state.window;
324
+ if (window.emitted && !sameWindowUrl(window.url, url)) {
325
+ // A genuinely new main-frame navigation after the window has emitted
326
+ // opens a fresh observation window; the old one is finalized so no
327
+ // evidence is lost and requests begun there cannot taint the new page.
328
+ finalizeWindow(state, window);
329
+ state.window = {
330
+ url,
331
+ navigations: [url],
332
+ exceptions: [],
333
+ apiResponses: [],
334
+ outstanding: new Set(),
335
+ settleNotify: undefined,
336
+ failedRequests: [],
337
+ completedRequests: [],
338
+ liveChannels: new Set(),
339
+ playwrightOpens: new Map(),
340
+ playwrightFinished: new Map(),
341
+ cdpSends: new Map(),
342
+ cdpCompletes: new Map(),
343
+ pendingResponses: new Set(),
344
+ domMarkerHit: false,
345
+ domGraded: false,
346
+ emitted: false,
347
+ dirty: true,
348
+ };
349
+ }
350
+ else {
351
+ // Redirect/history chain inside the (still unsettled) window: keep
352
+ // the whole chain so bounce refusals keep working.
353
+ window.navigations.push(url);
354
+ window.url = url;
355
+ window.dirty = true;
356
+ }
357
+ settle(state);
358
+ });
359
+ page.on('pageerror', (error) => {
360
+ const window = state.window;
361
+ window.exceptions.push(error.message);
362
+ window.dirty = true;
363
+ settle(state);
364
+ });
365
+ page.on('websocket', (websocket) => {
366
+ const websocketUrl = tryParseUrl(websocket.url());
367
+ if (websocketUrl === null || !live.isLiveByUrl(websocketUrl))
368
+ return;
369
+ // An app-host WebSocket upgrade is a live channel by protocol: it
370
+ // never holds the settle wait (Playwright never tracks it as a
371
+ // request) and is listed like every other live channel.
372
+ state.window.liveChannels.add(websocketUrl.pathname);
373
+ state.window.dirty = true;
374
+ settle(state);
375
+ });
376
+ page.on('request', (request) => {
377
+ const requestUrl = tryParseUrl(request.url());
378
+ if (requestUrl !== null && live.isLiveByUrl(requestUrl)) {
379
+ // A live channel never holds the settle wait and never grades as
380
+ // app data; the window lists it (its response may never come).
381
+ state.window.liveChannels.add(requestUrl.pathname);
382
+ state.window.dirty = true;
383
+ return;
384
+ }
385
+ if (apiExchangeUrl(request.url(), request.resourceType()) === null)
386
+ return;
387
+ const window = state.window;
388
+ window.outstanding.add(request);
389
+ state.requestWindows.set(request, window);
390
+ const key = apiExchangeKey(request.method(), request.url());
391
+ window.playwrightOpens.set(key, (window.playwrightOpens.get(key) ?? 0) + 1);
392
+ window.dirty = true;
393
+ settle(state);
394
+ });
395
+ page.on('requestfailed', (request) => {
396
+ // The request belongs to the window that captured it at request start,
397
+ // never to whatever navigation is current when the failure lands.
398
+ const window = state.requestWindows.get(request) ?? state.window;
399
+ if (!window.outstanding.delete(request))
400
+ return;
401
+ state.requestWindows.delete(request);
402
+ // A failed app data request can never produce a verifiable response;
403
+ // whether it leaves the window unsettled is decided at grading time
404
+ // (a client-side cancel superseded by a completed same-URL request
405
+ // may still count as settled).
406
+ window.failedRequests.push({ method: request.method(), url: request.url(), errorText: request.failure()?.errorText ?? '' });
407
+ window.dirty = true;
408
+ if (window.outstanding.size === 0)
409
+ window.settleNotify?.();
410
+ settle(state);
411
+ });
412
+ page.on('requestfinished', (request) => {
413
+ // The request lifecycle ends at body completion (or failure), never at
414
+ // response headers: a 200 whose body later dies must stay unsettled.
415
+ const window = state.requestWindows.get(request);
416
+ if (window === undefined)
417
+ return;
418
+ state.requestWindows.delete(request);
419
+ window.outstanding.delete(request);
420
+ const key = apiExchangeKey(request.method(), request.url());
421
+ window.playwrightFinished.set(key, (window.playwrightFinished.get(key) ?? 0) + 1);
422
+ window.completedRequests.push({ method: request.method(), url: request.url() });
423
+ if (window.outstanding.size === 0)
424
+ window.settleNotify?.();
425
+ // Body completion lets body-driven JS/DOM/next fetches run; the same
426
+ // quiet window restarts before any emission grades them.
427
+ settle(state);
428
+ });
429
+ page.on('response', (response) => {
430
+ const url = response.url();
431
+ const responseUrl = tryParseUrl(url);
432
+ if (responseUrl !== null && live.isLiveByUrl(responseUrl)) {
433
+ live.note(responseUrl);
434
+ return;
435
+ }
436
+ if (apiExchangeUrl(url, response.request().resourceType()) === null)
437
+ return;
438
+ // The response belongs to the window that captured its request at
439
+ // request start. Headers only: collect status/address here; the
440
+ // request stays outstanding until requestfinished/requestfailed.
441
+ const window = state.requestWindows.get(response.request()) ?? state.window;
442
+ if (LiveChannelTracker.isEventStream(headerValue(response.headers(), 'content-type'))) {
443
+ // An endless event stream is never a finished app data request:
444
+ // unblock the window and list it instead.
445
+ if (window.outstanding.delete(response.request()))
446
+ state.requestWindows.delete(response.request());
447
+ if (responseUrl !== null)
448
+ window.liveChannels.add(responseUrl.pathname);
449
+ if (window.outstanding.size === 0)
450
+ window.settleNotify?.();
451
+ settle(state);
452
+ return;
453
+ }
454
+ // Abort any in-flight emission so it cannot grade before this response
455
+ // is collected; the quiet window restarts.
456
+ settle(state);
457
+ const pending = (async () => {
458
+ let remoteAddress = null;
459
+ let timeout;
460
+ try {
461
+ remoteAddress = await Promise.race([
462
+ response.serverAddr().then((address) => address?.ipAddress ?? null),
463
+ new Promise((resolve) => {
464
+ timeout = setTimeout(() => resolve(null), ENGINE_PAGE_VISIT_ADDRESS_TIMEOUT_MS);
465
+ }),
466
+ ]);
467
+ }
468
+ catch {
469
+ // Missing address is a refusal, not a reason to lose the observation.
470
+ }
471
+ finally {
472
+ clearTimeout(timeout);
473
+ }
474
+ window.apiResponses.push({
475
+ url,
476
+ status: response.status(),
477
+ remoteAddress,
478
+ proxied: options.isProxiedExchange(url, response.status()),
479
+ });
480
+ window.dirty = true;
481
+ settle(state);
482
+ })();
483
+ window.pendingResponses.add(pending);
484
+ void pending.then(() => window.pendingResponses.delete(pending), () => window.pendingResponses.delete(pending));
485
+ });
486
+ settle(state);
487
+ };
488
+ const discoverPages = () => {
489
+ for (const context of browser.contexts()) {
490
+ if (!contextsWatched.has(context)) {
491
+ contextsWatched.add(context);
492
+ context.on('page', watch);
493
+ }
494
+ for (const page of context.pages())
495
+ watch(page);
496
+ }
497
+ };
498
+ discoverPages();
499
+ const discoveryTimer = setInterval(discoverPages, 100);
500
+ return {
501
+ flush,
502
+ async close() {
503
+ if (closed)
504
+ return;
505
+ clearInterval(discoveryTimer);
506
+ try {
507
+ await flush();
508
+ }
509
+ finally {
510
+ closed = true;
511
+ for (const state of states.values()) {
512
+ clearTimeout(state.settleTimer);
513
+ await state.cdp?.detach();
514
+ }
515
+ await browser.close();
516
+ }
517
+ },
518
+ };
519
+ }
520
+ //# sourceMappingURL=page-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-observer.js","sourceRoot":"","sources":["../../src/witness/page-observer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/witness/server.ts"],"names":[],"mappings":"AA0JA,OAAO,EAWL,UAAU,EASX,MAAM,kBAAkB,CAAC;AAqC1B,OAAO,KAAK,EA8CV,aAAa,EACb,cAAc,EACf,MAAM,YAAY,CAAC;AA4KpB,uDAAuD;AACvD,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAuzBD;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,CAAC;AA4DtB;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA4LlF;AAi0JD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/witness/server.ts"],"names":[],"mappings":"AA0JA,OAAO,EAWL,UAAU,EASX,MAAM,kBAAkB,CAAC;AAsC1B,OAAO,KAAK,EAkDV,aAAa,EACb,cAAc,EACf,MAAM,YAAY,CAAC;AA4KpB,uDAAuD;AACvD,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AA+0BD;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,CAAC;AA4DtB;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA+LlF;AAkgKD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}