@superbee/core 0.2.0-pre.14 → 0.2.0-pre.16

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 (145) hide show
  1. package/README.md +213 -0
  2. package/dist/backend.d.ts +3 -0
  3. package/dist/backend.d.ts.map +1 -1
  4. package/dist/backend.js +7 -0
  5. package/dist/backend.js.map +1 -1
  6. package/dist/blob-contract.d.ts +80 -0
  7. package/dist/blob-contract.d.ts.map +1 -0
  8. package/dist/blob-contract.js +131 -0
  9. package/dist/blob-contract.js.map +1 -0
  10. package/dist/blob-journal.d.ts +117 -0
  11. package/dist/blob-journal.d.ts.map +1 -0
  12. package/dist/blob-journal.js +168 -0
  13. package/dist/blob-journal.js.map +1 -0
  14. package/dist/engine.d.ts +1 -1
  15. package/dist/engine.d.ts.map +1 -1
  16. package/dist/engine.js.map +1 -1
  17. package/dist/file-journaled-backend-internal.d.ts +2 -0
  18. package/dist/file-journaled-backend-internal.d.ts.map +1 -1
  19. package/dist/file-journaled-backend-internal.js +2 -0
  20. package/dist/file-journaled-backend-internal.js.map +1 -1
  21. package/dist/file-journaled-backend.d.ts +14 -2
  22. package/dist/file-journaled-backend.d.ts.map +1 -1
  23. package/dist/file-journaled-backend.js +245 -37
  24. package/dist/file-journaled-backend.js.map +1 -1
  25. package/dist/hosted-client/binding.d.ts +7 -0
  26. package/dist/hosted-client/binding.d.ts.map +1 -0
  27. package/dist/hosted-client/binding.js +10 -0
  28. package/dist/hosted-client/binding.js.map +1 -0
  29. package/dist/hosted-client/blob-delivery.d.ts +61 -0
  30. package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
  31. package/dist/hosted-client/blob-delivery.js +147 -0
  32. package/dist/hosted-client/blob-delivery.js.map +1 -0
  33. package/dist/hosted-client/bundle-listing.d.ts +46 -0
  34. package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
  35. package/dist/hosted-client/bundle-listing.js +36 -0
  36. package/dist/hosted-client/bundle-listing.js.map +1 -0
  37. package/dist/hosted-client/client.d.ts +155 -0
  38. package/dist/hosted-client/client.d.ts.map +1 -0
  39. package/dist/hosted-client/client.js +278 -0
  40. package/dist/hosted-client/client.js.map +1 -0
  41. package/dist/hosted-client/errors.d.ts +16 -0
  42. package/dist/hosted-client/errors.d.ts.map +1 -0
  43. package/dist/hosted-client/errors.js +22 -0
  44. package/dist/hosted-client/errors.js.map +1 -0
  45. package/dist/hosted-client/index.d.ts +23 -0
  46. package/dist/hosted-client/index.d.ts.map +1 -0
  47. package/dist/hosted-client/index.js +25 -0
  48. package/dist/hosted-client/index.js.map +1 -0
  49. package/dist/hosted-client/node.d.ts +70 -0
  50. package/dist/hosted-client/node.d.ts.map +1 -0
  51. package/dist/hosted-client/node.js +214 -0
  52. package/dist/hosted-client/node.js.map +1 -0
  53. package/dist/hosted-client/reference.d.ts +12 -0
  54. package/dist/hosted-client/reference.d.ts.map +1 -0
  55. package/dist/hosted-client/reference.js +29 -0
  56. package/dist/hosted-client/reference.js.map +1 -0
  57. package/dist/hosted-client/write.d.ts +191 -0
  58. package/dist/hosted-client/write.d.ts.map +1 -0
  59. package/dist/hosted-client/write.js +396 -0
  60. package/dist/hosted-client/write.js.map +1 -0
  61. package/dist/hosted-transport/answer-rows.d.ts +26 -0
  62. package/dist/hosted-transport/answer-rows.d.ts.map +1 -1
  63. package/dist/hosted-transport/answer-rows.js +59 -1
  64. package/dist/hosted-transport/answer-rows.js.map +1 -1
  65. package/dist/hosted-transport/blob-reads.d.ts +35 -0
  66. package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
  67. package/dist/hosted-transport/blob-reads.js +179 -0
  68. package/dist/hosted-transport/blob-reads.js.map +1 -0
  69. package/dist/hosted-transport/blob-write.d.ts +34 -0
  70. package/dist/hosted-transport/blob-write.d.ts.map +1 -0
  71. package/dist/hosted-transport/blob-write.js +115 -0
  72. package/dist/hosted-transport/blob-write.js.map +1 -0
  73. package/dist/hosted-transport/carrier.d.ts +8 -9
  74. package/dist/hosted-transport/carrier.d.ts.map +1 -1
  75. package/dist/hosted-transport/carrier.js +40 -41
  76. package/dist/hosted-transport/carrier.js.map +1 -1
  77. package/dist/hosted-transport/index.d.ts +4 -4
  78. package/dist/hosted-transport/index.d.ts.map +1 -1
  79. package/dist/hosted-transport/index.js +4 -4
  80. package/dist/hosted-transport/index.js.map +1 -1
  81. package/dist/hosted-transport/read-adapter.d.ts +6 -0
  82. package/dist/hosted-transport/read-adapter.d.ts.map +1 -1
  83. package/dist/hosted-transport/read-adapter.js +11 -0
  84. package/dist/hosted-transport/read-adapter.js.map +1 -1
  85. package/dist/hosted-transport/whole-document-transport.d.ts +9 -8
  86. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -1
  87. package/dist/hosted-transport/whole-document-transport.js +10 -9
  88. package/dist/hosted-transport/whole-document-transport.js.map +1 -1
  89. package/dist/index.d.ts +3 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +4 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/journaled-backend.d.ts +10 -2
  94. package/dist/journaled-backend.d.ts.map +1 -1
  95. package/dist/journaled-backend.js +3 -3
  96. package/dist/journaled-backend.js.map +1 -1
  97. package/dist/link-types.d.ts +26 -0
  98. package/dist/link-types.d.ts.map +1 -0
  99. package/dist/link-types.js +57 -0
  100. package/dist/link-types.js.map +1 -0
  101. package/dist/platform.d.ts +4 -0
  102. package/dist/platform.d.ts.map +1 -1
  103. package/dist/platform.js +16 -0
  104. package/dist/platform.js.map +1 -1
  105. package/dist/recipe-lifecycle/errors.d.ts +77 -0
  106. package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
  107. package/dist/recipe-lifecycle/errors.js +96 -0
  108. package/dist/recipe-lifecycle/errors.js.map +1 -0
  109. package/dist/recipe-lifecycle/evolution.d.ts +71 -0
  110. package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
  111. package/dist/recipe-lifecycle/evolution.js +659 -0
  112. package/dist/recipe-lifecycle/evolution.js.map +1 -0
  113. package/dist/recipe-lifecycle/index.d.ts +23 -0
  114. package/dist/recipe-lifecycle/index.d.ts.map +1 -0
  115. package/dist/recipe-lifecycle/index.js +19 -0
  116. package/dist/recipe-lifecycle/index.js.map +1 -0
  117. package/dist/recipe-lifecycle/install.d.ts +111 -0
  118. package/dist/recipe-lifecycle/install.d.ts.map +1 -0
  119. package/dist/recipe-lifecycle/install.js +412 -0
  120. package/dist/recipe-lifecycle/install.js.map +1 -0
  121. package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
  122. package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
  123. package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
  124. package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
  125. package/dist/recipe-lifecycle/stamp.d.ts +98 -0
  126. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
  127. package/dist/recipe-lifecycle/stamp.js +260 -0
  128. package/dist/recipe-lifecycle/stamp.js.map +1 -0
  129. package/dist/recipes.d.ts +5 -0
  130. package/dist/recipes.d.ts.map +1 -1
  131. package/dist/recipes.js +5 -0
  132. package/dist/recipes.js.map +1 -1
  133. package/dist/storage.d.ts +3 -0
  134. package/dist/storage.d.ts.map +1 -1
  135. package/dist/storage.js +3 -0
  136. package/dist/storage.js.map +1 -1
  137. package/dist/uncertain-write.d.ts +70 -2
  138. package/dist/uncertain-write.d.ts.map +1 -1
  139. package/dist/uncertain-write.js +45 -32
  140. package/dist/uncertain-write.js.map +1 -1
  141. package/dist/write-identity.d.ts +5 -0
  142. package/dist/write-identity.d.ts.map +1 -0
  143. package/dist/write-identity.js +9 -0
  144. package/dist/write-identity.js.map +1 -0
  145. package/package.json +13 -1
package/README.md CHANGED
@@ -124,6 +124,219 @@ cleanup. Policies are structural snapshots: public data and methods are captured
124
124
  may continue to observe live operating-system facts. Do not use opaque private fields or methods
125
125
  pre-bound to a mutable receiver.
126
126
 
127
+ ## Recipe lifecycle
128
+
129
+ `@superbee/core/recipe-lifecycle` installs and evolves a parsed recipe on any bundle. The caller
130
+ acquires the recipe (`parseRecipeFiles` from `@superbee/core/recipes` turns files into a
131
+ `LoadedRecipe`) and presents the results; the `superbee` CLI is one such caller. It uses no Node
132
+ globals or builtins, so it runs in Node, a browser or a Worker over any storage backend.
133
+
134
+ ```ts
135
+ import { MemoryBackend } from "@superbee/core/memory-backend";
136
+ import { parseRecipeFiles } from "@superbee/core/recipes";
137
+ import { applyRecipeEvolution, installRecipe, planRecipeEvolution } from "@superbee/core/recipe-lifecycle";
138
+
139
+ const bundle = { root: "memory://glossary", backend: new MemoryBackend() };
140
+ const v1 = parseRecipeFiles(glossaryV1Files, "memory:glossary@1");
141
+ if (!v1.ok) throw new Error(v1.error.message);
142
+ await installRecipe(bundle, v1.recipe);
143
+
144
+ const v2 = parseRecipeFiles(glossaryV2Files, "memory:glossary@2");
145
+ if (!v2.ok) throw new Error(v2.error.message);
146
+ const plan = await planRecipeEvolution(bundle, v2.recipe);
147
+ if (plan.ready && plan.writes > 0) {
148
+ await applyRecipeEvolution(bundle, v2.recipe, plan.plan_token, { actor: "process:glossary-sync" });
149
+ }
150
+ ```
151
+
152
+ `installRecipe` is create-only: each convention, View pair and Reference is written with an
153
+ expect-absent compare-and-swap, an existing convention is left untouched (its row reports
154
+ `source_differs` when it differs from the recipe), and a differing View or Reference target is
155
+ refused before anything is written. `planRecipeEvolution` is read-only: it merges each recipe
156
+ convention into the installed one additively, rechecks existing instances, and returns blockers
157
+ and a `plan_token` bound to everything it read. `applyRecipeEvolution` recomputes the plan,
158
+ refuses a different token, and writes each changed convention at exactly the version the plan
159
+ saw. The bundle has no cross-document transaction, so a failure part way reports the definitions
160
+ written and those still pending.
161
+
162
+ Every convention either path writes carries an `x_recipe` stamp in the same write: the recipe's
163
+ id, version, declared convention count (`of`), `recipeSourceDigest` of the recipe, the
164
+ `definitionDigest` of the convention as written, and the `digest_rules` version. A plan's
165
+ `changed` is about content only; its `writes` also counts conventions whose stamp is stale or
166
+ missing, so a ready plan with `writes > 0` has work to apply. `installedRecipes(conventions,
167
+ known?)` reads each recipe's state (`installed`, `partial`, `diverged`, `unknown`) from the stamps
168
+ alone, without the recipe source.
169
+
170
+ Failures are typed subclasses of `RecipeLifecycleError`: `RecipeInputError` (the recipe cannot
171
+ target this bundle's edition), `RecipeAssetConflict` (`recipe`, `key`), `RecipeEditionChanged`,
172
+ `RecipeEvolutionPlanChanged` (`expected`, `current`), `RecipeEvolutionBlocked` (`blockers`),
173
+ `RecipeEvolutionInterrupted` (`reason`, `completed`, `pending`, `cause`) and
174
+ `RecipeEvolutionPostcondition` (`reason`, `completed`).
175
+
176
+ ## Hosted client
177
+
178
+ `@superbee/core/hosted-client` is the headless client of a hosted Superbee's sync routes
179
+ (`/sync/v1`). It is a supported public API under core's normal versioning; the `superbee` CLI uses
180
+ it. It runs wherever `fetch` does (Node, a browser or a Worker) and reads identity (`whoami`),
181
+ the bundle list (`bundles`, with `readBundleListing`), documents (`reader`), document history
182
+ (`history`) and operations run by id (`listOperations`, `runOperation`). `within(slug)` returns
183
+ the same client naming every bundle-scoped request's bundle as `<slug>/<bundle-id>`.
184
+
185
+ ```ts
186
+ import { bearerCredentials, createHostedClient } from "@superbee/core/hosted-client";
187
+
188
+ const client = createHostedClient({
189
+ target: { origin: "https://mcp.getsuperbee.com", syncPrefix: "/sync/v1" },
190
+ credentials: bearerCredentials(() => getToken()),
191
+ });
192
+ const identity = await client.whoami();
193
+ ```
194
+
195
+ The target is the origin and the sync prefix: `/sync/v1`, or `/agents/<id>/sync/v1` for an agent
196
+ connection. `syncRoutePrefix({ origin, audience })` derives the prefix from a protected-resource
197
+ audience and returns null when the audience has none. `credentials` is the transport carrier's
198
+ own credential provider: an async function returning the headers for one request. It is called
199
+ before every request, so it may renew a short-lived token. `bearerCredentials` builds one from a
200
+ token getter. The client never logs credentials, and its errors carry the route and code, never a
201
+ token.
202
+
203
+ Failures are typed and carry no wording for any particular surface:
204
+
205
+ - `HostedCarrierError`: transport. `denied` means no credential (nothing was sent) or the request
206
+ was refused before sending; `unavailable` means the answer is unknown. `isAnswerTooLarge`
207
+ distinguishes an answer larger than its bound.
208
+ - `MalformedAnswer` (`code` `MALFORMED_ANSWER`, `route`): the host answered something the
209
+ contract does not admit. Retrying gets the same answer.
210
+ - `RemoteError` (`code`, `status`): the host refused the request, with its own code.
211
+ - `HostedRouteNotServed` (`code` `ROUTE_NOT_SERVED`, status 404, `route`): a `RemoteError` for a
212
+ host from before the route.
213
+
214
+ Operation and history refusals the host states in a `200` (and `bundle_not_found`,
215
+ `unknown_operation` and `invalid_input`) come back as `{ ok: false, refusal }`, not as errors.
216
+
217
+ ### Writing a document
218
+
219
+ `write` sends one whole serialized document (frontmatter and body, as a file holds it) to a hosted
220
+ bundle: a create of an absent id, or a replace at exactly the version the caller read.
221
+
222
+ ```ts
223
+ const created = await client.write("notes", { id: "notes/today", document: text, expectAbsent: true });
224
+ const replaced = await client.write("notes", { id: "notes/today", document: edited, expectedVersion: version });
225
+ ```
226
+
227
+ It returns one of:
228
+
229
+ - `{ status: "committed", version }`: the host stored it; `version` is the new head.
230
+ - `{ status: "conflict", reason: "version_conflict", currentVersion }`: the document is not at the
231
+ expected version (for a create: it exists). `currentVersion` is the version the host serves, or
232
+ null when it serves none. Nothing was written.
233
+ - `{ status: "conflict", reason: "concurrent_change" }`: another write to the bundle overlapped
234
+ this one past the host's own retries. Nothing was written.
235
+ - `{ status: "refused", code, message }`: the host refused this write (`validation_failed`,
236
+ `invalid_input`, `AUTH_REQUIRED`, `PERMISSION_DENIED`, a sync quota's `REQUEST_CAPACITY_*`, or
237
+ `read_only` when the bundle serves no writes). Nothing was written.
238
+ - `{ status: "unknown", requestId }`: the host may or may not hold the write.
239
+
240
+ Every result names its `requestId`. A conflict is final for that identity: the client never
241
+ resends it, under that identity or a new one. Read the document and decide; another attempt is a
242
+ new `write`.
243
+
244
+ A write needs the bundle's capabilities (whether it serves writes, its OKF edition, the write
245
+ bound and the retention window). The client reads them once per bundle and workspace and holds the
246
+ answer for `capabilitiesTtlMs` (default 60,000 ms), shared by the client and its `within` clients
247
+ and never by `reader()`. So a write costs one round trip while its bundle's capabilities are fresh,
248
+ and two when they are read first; concurrent writes to one bundle share one read. A write refused
249
+ `read_only`, `invalid_input`, `validation_failed` or `PERMISSION_DENIED` (which is how a
250
+ `bundle_not_found` write answer arrives), or whose result is `unknown`, drops the held answer, and
251
+ a capabilities read that fails is never held, so the next write reads them again. Set
252
+ `capabilitiesTtlMs: 0` to read them before every write. The retention window that decides a
253
+ resend after an `absent` lookup (below) is never taken from a held answer: it is read again then.
254
+
255
+ Each write has one request identity and carries the client's binding, a digest of a random id the
256
+ client mints once (its `within` clients share it). When an answer is lost (a transport failure or
257
+ a deadline after sending), the client looks the identity up on the host and reports what the host
258
+ recorded. The host's outcome route tells a request it never received ("absent") from one still in
259
+ progress ("pending"), but the shared transport reports both as "no outcome yet". On that answer
260
+ `write` sends the same identity once more, which the host applies at most once. Absence counts as
261
+ evidence only within the retention window the host serves in its capabilities
262
+ (`operationsRetentionMs`, less an hour's margin); past it, the result stays `unknown` and nothing
263
+ is resent. The client measures an intent's age by its own clock against the host's window, so that
264
+ margin holds only while the client's clock is within an hour of the host's. A resend refused before
265
+ it reaches the host's execution (no credential, access withdrawn, a spent quota) leaves the result
266
+ `unknown` too, since the first delivery may still commit. When the lookups themselves fail, or the caller's `signal` aborts after sending, the
267
+ result is `unknown`.
268
+
269
+ An `unknown` write can be resolved later in two ways:
270
+
271
+ - `lookupWrite(requestId)` makes one outcome lookup and never sends the write. When the host holds
272
+ no outcome yet (absent or pending), the answer stays `unknown`.
273
+ - `settleWrite(requestId)` looks the identity up and, when the host never recorded it within its
274
+ retention window, sends the same identity once more, as `write` would have.
275
+
276
+ Both answer `{ status: "unrecorded", requestId }` when the intent store holds no write under that
277
+ identity: it was never recorded there, or it already settled and left the store. Both return
278
+ `unknown` when the bundle's capabilities cannot be read, because the write may already have left.
279
+ `settleWrite` only looks up, sending nothing, when the host serves the bundle no writes. A
280
+ `signal` already aborted when `write`, `lookupWrite` or `settleWrite` is called is thrown as its
281
+ reason before any request; an abort during delivery leaves the write `unknown` and held.
282
+ `write` instead throws that failure, because it has sent nothing yet.
283
+
284
+ Until it settles, a write is held in an intent store: its operation, bundle (and workspace),
285
+ document id, document and digest, expected version, request identity and binding, which is
286
+ everything needed to rebuild the lookup exactly. The default store is in memory and lives as long
287
+ as the client. Pass `intentStore` (`put`, `get`, `delete`, and optionally `list`) to keep intents
288
+ durable across restarts; lookups use the binding recorded with each intent. A service that
289
+ restarts with a durable store calls `heldWrites()` to find the writes that never settled
290
+ (including any recorded but never sent), then settles each with `settleWrite`. `heldWrites()`
291
+ throws `HostedIntentsNotListable` when the store has no `list`. A settled write leaves the store.
292
+
293
+ `write(..., { requestId })` with the identity of a held write resumes that write and applies
294
+ nothing new. A different write under a held identity, including the same write named in another
295
+ workspace, is refused before sending. The host refuses an identity it recorded for another
296
+ document (`invalid_input`). Calls on one client that name the same identity run one after another.
297
+
298
+ `write` throws only before anything is sent: a malformed input (`TypeError`), the typed error of
299
+ its capabilities read, or a failure of the intent store to record the write. Document deletion is
300
+ not part of `write`.
301
+
302
+ ### Export download (Node only)
303
+
304
+ `@superbee/core/hosted-client/node` downloads and verifies a hosted bundle's portable export. It
305
+ is a supported public API under the same versioning. It is Node-only because verification
306
+ (`@superbee/core/portable-export`) needs Node; `@superbee/core/hosted-client` never imports it,
307
+ so the client itself stays browser-safe.
308
+
309
+ ```ts
310
+ import { bearerCredentials, createHostedClient } from "@superbee/core/hosted-client";
311
+ import { downloadExport, EXPORT_WINDOW_MS } from "@superbee/core/hosted-client/node";
312
+ import { materializeExport } from "@superbee/core/portable-export";
313
+
314
+ const client = createHostedClient({ target, credentials: bearerCredentials(getToken), deadlineMs: EXPORT_WINDOW_MS });
315
+ const verified = await downloadExport(client, "team.notes", { signal });
316
+ const folder = await materializeExport(verified, parentDirectory);
317
+ ```
318
+
319
+ `downloadExport(client, bundleId, { signal })` returns a `VerifiedExport`: every document,
320
+ reserved file and blob at the bundle's latest confirmed revision, read whole and checked against
321
+ the host's digest manifests. It writes nothing. A stopped, tampered or oversized export never
322
+ becomes a result; placing the files is the caller's (`materializeExport`, or its own staging). It
323
+ reads a paged export one page at a time and joins the pages. On a host from before paging it reads
324
+ the whole archive. A bundle that changes between pages is read again from its first page, up to
325
+ three attempts, and a busy or stopped page is asked for once more. Create the client with
326
+ `deadlineMs: EXPORT_WINDOW_MS` (60 s), the host's export window; the default 15 s can cut a large
327
+ bundle. A `within(slug)` client names the bundle in that workspace.
328
+
329
+ Failures are typed:
330
+
331
+ - `HostedCarrierError`, `HostedRouteNotServed` (a host without the export route) and
332
+ `RemoteError` (the host's refusal: `bundle_not_found`, `result_too_large`, `validation_failed`,
333
+ an unauthenticated bearer and so on), as for the rest of the client.
334
+ - `ExportArchiveError` (`problem`): the verifier refused the archive. `incomplete` means the host
335
+ stopped it, and the same request may succeed.
336
+ - `HostedExportError` (`problem`): `stopped` (the answer's body failed part way), `too_large`
337
+ (past `MAX_EXPORT_BYTES`) or `source_changed` (the bundle kept changing between pages).
338
+ - The signal's reason, once `signal` or the client's own signal aborts.
339
+
127
340
  ## Release compatibility
128
341
 
129
342
  This migration describes the source after the Windows extraction. Previously published versions
package/dist/backend.d.ts CHANGED
@@ -60,6 +60,9 @@ export declare class FilesystemBackend implements StorageBackend {
60
60
  readonly backlinks: false;
61
61
  };
62
62
  }
63
+ /** Read-only exact-spelling metadata observation for a safe blob pathname. Reads no body and
64
+ * creates no directories; alias/unsafe observations retain the identity owner's typed refusal. */
65
+ export declare function probeFilesystemPath(backend: FilesystemBackend, key: string): Promise<"exact" | "absent">;
63
66
  /** Internal exact-byte authority for the publication adapter; not part of StorageBackend. */
64
67
  export declare function readRawFilesystemDocument(backend: FilesystemBackend, id: ConceptId): Promise<{
65
68
  bytes: Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
package/dist/backend.js CHANGED
@@ -374,6 +374,13 @@ function publicationContext(backend) {
374
374
  throw new InvalidInputError("Unknown filesystem backend publication source.");
375
375
  return context;
376
376
  }
377
+ /** Read-only exact-spelling metadata observation for a safe blob pathname. Reads no body and
378
+ * creates no directories; alias/unsafe observations retain the identity owner's typed refusal. */
379
+ export async function probeFilesystemPath(backend, key) {
380
+ assertSafeBlobKey(key);
381
+ const { root, port } = publicationContext(backend);
382
+ return (await probeExact(port, root, key)).state;
383
+ }
377
384
  /** Internal exact-byte authority for the publication adapter; not part of StorageBackend. */
378
385
  export async function readRawFilesystemDocument(backend, id) {
379
386
  return readRawDocumentIn(backend, id);
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,WAAW,EACX,gCAAgC,EAEhC,YAAY,EACZ,mBAAmB,EACnB,UAAU,GAGX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAiB/E,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAqE,CAAC;AAE7G,qEAAqE;AACrE,SAAS,WAAW,CAAC,GAAG,IAAe;IACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,IAAI,GAAI,GAA6B,EAAE,IAAI,CAAC;IAClD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,CAAC;AACtE,CAAC;AAED,oFAAoF;AACpF,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAW;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,4CAA4C,MAAM,GAAG,CAA0B,CAAC;IACtG,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IACpB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IACrB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0FAA0F;AAC1F,KAAK,UAAU,SAAS,CAAC,IAA4B,EAAE,MAAkB;IACvE,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,iBAAiB,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,SAAS,CAAC,IAA4B,EAAE,IAAY,EAAE,IAA+B,EAAE,GAAG,GAAG,EAAE;IAC5G,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,oDAAoD;QAC9F,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,0FAA0F;YAC1F,2FAA2F;YAC3F,yCAAyC;YACzC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,SAAS,YAAY,CAAC,GAAW,EAAE,IAAsB;IACvD,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACnB,KAAK,CAAS;IACd,KAAK,CAAyB;IAEvC;;;;OAIG;IACH,YAAY,IAAY,EAAE,UAAoC,EAAE;QAC9D,IAAI,CAAC,KAAK,GAAG,gCAAgC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAa;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mFAAmF;YACnF,IAAI,CAAC,CAAC,KAAK,YAAY,sBAAsB,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC5D,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,EAAa,EACb,OAA0C,EAC1C,IAAsB;QAEtB,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,MAAkB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9G,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,EAAE,EAAE,CAAC,CAAC;QACvF,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAgB;QAC7B,iEAAiE;QACjE,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,sFAAsF;QACtF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACnD,KAAK,MAAM,EAAE,IAAI,GAAG;gBAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,yFAAyF;QACzF,0FAA0F;QAC1F,IAAI,cAAuD,CAAC;QAC5D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7D,yFAAyF;QACzF,0EAA0E;QAC1E,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC;gBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAE,EAAE,OAAO,CAAC,CAAC;QAChH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAa,EAAE,GAAgB,EAAE,UAAwB,EAAE;QACrE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAClC,4FAA4F;QAC5F,0FAA0F;QAC1F,4DAA4D;QAC5D,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/D,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/E,IAAI,OAAO,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;oBACxC,MAAM,IAAI,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YACD,8EAA8E;YAC9E,kFAAkF;YAClF,iFAAiF;YACjF,qFAAqF;YACrF,2EAA2E;YAC3E,gFAAgF;YAChF,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/C,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAa,EAAE,UAAyB,EAAE;QACrD,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACjF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC,CAAC,4CAA4C;YAC9E,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;gBACjF,MAAM,IAAI,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,yFAAyF;YACzF,wFAAwF;YACxF,4BAA4B;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAa;QAC1B,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC/C,8EAA8E;gBAC9E,uFAAuF;gBACvF,sFAAsF;gBACtF,mFAAmF;gBACnF,wFAAwF;gBACxF,qFAAqF;gBACrF,qFAAqF;gBACrF,kBAAkB;gBAClB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChD,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC,CAAC,oCAAoC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QACtC,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,4BAA4B,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC;QAC1E,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5E,yEAAyE;QACzE,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAa;QACxB,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,MAAM,GAAG,GAAgB,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClC,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAClC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,iBAAiB,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClC,MAAM,IAAI,iBAAiB,CACzB,iBAAiB,GAAG,+CAA+C,EAAE,0BAA0B,iBAAiB,CAAC,EAAE,CAAC,IAAI,CACzH,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,IAAsB;QACpD,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAChI,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChD,qFAAqF;QACrF,wEAAwE;QACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,IAAsB,EACtB,OAAe,EACf,UAAwB,EAAE;QAE1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,uFAAuF;QACvF,2DAA2D;QAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/D,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/E,IAAI,OAAO,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;oBACxC,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YACD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACnD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,QAAQ,CAAC,GAAY;QACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,2FAA2F;QAC3F,+FAA+F;QAC/F,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5G,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,8BAA8B;QAC5D,mFAAmF;QACnF,oFAAoF;QACpF,kDAAkD;QAClD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CACb,GAAY,EACZ,KAAiB,EACjB,YAAqB,EACrB,UAAwB,EAAE;QAE1B,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,0FAA0F;QAC1F,uFAAuF;QACvF,8FAA8F;QAC9F,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/D,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACjE,IAAI,OAAO,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;oBACxC,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YACD,+EAA+E;YAC/E,iFAAiF;YACjF,8EAA8E;YAC9E,6EAA6E;YAC7E,oEAAoE;YACpE,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAY,EAAE,UAAyB,EAAE;QACxD,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC,CAAC,yDAAyD;YAC9F,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;gBACjF,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAY;QAC3B,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,2FAA2F;QAC3F,2FAA2F;QAC3F,4FAA4F;QAC5F,uFAAuF;QACvF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/D,OAAO,QAAQ,CAAC,KAAK,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAe;QAC7B,6FAA6F;QAC7F,mFAAmF;QACnF,4EAA4E;QAC5E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACrG,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAY;QACV,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,KAAK;SACR,CAAC;IACb,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,OAA0B;IACpD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,iBAAiB,CAAC,gDAAgD,CAAC,CAAC;IAC5F,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAA0B,EAC1B,EAAa;IAEb,OAAO,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAA0B,EAC1B,EAAa,EACb,IAAsB;IAEtB,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,MAAkB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClG,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AACzE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAA0B;IAItE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IACzC,OAAO;QACL,IAAI,CAAC,EAAE;YACL,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,OAAO,iBAAiB,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,MAAM;YACV,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3C,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxB,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAA0B,EAC1B,GAAW,EACX,IAAsB;IAEtB,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9G,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;QAC7B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAA0B;IAE1B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC9F,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAqB,CAAC;QAC3D,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { Version } from "./types.js";
2
+ export declare const BLOB_OPERATION_IDS: readonly ["blobs.create.v1", "blobs.replace.v1", "blobs.delete.v1"];
3
+ export type BlobOperationId = (typeof BLOB_OPERATION_IDS)[number];
4
+ /** Pins retained in an intent. A delete has no replacement digest/type and creates name absence. */
5
+ export type BlobWriteExpected = {
6
+ operationId: "blobs.create.v1";
7
+ key: string;
8
+ expectedVersion: null;
9
+ expectedContentType: null;
10
+ version: Version;
11
+ contentType: string;
12
+ } | {
13
+ operationId: "blobs.replace.v1";
14
+ key: string;
15
+ expectedVersion: Version;
16
+ expectedContentType: string;
17
+ version: Version;
18
+ contentType: string;
19
+ } | {
20
+ operationId: "blobs.delete.v1";
21
+ key: string;
22
+ expectedVersion: Version;
23
+ expectedContentType: string;
24
+ };
25
+ export type BlobWriteSuccess = {
26
+ ok: true;
27
+ operationId: "blobs.create.v1" | "blobs.replace.v1";
28
+ data: {
29
+ key: string;
30
+ version: Version;
31
+ contentType: string;
32
+ changed: boolean;
33
+ };
34
+ } | {
35
+ ok: true;
36
+ operationId: "blobs.delete.v1";
37
+ data: {
38
+ key: string;
39
+ version: Version;
40
+ contentType: string;
41
+ deleted: true;
42
+ };
43
+ };
44
+ export type BlobWriteErrorCode = "version_conflict" | "insufficient_scope" | "bundle_not_found" | "concurrent_change" | "backend_unavailable" | "request_capacity" | "deletions_held" | "write_outcome_unknown";
45
+ export type BlobWriteFailure = {
46
+ ok: false;
47
+ operationId: BlobOperationId;
48
+ error: {
49
+ code: BlobWriteErrorCode;
50
+ message: string;
51
+ retryable: false;
52
+ writeState: "not_applied" | "unknown";
53
+ expected?: Version | null;
54
+ actual?: Version | null;
55
+ expectedContentType?: string | null;
56
+ actualContentType?: string | null;
57
+ scope?: "principal" | "bundle";
58
+ resetAt?: string;
59
+ deletions?: number;
60
+ baseline?: number;
61
+ };
62
+ };
63
+ export type BlobWriteResult = BlobWriteSuccess | BlobWriteFailure;
64
+ export declare function isBlobContentType(value: unknown): value is string;
65
+ export declare function isSafeBlobKey(value: unknown): value is string;
66
+ export declare function isBlobWriteExpected(expected: BlobWriteExpected): boolean;
67
+ /** A blob result answers every version and MIME pin retained in the original intent. Success
68
+ * names a replacement head, or a delete's removed head; it never invents a tombstone. */
69
+ export declare function decodeBlobWriteResult(raw: unknown, expected: BlobWriteExpected): BlobWriteResult;
70
+ export interface BlobHead {
71
+ readonly key: string;
72
+ readonly version: string;
73
+ readonly contentType: string;
74
+ }
75
+ export declare function assertBlobKey(key: string): void;
76
+ export declare function captureBlobHead(value: unknown): BlobHead;
77
+ export declare function encodeBlobKey(key: string): string;
78
+ /** Snapshot the strict retained payload before any asynchronous admission. */
79
+ export declare function captureBlobWriteExpected(intent: BlobWriteExpected): BlobWriteExpected;
80
+ //# sourceMappingURL=blob-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-contract.d.ts","sourceRoot":"","sources":["../src/blob-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /** Pure ordinary-file intent and result grammar. No transport or authority is carried here. */
2
+ import { assertSafeBlobKey } from "./paths.js";
3
+ import { isContentVersion } from "./version-transport.js";
4
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
5
+ const onlyKeys = (value, allowed) => Object.keys(value).every(key => allowed.includes(key));
6
+ const count = (value) => Number.isSafeInteger(value) && value >= 1;
7
+ export const BLOB_OPERATION_IDS = Object.freeze(["blobs.create.v1", "blobs.replace.v1", "blobs.delete.v1"]);
8
+ const BLOB_ERROR_CODES = ["version_conflict", "insufficient_scope", "bundle_not_found", "concurrent_change", "backend_unavailable", "request_capacity", "deletions_held", "write_outcome_unknown"];
9
+ const BLOB_ERROR_KEYS = ["code", "message", "retryable", "writeState", "expected", "actual", "expectedContentType", "actualContentType", "scope", "resetAt", "deletions", "baseline"];
10
+ const BLOB_CONFLICT_KEYS = ["expected", "actual", "expectedContentType", "actualContentType"];
11
+ export function isBlobContentType(value) {
12
+ return typeof value === "string" && value.length > 0 && value.length <= 1024 && /^[\x20-\x7e]+$/.test(value) && value.trim() === value;
13
+ }
14
+ export function isSafeBlobKey(value) {
15
+ if (typeof value !== "string")
16
+ return false;
17
+ try {
18
+ assertSafeBlobKey(value);
19
+ const bytes = new TextEncoder().encode(value);
20
+ return bytes.length <= 512 && new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes) === value;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ export function isBlobWriteExpected(expected) {
27
+ if (!isRecord(expected) || !BLOB_OPERATION_IDS.includes(expected.operationId) || !isSafeBlobKey(expected.key))
28
+ return false;
29
+ if (expected.operationId === "blobs.create.v1") {
30
+ if (expected.expectedVersion !== null || expected.expectedContentType !== null)
31
+ return false;
32
+ }
33
+ else if (!isContentVersion(expected.expectedVersion) || !isBlobContentType(expected.expectedContentType))
34
+ return false;
35
+ if (expected.operationId === "blobs.delete.v1")
36
+ return !("version" in expected) && !("contentType" in expected);
37
+ return isContentVersion(expected.version) && isBlobContentType(expected.contentType);
38
+ }
39
+ /** A blob result answers every version and MIME pin retained in the original intent. Success
40
+ * names a replacement head, or a delete's removed head; it never invents a tombstone. */
41
+ export function decodeBlobWriteResult(raw, expected) {
42
+ const refuse = () => new TypeError("the blob write result does not answer the retained intent");
43
+ if (!isBlobWriteExpected(expected) || !isRecord(raw) || !onlyKeys(raw, ["ok", "operationId", "data", "error"]) || raw.operationId !== expected.operationId)
44
+ throw refuse();
45
+ const operationId = expected.operationId;
46
+ if (raw.ok === true) {
47
+ const data = raw.data;
48
+ const deletion = operationId === "blobs.delete.v1";
49
+ if (raw.error !== undefined || !isRecord(data) || !onlyKeys(data, deletion ? ["key", "version", "contentType", "deleted"] : ["key", "version", "contentType", "changed"]) || data.key !== expected.key || !isContentVersion(data.version) || !isBlobContentType(data.contentType))
50
+ throw refuse();
51
+ if (expected.operationId === "blobs.delete.v1") {
52
+ if (data.deleted !== true || data.version !== expected.expectedVersion || data.contentType !== expected.expectedContentType)
53
+ throw refuse();
54
+ return { ok: true, operationId: expected.operationId, data: { key: expected.key, version: data.version, contentType: data.contentType, deleted: true } };
55
+ }
56
+ if (data.version !== expected.version || data.contentType !== expected.contentType || typeof data.changed !== "boolean" ||
57
+ (expected.operationId === "blobs.create.v1" && !data.changed) ||
58
+ (expected.operationId === "blobs.replace.v1" && data.changed !== (expected.version !== expected.expectedVersion || expected.contentType !== expected.expectedContentType)))
59
+ throw refuse();
60
+ return { ok: true, operationId: expected.operationId, data: { key: expected.key, version: data.version, contentType: data.contentType, changed: data.changed } };
61
+ }
62
+ const error = raw.error;
63
+ if (raw.ok !== false || raw.data !== undefined || !isRecord(error) || !onlyKeys(error, BLOB_ERROR_KEYS) || !BLOB_ERROR_CODES.includes(error.code) || typeof error.message !== "string" || error.retryable !== false ||
64
+ (error.writeState !== "not_applied" && error.writeState !== "unknown") ||
65
+ (error.code === "write_outcome_unknown" ? error.writeState !== "unknown" : error.writeState !== "not_applied"))
66
+ throw refuse();
67
+ if (error.code === "version_conflict") {
68
+ if (error.expected !== expected.expectedVersion || error.expectedContentType !== expected.expectedContentType ||
69
+ !(error.actual === null || isContentVersion(error.actual)) || !(error.actualContentType === null || isBlobContentType(error.actualContentType)) ||
70
+ ((error.actual === null) !== (error.actualContentType === null)) ||
71
+ (expected.operationId === "blobs.create.v1" && error.actual === null) ||
72
+ (error.actual === expected.expectedVersion && error.actualContentType === expected.expectedContentType))
73
+ throw refuse();
74
+ }
75
+ else if (BLOB_CONFLICT_KEYS.some(key => error[key] !== undefined))
76
+ throw refuse();
77
+ if (error.code === "request_capacity") {
78
+ if ((error.scope !== "principal" && error.scope !== "bundle") || (error.resetAt !== undefined && (typeof error.resetAt !== "string" || !Number.isFinite(Date.parse(error.resetAt)))))
79
+ throw refuse();
80
+ }
81
+ else if (error.scope !== undefined || error.resetAt !== undefined)
82
+ throw refuse();
83
+ if (error.code === "deletions_held") {
84
+ if (operationId !== "blobs.delete.v1" || !count(error.deletions) || !count(error.baseline))
85
+ throw refuse();
86
+ }
87
+ else if (error.deletions !== undefined || error.baseline !== undefined)
88
+ throw refuse();
89
+ return { ok: false, operationId, error: { ...error } };
90
+ }
91
+ export function assertBlobKey(key) {
92
+ try {
93
+ assertSafeBlobKey(key);
94
+ }
95
+ catch {
96
+ throw new TypeError("unsafe blob key");
97
+ }
98
+ const bytes = new TextEncoder().encode(key);
99
+ if (bytes.length > 512 || new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes) !== key)
100
+ throw new TypeError("unrepresentable blob key");
101
+ }
102
+ export function captureBlobHead(value) {
103
+ if (!isRecord(value) || !onlyKeys(value, ["key", "version", "contentType"]) || typeof value.key !== "string" || !isContentVersion(value.version) || !isBlobContentType(value.contentType))
104
+ throw new TypeError("malformed blob head");
105
+ assertBlobKey(value.key);
106
+ return Object.freeze({ key: value.key, version: value.version, contentType: value.contentType });
107
+ }
108
+ export function encodeBlobKey(key) {
109
+ assertBlobKey(key);
110
+ let binary = "";
111
+ for (const byte of new TextEncoder().encode(key))
112
+ binary += String.fromCharCode(byte);
113
+ return btoa(binary).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, "");
114
+ }
115
+ /** Snapshot the strict retained payload before any asynchronous admission. */
116
+ export function captureBlobWriteExpected(intent) {
117
+ if (!isRecord(intent))
118
+ throw new TypeError("blob intent and identity must be objects");
119
+ const copied = { ...intent };
120
+ const deletion = copied.operationId === "blobs.delete.v1";
121
+ if (!["blobs.create.v1", "blobs.replace.v1", "blobs.delete.v1"].includes(copied.operationId) ||
122
+ !onlyKeys(copied, deletion ? ["operationId", "key", "expectedVersion", "expectedContentType"] : ["operationId", "key", "expectedVersion", "expectedContentType", "version", "contentType"]))
123
+ throw new TypeError("unsupported blob intent");
124
+ assertBlobKey(copied.key);
125
+ if (copied.operationId === "blobs.create.v1" ? copied.expectedVersion !== null || copied.expectedContentType !== null : !isContentVersion(copied.expectedVersion) || !isBlobContentType(copied.expectedContentType))
126
+ throw new TypeError("blob preconditions are required");
127
+ if (copied.operationId !== "blobs.delete.v1" && (!isContentVersion(copied.version) || !isBlobContentType(copied.contentType)))
128
+ throw new TypeError("blob replacement pins are required");
129
+ return Object.freeze(copied);
130
+ }
131
+ //# sourceMappingURL=blob-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-contract.js","sourceRoot":"","sources":["../src/blob-contract.ts"],"names":[],"mappings":"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"}