@substrat-run/vertical-host 0.148.0 → 0.150.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.
- package/dist/index.d.ts +14 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +115 -13
- package/dist/index.js.map +1 -1
- package/dist/invocation-log.d.ts +39 -1
- package/dist/invocation-log.d.ts.map +1 -1
- package/dist/invocation-log.js +148 -10
- package/dist/invocation-log.js.map +1 -1
- package/dist/outbound-calls.d.ts +94 -0
- package/dist/outbound-calls.d.ts.map +1 -0
- package/dist/outbound-calls.js +282 -0
- package/dist/outbound-calls.js.map +1 -0
- package/dist/peer-client.d.ts.map +1 -1
- package/dist/peer-client.js +6 -2
- package/dist/peer-client.js.map +1 -1
- package/dist/upload-link.d.ts +22 -9
- package/dist/upload-link.d.ts.map +1 -1
- package/dist/upload-link.js +42 -24
- package/dist/upload-link.js.map +1 -1
- package/package.json +7 -7
package/dist/invocation-log.js
CHANGED
|
@@ -57,9 +57,11 @@
|
|
|
57
57
|
// The subpath, not the root: this module is bundled into every vertical's upload (the
|
|
58
58
|
// platform entry, #1893), and the root carries every schema in the vocabulary.
|
|
59
59
|
// The same holds for the kernel, whose two zero-import subpaths this reaches it through.
|
|
60
|
-
import { encodeInvocationRecord, FIELD_COVERAGE_HEADER, INVOCATION_RECORD_HEADER, invocationLevelOf, REQUEST_ID_HEADER, } from '@substrat-run/contracts/invocation-record';
|
|
60
|
+
import { encodeInvocationRecord, FIELD_COVERAGE_HEADER, INVOCATION_RECORD_HEADER, invocationLevelOf, parentRequestIdOf, REQUEST_ID_HEADER, } from '@substrat-run/contracts/invocation-record';
|
|
61
|
+
import { forgetTraceStart, installedTraceSink, markTraceStart } from '@substrat-run/contracts/trace-sink';
|
|
61
62
|
import { invocationLine, STORE_CALL_LOG_CAP, STORE_CALL_SINK_KEY, tallyStoreCall, } from '@substrat-run/kernel/invocation-line';
|
|
62
63
|
import { ulid } from '@substrat-run/kernel/ulid';
|
|
64
|
+
import { installOutboundRecorder, markRequestStart } from './outbound-calls.js';
|
|
63
65
|
import { readRoutedNode, ROUTED_ID, RouterAssertionError } from './routed-node.js';
|
|
64
66
|
/**
|
|
65
67
|
* The per-request store key the middleware parks its {@link InvocationRecord} under (#1746).
|
|
@@ -115,10 +117,12 @@ function storeCallSlot(provided) {
|
|
|
115
117
|
const storage = new Als();
|
|
116
118
|
const slot = {
|
|
117
119
|
current() {
|
|
118
|
-
const tally = storage.getStore();
|
|
120
|
+
const tally = storage.getStore()?.tally;
|
|
119
121
|
return tally ? (call) => tallyStoreCall(tally, call) : undefined;
|
|
120
122
|
},
|
|
121
|
-
|
|
123
|
+
invocationId: () => storage.getStore()?.invocationId,
|
|
124
|
+
run: (tally, fn, invocationId) => storage.run({ tally, invocationId }, fn),
|
|
125
|
+
recording: () => storage.getStore()?.tally,
|
|
122
126
|
};
|
|
123
127
|
g[key] = slot;
|
|
124
128
|
return slot;
|
|
@@ -127,14 +131,24 @@ function storeCallSlot(provided) {
|
|
|
127
131
|
return undefined;
|
|
128
132
|
}
|
|
129
133
|
}
|
|
134
|
+
/** #2192: the recording of the request now running, read from the isolate's slot at call time. */
|
|
135
|
+
function currentRecording() {
|
|
136
|
+
const slot = globalThis[Symbol.for(STORE_CALL_SINK_KEY)];
|
|
137
|
+
return typeof slot?.recording === 'function' ? slot.recording() : undefined;
|
|
138
|
+
}
|
|
130
139
|
/**
|
|
131
140
|
* Run a request's handler with its record current (#2245, RFC §6), so a store call made
|
|
132
|
-
* while it runs lands on this request's line with no observer from the vertical
|
|
133
|
-
* `
|
|
141
|
+
* while it runs lands on this request's line with no observer from the vertical — and, since
|
|
142
|
+
* #2192, so does every outbound `fetch` (the recorder is put in front of `fetch` here, once
|
|
143
|
+
* per isolate). With no `AsyncLocalStorage` available the handler simply runs.
|
|
134
144
|
*/
|
|
135
|
-
function
|
|
145
|
+
function runRecording(stamp, started, provided, fn) {
|
|
136
146
|
const slot = storeCallSlot(provided);
|
|
137
|
-
|
|
147
|
+
if (!slot)
|
|
148
|
+
return fn();
|
|
149
|
+
markRequestStart(stamp.record, started);
|
|
150
|
+
installOutboundRecorder(currentRecording);
|
|
151
|
+
return slot.run(stamp.record, fn, stamp.invocationId);
|
|
138
152
|
}
|
|
139
153
|
/**
|
|
140
154
|
* The platform's version binding, read straight off the env.
|
|
@@ -155,10 +169,18 @@ function versionIdOf(env) {
|
|
|
155
169
|
* prefix is spelled here rather than imported: this module is bundled into every vertical's
|
|
156
170
|
* upload and takes only the zero-import contract subpaths (a test holds it equal to
|
|
157
171
|
* `UPLOAD_LINK_PATH_PREFIX`).
|
|
172
|
+
*
|
|
173
|
+
* Two rules, so neither is the only thing standing between a secret and the log: the last
|
|
174
|
+
* segment under the prefix, whatever it holds, and ANY segment that starts with the secret's
|
|
175
|
+
* own prefix, wherever the path puts it — a vertical that hands the bytes on from a route of
|
|
176
|
+
* its own is covered too (a test holds `UPLOAD_LINK_LOG_SECRET_PREFIX` equal to
|
|
177
|
+
* `UPLOAD_LINK_SECRET_PREFIX`).
|
|
158
178
|
*/
|
|
159
179
|
export const UPLOAD_LINK_LOG_PREFIX = '/api/attachment-uploads';
|
|
180
|
+
export const UPLOAD_LINK_LOG_SECRET_PREFIX = 'sbup_';
|
|
160
181
|
const UPLOAD_LINK_SECRET_SEGMENT = /^(\/api\/attachment-uploads\/[^/]+\/[^/]+\/)[^/]+/;
|
|
161
|
-
|
|
182
|
+
const SECRET_SHAPED_SEGMENT = new RegExp(`(^|/)${UPLOAD_LINK_LOG_SECRET_PREFIX}[^/]*`, 'g');
|
|
183
|
+
export const redactUploadLinkSecret = (pathname) => pathname.replace(UPLOAD_LINK_SECRET_SEGMENT, '$1[redacted]').replace(SECRET_SHAPED_SEGMENT, '$1[redacted]');
|
|
162
184
|
/**
|
|
163
185
|
* The path, with the query string DISCARDED.
|
|
164
186
|
*
|
|
@@ -257,6 +279,10 @@ export function fieldCoverageArmed(request) {
|
|
|
257
279
|
}
|
|
258
280
|
function beginStamp(request, env, options) {
|
|
259
281
|
const stamp = { invocationId: ulid(), record: {} };
|
|
282
|
+
// #2358: the request's zero on the trace's shared time axis. Every step the scope host records
|
|
283
|
+
// counts from here, so an outbound call recorded below and a check recorded there agree.
|
|
284
|
+
if (installedTraceSink())
|
|
285
|
+
markTraceStart(stamp.invocationId);
|
|
260
286
|
const fieldCoverageId = armedFieldCoverageId(request.headers, env, options);
|
|
261
287
|
if (fieldCoverageId)
|
|
262
288
|
stamp.fieldCoverageId = fieldCoverageId;
|
|
@@ -301,6 +327,9 @@ function writeInvocationLine(stamp, done, options) {
|
|
|
301
327
|
// Called from a `finally`: a throw here would replace the vertical's answer, or its own
|
|
302
328
|
// error, with a logging failure. The platform wraps every uploaded script in this (#1893),
|
|
303
329
|
// so nothing in it may escape — a line that cannot be written is one missing line.
|
|
330
|
+
// #2358 first, and outside the gate below: a local request carries no router assertion, and
|
|
331
|
+
// that is exactly where a trace is wanted. A no-op unless `substrat dev` installed a sink.
|
|
332
|
+
traceRequest(stamp, done);
|
|
304
333
|
try {
|
|
305
334
|
writeLineOrThrow(stamp, done, options);
|
|
306
335
|
}
|
|
@@ -313,6 +342,77 @@ function writeInvocationLine(stamp, done, options) {
|
|
|
313
342
|
}
|
|
314
343
|
}
|
|
315
344
|
}
|
|
345
|
+
/**
|
|
346
|
+
* #2358: the HTTP half of a request trace — method, path, status, duration, what the operation
|
|
347
|
+
* emitted, and the outbound calls — handed to the installed sink, which then writes the trace.
|
|
348
|
+
*
|
|
349
|
+
* The event fields are the line's own, built by the same `invocationLine`, so a local trace and a
|
|
350
|
+
* hosted line cannot disagree about what "eventTypes" means. The scope host sends the other half
|
|
351
|
+
* (operation, principal, the steps inside the call). Nothing here may fail a request.
|
|
352
|
+
*/
|
|
353
|
+
function traceRequest(stamp, done) {
|
|
354
|
+
const sink = installedTraceSink();
|
|
355
|
+
if (!sink)
|
|
356
|
+
return;
|
|
357
|
+
try {
|
|
358
|
+
const { record, invocationId } = stamp;
|
|
359
|
+
const durationMs = Date.now() - done.started;
|
|
360
|
+
const line = invocationLine({
|
|
361
|
+
tenantId: '',
|
|
362
|
+
scopeId: null,
|
|
363
|
+
vertical: null,
|
|
364
|
+
surface: null,
|
|
365
|
+
method: done.request.method,
|
|
366
|
+
path: pathOf(done.request.url),
|
|
367
|
+
status: done.status,
|
|
368
|
+
threw: done.threw,
|
|
369
|
+
durationMs,
|
|
370
|
+
invocationId,
|
|
371
|
+
level: invocationLevelOf(done.status, done.threw, record.problemCode),
|
|
372
|
+
operation: record.operation,
|
|
373
|
+
problemCode: record.problemCode,
|
|
374
|
+
principalKind: record.principalKind,
|
|
375
|
+
...(record.emitted ? { emitted: record.emitted } : {}),
|
|
376
|
+
versionId: versionIdOf(done.env),
|
|
377
|
+
});
|
|
378
|
+
sink.head(invocationId, {
|
|
379
|
+
startedAt: new Date(done.started).toISOString(),
|
|
380
|
+
method: line.method,
|
|
381
|
+
path: line.path,
|
|
382
|
+
status: line.status,
|
|
383
|
+
threw: line.threw,
|
|
384
|
+
durationMs: line.durationMs,
|
|
385
|
+
level: line.level,
|
|
386
|
+
operation: line.operation,
|
|
387
|
+
problemCode: line.problemCode,
|
|
388
|
+
principalKind: line.principalKind,
|
|
389
|
+
eventCount: line.eventCount,
|
|
390
|
+
eventTypes: line.eventTypes,
|
|
391
|
+
entities: line.entities,
|
|
392
|
+
versionId: line.versionId,
|
|
393
|
+
// Calls the record kept no room for: a truncated list must read as truncated.
|
|
394
|
+
...(record.outboundCallsDropped ? { stepsDropped: record.outboundCallsDropped } : {}),
|
|
395
|
+
});
|
|
396
|
+
for (const call of record.outboundCalls ?? []) {
|
|
397
|
+
sink.step(invocationId, {
|
|
398
|
+
type: 'outbound',
|
|
399
|
+
atMs: call.atMs,
|
|
400
|
+
durationMs: call.durationMs,
|
|
401
|
+
host: call.host,
|
|
402
|
+
path: call.path,
|
|
403
|
+
method: call.method,
|
|
404
|
+
status: call.status,
|
|
405
|
+
outcome: call.outcome,
|
|
406
|
+
...(call.reason ? { reason: call.reason } : {}),
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
sink.end(invocationId);
|
|
410
|
+
forgetTraceStart(invocationId);
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
/* a trace is a convenience; the request it describes is already answered */
|
|
414
|
+
}
|
|
415
|
+
}
|
|
316
416
|
function writeLineOrThrow(stamp, done, options) {
|
|
317
417
|
const node = routedNodeOrNull(done.request.headers, done.env, options);
|
|
318
418
|
if (!node)
|
|
@@ -339,9 +439,47 @@ function writeLineOrThrow(stamp, done, options) {
|
|
|
339
439
|
...(stamp.fieldCoverageId ? { fieldCoverageId: stamp.fieldCoverageId } : {}),
|
|
340
440
|
...(record.storeCalls && record.storeCalls.length > 0 ? { storeCalls: record.storeCalls } : {}),
|
|
341
441
|
...(record.storeCallsDropped ? { storeCallsDropped: record.storeCallsDropped } : {}),
|
|
442
|
+
...(record.outboundCalls && record.outboundCalls.length > 0 ? { outboundCalls: record.outboundCalls } : {}),
|
|
443
|
+
...(record.outboundCallsDropped ? { outboundCallsDropped: record.outboundCallsDropped } : {}),
|
|
342
444
|
});
|
|
343
445
|
console.log(JSON.stringify(line));
|
|
344
446
|
}
|
|
447
|
+
/**
|
|
448
|
+
* #2192: the line for a call the PLATFORM made into this worker behind its secret — a peer
|
|
449
|
+
* call's `/internal/vertical-invoke` — where no router assertion names a tenant, so the stamp's
|
|
450
|
+
* own writer stays silent. Called by the route, after the `/internal/*` gate verified the
|
|
451
|
+
* secret, with the tenant and scope of the body that gate admitted: one line per call, the same
|
|
452
|
+
* grammar as every other, carrying the calling request's id as `parentInvocationId`. Never a
|
|
453
|
+
* throw, like the stamp's writer.
|
|
454
|
+
*/
|
|
455
|
+
export function writePlatformCallLine(call) {
|
|
456
|
+
try {
|
|
457
|
+
const parent = parentRequestIdOf(call.parentInvocationId);
|
|
458
|
+
// The same one-ULID check: a scope id is a ULID too, and this is only where to look.
|
|
459
|
+
const parentScope = parentRequestIdOf(call.parentScopeId);
|
|
460
|
+
console.log(JSON.stringify(invocationLine({
|
|
461
|
+
tenantId: call.tenantId,
|
|
462
|
+
scopeId: call.scopeId,
|
|
463
|
+
vertical: call.vertical,
|
|
464
|
+
method: call.method,
|
|
465
|
+
path: pathOf(call.url),
|
|
466
|
+
status: call.status,
|
|
467
|
+
threw: false,
|
|
468
|
+
durationMs: Date.now() - call.started,
|
|
469
|
+
invocationId: call.invocationId,
|
|
470
|
+
level: invocationLevelOf(call.status, false, call.problemCode),
|
|
471
|
+
operation: call.operation,
|
|
472
|
+
problemCode: call.problemCode,
|
|
473
|
+
principalKind: call.principalKind,
|
|
474
|
+
...(call.emitted ? { emitted: call.emitted } : {}),
|
|
475
|
+
versionId: versionIdOf(call.env),
|
|
476
|
+
...(parent ? { parentInvocationId: parent, ...(parentScope ? { parentScopeId: parentScope } : {}) } : {}),
|
|
477
|
+
})));
|
|
478
|
+
}
|
|
479
|
+
catch {
|
|
480
|
+
/* one missing line, never a failed call */
|
|
481
|
+
}
|
|
482
|
+
}
|
|
345
483
|
/**
|
|
346
484
|
* Mount as the FIRST middleware on a vertical's app, with the same two answers the
|
|
347
485
|
* vertical gives `readRoutedNode` in its own `nodeFor`:
|
|
@@ -390,7 +528,7 @@ export function invocationLog(options = {}) {
|
|
|
390
528
|
c.set?.(INVOCATION_RECORD_KEY, stamp.record);
|
|
391
529
|
let threw = false;
|
|
392
530
|
try {
|
|
393
|
-
await
|
|
531
|
+
await runRecording(stamp, started, options.asyncLocalStorage, next);
|
|
394
532
|
// #2192: after the handler, so whatever answered — a route's own `Response`, the
|
|
395
533
|
// `onError` envelope — carries it. Set before, Hono would keep it only on a response it
|
|
396
534
|
// built itself. Hono's `c.header` on an answered context COPIES the response (every one,
|
|
@@ -443,7 +581,7 @@ export function withInvocationLog(worker, options = {}) {
|
|
|
443
581
|
let status = null;
|
|
444
582
|
let threw = false;
|
|
445
583
|
try {
|
|
446
|
-
const response = withRequestId(await
|
|
584
|
+
const response = withRequestId(await runRecording(stamp, started, options.asyncLocalStorage, () => inner.call(worker, request, env, ctx)), stamp.invocationId);
|
|
447
585
|
status = response.status;
|
|
448
586
|
handRecordToRouter(response, stamp.record, request, env, options);
|
|
449
587
|
return response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation-log.js","sourceRoot":"","sources":["../src/invocation-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,sFAAsF;AACtF,+EAA+E;AAC/E,yFAAyF;AACzF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GAIf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAOnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAsChE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAwB;IACnE,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AACrE,CAAC;AAcD;;;;;GAKG;AACH,SAAS,wBAAwB;IAC/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAI,UAA2E,CAAC,OAAO,CAAC;QAClG,MAAM,GAAG,GAAG,IAAI,EAAE,gBAAgB,EAAE,CAAC,kBAAkB,CAAgD,CAAC;QACxG,OAAO,OAAO,GAAG,EAAE,iBAAiB,KAAK,UAAU,CAAC,CAAC,CAAE,GAAG,CAAC,iBAA4C,CAAC,CAAC,CAAC,SAAS,CAAC;IACtH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,QAA4C;IACjE,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,UAA2E,CAAC;QACtF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,OAAO,QAAQ,EAAE,GAAG,KAAK,UAAU,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU;YAAE,OAAO,QAAyB,CAAC;QACpH,MAAM,GAAG,GAAG,QAAQ,IAAI,wBAAwB,EAAE,CAAC;QACnD,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,MAAM,IAAI,GAAkB;YAC1B,OAAO;gBACL,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,CAAC;YACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;SAC3C,CAAC;QACF,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAI,MAAwB,EAAE,QAA4C,EAAE,EAAW;IACpH,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5C,CAAC;AA2ED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,CAAC,GAAI,GAA4D,EAAE,mBAAmB,CAAC;IAC7F,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAChE,MAAM,0BAA0B,GAAG,mDAAmD,CAAC;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAU,EAAE,CACjE,QAAQ,CAAC,OAAO,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,SAAS,MAAM,CAAC,GAAW;IACzB,IAAI,CAAC;QACH,OAAO,sBAAsB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,iFAAiF;QACjF,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAiBD;;;;;;;GAOG;AACH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAEvD,SAAS,MAAM;IACb,MAAM,CAAC,GAAG,UAAqF,CAAC;IAChG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,CAA0C;IACpE,MAAM,GAAG,GAAG,CAAC,CAAC,GAA6C,CAAC;IAC5D,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,OAAO,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;AACpG,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAI,QAAW,EAAE,EAAU;IAC/C,MAAM,OAAO,GAAI,QAAiF,EAAE,OAAO,CAAC;IAC5G,IAAI,CAAC;QACH,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,QAA+B,CAAC;QAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,IAAoB,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,KAAK,QAAQ,CAAC;AACpE,CAAC;AAED,SAAS,UAAU,CAAM,OAAkC,EAAE,GAAQ,EAAE,OAAkC;IACvG,MAAM,KAAK,GAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACpE,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5E,IAAI,eAAe;QAAE,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;IAC7D,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oBAAoB,CAC3B,OAAqB,EACrB,GAAQ,EACR,OAAkC;IAElC,IAAI,EAAiB,CAAC;IACtB,IAAI,CAAC;QACH,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAWD;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CAAM,KAAsB,EAAE,IAAmB,EAAE,OAAkC;IAC/G,wFAAwF;IACxF,2FAA2F;IAC3F,mFAAmF;IACnF,IAAI,CAAC;QACH,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAM,KAAsB,EAAE,IAAmB,EAAE,OAAkC;IAC5G,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,IAAI,GAAG,cAAc,CAAC;QAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,YAAY;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO;QACrC,YAAY;QACZ,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;QACrE,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrF,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAO,GAA8B,EAAE;IAEvC,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvD,CAAC,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,oFAAoF;QACpF,gEAAgE;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,gFAAgF;QAChF,+BAA+B;QAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YAC5E,iFAAiF;YACjF,wFAAwF;YACxF,yFAAyF;YACzF,uFAAuF;YACvF,yFAAyF;YACzF,4BAA4B;YAC5B,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG;gBAAE,CAAC,CAAC,MAAM,EAAE,CAAC,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,CAAC;YACb,iFAAiF;YACjF,wEAAwE;YACxE,MAAM,CAAC,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,mBAAmB,CACjB,KAAK,EACL,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EACjK,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAmBD,yFAAyF;AACzF,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAElG;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAyB,EACzB,OAAO,GAA8B,EAAE;IAEvC,0FAA0F;IAC1F,2EAA2E;IAC3E,MAAM,KAAK,GAAI,MAAwC,EAAE,KAAK,CAAC;IAC/D,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/C,MAAM,OAAO,GAAsB;QACjC,KAAK,CAAC,KAAK,CAAC,OAAwB,EAAE,GAAQ,EAAE,GAAY;YAC1D,IAAI,iBAAiB,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,MAAM,GAAkB,IAAI,CAAC;YACjC,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,aAAa,CAC5B,MAAM,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAClH,KAAK,CAAC,YAAY,CACnB,CAAC;gBACF,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACzB,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;gBAClE,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM,CAAC,CAAC;YACV,CAAC;oBAAS,CAAC;gBACT,mBAAmB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;KACF,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,KAAK,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,GAAI,CAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CACzB,QAAiB,EACjB,MAAwB,EACxB,OAAwB,EACxB,GAAQ,EACR,OAAkC;IAElC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC;YAAE,OAAO;QAC9E,QAA0E,CAAC,OAAO,EAAE,GAAG,EAAE,CACxF,wBAAwB,EACxB,KAAK,CACN,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CAAM,OAAqB,EAAE,GAAQ,EAAE,OAAkC;IAChG,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,OAAO,EAAE;YAC7B,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC;YAC3C,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK;SACrD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,gFAAgF;QAChF,oFAAoF;QACpF,sDAAsD;QACtD,IAAI,CAAC,CAAC,CAAC,YAAY,oBAAoB,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/H,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"invocation-log.js","sourceRoot":"","sources":["../src/invocation-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The outbound calls a request made, on its invocation line (#2192).
|
|
3
|
+
*
|
|
4
|
+
* A request that failed BECAUSE of an upstream answer — an OAuth callback whose token
|
|
5
|
+
* exchange was refused — used to show a single `request` span: the call that actually
|
|
6
|
+
* failed was nowhere on the timeline. So the platform's entry records every `fetch` the
|
|
7
|
+
* request makes, the way it records its store calls (#2245): the request runs in an
|
|
8
|
+
* `AsyncLocalStorage` holding its record, and a wrapped `globalThis.fetch` adds each call to
|
|
9
|
+
* whichever record is current. Module code cannot fetch (boundary-lint R3); what is recorded
|
|
10
|
+
* is the vertical's host code — its connectors and harness routes.
|
|
11
|
+
*
|
|
12
|
+
* ## What is written, and what never is
|
|
13
|
+
*
|
|
14
|
+
* The host, the method, the status, the time to the response headers, when in the request
|
|
15
|
+
* the call started, and how it ended. Never a header, a body, a query string, a fragment or
|
|
16
|
+
* userinfo, and the path only after {@link redactOutboundPath}: a path segment can be a
|
|
17
|
+
* credential (an API key, a bot token), and a log line is read by a wider audience, for
|
|
18
|
+
* longer, than the call ever had.
|
|
19
|
+
*
|
|
20
|
+
* A refusal by the PLATFORM — the egress worker answering a host the vertical never declared —
|
|
21
|
+
* is recorded as `refused`, read off `x-substrat-egress: refused`. To the vertical's code it is
|
|
22
|
+
* a bare 403, the same as the destination's own; on the line the two read differently.
|
|
23
|
+
*
|
|
24
|
+
* ## What it does not see
|
|
25
|
+
*
|
|
26
|
+
* - A `fetch` made inside a Durable Object (a consumer, a schedule, the drain): no request's
|
|
27
|
+
* record is current there.
|
|
28
|
+
* - A `fetch` still running after the line was written (`waitUntil` work).
|
|
29
|
+
* - A reference to `fetch` a bundle captured while its modules were evaluated: the entry
|
|
30
|
+
* installs the wrapper after that, because the vertical's import is evaluated first.
|
|
31
|
+
*
|
|
32
|
+
* And one property to know: a call is attributed to the request whose `AsyncLocalStorage`
|
|
33
|
+
* context it runs in, as a store call is. A call a promise shared across requests makes lands on
|
|
34
|
+
* the line of the request it runs under.
|
|
35
|
+
*
|
|
36
|
+
* ## It cannot fail the call
|
|
37
|
+
*
|
|
38
|
+
* Outside a request the wrapper hands the call straight to the runtime's `fetch`, and inside
|
|
39
|
+
* one it passes the arguments on untouched — the body is never read, the signal never
|
|
40
|
+
* replaced — and hands back the runtime's own response or rejection. Recording is advisory: a
|
|
41
|
+
* throw from it is swallowed, never the call's.
|
|
42
|
+
*/
|
|
43
|
+
import { type OutboundCallTally } from '@substrat-run/kernel/invocation-line';
|
|
44
|
+
/**
|
|
45
|
+
* The response header the egress worker marks its own refusals with — its `EGRESS_HEADER`
|
|
46
|
+
* (`apps/vertical-egress/src/worker.ts`). Spelled twice, because the worker is not a package
|
|
47
|
+
* this one can import; `outbound-calls.test.ts` holds the two equal.
|
|
48
|
+
*/
|
|
49
|
+
export declare const EGRESS_REFUSAL_HEADER = "x-substrat-egress";
|
|
50
|
+
/**
|
|
51
|
+
* Whether one path segment is kept as it is. Default-deny: a segment of at most 40 characters
|
|
52
|
+
* is kept ONLY when it is lowercase words (at most 4, each at most 16 letters, joined by `-` or
|
|
53
|
+
* `_`), optionally with a short file extension, an integer of at most 10 digits, or a version token (`v1`, `v2.1`). Everything else
|
|
54
|
+
* is redacted — every UUID and ULID, any segment mixing letters and digits (`oauth2`, `abc1234`),
|
|
55
|
+
* anything with an uppercase letter (an owner or a repository named `Acme`), and any longer
|
|
56
|
+
* number. An id in a path is not needed to diagnose a failed call: the host, the method, the
|
|
57
|
+
* status, the outcome and the path's shape are.
|
|
58
|
+
*
|
|
59
|
+
* What still survives, stated: a lowercase-letter word of up to 16 letters (per part) and an
|
|
60
|
+
* integer of up to 10 digits are written as they are, whatever they mean to the destination.
|
|
61
|
+
*/
|
|
62
|
+
export declare function keepsSegment(segment: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* The path of an outbound URL as the line writes it: each segment that {@link keepsSegment}
|
|
65
|
+
* does not keep is `[redacted]`, and the result is cut at {@link PATH_MAX} characters. The
|
|
66
|
+
* query string and fragment are not part of a pathname and so never reach it.
|
|
67
|
+
*/
|
|
68
|
+
export declare function redactOutboundPath(pathname: string): string;
|
|
69
|
+
/** The tally a request's calls go on: the invocation record, or anything shaped like it. */
|
|
70
|
+
export type OutboundRecording = OutboundCallTally;
|
|
71
|
+
/** Note when the request a recording belongs to started. Never throws. */
|
|
72
|
+
export declare function markRequestStart(recording: OutboundRecording, started: number): void;
|
|
73
|
+
/** What the wrapper needs from the platform: the recording of the request now running. */
|
|
74
|
+
export type CurrentRecording = () => OutboundRecording | undefined;
|
|
75
|
+
type FetchFn = (input: unknown, init?: unknown) => Promise<{
|
|
76
|
+
status: number;
|
|
77
|
+
headers?: {
|
|
78
|
+
get?(name: string): string | null;
|
|
79
|
+
};
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Wrap `fetch` so each call made while a request's recording is current is added to it.
|
|
83
|
+
* Exported for the tests; the platform installs it with {@link installOutboundRecorder}.
|
|
84
|
+
*/
|
|
85
|
+
export declare function recordingFetch<F extends FetchFn>(original: F, current: CurrentRecording): F;
|
|
86
|
+
/**
|
|
87
|
+
* Put the recorder in front of the isolate's `fetch`, once. A `fetch` that already carries the
|
|
88
|
+
* mark — installed by this request's entry, a previous one, or another copy of this module — is
|
|
89
|
+
* left as it is, so evaluating the entry again never wraps twice. Something that replaced
|
|
90
|
+
* `globalThis.fetch` since (a test's mock) is wrapped in turn. Never throws.
|
|
91
|
+
*/
|
|
92
|
+
export declare function installOutboundRecorder(current: CurrentRecording): void;
|
|
93
|
+
export {};
|
|
94
|
+
//# sourceMappingURL=outbound-calls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound-calls.d.ts","sourceRoot":"","sources":["../src/outbound-calls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,sCAAsC,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAyBzD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM3D;AAiCD,4FAA4F;AAC5F,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAelD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAMpF;AAED,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,GAAG,SAAS,CAAC;AA0CnE,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC;AAiBhI;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,CAAC,CAsD3F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CASvE"}
|