@adcp/sdk 16.0.0-beta.3 → 16.0.0-beta.4

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 (182) hide show
  1. package/dist/lib/auth/oauth/diagnose.js +3 -11
  2. package/dist/lib/auth/oauth/diagnose.mjs +4 -12
  3. package/dist/lib/auth/oauth/diagnostics.d.mts +2 -1
  4. package/dist/lib/auth/oauth/diagnostics.d.ts +2 -1
  5. package/dist/lib/auth/oauth/diagnostics.js +8 -10
  6. package/dist/lib/auth/oauth/diagnostics.mjs +7 -10
  7. package/dist/lib/index.d.mts +1 -1
  8. package/dist/lib/index.d.ts +1 -1
  9. package/dist/lib/index.js +2 -0
  10. package/dist/lib/index.mjs +7 -1
  11. package/dist/lib/reporting/consumer-runtime.js +2 -1
  12. package/dist/lib/reporting/consumer-runtime.mjs +2 -1
  13. package/dist/lib/reporting/ledger/handler.js +50 -11
  14. package/dist/lib/reporting/ledger/handler.mjs +50 -12
  15. package/dist/lib/reporting/ledger/index.d.mts +17 -14
  16. package/dist/lib/reporting/ledger/index.d.ts +17 -14
  17. package/dist/lib/reporting/ledger/index.js +32 -20
  18. package/dist/lib/reporting/ledger/index.mjs +21 -10
  19. package/dist/lib/reporting/ledger/offering-validation.d.mts +9 -0
  20. package/dist/lib/reporting/ledger/offering-validation.d.ts +9 -0
  21. package/dist/lib/reporting/{gcs/bucket-policy.js → ledger/offering-validation.js} +9 -8
  22. package/dist/lib/reporting/ledger/offering-validation.mjs +8 -0
  23. package/dist/lib/reporting/ledger/receipts.d.mts +48 -0
  24. package/dist/lib/reporting/ledger/receipts.d.ts +48 -0
  25. package/dist/lib/reporting/ledger/receipts.js +186 -0
  26. package/dist/lib/reporting/ledger/receipts.mjs +161 -0
  27. package/dist/lib/reporting/ledger/status-ingest.js +3 -3
  28. package/dist/lib/reporting/ledger/status-ingest.mjs +4 -5
  29. package/dist/lib/reporting/ledger/types.d.mts +43 -0
  30. package/dist/lib/reporting/ledger/types.d.ts +43 -0
  31. package/dist/lib/reporting/ledger/types.js +31 -2
  32. package/dist/lib/reporting/ledger/types.mjs +26 -1
  33. package/dist/lib/reporting/pagination.d.mts +6 -0
  34. package/dist/lib/reporting/pagination.d.ts +6 -0
  35. package/dist/lib/reporting/{gcs/errors.js → pagination.js} +12 -17
  36. package/dist/lib/reporting/pagination.mjs +12 -0
  37. package/dist/lib/reporting/reconciliation.d.mts +1 -0
  38. package/dist/lib/reporting/reconciliation.d.ts +1 -0
  39. package/dist/lib/reporting/reconciliation.js +3 -2
  40. package/dist/lib/reporting/reconciliation.mjs +3 -2
  41. package/dist/lib/reporting/service/index.d.mts +79 -153
  42. package/dist/lib/reporting/service/index.d.ts +79 -153
  43. package/dist/lib/reporting/service/index.js +34 -491
  44. package/dist/lib/reporting/service/index.mjs +36 -510
  45. package/dist/lib/reporting/service/scheduler-support.d.mts +43 -0
  46. package/dist/lib/reporting/service/scheduler-support.d.ts +43 -0
  47. package/dist/lib/reporting/service/scheduler-support.js +125 -0
  48. package/dist/lib/reporting/service/scheduler-support.mjs +96 -0
  49. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  50. package/dist/lib/signing/canonicalize.d.mts +4 -0
  51. package/dist/lib/signing/canonicalize.d.ts +4 -0
  52. package/dist/lib/signing/canonicalize.js +14 -8
  53. package/dist/lib/signing/canonicalize.mjs +14 -8
  54. package/dist/lib/signing/content-digest.d.mts +8 -0
  55. package/dist/lib/signing/content-digest.d.ts +8 -0
  56. package/dist/lib/signing/content-digest.js +11 -5
  57. package/dist/lib/signing/content-digest.mjs +10 -5
  58. package/dist/lib/signing/signer.js +9 -6
  59. package/dist/lib/signing/signer.mjs +10 -7
  60. package/dist/lib/signing/web-bot-auth.js +103 -37
  61. package/dist/lib/signing/web-bot-auth.mjs +108 -37
  62. package/dist/lib/testing/storyboard/junit.js +16 -3
  63. package/dist/lib/testing/storyboard/junit.mjs +16 -3
  64. package/dist/lib/testing/storyboard/request-signing/builder.js +10 -9
  65. package/dist/lib/testing/storyboard/request-signing/builder.mjs +10 -9
  66. package/dist/lib/testing/storyboard/runner.js +94 -25
  67. package/dist/lib/testing/storyboard/runner.mjs +94 -25
  68. package/dist/lib/testing/storyboard/types.d.mts +6 -0
  69. package/dist/lib/testing/storyboard/types.d.ts +6 -0
  70. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  71. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  72. package/dist/lib/version.d.mts +3 -3
  73. package/dist/lib/version.d.ts +3 -3
  74. package/dist/lib/version.js +3 -3
  75. package/dist/lib/version.mjs +3 -3
  76. package/docs/TYPE-SUMMARY.md +23 -5
  77. package/docs/guides/REPORTING-GCS-FENCE.md +3 -3
  78. package/docs/guides/REPORTING-GCS-MANAGED.md +4 -4
  79. package/docs/guides/REPORTING-LEDGER-CUTOVER.md +7 -7
  80. package/docs/guides/REPORTING-LEDGER.md +107 -51
  81. package/docs/guides/REPORTING-OPERATIONS.md +66 -5
  82. package/docs/guides/REPORTING-STABILITY.md +36 -32
  83. package/docs/llms.txt +4 -3
  84. package/docs/migration-14.x-rc-worksheet.md +4 -7
  85. package/docs/migration-reporting-storage-package.md +186 -0
  86. package/examples/README.md +1 -1
  87. package/package.json +13 -78
  88. package/dist/lib/reporting/azure/index.d.mts +0 -31
  89. package/dist/lib/reporting/azure/index.d.ts +0 -31
  90. package/dist/lib/reporting/azure/index.js +0 -266
  91. package/dist/lib/reporting/azure/index.mjs +0 -249
  92. package/dist/lib/reporting/bigquery/index.d.mts +0 -246
  93. package/dist/lib/reporting/bigquery/index.d.ts +0 -246
  94. package/dist/lib/reporting/bigquery/index.js +0 -633
  95. package/dist/lib/reporting/bigquery/index.mjs +0 -594
  96. package/dist/lib/reporting/gcs/adapter.d.mts +0 -38
  97. package/dist/lib/reporting/gcs/adapter.d.ts +0 -38
  98. package/dist/lib/reporting/gcs/adapter.js +0 -342
  99. package/dist/lib/reporting/gcs/adapter.mjs +0 -325
  100. package/dist/lib/reporting/gcs/bucket-policy.d.mts +0 -3
  101. package/dist/lib/reporting/gcs/bucket-policy.d.ts +0 -3
  102. package/dist/lib/reporting/gcs/bucket-policy.mjs +0 -7
  103. package/dist/lib/reporting/gcs/errors.d.mts +0 -11
  104. package/dist/lib/reporting/gcs/errors.d.ts +0 -11
  105. package/dist/lib/reporting/gcs/errors.mjs +0 -16
  106. package/dist/lib/reporting/gcs/fence.d.mts +0 -41
  107. package/dist/lib/reporting/gcs/fence.d.ts +0 -41
  108. package/dist/lib/reporting/gcs/fence.js +0 -250
  109. package/dist/lib/reporting/gcs/fence.mjs +0 -230
  110. package/dist/lib/reporting/gcs/index.d.mts +0 -18
  111. package/dist/lib/reporting/gcs/index.d.ts +0 -18
  112. package/dist/lib/reporting/gcs/index.js +0 -44
  113. package/dist/lib/reporting/gcs/index.mjs +0 -14
  114. package/dist/lib/reporting/gcs/io.d.mts +0 -7
  115. package/dist/lib/reporting/gcs/io.d.ts +0 -7
  116. package/dist/lib/reporting/gcs/io.js +0 -95
  117. package/dist/lib/reporting/gcs/io.mjs +0 -69
  118. package/dist/lib/reporting/gcs/reader.d.mts +0 -67
  119. package/dist/lib/reporting/gcs/reader.d.ts +0 -67
  120. package/dist/lib/reporting/gcs/reader.js +0 -193
  121. package/dist/lib/reporting/gcs/reader.mjs +0 -169
  122. package/dist/lib/reporting/gcs/row-provider.d.mts +0 -39
  123. package/dist/lib/reporting/gcs/row-provider.d.ts +0 -39
  124. package/dist/lib/reporting/gcs/row-provider.js +0 -225
  125. package/dist/lib/reporting/gcs/row-provider.mjs +0 -208
  126. package/dist/lib/reporting/gcs/validation.d.mts +0 -5
  127. package/dist/lib/reporting/gcs/validation.d.ts +0 -5
  128. package/dist/lib/reporting/gcs/validation.js +0 -49
  129. package/dist/lib/reporting/gcs/validation.mjs +0 -25
  130. package/dist/lib/reporting/ledger/change-feed.d.mts +0 -69
  131. package/dist/lib/reporting/ledger/change-feed.d.ts +0 -69
  132. package/dist/lib/reporting/ledger/change-feed.js +0 -107
  133. package/dist/lib/reporting/ledger/change-feed.mjs +0 -80
  134. package/dist/lib/reporting/ledger/managed-postgres.d.mts +0 -293
  135. package/dist/lib/reporting/ledger/managed-postgres.d.ts +0 -293
  136. package/dist/lib/reporting/ledger/managed-postgres.js +0 -2346
  137. package/dist/lib/reporting/ledger/managed-postgres.mjs +0 -2332
  138. package/dist/lib/reporting/ledger/managed-router.d.mts +0 -148
  139. package/dist/lib/reporting/ledger/managed-router.d.ts +0 -148
  140. package/dist/lib/reporting/ledger/managed-router.js +0 -280
  141. package/dist/lib/reporting/ledger/managed-router.mjs +0 -258
  142. package/dist/lib/reporting/ledger/managed.d.mts +0 -535
  143. package/dist/lib/reporting/ledger/managed.d.ts +0 -535
  144. package/dist/lib/reporting/ledger/managed.js +0 -761
  145. package/dist/lib/reporting/ledger/managed.mjs +0 -729
  146. package/dist/lib/reporting/ledger/notification-activity.d.mts +0 -332
  147. package/dist/lib/reporting/ledger/notification-activity.d.ts +0 -332
  148. package/dist/lib/reporting/ledger/notification-activity.js +0 -1366
  149. package/dist/lib/reporting/ledger/notification-activity.mjs +0 -1337
  150. package/dist/lib/reporting/ledger/object-writes.d.mts +0 -128
  151. package/dist/lib/reporting/ledger/object-writes.d.ts +0 -128
  152. package/dist/lib/reporting/ledger/object-writes.js +0 -147
  153. package/dist/lib/reporting/ledger/object-writes.mjs +0 -114
  154. package/dist/lib/reporting/ledger/postgres.d.mts +0 -689
  155. package/dist/lib/reporting/ledger/postgres.d.ts +0 -689
  156. package/dist/lib/reporting/ledger/postgres.js +0 -4462
  157. package/dist/lib/reporting/ledger/postgres.mjs +0 -4462
  158. package/dist/lib/reporting/ledger/row-storage-migration.d.mts +0 -59
  159. package/dist/lib/reporting/ledger/row-storage-migration.d.ts +0 -59
  160. package/dist/lib/reporting/ledger/row-storage-migration.js +0 -365
  161. package/dist/lib/reporting/ledger/row-storage-migration.mjs +0 -339
  162. package/dist/lib/reporting/ledger/row-storage-object.d.mts +0 -203
  163. package/dist/lib/reporting/ledger/row-storage-object.d.ts +0 -203
  164. package/dist/lib/reporting/ledger/row-storage-object.js +0 -379
  165. package/dist/lib/reporting/ledger/row-storage-object.mjs +0 -335
  166. package/dist/lib/reporting/ledger/row-storage-provider-io.d.mts +0 -44
  167. package/dist/lib/reporting/ledger/row-storage-provider-io.d.ts +0 -44
  168. package/dist/lib/reporting/ledger/row-storage-provider-io.js +0 -142
  169. package/dist/lib/reporting/ledger/row-storage-provider-io.mjs +0 -111
  170. package/dist/lib/reporting/ledger/row-storage.d.mts +0 -316
  171. package/dist/lib/reporting/ledger/row-storage.d.ts +0 -316
  172. package/dist/lib/reporting/ledger/row-storage.js +0 -812
  173. package/dist/lib/reporting/ledger/row-storage.mjs +0 -802
  174. package/dist/lib/reporting/s3/index.d.mts +0 -34
  175. package/dist/lib/reporting/s3/index.d.ts +0 -34
  176. package/dist/lib/reporting/s3/index.js +0 -347
  177. package/dist/lib/reporting/s3/index.mjs +0 -340
  178. package/dist/lib/reporting/service/maintenance.d.mts +0 -148
  179. package/dist/lib/reporting/service/maintenance.d.ts +0 -148
  180. package/dist/lib/reporting/service/maintenance.js +0 -185
  181. package/dist/lib/reporting/service/maintenance.mjs +0 -159
  182. package/examples/reliable-reporting-service/README.md +0 -169
@@ -1,258 +0,0 @@
1
- import {
2
- REPORTING_ADAPTER_PROBE_DEADLINE_MILLISECONDS_V1,
3
- REPORTING_DESTINATION_PATTERNS_V1,
4
- REPORTING_DESTINATION_TRANSPORT_PATTERN_V1
5
- } from "./managed.mjs";
6
- const ROUTE_ID_PATTERN = /^[a-z][a-z0-9_.-]{0,63}$/;
7
- const DEFAULT_ROUTE_PROBE_TIMEOUT_MILLISECONDS = 1e4;
8
- class ReportingManagedDeliveryRoutingErrorV1 extends Error {
9
- code;
10
- operation;
11
- pattern;
12
- transport;
13
- verificationProfile;
14
- constructor(code, operation, detail, message) {
15
- super(message);
16
- this.name = "ReportingManagedDeliveryRoutingErrorV1";
17
- this.code = code;
18
- this.operation = operation;
19
- this.pattern = detail.pattern;
20
- this.transport = detail.transport;
21
- this.verificationProfile = detail.verificationProfile;
22
- }
23
- }
24
- class ReportingManagedDeliveryProbeErrorV1 extends Error {
25
- failedRouteIds;
26
- constructor(failedRouteIds, errors) {
27
- super(`Managed Delivery route probe failed for ${failedRouteIds.map((id) => JSON.stringify(id)).join(", ")}`, {
28
- cause: new AggregateError(errors, "Managed Delivery route probes failed")
29
- });
30
- this.name = "ReportingManagedDeliveryProbeErrorV1";
31
- this.failedRouteIds = Object.freeze([...failedRouteIds]);
32
- }
33
- }
34
- const routeKey = (pattern, transport) => `${pattern}:${transport}`;
35
- const hasText = (value) => typeof value === "string" && value !== "";
36
- function createReportingManagedDeliveryAdapterRouterV1(options) {
37
- if (!options || !Array.isArray(options.routes) || options.routes.length === 0) {
38
- throw new TypeError("A Managed Delivery router requires at least one route");
39
- }
40
- const probeTimeout = options.probeTimeoutMilliseconds ?? DEFAULT_ROUTE_PROBE_TIMEOUT_MILLISECONDS;
41
- if (!Number.isSafeInteger(probeTimeout) || probeTimeout <= 0) {
42
- throw new RangeError("probeTimeoutMilliseconds must be a positive safe integer");
43
- }
44
- if (probeTimeout >= REPORTING_ADAPTER_PROBE_DEADLINE_MILLISECONDS_V1) {
45
- throw new RangeError(
46
- `probeTimeoutMilliseconds must be below the runtime's ${REPORTING_ADAPTER_PROBE_DEADLINE_MILLISECONDS_V1} ms probe deadline`
47
- );
48
- }
49
- const routes = [];
50
- const byId = /* @__PURE__ */ new Map();
51
- const byMatch = /* @__PURE__ */ new Map();
52
- for (const candidate of options.routes) {
53
- const id = candidate?.id;
54
- if (typeof id !== "string" || !ROUTE_ID_PATTERN.test(id)) {
55
- throw new TypeError("A Managed Delivery route id must match ^[a-z][a-z0-9_.-]{0,63}$");
56
- }
57
- if (byId.has(id)) throw new TypeError(`Managed Delivery route id ${JSON.stringify(id)} is duplicated`);
58
- const pattern = candidate.match?.pattern;
59
- const transport = candidate.match?.transport;
60
- if (!REPORTING_DESTINATION_PATTERNS_V1.includes(pattern)) {
61
- throw new TypeError(
62
- `Managed Delivery route ${JSON.stringify(id)} must match file_transfer, dataset_share, or warehouse_materialization`
63
- );
64
- }
65
- if (typeof transport !== "string" || !REPORTING_DESTINATION_TRANSPORT_PATTERN_V1.test(transport)) {
66
- throw new TypeError(`Managed Delivery route ${JSON.stringify(id)} has an invalid transport`);
67
- }
68
- const adapter = candidate.adapter;
69
- if (!adapter || typeof adapter.deliver !== "function" || typeof adapter.read !== "function" || typeof adapter.revoke !== "function") {
70
- throw new TypeError(`Managed Delivery route ${JSON.stringify(id)} requires deliver, read, and revoke`);
71
- }
72
- if (adapter.revocationFencesDeliveryGenerations !== true) {
73
- throw new TypeError(
74
- `Managed Delivery route ${JSON.stringify(id)} does not fence delivery generations on revocation`
75
- );
76
- }
77
- if (!Array.isArray(adapter.verificationProfiles) || adapter.verificationProfiles.length === 0) {
78
- throw new TypeError(`Managed Delivery route ${JSON.stringify(id)} declares no verification profile`);
79
- }
80
- const key = routeKey(pattern, transport);
81
- const clash = byMatch.get(key);
82
- if (clash) {
83
- throw new TypeError(
84
- `Managed Delivery routes ${JSON.stringify(clash.id)} and ${JSON.stringify(id)} both match ${pattern}/${transport}`
85
- );
86
- }
87
- const route = Object.freeze({
88
- id,
89
- pattern,
90
- transport,
91
- adapter,
92
- verificationProfiles: Object.freeze([...new Set(adapter.verificationProfiles)])
93
- });
94
- routes.push(route);
95
- byId.set(id, route);
96
- byMatch.set(key, route);
97
- }
98
- let legacy;
99
- if (options.legacyDefault !== void 0) {
100
- legacy = byId.get(options.legacyDefault);
101
- if (!legacy) {
102
- throw new TypeError(`Managed Delivery legacyDefault ${JSON.stringify(options.legacyDefault)} is not a route id`);
103
- }
104
- }
105
- const exact = (pattern, transport) => typeof pattern === "string" && typeof transport === "string" ? byMatch.get(routeKey(pattern, transport)) : void 0;
106
- const forBinding = (binding, operation) => {
107
- const pattern = binding?.method;
108
- const transport = binding?.transport;
109
- if (!hasText(transport)) {
110
- if (legacy && legacy.pattern === pattern) return legacy;
111
- throw new ReportingManagedDeliveryRoutingErrorV1(
112
- "REPORTING_ROUTE_TRANSPORT_REQUIRED",
113
- operation,
114
- { pattern },
115
- "Managed Delivery binding names no transport and no legacy route serves its pattern"
116
- );
117
- }
118
- const route = exact(pattern, transport);
119
- if (route) return route;
120
- throw new ReportingManagedDeliveryRoutingErrorV1(
121
- "REPORTING_ROUTE_NOT_FOUND",
122
- operation,
123
- { pattern, transport },
124
- `No Managed Delivery route serves ${String(pattern)}/${transport}`
125
- );
126
- };
127
- const forAuthorization = (authorization) => {
128
- const { pattern, transport } = authorization ?? {};
129
- if (hasText(pattern) && hasText(transport)) {
130
- const route = exact(pattern, transport);
131
- if (route) return route;
132
- throw new ReportingManagedDeliveryRoutingErrorV1(
133
- "REPORTING_ROUTE_NOT_FOUND",
134
- "revoke",
135
- { pattern, transport },
136
- `No Managed Delivery route serves ${pattern}/${transport}`
137
- );
138
- }
139
- if (legacy && (!hasText(pattern) || legacy.pattern === pattern)) return legacy;
140
- throw new ReportingManagedDeliveryRoutingErrorV1(
141
- "REPORTING_ROUTE_CONTRACT_UNRECORDED",
142
- "revoke",
143
- { pattern, transport },
144
- "Managed Delivery destination authorization recorded no pattern and transport, and no legacy route serves it"
145
- );
146
- };
147
- const assertProfile = (route, binding, operation) => {
148
- if (!route.verificationProfiles.includes(binding.verification_profile)) {
149
- throw new ReportingManagedDeliveryRoutingErrorV1(
150
- "REPORTING_ROUTE_VERIFICATION_UNSUPPORTED",
151
- operation,
152
- { pattern: route.pattern, transport: route.transport, verificationProfile: binding.verification_profile },
153
- `Managed Delivery route ${JSON.stringify(route.id)} cannot verify ${String(binding.verification_profile)}`
154
- );
155
- }
156
- };
157
- const union = Object.freeze([...new Set(routes.flatMap((route) => route.verificationProfiles))]);
158
- const descriptions = Object.freeze(
159
- routes.map(
160
- (route) => Object.freeze({
161
- id: route.id,
162
- match: Object.freeze({ pattern: route.pattern, transport: route.transport }),
163
- verificationProfiles: route.verificationProfiles
164
- })
165
- )
166
- );
167
- const router = {
168
- routes: descriptions,
169
- legacyDefault: legacy?.id,
170
- // Compatibility only: nothing here ever admits a binding. A route's own
171
- // profiles do, in `admitBinding` and again before delivery.
172
- verificationProfiles: union,
173
- revocationFencesDeliveryGenerations: true,
174
- async deliver(input, context) {
175
- const route = forBinding(input.binding, "deliver");
176
- assertProfile(route, input.binding, "deliver");
177
- return route.adapter.deliver(input, context);
178
- },
179
- async read(input, context) {
180
- return forBinding(input.binding, "read").adapter.read(input, context);
181
- },
182
- async revoke(input, context) {
183
- return forAuthorization(input.authorization).adapter.revoke(input, context);
184
- },
185
- admitBinding(binding) {
186
- assertProfile(forBinding(binding, "admit_binding"), binding, "admit_binding");
187
- },
188
- admitOffering(offering) {
189
- const { pattern, transport } = offering.method;
190
- const route = exact(pattern, transport);
191
- if (!route) {
192
- throw new ReportingManagedDeliveryRoutingErrorV1(
193
- "REPORTING_ROUTE_NOT_FOUND",
194
- "admit_offering",
195
- { pattern, transport },
196
- `No Managed Delivery route serves the advertised offering ${pattern}/${transport}`
197
- );
198
- }
199
- if (offering.reconciliation_mode === "consumer_receipt" && !route.verificationProfiles.includes("canonical_digest")) {
200
- throw new ReportingManagedDeliveryRoutingErrorV1(
201
- "REPORTING_ROUTE_VERIFICATION_UNSUPPORTED",
202
- "admit_offering",
203
- { pattern, transport, verificationProfile: "canonical_digest" },
204
- `Managed Delivery route ${JSON.stringify(route.id)} cannot verify canonical_digest for a consumer-receipt offering`
205
- );
206
- }
207
- },
208
- routeIdFor(target) {
209
- try {
210
- if ("binding" in target) return forBinding(target.binding, "deliver").id;
211
- return forAuthorization(target.authorization).id;
212
- } catch {
213
- return void 0;
214
- }
215
- },
216
- async probe(context) {
217
- const probing = routes.filter((route) => typeof route.adapter.probe === "function");
218
- const settled = await Promise.allSettled(probing.map((route) => probeRoute(route, context.signal, probeTimeout)));
219
- const failedIds = [];
220
- const errors = [];
221
- settled.forEach((result, index) => {
222
- if (result.status === "rejected") {
223
- failedIds.push(probing[index].id);
224
- errors.push(result.reason);
225
- }
226
- });
227
- if (failedIds.length) throw new ReportingManagedDeliveryProbeErrorV1(failedIds, errors);
228
- }
229
- };
230
- return Object.freeze(router);
231
- }
232
- async function probeRoute(route, outer, timeoutMilliseconds) {
233
- const controller = new AbortController();
234
- const signal = AbortSignal.any([outer, controller.signal]);
235
- let timer;
236
- try {
237
- await Promise.race([
238
- Promise.resolve().then(() => route.adapter.probe({ signal })),
239
- new Promise((_resolve, reject) => {
240
- const abandon = (reason) => reject(reason ?? new Error("Route probe aborted"));
241
- if (signal.aborted) return abandon(signal.reason);
242
- signal.addEventListener("abort", () => abandon(signal.reason), { once: true });
243
- timer = setTimeout(() => {
244
- const error = new Error("Route probe deadline elapsed");
245
- controller.abort(error);
246
- abandon(error);
247
- }, timeoutMilliseconds);
248
- })
249
- ]);
250
- } finally {
251
- if (timer) clearTimeout(timer);
252
- }
253
- }
254
- export {
255
- ReportingManagedDeliveryProbeErrorV1,
256
- ReportingManagedDeliveryRoutingErrorV1,
257
- createReportingManagedDeliveryAdapterRouterV1
258
- };