@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.
Files changed (38) hide show
  1. package/README.md +62 -3
  2. package/dist/cli.js +13 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +29 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +245 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/runtime/decision.d.ts +39 -0
  9. package/dist/runtime/decision.d.ts.map +1 -0
  10. package/dist/runtime/decision.js +102 -0
  11. package/dist/runtime/decision.js.map +1 -0
  12. package/dist/runtime/fetch-interceptor.d.ts +66 -0
  13. package/dist/runtime/fetch-interceptor.d.ts.map +1 -0
  14. package/dist/runtime/fetch-interceptor.js +151 -0
  15. package/dist/runtime/fetch-interceptor.js.map +1 -0
  16. package/dist/runtime/identity.d.ts +23 -0
  17. package/dist/runtime/identity.d.ts.map +1 -0
  18. package/dist/runtime/identity.js +191 -0
  19. package/dist/runtime/identity.js.map +1 -0
  20. package/dist/runtime/pipeline.d.ts +25 -0
  21. package/dist/runtime/pipeline.d.ts.map +1 -0
  22. package/dist/runtime/pipeline.js +121 -0
  23. package/dist/runtime/pipeline.js.map +1 -0
  24. package/dist/setup.d.ts +2 -0
  25. package/dist/setup.d.ts.map +1 -1
  26. package/dist/setup.js +101 -8
  27. package/dist/setup.js.map +1 -1
  28. package/dist-cjs/index.js +255 -2
  29. package/dist-cjs/index.js.map +1 -1
  30. package/dist-cjs/runtime/decision.js +105 -0
  31. package/dist-cjs/runtime/decision.js.map +1 -0
  32. package/dist-cjs/runtime/fetch-interceptor.js +157 -0
  33. package/dist-cjs/runtime/fetch-interceptor.js.map +1 -0
  34. package/dist-cjs/runtime/identity.js +194 -0
  35. package/dist-cjs/runtime/identity.js.map +1 -0
  36. package/dist-cjs/runtime/pipeline.js +124 -0
  37. package/dist-cjs/runtime/pipeline.js.map +1 -0
  38. 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 fetch(`${this.baseUrl}${path}`, {
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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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"}