@once-agent/sdk 0.1.4 → 0.1.5
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/README.md +62 -3
- package/dist/cli.js +13 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +245 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/decision.d.ts +39 -0
- package/dist/runtime/decision.d.ts.map +1 -0
- package/dist/runtime/decision.js +102 -0
- package/dist/runtime/decision.js.map +1 -0
- package/dist/runtime/fetch-interceptor.d.ts +66 -0
- package/dist/runtime/fetch-interceptor.d.ts.map +1 -0
- package/dist/runtime/fetch-interceptor.js +151 -0
- package/dist/runtime/fetch-interceptor.js.map +1 -0
- package/dist/runtime/identity.d.ts +23 -0
- package/dist/runtime/identity.d.ts.map +1 -0
- package/dist/runtime/identity.js +191 -0
- package/dist/runtime/identity.js.map +1 -0
- package/dist/runtime/pipeline.d.ts +25 -0
- package/dist/runtime/pipeline.d.ts.map +1 -0
- package/dist/runtime/pipeline.js +121 -0
- package/dist/runtime/pipeline.js.map +1 -0
- package/dist/setup.d.ts +2 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +101 -8
- package/dist/setup.js.map +1 -1
- package/dist-cjs/index.js +255 -2
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/runtime/decision.js +105 -0
- package/dist-cjs/runtime/decision.js.map +1 -0
- package/dist-cjs/runtime/fetch-interceptor.js +157 -0
- package/dist-cjs/runtime/fetch-interceptor.js.map +1 -0
- package/dist-cjs/runtime/identity.js +194 -0
- package/dist-cjs/runtime/identity.js.map +1 -0
- package/dist-cjs/runtime/pipeline.js +124 -0
- package/dist-cjs/runtime/pipeline.js.map +1 -0
- package/package.json +3 -2
package/dist-cjs/index.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Once = exports.OnceNetworkError = exports.OnceTimeoutError = exports.OnceError = void 0;
|
|
3
|
+
exports.resolveHttpOperationIdentity = exports.decideHttpExecution = exports.prepareHttpExecution = exports.OnceRuntimeBlockedError = exports.installOnceFetchInterceptor = exports.createOnceFetchInterceptor = exports.Once = exports.OnceNetworkError = exports.OnceTimeoutError = exports.OnceRuntimeHttpShapeError = exports.OnceError = void 0;
|
|
4
|
+
exports.createOnceRuntimeFetch = createOnceRuntimeFetch;
|
|
5
|
+
exports.installOnceRuntimeFetch = installOnceRuntimeFetch;
|
|
4
6
|
const node_buffer_1 = require("node:buffer");
|
|
5
7
|
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const fetch_interceptor_js_1 = require("./runtime/fetch-interceptor.js");
|
|
6
9
|
const DEFAULT_BASE_URL = "https://once-q18-cloud.pennywatch.workers.dev";
|
|
7
10
|
class OnceError extends Error {
|
|
8
11
|
status;
|
|
@@ -21,6 +24,16 @@ class OnceError extends Error {
|
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
26
|
exports.OnceError = OnceError;
|
|
27
|
+
class OnceRuntimeHttpShapeError extends OnceError {
|
|
28
|
+
constructor(message, code = "unsupported_runtime_http_shape") {
|
|
29
|
+
super(message, {
|
|
30
|
+
code
|
|
31
|
+
});
|
|
32
|
+
this.name =
|
|
33
|
+
"OnceRuntimeHttpShapeError";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.OnceRuntimeHttpShapeError = OnceRuntimeHttpShapeError;
|
|
24
37
|
class OnceTimeoutError extends OnceError {
|
|
25
38
|
constructor(message = "Once request timed out", cause) {
|
|
26
39
|
super(message, {
|
|
@@ -46,6 +59,7 @@ class Once {
|
|
|
46
59
|
baseUrl;
|
|
47
60
|
timeoutMs;
|
|
48
61
|
networkRetries;
|
|
62
|
+
fetchImpl;
|
|
49
63
|
constructor(options = {}) {
|
|
50
64
|
const apiKey = options.apiKey ??
|
|
51
65
|
process.env.ONCE_API_KEY;
|
|
@@ -62,6 +76,9 @@ class Once {
|
|
|
62
76
|
options.timeoutMs ?? 10_000;
|
|
63
77
|
this.networkRetries =
|
|
64
78
|
options.networkRetries ?? 2;
|
|
79
|
+
this.fetchImpl =
|
|
80
|
+
options.fetchImpl ??
|
|
81
|
+
globalThis.fetch;
|
|
65
82
|
}
|
|
66
83
|
/**
|
|
67
84
|
* Generate a deterministic Once operation ID.
|
|
@@ -170,7 +187,7 @@ class Once {
|
|
|
170
187
|
const controller = new AbortController();
|
|
171
188
|
const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
172
189
|
try {
|
|
173
|
-
const response = await
|
|
190
|
+
const response = await this.fetchImpl(`${this.baseUrl}${path}`, {
|
|
174
191
|
...init,
|
|
175
192
|
signal: controller.signal,
|
|
176
193
|
headers: {
|
|
@@ -240,8 +257,244 @@ class Once {
|
|
|
240
257
|
}
|
|
241
258
|
}
|
|
242
259
|
exports.Once = Once;
|
|
260
|
+
function runtimeJsonContentType(request) {
|
|
261
|
+
const contentType = request.headers
|
|
262
|
+
.get("content-type")
|
|
263
|
+
?.toLowerCase() ??
|
|
264
|
+
"";
|
|
265
|
+
return contentType.includes("application/json");
|
|
266
|
+
}
|
|
267
|
+
function assertRuntimeHeaderShape(request) {
|
|
268
|
+
const allowed = new Set([
|
|
269
|
+
"content-type",
|
|
270
|
+
"idempotency-key",
|
|
271
|
+
"x-idempotency-key"
|
|
272
|
+
]);
|
|
273
|
+
for (const [name] of request.headers) {
|
|
274
|
+
if (!allowed.has(name.toLowerCase())) {
|
|
275
|
+
throw new OnceRuntimeHttpShapeError(`Once Runtime HTTP v0.1 cannot safely preserve target header "${name}".`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
function parseRuntimeReplay(value) {
|
|
280
|
+
if (value === null ||
|
|
281
|
+
typeof value !== "object" ||
|
|
282
|
+
Array.isArray(value)) {
|
|
283
|
+
throw new OnceError("Once confirmed the operation but did not return a replayable HTTP response.", {
|
|
284
|
+
code: "runtime_http_response_missing",
|
|
285
|
+
body: value
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
const candidate = value;
|
|
289
|
+
const status = Number(candidate.status);
|
|
290
|
+
/*
|
|
291
|
+
* Fetch Response constructors cannot represent
|
|
292
|
+
* informational 1xx responses.
|
|
293
|
+
*/
|
|
294
|
+
if (!Number.isInteger(status) ||
|
|
295
|
+
status < 200 ||
|
|
296
|
+
status > 599) {
|
|
297
|
+
throw new OnceError("Once returned an HTTP replay with an unsupported status.", {
|
|
298
|
+
code: "runtime_http_response_invalid_status",
|
|
299
|
+
body: value
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
if (typeof candidate.body_text !==
|
|
303
|
+
"string") {
|
|
304
|
+
throw new OnceError("Once returned an HTTP replay without a valid text body.", {
|
|
305
|
+
code: "runtime_http_response_invalid_body",
|
|
306
|
+
body: value
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
if (candidate.headers === null ||
|
|
310
|
+
typeof candidate.headers !==
|
|
311
|
+
"object" ||
|
|
312
|
+
Array.isArray(candidate.headers)) {
|
|
313
|
+
throw new OnceError("Once returned an HTTP replay without valid headers.", {
|
|
314
|
+
code: "runtime_http_response_invalid_headers",
|
|
315
|
+
body: value
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
const headers = {};
|
|
319
|
+
for (const [name, headerValue] of Object.entries(candidate.headers)) {
|
|
320
|
+
if (typeof headerValue !==
|
|
321
|
+
"string") {
|
|
322
|
+
throw new OnceError("Once returned a non-string HTTP replay header.", {
|
|
323
|
+
code: "runtime_http_response_invalid_headers",
|
|
324
|
+
body: value
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
headers[name] =
|
|
328
|
+
headerValue;
|
|
329
|
+
}
|
|
330
|
+
const nullBody = status === 204 ||
|
|
331
|
+
status === 205 ||
|
|
332
|
+
status === 304;
|
|
333
|
+
if (nullBody &&
|
|
334
|
+
candidate.body_text.length > 0) {
|
|
335
|
+
throw new OnceError("Once returned a body for an HTTP status that cannot carry one.", {
|
|
336
|
+
code: "runtime_http_response_invalid_body",
|
|
337
|
+
body: value
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
return {
|
|
341
|
+
status,
|
|
342
|
+
body_text: candidate.body_text,
|
|
343
|
+
headers,
|
|
344
|
+
...(typeof candidate.recorded_at ===
|
|
345
|
+
"string"
|
|
346
|
+
? {
|
|
347
|
+
recorded_at: candidate.recorded_at
|
|
348
|
+
}
|
|
349
|
+
: {})
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
function createRuntimeCloudProtector(once) {
|
|
353
|
+
return async ({ request, decision, provider }) => {
|
|
354
|
+
if (decision.decision !==
|
|
355
|
+
"PROTECT") {
|
|
356
|
+
throw new OnceError("Runtime protector received a non-protected operation.", {
|
|
357
|
+
code: "runtime_invalid_protect_state"
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
if (!decision.operationId) {
|
|
361
|
+
throw new OnceError("Runtime protected operation is missing its resolved operation ID.", {
|
|
362
|
+
code: "runtime_operation_id_missing"
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
if (typeof provider !==
|
|
366
|
+
"string" ||
|
|
367
|
+
provider.trim().length ===
|
|
368
|
+
0) {
|
|
369
|
+
throw new OnceError("Runtime protected operation is missing its resolved provider.", {
|
|
370
|
+
code: "runtime_provider_missing"
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
const method = request.method
|
|
374
|
+
.trim()
|
|
375
|
+
.toUpperCase();
|
|
376
|
+
/*
|
|
377
|
+
* Classification recognizes POST/PUT/PATCH/DELETE as
|
|
378
|
+
* consequential. Execution v0.1 intentionally proves
|
|
379
|
+
* only POST + JSON.
|
|
380
|
+
*/
|
|
381
|
+
if (method !== "POST") {
|
|
382
|
+
throw new OnceRuntimeHttpShapeError(`Once Runtime HTTP v0.1 only has a proven protected execution contract for POST, not ${method || "(empty)"}.`);
|
|
383
|
+
}
|
|
384
|
+
if (!runtimeJsonContentType(request)) {
|
|
385
|
+
throw new OnceRuntimeHttpShapeError("Once Runtime HTTP v0.1 only protects application/json POST bodies.");
|
|
386
|
+
}
|
|
387
|
+
assertRuntimeHeaderShape(request);
|
|
388
|
+
const bodyText = await request
|
|
389
|
+
.clone()
|
|
390
|
+
.text();
|
|
391
|
+
if (bodyText.trim().length ===
|
|
392
|
+
0) {
|
|
393
|
+
throw new OnceRuntimeHttpShapeError("Once Runtime HTTP v0.1 requires a non-empty JSON body.");
|
|
394
|
+
}
|
|
395
|
+
try {
|
|
396
|
+
JSON.parse(bodyText);
|
|
397
|
+
}
|
|
398
|
+
catch {
|
|
399
|
+
throw new OnceRuntimeHttpShapeError("Once Runtime HTTP v0.1 requires a valid JSON body.");
|
|
400
|
+
}
|
|
401
|
+
const result = await once.execute({
|
|
402
|
+
operationId: decision.operationId,
|
|
403
|
+
provider: provider.trim(),
|
|
404
|
+
action: {
|
|
405
|
+
type: "http_write_v1",
|
|
406
|
+
method: "POST",
|
|
407
|
+
url: request.url,
|
|
408
|
+
body_json: bodyText
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
const replay = parseRuntimeReplay(result.http_response);
|
|
412
|
+
const nullBody = replay.status === 204 ||
|
|
413
|
+
replay.status === 205 ||
|
|
414
|
+
replay.status === 304;
|
|
415
|
+
return new Response(nullBody
|
|
416
|
+
? null
|
|
417
|
+
: replay.body_text, {
|
|
418
|
+
status: replay.status,
|
|
419
|
+
headers: replay.headers
|
|
420
|
+
});
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Create a fetch-compatible Once Runtime.
|
|
425
|
+
*
|
|
426
|
+
* v0.1 proven protected execution shape:
|
|
427
|
+
* POST + application/json + stable identity.
|
|
428
|
+
*/
|
|
429
|
+
function createOnceRuntimeFetch(options = {}) {
|
|
430
|
+
const originalFetch = options.fetchImpl ??
|
|
431
|
+
globalThis.fetch;
|
|
432
|
+
if (typeof originalFetch !==
|
|
433
|
+
"function") {
|
|
434
|
+
throw new OnceError("Once Runtime requires a native fetch implementation.", {
|
|
435
|
+
code: "runtime_fetch_missing"
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
/*
|
|
439
|
+
* Once Cloud requests use the captured native fetch.
|
|
440
|
+
* They cannot recursively enter this interceptor.
|
|
441
|
+
*/
|
|
442
|
+
const once = new Once({
|
|
443
|
+
apiKey: options.apiKey,
|
|
444
|
+
baseUrl: options.baseUrl,
|
|
445
|
+
timeoutMs: options.timeoutMs,
|
|
446
|
+
networkRetries: options.networkRetries,
|
|
447
|
+
fetchImpl: originalFetch
|
|
448
|
+
});
|
|
449
|
+
return (0, fetch_interceptor_js_1.createOnceFetchInterceptor)({
|
|
450
|
+
provider: options.provider,
|
|
451
|
+
resolveProvider: options.resolveProvider,
|
|
452
|
+
resolveOperationId: options.resolveOperationId,
|
|
453
|
+
fetchImpl: originalFetch,
|
|
454
|
+
protect: createRuntimeCloudProtector(once)
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Explicit reversible global fetch installation.
|
|
459
|
+
*/
|
|
460
|
+
function installOnceRuntimeFetch(options = {}) {
|
|
461
|
+
const previous = globalThis.fetch;
|
|
462
|
+
const intercepted = createOnceRuntimeFetch({
|
|
463
|
+
...options,
|
|
464
|
+
fetchImpl: options.fetchImpl ??
|
|
465
|
+
previous
|
|
466
|
+
});
|
|
467
|
+
globalThis.fetch =
|
|
468
|
+
intercepted;
|
|
469
|
+
let restored = false;
|
|
470
|
+
return {
|
|
471
|
+
fetch: intercepted,
|
|
472
|
+
restore: () => {
|
|
473
|
+
if (restored) {
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
if (globalThis.fetch ===
|
|
477
|
+
intercepted) {
|
|
478
|
+
globalThis.fetch =
|
|
479
|
+
previous;
|
|
480
|
+
}
|
|
481
|
+
restored =
|
|
482
|
+
true;
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
}
|
|
243
486
|
function sleep(ms) {
|
|
244
487
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
245
488
|
}
|
|
489
|
+
var fetch_interceptor_js_2 = require("./runtime/fetch-interceptor.js");
|
|
490
|
+
Object.defineProperty(exports, "createOnceFetchInterceptor", { enumerable: true, get: function () { return fetch_interceptor_js_2.createOnceFetchInterceptor; } });
|
|
491
|
+
Object.defineProperty(exports, "installOnceFetchInterceptor", { enumerable: true, get: function () { return fetch_interceptor_js_2.installOnceFetchInterceptor; } });
|
|
492
|
+
Object.defineProperty(exports, "OnceRuntimeBlockedError", { enumerable: true, get: function () { return fetch_interceptor_js_2.OnceRuntimeBlockedError; } });
|
|
493
|
+
var pipeline_js_1 = require("./runtime/pipeline.js");
|
|
494
|
+
Object.defineProperty(exports, "prepareHttpExecution", { enumerable: true, get: function () { return pipeline_js_1.prepareHttpExecution; } });
|
|
495
|
+
var decision_js_1 = require("./runtime/decision.js");
|
|
496
|
+
Object.defineProperty(exports, "decideHttpExecution", { enumerable: true, get: function () { return decision_js_1.decideHttpExecution; } });
|
|
497
|
+
var identity_js_1 = require("./runtime/identity.js");
|
|
498
|
+
Object.defineProperty(exports, "resolveHttpOperationIdentity", { enumerable: true, get: function () { return identity_js_1.resolveHttpOperationIdentity; } });
|
|
246
499
|
exports.default = Once;
|
|
247
500
|
//# sourceMappingURL=index.js.map
|
package/dist-cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAAqC;AACpC,6CAAyC;AAE1C,MAAM,gBAAgB,GACpB,+CAA+C,CAAC;AA8ClD,MAAa,SAAU,SAAQ,KAAK;IACzB,MAAM,CAAU;IAChB,IAAI,CAAU;IACd,IAAI,CAAW;IACf,UAAU,CAAU;IAE7B,YACE,OAAe,EACf,UAMI,EAAE;QAEN,KAAK,CAAC,OAAO,EAAE;YACb,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACvC,CAAC;CACF;AA1BD,8BA0BC;AAED,MAAa,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAO,GAAG,wBAAwB,EAAE,KAAe;QAC7D,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,SAAS;YACf,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AATD,4CASC;AAED,MAAa,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAO,GAAG,sBAAsB,EAAE,KAAe;QAC3D,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,eAAe;YACrB,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AATD,4CASC;AAED,MAAa,IAAI;IACN,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,cAAc,CAAS;IAEhC,YAAY,UAAuB,EAAE;QACnC,MAAM,MAAM,GACV,OAAO,CAAC,MAAM;YACd,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,SAAS,CACjB,4DAA4D,EAC5D;gBACE,IAAI,EAAE,iBAAiB;aACxB,CACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,OAAO,GAAG,CACb,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,GAAG,CAAC,aAAa;YACzB,gBAAgB,CACjB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEtB,IAAI,CAAC,SAAS;YACZ,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;QAE9B,IAAI,CAAC,cAAc;YACjB,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,KAA6B;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,CACjB,wCAAwC,EACxC;gBACE,IAAI,EAAE,sBAAsB;aAC7B,CACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CACtB,IAAI,CAAC,EAAE;YAEL,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IACE,OAAO,IAAI,KAAK,QAAQ;gBACxB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC1B,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YAED,MAAM,IAAI,SAAS,CACjB,mDAAmD,EACnD;gBACE,IAAI,EAAE,sBAAsB;aAC7B,CACF,CAAC;QACJ,CAAC,CACF,CAAC;QAEF;;;;;;;;;;;;WAYG;QACH,MAAM,SAAS,GACb,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC;QAEvB,SAAS,CAAC,MAAM,CACd,kBAAkB,EAClB,MAAM,CACP,CAAC;QAEF,MAAM,SAAS,GACb,oBAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAExB,SAAS,CAAC,aAAa,CACrB,MAAM,CAAC,MAAM,EACb,CAAC,CACF,CAAC;QAEF,SAAS,CAAC,MAAM,CACd,SAAS,CACV,CAAC;QAEF,KACE,MAAM,KAAK,IACR,MAAM,EACT,CAAC;YAED,MAAM,KAAK,GACT,oBAAM,CAAC,IAAI,CACT,KAAK,EACL,MAAM,CACP,CAAC;YAEJ,IACE,KAAK,CAAC,MAAM;gBACZ,UAAU,EACV,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,8BAA8B,EAC9B;oBACE,IAAI,EACF,sBAAsB;iBACzB,CACF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GACV,oBAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAExB,MAAM,CAAC,aAAa,CAClB,KAAK,CAAC,MAAM,EACZ,CAAC,CACF,CAAC;YAEF,SAAS,CAAC,MAAM,CACd,MAAM,CACP,CAAC;YAEF,SAAS,CAAC,MAAM,CACd,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GACR,SAAS;aACN,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;aACrB,OAAO,CACN,QAAQ,EACR,SAAS,CAAC,EAAE,CACV,SAAS,CAAC,WAAW,EAAE,CAC1B;aACA,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;aAC/B,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;aAC1B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC;QAE/B,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,EAAE,CAAC,GAAG,KAA6B;QACjC,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAmB;QAEnB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,CACjB,0BAA0B,EAC1B;gBACE,IAAI,EAAE,sBAAsB;aAC7B,CACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CACjB,uBAAuB,EACvB;gBACE,IAAI,EAAE,kBAAkB;aACzB,CACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,aAAa,EACb;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,YAAY,EAAE,KAAK,CAAC,WAAW;gBAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;SACH,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CACT,WAAmB;QAEnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,SAAS,CACjB,0BAA0B,EAC1B;gBACE,IAAI,EAAE,sBAAsB;aAC7B,CACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CACjB,aAAa,kBAAkB,CAAC,WAAW,CAAC,EAAE,EAC9C;YACE,MAAM,EAAE,KAAK;SACd,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAAY,EACZ,IAAiB;QAEjB,IAAI,SAAkB,CAAC;QAEvB,KACE,IAAI,OAAO,GAAG,CAAC,EACf,OAAO,IAAI,IAAI,CAAC,cAAc,EAC9B,OAAO,EAAE,EACT,CAAC;YACD,MAAM,UAAU,GACd,IAAI,eAAe,EAAE,CAAC;YAExB,MAAM,OAAO,GAAG,UAAU,CACxB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,IAAI,CAAC,SAAS,CACf,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EACxB;oBACE,GAAG,IAAI;oBACP,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,OAAO,EAAE;wBACP,aAAa,EACX,UAAU,IAAI,CAAC,MAAM,EAAE;wBACzB,cAAc,EACZ,kBAAkB;wBACpB,GAAG,IAAI,CAAC,OAAO;qBAChB;iBACF,CACF,CAAC;gBAEF,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEtB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAElC,IAAI,IAAI,GAAQ,IAAI,CAAC;gBAErB,IAAI,GAAG,EAAE,CAAC;oBACR,IAAI,CAAC;wBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,GAAG;4BACL,OAAO,EAAE,GAAG;yBACb,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,gBAAgB,GACpB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAClB,aAAa,CACd,CAAC;oBAEJ,MAAM,UAAU,GACd,gBAAgB,KAAK,IAAI;wBACvB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;wBAC1B,CAAC,CAAC,SAAS,CAAC;oBAEhB,MAAM,IAAI,GACR,IAAI,EAAE,KAAK;wBACX,IAAI,EAAE,MAAM;wBACZ,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAE5B,MAAM,OAAO,GACX,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,KAAK;wBACX,IAAI,EAAE,MAAM;wBACZ,sBAAsB,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAE1C,MAAM,IAAI,SAAS,CACjB,MAAM,CAAC,OAAO,CAAC,EACf;wBACE,MAAM,EACJ,QAAQ,CAAC,MAAM;wBACjB,IAAI,EACF,MAAM,CAAC,IAAI,CAAC;wBACd,IAAI;wBACJ,UAAU,EACR,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;4BACzB,CAAC,CAAC,UAAU;4BACZ,CAAC,CAAC,SAAS;qBAChB,CACF,CAAC;gBACJ,CAAC;gBAED,OAAO,IAAS,CAAC;YAEnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEtB,sCAAsC;gBACtC,6CAA6C;gBAC7C,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;oBAC/B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,SAAS,GAAG,KAAK,CAAC;gBAElB,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;oBACtB,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;gBAE9B,IACE,OAAO;oBACP,IAAI,CAAC,cAAc,EACnB,CAAC;oBACD,MAAM,KAAK,CACT,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAC3B,CAAC;oBAEF,SAAS;gBACX,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,IAAI,gBAAgB,CACxB,gCAAgC,IAAI,CAAC,SAAS,IAAI,EAClD,KAAK,CACN,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,gBAAgB,CACxB,iDAAiD,EACjD,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,gBAAgB,CACxB,sBAAsB,EACtB,SAAS,CACV,CAAC;IACJ,CAAC;CACF;AA3WD,oBA2WC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAC3B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CACxB,CAAC;AACJ,CAAC;AAED,kBAAe,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decideHttpExecution = decideHttpExecution;
|
|
4
|
+
const SAFE_HTTP_METHODS = new Set([
|
|
5
|
+
"GET",
|
|
6
|
+
"HEAD",
|
|
7
|
+
"OPTIONS"
|
|
8
|
+
]);
|
|
9
|
+
const CONSEQUENTIAL_HTTP_METHODS = new Set([
|
|
10
|
+
"POST",
|
|
11
|
+
"PUT",
|
|
12
|
+
"PATCH",
|
|
13
|
+
"DELETE"
|
|
14
|
+
]);
|
|
15
|
+
function normalizeMethod(method) {
|
|
16
|
+
return String(method || "")
|
|
17
|
+
.trim()
|
|
18
|
+
.toUpperCase();
|
|
19
|
+
}
|
|
20
|
+
function nonEmpty(value) {
|
|
21
|
+
return (typeof value === "string" &&
|
|
22
|
+
value.trim().length > 0);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Decide whether an outbound HTTP operation may
|
|
26
|
+
* pass normally, must be protected by Once, or
|
|
27
|
+
* must fail closed.
|
|
28
|
+
*
|
|
29
|
+
* v0.1 intentionally does NOT guess identity.
|
|
30
|
+
*
|
|
31
|
+
* A consequential operation without a stable
|
|
32
|
+
* operationId is blocked rather than executed
|
|
33
|
+
* unsafely.
|
|
34
|
+
*/
|
|
35
|
+
function decideHttpExecution(call) {
|
|
36
|
+
const method = normalizeMethod(call.method);
|
|
37
|
+
let parsedUrl;
|
|
38
|
+
try {
|
|
39
|
+
parsedUrl =
|
|
40
|
+
new URL(call.url);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return {
|
|
44
|
+
decision: "BLOCK",
|
|
45
|
+
code: "INVALID_URL",
|
|
46
|
+
consequential: true,
|
|
47
|
+
method,
|
|
48
|
+
reason: "Runtime could not safely determine the destination URL."
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (parsedUrl.protocol !== "https:" &&
|
|
52
|
+
parsedUrl.protocol !== "http:") {
|
|
53
|
+
return {
|
|
54
|
+
decision: "BLOCK",
|
|
55
|
+
code: "UNSUPPORTED_PROTOCOL",
|
|
56
|
+
consequential: true,
|
|
57
|
+
method,
|
|
58
|
+
reason: `Runtime does not support protocol ${parsedUrl.protocol}`
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
if (SAFE_HTTP_METHODS.has(method)) {
|
|
62
|
+
return {
|
|
63
|
+
decision: "PASS",
|
|
64
|
+
code: "SAFE_HTTP_METHOD",
|
|
65
|
+
consequential: false,
|
|
66
|
+
method,
|
|
67
|
+
reason: `${method} is treated as a non-consequential HTTP read in Runtime v0.1.`
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (!CONSEQUENTIAL_HTTP_METHODS.has(method)) {
|
|
71
|
+
return {
|
|
72
|
+
decision: "BLOCK",
|
|
73
|
+
code: "UNSUPPORTED_HTTP_METHOD",
|
|
74
|
+
consequential: true,
|
|
75
|
+
method,
|
|
76
|
+
reason: `Runtime does not yet have a proven execution policy for HTTP method ${method || "(empty)"}.`
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (!nonEmpty(call.provider)) {
|
|
80
|
+
return {
|
|
81
|
+
decision: "BLOCK",
|
|
82
|
+
code: "MISSING_PROVIDER",
|
|
83
|
+
consequential: true,
|
|
84
|
+
method,
|
|
85
|
+
reason: "Consequential operation has no configured Once provider."
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (!nonEmpty(call.operationId)) {
|
|
89
|
+
return {
|
|
90
|
+
decision: "BLOCK",
|
|
91
|
+
code: "MISSING_OPERATION_ID",
|
|
92
|
+
consequential: true,
|
|
93
|
+
method,
|
|
94
|
+
reason: "Consequential operation has no stable operation identity. Once refuses unsafe execution."
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
decision: "PROTECT",
|
|
99
|
+
code: "CONSEQUENTIAL_HTTP_WRITE",
|
|
100
|
+
consequential: true,
|
|
101
|
+
method,
|
|
102
|
+
reason: "Consequential HTTP operation has a provider and stable identity and must execute through Once."
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../../src/runtime/decision.ts"],"names":[],"mappings":";;AAyFA,kDAsKC;AArND,MAAM,iBAAiB,GACrB,IAAI,GAAG,CAAC;IACN,KAAK;IACL,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEL,MAAM,0BAA0B,GAC9B,IAAI,GAAG,CAAC;IACN,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEL,SAAS,eAAe,CACtB,MAAc;IAGd,OAAO,MAAM,CACX,MAAM,IAAI,EAAE,CACb;SACE,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CACf,KAAyB;IAGzB,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CACjC,IAAyB;IAGzB,MAAM,MAAM,GACV,eAAe,CACb,IAAI,CAAC,MAAM,CACZ,CAAC;IAEJ,IAAI,SAAc,CAAC;IAEnB,IAAI,CAAC;QAEH,SAAS;YACP,IAAI,GAAG,CACL,IAAI,CAAC,GAAG,CACT,CAAC;IAEN,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO;YACL,QAAQ,EACN,OAAO;YAET,IAAI,EACF,aAAa;YAEf,aAAa,EACX,IAAI;YAEN,MAAM;YAEN,MAAM,EACJ,yDAAyD;SAC5D,CAAC;IACJ,CAAC;IAED,IACE,SAAS,CAAC,QAAQ,KAAK,QAAQ;QAC/B,SAAS,CAAC,QAAQ,KAAK,OAAO,EAC9B,CAAC;QAED,OAAO;YACL,QAAQ,EACN,OAAO;YAET,IAAI,EACF,sBAAsB;YAExB,aAAa,EACX,IAAI;YAEN,MAAM;YAEN,MAAM,EACJ,qCAAqC,SAAS,CAAC,QAAQ,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,IACE,iBAAiB,CAAC,GAAG,CACnB,MAAM,CACP,EACD,CAAC;QAED,OAAO;YACL,QAAQ,EACN,MAAM;YAER,IAAI,EACF,kBAAkB;YAEpB,aAAa,EACX,KAAK;YAEP,MAAM;YAEN,MAAM,EACJ,GAAG,MAAM,+DAA+D;SAC3E,CAAC;IACJ,CAAC;IAED,IACE,CAAC,0BAA0B,CAAC,GAAG,CAC7B,MAAM,CACP,EACD,CAAC;QAED,OAAO;YACL,QAAQ,EACN,OAAO;YAET,IAAI,EACF,yBAAyB;YAE3B,aAAa,EACX,IAAI;YAEN,MAAM;YAEN,MAAM,EACJ,uEAAuE,MAAM,IAAI,SAAS,GAAG;SAChG,CAAC;IACJ,CAAC;IAED,IACE,CAAC,QAAQ,CACP,IAAI,CAAC,QAAQ,CACd,EACD,CAAC;QAED,OAAO;YACL,QAAQ,EACN,OAAO;YAET,IAAI,EACF,kBAAkB;YAEpB,aAAa,EACX,IAAI;YAEN,MAAM;YAEN,MAAM,EACJ,0DAA0D;SAC7D,CAAC;IACJ,CAAC;IAED,IACE,CAAC,QAAQ,CACP,IAAI,CAAC,WAAW,CACjB,EACD,CAAC;QAED,OAAO;YACL,QAAQ,EACN,OAAO;YAET,IAAI,EACF,sBAAsB;YAExB,aAAa,EACX,IAAI;YAEN,MAAM;YAEN,MAAM,EACJ,0FAA0F;SAC7F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EACN,SAAS;QAEX,IAAI,EACF,0BAA0B;QAE5B,aAAa,EACX,IAAI;QAEN,MAAM;QAEN,MAAM,EACJ,gGAAgG;KACnG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnceRuntimeBlockedError = void 0;
|
|
4
|
+
exports.createOnceFetchInterceptor = createOnceFetchInterceptor;
|
|
5
|
+
exports.installOnceFetchInterceptor = installOnceFetchInterceptor;
|
|
6
|
+
const pipeline_js_1 = require("./pipeline.js");
|
|
7
|
+
class OnceRuntimeBlockedError extends Error {
|
|
8
|
+
code;
|
|
9
|
+
decision;
|
|
10
|
+
constructor(decision) {
|
|
11
|
+
super(`Once blocked outbound HTTP execution: ${decision.code}. ${decision.reason}`);
|
|
12
|
+
this.name =
|
|
13
|
+
"OnceRuntimeBlockedError";
|
|
14
|
+
this.code =
|
|
15
|
+
decision.code;
|
|
16
|
+
this.decision =
|
|
17
|
+
decision;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.OnceRuntimeBlockedError = OnceRuntimeBlockedError;
|
|
21
|
+
function headersToObject(headers) {
|
|
22
|
+
const result = {};
|
|
23
|
+
headers.forEach((value, key) => {
|
|
24
|
+
result[key] =
|
|
25
|
+
value;
|
|
26
|
+
});
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
async function inspectBody(request) {
|
|
30
|
+
const method = request.method
|
|
31
|
+
.trim()
|
|
32
|
+
.toUpperCase();
|
|
33
|
+
if (method === "GET" ||
|
|
34
|
+
method === "HEAD" ||
|
|
35
|
+
method === "OPTIONS") {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
/*
|
|
39
|
+
* Identity v0.1 currently recognizes JSON-style
|
|
40
|
+
* body identity fields.
|
|
41
|
+
*
|
|
42
|
+
* Clone first so inspection never consumes the
|
|
43
|
+
* actual request body.
|
|
44
|
+
*/
|
|
45
|
+
let clone;
|
|
46
|
+
try {
|
|
47
|
+
clone =
|
|
48
|
+
request.clone();
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const contentType = clone.headers
|
|
54
|
+
.get("content-type")
|
|
55
|
+
?.toLowerCase() ??
|
|
56
|
+
"";
|
|
57
|
+
if (!contentType.includes("application/json")) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const text = await clone.text();
|
|
62
|
+
return (text.length > 0
|
|
63
|
+
? text
|
|
64
|
+
: undefined);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a fetch-compatible Once interception
|
|
72
|
+
* function without mutating global state.
|
|
73
|
+
*/
|
|
74
|
+
function createOnceFetchInterceptor(options) {
|
|
75
|
+
const originalFetch = options.fetchImpl ??
|
|
76
|
+
globalThis.fetch;
|
|
77
|
+
if (typeof originalFetch !==
|
|
78
|
+
"function") {
|
|
79
|
+
throw new Error("Once Runtime requires a native fetch implementation.");
|
|
80
|
+
}
|
|
81
|
+
const intercepted = async (input, init) => {
|
|
82
|
+
/*
|
|
83
|
+
* Constructing a Request gives us one
|
|
84
|
+
* normalized view of URL, method, headers
|
|
85
|
+
* and body while preserving native fetch
|
|
86
|
+
* semantics for the final call.
|
|
87
|
+
*/
|
|
88
|
+
const request = new Request(input, init);
|
|
89
|
+
const provider = options.resolveProvider
|
|
90
|
+
? await options.resolveProvider(request)
|
|
91
|
+
: options.provider;
|
|
92
|
+
const explicitOperationId = options.resolveOperationId
|
|
93
|
+
? await options.resolveOperationId(request)
|
|
94
|
+
: undefined;
|
|
95
|
+
const body = await inspectBody(request);
|
|
96
|
+
const decision = (0, pipeline_js_1.prepareHttpExecution)({
|
|
97
|
+
method: request.method,
|
|
98
|
+
url: request.url,
|
|
99
|
+
provider,
|
|
100
|
+
operationId: explicitOperationId,
|
|
101
|
+
headers: headersToObject(request.headers),
|
|
102
|
+
body
|
|
103
|
+
});
|
|
104
|
+
if (decision.decision ===
|
|
105
|
+
"PASS") {
|
|
106
|
+
return await originalFetch(request);
|
|
107
|
+
}
|
|
108
|
+
if (decision.decision ===
|
|
109
|
+
"BLOCK") {
|
|
110
|
+
throw new OnceRuntimeBlockedError(decision);
|
|
111
|
+
}
|
|
112
|
+
return await options.protect({
|
|
113
|
+
request,
|
|
114
|
+
decision,
|
|
115
|
+
provider,
|
|
116
|
+
originalFetch
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
return intercepted;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Install Once at the process-wide fetch boundary.
|
|
123
|
+
*
|
|
124
|
+
* Installation is explicit and reversible.
|
|
125
|
+
*/
|
|
126
|
+
function installOnceFetchInterceptor(options) {
|
|
127
|
+
const previous = globalThis.fetch;
|
|
128
|
+
const intercepted = createOnceFetchInterceptor({
|
|
129
|
+
...options,
|
|
130
|
+
fetchImpl: options.fetchImpl ??
|
|
131
|
+
previous
|
|
132
|
+
});
|
|
133
|
+
globalThis.fetch =
|
|
134
|
+
intercepted;
|
|
135
|
+
let restored = false;
|
|
136
|
+
return {
|
|
137
|
+
fetch: intercepted,
|
|
138
|
+
restore: () => {
|
|
139
|
+
if (restored) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
/*
|
|
143
|
+
* Restore only if our interceptor still
|
|
144
|
+
* owns global fetch. Do not overwrite a
|
|
145
|
+
* later runtime/framework replacement.
|
|
146
|
+
*/
|
|
147
|
+
if (globalThis.fetch ===
|
|
148
|
+
intercepted) {
|
|
149
|
+
globalThis.fetch =
|
|
150
|
+
previous;
|
|
151
|
+
}
|
|
152
|
+
restored =
|
|
153
|
+
true;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=fetch-interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-interceptor.js","sourceRoot":"","sources":["../../src/runtime/fetch-interceptor.ts"],"names":[],"mappings":"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"}
|