@superbee/core 0.2.0-pre.1 → 0.2.0-pre.10

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 (215) hide show
  1. package/README.md +127 -0
  2. package/dist/artifact-contract.d.ts +90 -0
  3. package/dist/artifact-contract.d.ts.map +1 -0
  4. package/dist/artifact-contract.js +205 -0
  5. package/dist/artifact-contract.js.map +1 -0
  6. package/dist/backend.d.ts +16 -1
  7. package/dist/backend.d.ts.map +1 -1
  8. package/dist/backend.js +85 -42
  9. package/dist/backend.js.map +1 -1
  10. package/dist/bundle-ops.d.ts +1 -1
  11. package/dist/bundle-ops.d.ts.map +1 -1
  12. package/dist/bundle-ops.js +2 -2
  13. package/dist/bundle-ops.js.map +1 -1
  14. package/dist/bundle.d.ts +2 -1
  15. package/dist/bundle.d.ts.map +1 -1
  16. package/dist/bundle.js +3 -3
  17. package/dist/bundle.js.map +1 -1
  18. package/dist/document-codec.d.ts +6 -1
  19. package/dist/document-codec.d.ts.map +1 -1
  20. package/dist/document-codec.js +8 -4
  21. package/dist/document-codec.js.map +1 -1
  22. package/dist/document-field-actions.d.ts +13 -1
  23. package/dist/document-field-actions.d.ts.map +1 -1
  24. package/dist/document-field-actions.js +47 -6
  25. package/dist/document-field-actions.js.map +1 -1
  26. package/dist/document-mutation.d.ts +15 -1
  27. package/dist/document-mutation.d.ts.map +1 -1
  28. package/dist/document-mutation.js +42 -11
  29. package/dist/document-mutation.js.map +1 -1
  30. package/dist/document-write-policy.d.ts.map +1 -1
  31. package/dist/document-write-policy.js +4 -2
  32. package/dist/document-write-policy.js.map +1 -1
  33. package/dist/engine.d.ts +1 -1
  34. package/dist/engine.d.ts.map +1 -1
  35. package/dist/engine.js +4 -3
  36. package/dist/engine.js.map +1 -1
  37. package/dist/file-journaled-backend-internal.d.ts +19 -0
  38. package/dist/file-journaled-backend-internal.d.ts.map +1 -0
  39. package/dist/file-journaled-backend-internal.js +10 -0
  40. package/dist/file-journaled-backend-internal.js.map +1 -0
  41. package/dist/file-journaled-backend.d.ts +162 -0
  42. package/dist/file-journaled-backend.d.ts.map +1 -0
  43. package/dist/file-journaled-backend.js +1113 -0
  44. package/dist/file-journaled-backend.js.map +1 -0
  45. package/dist/filesystem-host.d.ts +15 -0
  46. package/dist/filesystem-host.d.ts.map +1 -0
  47. package/dist/filesystem-host.js +20 -0
  48. package/dist/filesystem-host.js.map +1 -0
  49. package/dist/filesystem-identity.d.ts +86 -4
  50. package/dist/filesystem-identity.d.ts.map +1 -1
  51. package/dist/filesystem-identity.js +338 -102
  52. package/dist/filesystem-identity.js.map +1 -1
  53. package/dist/filesystem-lock.d.ts +16 -3
  54. package/dist/filesystem-lock.d.ts.map +1 -1
  55. package/dist/filesystem-lock.js +323 -77
  56. package/dist/filesystem-lock.js.map +1 -1
  57. package/dist/filesystem-push-role.d.ts +77 -0
  58. package/dist/filesystem-push-role.d.ts.map +1 -0
  59. package/dist/filesystem-push-role.js +165 -0
  60. package/dist/filesystem-push-role.js.map +1 -0
  61. package/dist/filesystem.d.ts +17 -0
  62. package/dist/filesystem.d.ts.map +1 -0
  63. package/dist/filesystem.js +18 -0
  64. package/dist/filesystem.js.map +1 -0
  65. package/dist/frontmatter.d.ts +8 -0
  66. package/dist/frontmatter.d.ts.map +1 -1
  67. package/dist/frontmatter.js +14 -4
  68. package/dist/frontmatter.js.map +1 -1
  69. package/dist/governed-body-write.d.ts +106 -0
  70. package/dist/governed-body-write.d.ts.map +1 -0
  71. package/dist/governed-body-write.js +251 -0
  72. package/dist/governed-body-write.js.map +1 -0
  73. package/dist/heads-digest.d.ts +32 -0
  74. package/dist/heads-digest.d.ts.map +1 -0
  75. package/dist/heads-digest.js +37 -0
  76. package/dist/heads-digest.js.map +1 -0
  77. package/dist/host-policy-snapshot.d.ts +9 -0
  78. package/dist/host-policy-snapshot.d.ts.map +1 -0
  79. package/dist/host-policy-snapshot.js +33 -0
  80. package/dist/host-policy-snapshot.js.map +1 -0
  81. package/dist/host-text.d.ts +31 -0
  82. package/dist/host-text.d.ts.map +1 -0
  83. package/dist/host-text.js +77 -0
  84. package/dist/host-text.js.map +1 -0
  85. package/dist/hosted-transport/answer-rows.d.ts +216 -0
  86. package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
  87. package/dist/hosted-transport/answer-rows.js +396 -0
  88. package/dist/hosted-transport/answer-rows.js.map +1 -0
  89. package/dist/hosted-transport/carrier.d.ts +142 -0
  90. package/dist/hosted-transport/carrier.d.ts.map +1 -0
  91. package/dist/hosted-transport/carrier.js +241 -0
  92. package/dist/hosted-transport/carrier.js.map +1 -0
  93. package/dist/hosted-transport/history-pages.d.ts +55 -0
  94. package/dist/hosted-transport/history-pages.d.ts.map +1 -0
  95. package/dist/hosted-transport/history-pages.js +69 -0
  96. package/dist/hosted-transport/history-pages.js.map +1 -0
  97. package/dist/hosted-transport/index.d.ts +18 -0
  98. package/dist/hosted-transport/index.d.ts.map +1 -0
  99. package/dist/hosted-transport/index.js +18 -0
  100. package/dist/hosted-transport/index.js.map +1 -0
  101. package/dist/hosted-transport/operations.d.ts +85 -0
  102. package/dist/hosted-transport/operations.d.ts.map +1 -0
  103. package/dist/hosted-transport/operations.js +128 -0
  104. package/dist/hosted-transport/operations.js.map +1 -0
  105. package/dist/hosted-transport/paged-reads.d.ts +87 -0
  106. package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
  107. package/dist/hosted-transport/paged-reads.js +238 -0
  108. package/dist/hosted-transport/paged-reads.js.map +1 -0
  109. package/dist/hosted-transport/read-adapter.d.ts +250 -0
  110. package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
  111. package/dist/hosted-transport/read-adapter.js +557 -0
  112. package/dist/hosted-transport/read-adapter.js.map +1 -0
  113. package/dist/hosted-transport/root-write.d.ts +114 -0
  114. package/dist/hosted-transport/root-write.d.ts.map +1 -0
  115. package/dist/hosted-transport/root-write.js +171 -0
  116. package/dist/hosted-transport/root-write.js.map +1 -0
  117. package/dist/hosted-transport/whole-document-transport.d.ts +174 -0
  118. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
  119. package/dist/hosted-transport/whole-document-transport.js +411 -0
  120. package/dist/hosted-transport/whole-document-transport.js.map +1 -0
  121. package/dist/index.d.ts +22 -8
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +15 -5
  124. package/dist/index.js.map +1 -1
  125. package/dist/indexeddb-backend.d.ts +38 -6
  126. package/dist/indexeddb-backend.d.ts.map +1 -1
  127. package/dist/indexeddb-backend.js +511 -46
  128. package/dist/indexeddb-backend.js.map +1 -1
  129. package/dist/journaled-backend.d.ts +296 -7
  130. package/dist/journaled-backend.d.ts.map +1 -1
  131. package/dist/journaled-backend.js +312 -0
  132. package/dist/journaled-backend.js.map +1 -1
  133. package/dist/kind-coverage.d.ts +99 -0
  134. package/dist/kind-coverage.d.ts.map +1 -0
  135. package/dist/kind-coverage.js +186 -0
  136. package/dist/kind-coverage.js.map +1 -0
  137. package/dist/kinds.d.ts +31 -1
  138. package/dist/kinds.d.ts.map +1 -1
  139. package/dist/kinds.js +83 -16
  140. package/dist/kinds.js.map +1 -1
  141. package/dist/links.d.ts +1 -1
  142. package/dist/links.d.ts.map +1 -1
  143. package/dist/links.js +5 -10
  144. package/dist/links.js.map +1 -1
  145. package/dist/managed-document-metadata.d.ts +2 -0
  146. package/dist/managed-document-metadata.d.ts.map +1 -0
  147. package/dist/managed-document-metadata.js +9 -0
  148. package/dist/managed-document-metadata.js.map +1 -0
  149. package/dist/memory-backend.d.ts +2 -2
  150. package/dist/memory-backend.d.ts.map +1 -1
  151. package/dist/memory-backend.js +32 -16
  152. package/dist/memory-backend.js.map +1 -1
  153. package/dist/paths.d.ts +6 -2
  154. package/dist/paths.d.ts.map +1 -1
  155. package/dist/paths.js +35 -33
  156. package/dist/paths.js.map +1 -1
  157. package/dist/platform.d.ts +84 -6
  158. package/dist/platform.d.ts.map +1 -1
  159. package/dist/platform.js +9 -4
  160. package/dist/platform.js.map +1 -1
  161. package/dist/portable-export.d.ts +119 -0
  162. package/dist/portable-export.d.ts.map +1 -0
  163. package/dist/portable-export.js +501 -0
  164. package/dist/portable-export.js.map +1 -0
  165. package/dist/publication-filesystem.d.ts +1 -1
  166. package/dist/publication-filesystem.d.ts.map +1 -1
  167. package/dist/publication-filesystem.js +1 -1
  168. package/dist/publication-filesystem.js.map +1 -1
  169. package/dist/query-filter.d.ts +7 -2
  170. package/dist/query-filter.d.ts.map +1 -1
  171. package/dist/query-filter.js +24 -1
  172. package/dist/query-filter.js.map +1 -1
  173. package/dist/query-order.d.ts +22 -0
  174. package/dist/query-order.d.ts.map +1 -0
  175. package/dist/query-order.js +42 -0
  176. package/dist/query-order.js.map +1 -0
  177. package/dist/remote-backend.d.ts +91 -27
  178. package/dist/remote-backend.d.ts.map +1 -1
  179. package/dist/remote-backend.js +217 -49
  180. package/dist/remote-backend.js.map +1 -1
  181. package/dist/remote-document-codec.d.ts +15 -0
  182. package/dist/remote-document-codec.d.ts.map +1 -0
  183. package/dist/remote-document-codec.js +103 -0
  184. package/dist/remote-document-codec.js.map +1 -0
  185. package/dist/remote-error.d.ts +38 -0
  186. package/dist/remote-error.d.ts.map +1 -0
  187. package/dist/remote-error.js +59 -0
  188. package/dist/remote-error.js.map +1 -0
  189. package/dist/remote-operations.d.ts +6 -3
  190. package/dist/remote-operations.d.ts.map +1 -1
  191. package/dist/remote-operations.js +20 -5
  192. package/dist/remote-operations.js.map +1 -1
  193. package/dist/remote-parsers.d.ts +86 -0
  194. package/dist/remote-parsers.d.ts.map +1 -0
  195. package/dist/remote-parsers.js +181 -0
  196. package/dist/remote-parsers.js.map +1 -0
  197. package/dist/remote.d.ts +7 -2
  198. package/dist/remote.d.ts.map +1 -1
  199. package/dist/remote.js +6 -1
  200. package/dist/remote.js.map +1 -1
  201. package/dist/storage.d.ts +4 -2
  202. package/dist/storage.d.ts.map +1 -1
  203. package/dist/storage.js +4 -1
  204. package/dist/storage.js.map +1 -1
  205. package/dist/types.d.ts +28 -5
  206. package/dist/types.d.ts.map +1 -1
  207. package/dist/uncertain-write.d.ts +49 -13
  208. package/dist/uncertain-write.d.ts.map +1 -1
  209. package/dist/uncertain-write.js +36 -12
  210. package/dist/uncertain-write.js.map +1 -1
  211. package/dist/versioning.d.ts +9 -4
  212. package/dist/versioning.d.ts.map +1 -1
  213. package/dist/versioning.js +9 -4
  214. package/dist/versioning.js.map +1 -1
  215. package/package.json +34 -2
@@ -2,12 +2,14 @@
2
2
  * `RemoteBackend` — a {@link StorageBackend} implemented over the wire-protocol v0
3
3
  * reference contract (`docs/WIRE-PROTOCOL.md`, `@superbee/server`).
4
4
  *
5
- * This is the client half of the seam over HTTP: every method maps directly to a wire endpoint,
6
- * and response versions remain the same content-addressed {@link Version} tokens local backends
7
- * produce. Tri-backend contract tests pin that invariant.
5
+ * This is the client half of the seam over HTTP: every method maps directly to a wire endpoint
6
+ * (a guarded document write may first ask `GET /v0/capabilities` whether the host records
7
+ * outcomes; see {@link RemoteBackendOptions.maxRetries}), and response versions remain the same
8
+ * content-addressed {@link Version} tokens local backends produce. Tri-backend contract tests pin
9
+ * that invariant.
8
10
  *
9
11
  * Zero new dependencies: it calls an injectable {@link FetchLike} transport
10
- * (defaulting to the global `fetch`, available on Node >= 20) with a constructed
12
+ * (defaulting to the global `fetch`, available in every supported Node runtime) with a constructed
11
13
  * `Request`. That means the SAME adapter runs against a real HTTP server, or — in
12
14
  * tests — directly against an in-process `createRouter(bundle)` function with no
13
15
  * sockets: `createRouter` returns exactly the `(req: Request) => Promise<Response>`
@@ -42,28 +44,16 @@
42
44
  */
43
45
  import { DEFAULT_BLOB_CONTENT_TYPE } from "./content-type.js";
44
46
  import { InvalidInputError } from "./errors.js";
45
- import { assertSafeBlobKey, assertSafeConceptId } from "./paths.js";
46
- import { isRequestIdentity } from "./uncertain-write.js";
47
- import { VersionConflict, stripETagWrapper } from "./version-transport.js";
48
- /**
49
- * A non-2xx wire response that is neither a `404` (ENOENT-shaped) nor a `412`
50
- * ({@link VersionConflict}) — the generic case, carrying the error envelope's `code` alongside
51
- * the raw HTTP `status`, so a caller can distinguish e.g.
52
- * `AUTH_REQUIRED` (401, an unauthenticated/misconfigured `--remote`) from `RUNTIME` (5xx, a
53
- * genuine server-side bug) instead of both collapsing into a generically-classified `Error`.
54
- */
55
- export class RemoteError extends Error {
56
- /** The envelope's `code` field, or a status-derived guess when the envelope is missing/unparseable. */
57
- code;
58
- /** The raw HTTP status that produced this error. */
59
- status;
60
- constructor(message, code, status) {
61
- super(message);
62
- this.name = "RemoteError";
63
- this.code = code;
64
- this.status = status;
65
- }
66
- }
47
+ import { MalformedDocumentError } from "./frontmatter-contract.js";
48
+ import { encodeRemoteDocument } from "./remote-document-codec.js";
49
+ import { RemoteError, malformed } from "./remote-error.js";
50
+ import { SNAPSHOT_TRUNCATED, parseHeadsAnswer, readSnapshotStream } from "./remote-parsers.js";
51
+ import { assertSafeBlobKey, assertSafeConceptId, assertSafeReservedDir, assertSafeReservedFilename, compareStorageKeys } from "./paths.js";
52
+ import { isRequestIdentity, mintRequestId } from "./uncertain-write.js";
53
+ import { VersionConflict, isContentVersion, stripETagWrapper } from "./version-transport.js";
54
+ // The typed rejection lives in `remote-error.ts`, shared with the heads and snapshot parsers this
55
+ // backend calls; it stays importable from here for every existing consumer.
56
+ export { RemoteError } from "./remote-error.js";
67
57
  /** An ENOENT-shaped rejection so missing-document handling matches the local adapters. */
68
58
  function notFound(id) {
69
59
  const err = new Error(`no concept document '${id}'`);
@@ -110,6 +100,18 @@ function assertValidExpectedVersion(expectedVersion) {
110
100
  }
111
101
  /** The header that carries a write's durable request identity (`docs/WIRE-PROTOCOL.md`). */
112
102
  const IDENTITY_HEADER = "Idempotency-Key";
103
+ /** The wire's `400 USAGE` message from a host that records no outcomes, answering any request that carries a key. */
104
+ const IDENTITY_UNSUPPORTED = "request identity is not supported by this host";
105
+ /** Whether `res` is a host's refusal of request identity itself, as opposed to a recorded or document refusal. */
106
+ async function refusesIdentity(res) {
107
+ try {
108
+ const envelope = (await res.json());
109
+ return envelope?.error?.code === "USAGE" && envelope.error.message === IDENTITY_UNSUPPORTED;
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ }
113
115
  /**
114
116
  * Reject a request identity the wire would refuse before any request is sent, so a malformed
115
117
  * key is a caller-side `InvalidInputError` rather than a `400` the caller might mistake for a
@@ -122,6 +124,10 @@ function assertRequestIdentity(requestId) {
122
124
  }
123
125
  /** The lookup route's `200` body: a recorded outcome, never `unknown`. */
124
126
  const RECORDED_OUTCOME_KINDS = new Set(["committed", "conflict", "refused"]);
127
+ /** Quote a bare digest for `If-None-Match`; an already quoted or weak form passes through. */
128
+ function etagForm(token) {
129
+ return token.startsWith('"') || token.startsWith("W/") ? token : `"${token}"`;
130
+ }
125
131
  /**
126
132
  * Transient HTTP statuses worth retrying: 500 (a Cloudflare D1 cold-start surfaces as a 500
127
133
  * "storage caused object to be reset" the first time a hibernated database is hit), plus the edge
@@ -129,6 +135,18 @@ const RECORDED_OUTCOME_KINDS = new Set(["committed", "conflict", "refused"]);
129
135
  * REAL result, never retried; 501/505 are terminal server bugs, not transient, so also excluded.
130
136
  */
131
137
  const RETRIABLE_STATUS = new Set([500, 502, 503, 504]);
138
+ /** A `500` naming a stored document that does not parse: a retry reads the same bytes again. */
139
+ async function namesMalformedDocument(res) {
140
+ if (res.status !== 500)
141
+ return false;
142
+ try {
143
+ const envelope = (await res.clone().json());
144
+ return typeof envelope?.error?.details?.malformed?.reason === "string";
145
+ }
146
+ catch {
147
+ return false;
148
+ }
149
+ }
132
150
  /** Retry-backoff timing: exponential base doubling, capped, with jitter to avoid a thundering herd. */
133
151
  const RETRY_BASE_MS = 150;
134
152
  const RETRY_CAP_MS = 2000;
@@ -174,6 +192,8 @@ export class RemoteBackend {
174
192
  fetchImpl;
175
193
  authToken;
176
194
  maxRetries;
195
+ /** The pending or settled answer to whether this host records outcomes; see {@link recordsOutcomes}. */
196
+ operationsSupport;
177
197
  constructor(options) {
178
198
  this.baseUrl = trimTrailingSlashes(options.baseUrl);
179
199
  this.bundle = options.bundle;
@@ -204,19 +224,23 @@ export class RemoteBackend {
204
224
  // object reset" when a hibernated database is first hit; also 502/503/504 from the edge) or a
205
225
  // network/transport error — with exponential backoff + jitter, so a hibernated-backend hiccup is
206
226
  // transparent instead of a hard failure. A REAL result (2xx, or 4xx incl. 412 VersionConflict,
207
- // or 401) returns/throws immediately, never retried. Safe because every op is content-addressed
208
- // + CAS: a retried write lands the same version or a conflict (possibly SPURIOUS — a prior
209
- // attempt may have committed before its response was lost — but never silent data loss); a
210
- // retried read is idempotent. `send` rebuilds the Request per attempt from `init` (bodies are
211
- // strings/bytes, so reusable — no consumed-stream hazard).
227
+ // or 401) returns/throws immediately, never retried. A retried read is idempotent. `send`
228
+ // rebuilds the Request per attempt from the same `init` (bodies are strings/bytes, so reusable —
229
+ // no consumed-stream hazard), so every attempt carries the same headers, `Idempotency-Key`
230
+ // included.
212
231
  //
213
- // A write that carries `Idempotency-Key` is different again: its transient retries are true
214
- // replays, answered from the authority's recorded outcome, so a retry after a lost response
232
+ // A write that carries `Idempotency-Key` is therefore retried as a true replay, answered from
233
+ // the authority's recorded outcome while it keeps that record: a retry after a lost response
215
234
  // can neither apply twice nor surface a spurious conflict against its own earlier application.
235
+ // `write` and `delete` attach one to guarded document writes on a host with `operations` (see
236
+ // `maxRetries` for which). A guarded write without one lands the same version or a conflict
237
+ // (possibly SPURIOUS — a prior attempt may have committed before its response was lost), except
238
+ // that a document returned in between to exactly the state its premise names (the same bytes
239
+ // hash to the same version) lets the retry apply again over that change.
216
240
  for (let attempt = 0;; attempt++) {
217
241
  try {
218
242
  const res = await this.fetchImpl(new Request(url, init));
219
- if (RETRIABLE_STATUS.has(res.status) && attempt < this.maxRetries) {
243
+ if (RETRIABLE_STATUS.has(res.status) && attempt < this.maxRetries && !(await namesMalformedDocument(res))) {
220
244
  await delay(retryDelayMs(attempt));
221
245
  continue;
222
246
  }
@@ -245,6 +269,12 @@ export class RemoteBackend {
245
269
  const actual = envelope?.error?.details?.actual ?? null;
246
270
  return new VersionConflict(fallbackId, expected, actual);
247
271
  }
272
+ const malformedDoc = envelope?.error?.details?.malformed;
273
+ if (malformedDoc && typeof malformedDoc.reason === "string") {
274
+ // The server could read the request but not the stored document: the same failure a local
275
+ // scan raises, so `onSkip` callers can set this one document aside.
276
+ return new MalformedDocumentError(typeof malformedDoc.id === "string" ? malformedDoc.id : fallbackId, new Error(malformedDoc.reason));
277
+ }
248
278
  const message = envelope?.error?.message ?? `wire request failed with status ${res.status}`;
249
279
  // The envelope's own `code` wins when present (every route in this repo's servers emits
250
280
  // one); a status-derived guess covers a malformed/absent envelope or a conformant-but-
@@ -309,15 +339,19 @@ export class RemoteBackend {
309
339
  headers["If-Match"] = options.expectedVersion;
310
340
  if (options.actor)
311
341
  headers["X-Actor"] = options.actor;
342
+ // Captured before the capability question can yield, so the payload is the document as it
343
+ // stood when `write` was called and an unencodable one is refused before any request.
344
+ const body = encodeRemoteDocument(doc.frontmatter, doc.body ?? "");
345
+ let minted = false;
312
346
  if (options.requestId !== undefined) {
313
347
  assertRequestIdentity(options.requestId);
314
348
  headers[IDENTITY_HEADER] = options.requestId;
315
349
  }
316
- const res = await this.send(`/docs/${encodeId(id)}`, {
317
- method: "PUT",
318
- headers,
319
- body: JSON.stringify({ frontmatter: doc.frontmatter, body: doc.body ?? "" }),
320
- });
350
+ else if (options.expectedVersion !== undefined && (await this.recordsOutcomes())) {
351
+ headers[IDENTITY_HEADER] = mintRequestId();
352
+ minted = true;
353
+ }
354
+ const res = await this.sendDocWrite(`/docs/${encodeId(id)}`, { method: "PUT", headers, body }, minted);
321
355
  if (!res.ok)
322
356
  throw await this.toError(res, id);
323
357
  const payload = (await res.json());
@@ -325,10 +359,11 @@ export class RemoteBackend {
325
359
  }
326
360
  /**
327
361
  * `GET /v0/capabilities`, deployment-scoped: what this authority implements. `operations` says
328
- * whether it records outcomes by request identity. A host without it ignores `Idempotency-Key`
329
- * and answers the lookup route with a route-miss `404`, which {@link lookupOperation} cannot
330
- * tell from "never recorded"; a consumer that relies on identity checks this once before it
331
- * sends any intent. Missing booleans read as `false`.
362
+ * whether it records outcomes by request identity. The reference router without it refuses any
363
+ * request carrying `Idempotency-Key`, and the lookup route, with `400 USAGE`; a host that lacks
364
+ * the lookup route altogether answers it with a route-miss `404`, which {@link lookupOperation}
365
+ * cannot tell from "never recorded". A consumer that relies on identity checks this once before
366
+ * it sends any intent. Missing booleans read as `false`.
332
367
  */
333
368
  async wireCapabilities() {
334
369
  const res = await this.send("/v0/capabilities", { method: "GET" }, "deployment");
@@ -343,8 +378,104 @@ export class RemoteBackend {
343
378
  backlinks: flag("backlinks"),
344
379
  blobs: flag("blobs"),
345
380
  operations: flag("operations"),
381
+ heads: flag("heads"),
382
+ snapshot: flag("snapshot"),
346
383
  };
347
384
  }
385
+ /**
386
+ * Whether this host records outcomes by request identity, asked through `GET /v0/capabilities`
387
+ * and shared by concurrent callers. A host that answers anything but a `2xx` with
388
+ * `operations: true` is treated as not recording them, since a host that does not record them
389
+ * refuses a key with `400`. That answer is kept for the backend's lifetime, except that a
390
+ * transient status still returned after `send`'s retries, or a transport failure, is not kept:
391
+ * the former sends this write unidentified, and the latter rejects the write before it is sent.
392
+ * A kept yes is also dropped when a minted key meets the host's identity refusal; see
393
+ * {@link sendDocWrite}.
394
+ */
395
+ recordsOutcomes() {
396
+ this.operationsSupport ??= this.probeOperations();
397
+ return this.operationsSupport;
398
+ }
399
+ async probeOperations() {
400
+ let res;
401
+ try {
402
+ res = await this.send("/v0/capabilities", { method: "GET" }, "deployment");
403
+ }
404
+ catch (err) {
405
+ this.operationsSupport = undefined;
406
+ throw err;
407
+ }
408
+ if (RETRIABLE_STATUS.has(res.status))
409
+ this.operationsSupport = undefined;
410
+ if (!res.ok)
411
+ return false;
412
+ try {
413
+ const payload = (await res.json());
414
+ return payload?.operations === true;
415
+ }
416
+ catch {
417
+ return false;
418
+ }
419
+ }
420
+ /**
421
+ * Send a document `PUT` or `DELETE`. When its `Idempotency-Key` was minted here, a kept
422
+ * `operations` answer may be stale: a host that has since lost its outcome store refuses every
423
+ * key with the wire's `400` {@link IDENTITY_UNSUPPORTED} before applying anything. That answer
424
+ * is dropped and the write is sent once more without a key, as to any host without
425
+ * `operations`. A caller's own `requestId` is never dropped, so its refusal is the answer.
426
+ */
427
+ async sendDocWrite(path, init, minted) {
428
+ const res = await this.send(path, init);
429
+ if (!minted || res.status !== 400 || !(await refusesIdentity(res.clone())))
430
+ return res;
431
+ this.operationsSupport = undefined;
432
+ const { [IDENTITY_HEADER]: _refused, ...headers } = init.headers;
433
+ return this.send(path, { ...init, headers });
434
+ }
435
+ /**
436
+ * `GET /heads`: every document id and version the authority holds, under one digest, or
437
+ * `null` when `ifNoneMatch` named the digest it still holds (a `304`: nothing changed). A
438
+ * `200` is diffed against the caller's own copy: an id missing from `heads` was deleted, a
439
+ * differing version changed. A `200` without a well-formed digest, whose `count` and rows
440
+ * disagree, or whose rows digest by the documented recipe to something other than the served
441
+ * digest, is rejected rather than trusted ({@link parseHeadsAnswer} owns that admission), as
442
+ * is a `304` to a request that sent no `ifNoneMatch`. Not part of the {@link StorageBackend}
443
+ * seam.
444
+ */
445
+ async heads(options = {}) {
446
+ const headers = {};
447
+ if (options.ifNoneMatch !== undefined)
448
+ headers["If-None-Match"] = etagForm(options.ifNoneMatch);
449
+ const res = await this.send("/heads", { method: "GET", headers });
450
+ if (res.status === 304) {
451
+ // Only a conditional request can be answered `304`; to an unconditional one it is a
452
+ // malformed answer, not "nothing changed", since there is no digest it could be relative to.
453
+ if (options.ifNoneMatch === undefined)
454
+ throw malformed("wire heads answered 304 to a request that sent no If-None-Match");
455
+ return null;
456
+ }
457
+ if (!res.ok)
458
+ throw await this.toError(res, "heads");
459
+ return parseHeadsAnswer(await res.json());
460
+ }
461
+ /**
462
+ * `GET /snapshot`: the whole bundle in one response. The header line is parsed before this
463
+ * resolves, so a non-2xx or a body without a header rejects here with the usual typed error;
464
+ * the documents then stream through {@link RemoteSnapshot.docs}. Transient retry applies only
465
+ * to obtaining the response: a body cut mid-stream is reported to the consumer as
466
+ * `SNAPSHOT_TRUNCATED`, a whole body whose heads do not digest to the header's announcement as
467
+ * `SNAPSHOT_DIGEST_MISMATCH` ({@link readSnapshotStream} owns the grammar), and re-requesting
468
+ * is the consumer's decision. Reserved files are not part of a snapshot. Not part of the
469
+ * {@link StorageBackend} seam.
470
+ */
471
+ async snapshot() {
472
+ const res = await this.send("/snapshot", { method: "GET" });
473
+ if (!res.ok)
474
+ throw await this.toError(res, "snapshot");
475
+ if (!res.body)
476
+ throw new RemoteError("snapshot response carried no body", SNAPSHOT_TRUNCATED, res.status);
477
+ return readSnapshotStream(res.body, { status: res.status });
478
+ }
348
479
  /**
349
480
  * `GET /operations/{requestId}`: the authority's recorded outcome for an identified write, or
350
481
  * `null` when it holds nothing under that identity (never recorded, or recorded and expired;
@@ -379,11 +510,14 @@ export class RemoteBackend {
379
510
  * {@link RemoteBackend.queryHeads} are both thin row-mappings over it, so a wire
380
511
  * pagination change cannot make the two scans silently paginate differently.
381
512
  */
382
- async pageDocs(baseParams, mapRow, errorContext) {
513
+ async pageDocs(baseParams, mapRow, errorContext, skipped) {
383
514
  const rows = [];
384
515
  let cursor;
385
516
  for (;;) {
386
517
  const params = new URLSearchParams(baseParams);
518
+ // Ask the server to leave an unparsable document out and name it, rather than fail the page.
519
+ if (skipped)
520
+ params.set("malformed", "skip");
387
521
  if (cursor)
388
522
  params.set("cursor", cursor);
389
523
  const qs = params.toString();
@@ -393,6 +527,13 @@ export class RemoteBackend {
393
527
  const payload = (await res.json());
394
528
  for (const row of payload.docs)
395
529
  rows.push(mapRow(row));
530
+ if (skipped && Array.isArray(payload.skipped)) {
531
+ for (const entry of payload.skipped) {
532
+ if (typeof entry?.id !== "string")
533
+ continue;
534
+ skipped.set(entry.id, typeof entry.reason === "string" ? entry.reason : "malformed frontmatter");
535
+ }
536
+ }
396
537
  if (!payload.next_cursor)
397
538
  break;
398
539
  cursor = payload.next_cursor;
@@ -403,7 +544,11 @@ export class RemoteBackend {
403
544
  const params = new URLSearchParams();
404
545
  if (prefix)
405
546
  params.set("prefix", prefix);
406
- return this.pageDocs(params, (row) => row.id, prefix ?? "");
547
+ // A document the server could not parse still exists: it is listed, and reading it raises
548
+ // the same MalformedDocumentError a local read does.
549
+ const skipped = new Map();
550
+ const ids = await this.pageDocs(params, (row) => row.id, prefix ?? "", skipped);
551
+ return [...new Set([...ids, ...skipped.keys()])].sort(compareStorageKeys);
407
552
  }
408
553
  /**
409
554
  * The seam's OPTIONAL head-projection push-down, over the SAME `GET /docs` route
@@ -416,7 +561,7 @@ export class RemoteBackend {
416
561
  * `docs/WIRE-PROTOCOL.md`); the engine's `queryHeads` re-filter covers it, per the
417
562
  * seam contract (over-returning is fine; semantics live in core).
418
563
  */
419
- async queryHeads(filter = {}) {
564
+ async queryHeads(filter = {}, options = {}) {
420
565
  const params = new URLSearchParams();
421
566
  params.set("fields", "frontmatter");
422
567
  if (filter.prefix)
@@ -425,7 +570,17 @@ export class RemoteBackend {
425
570
  params.set("type", filter.type);
426
571
  for (const tag of filter.tags ?? [])
427
572
  params.append("tag", tag);
428
- return this.pageDocs(params, (row) => ({ id: row.id, frontmatter: row.frontmatter, version: row.version }), filter.prefix ?? "");
573
+ const skipped = new Map();
574
+ const rows = await this.pageDocs(params, (row) => ({ id: row.id, frontmatter: row.frontmatter, version: row.version }), filter.prefix ?? "", skipped);
575
+ // The server leaves a malformed document out of the listing and names it. A caller that
576
+ // asked for no skip report keeps the scan's fail-loud contract.
577
+ const named = [...skipped].sort(([a], [b]) => compareStorageKeys(a, b));
578
+ if (named.length > 0 && !options.onSkip) {
579
+ throw new MalformedDocumentError(named[0][0], new Error(named[0][1]));
580
+ }
581
+ for (const [id, reason] of named)
582
+ options.onSkip?.({ id, reason });
583
+ return rows;
429
584
  }
430
585
  async versions(id) {
431
586
  assertSafeConceptId(id);
@@ -441,6 +596,8 @@ export class RemoteBackend {
441
596
  : { version: v.version, actor: v.actor, timestamp: v.timestamp, agent: v.agent });
442
597
  }
443
598
  async readReserved(dir, name) {
599
+ assertSafeReservedDir(dir);
600
+ assertSafeReservedFilename(name);
444
601
  const qs = dir ? `?dir=${encodeURIComponent(dir)}` : "";
445
602
  const res = await this.send(`/reserved/${name}${qs}`, { method: "GET" });
446
603
  if (res.status === 404)
@@ -452,6 +609,8 @@ export class RemoteBackend {
452
609
  return { content: payload.content, version };
453
610
  }
454
611
  async writeReserved(dir, name, content, options = {}) {
612
+ assertSafeReservedDir(dir);
613
+ assertSafeReservedFilename(name);
455
614
  assertValidExpectedVersion(options.expectedVersion);
456
615
  const headers = { "content-type": "application/json" };
457
616
  if (options.expectedVersion === null)
@@ -487,11 +646,20 @@ export class RemoteBackend {
487
646
  const headers = {};
488
647
  if (options.expectedVersion !== undefined)
489
648
  headers["If-Match"] = options.expectedVersion;
649
+ let minted = false;
490
650
  if (options.requestId !== undefined) {
491
651
  assertRequestIdentity(options.requestId);
492
652
  headers[IDENTITY_HEADER] = options.requestId;
493
653
  }
494
- const res = await this.send(`/docs/${encodeId(id)}`, { method: "DELETE", headers });
654
+ else if (options.expectedVersion !== undefined &&
655
+ isContentVersion(stripETagWrapper(options.expectedVersion)) &&
656
+ (await this.recordsOutcomes())) {
657
+ // The wire identifies a delete only under a content-version premise; any other premise
658
+ // stays an unidentified request rather than becoming a `400`.
659
+ headers[IDENTITY_HEADER] = mintRequestId();
660
+ minted = true;
661
+ }
662
+ const res = await this.sendDocWrite(`/docs/${encodeId(id)}`, { method: "DELETE", headers }, minted);
495
663
  if (!res.ok)
496
664
  throw await this.toError(res, id);
497
665
  const payload = (await res.json());
@@ -579,7 +747,7 @@ export class RemoteBackend {
579
747
  break;
580
748
  cursor = payload.next_cursor;
581
749
  }
582
- return keys;
750
+ return keys.sort(compareStorageKeys);
583
751
  }
584
752
  }
585
753
  //# sourceMappingURL=remote-backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-backend.js","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-backend.js","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { InvalidInputError } from "./errors.js";
2
+ /** Metadata cannot be represented by the JSON document transport without loss. */
3
+ export declare class RemoteDocumentValueError extends InvalidInputError {
4
+ readonly path: string;
5
+ constructor(path: string, reason: string);
6
+ }
7
+ type JsonValue = null | string | boolean | number | JsonValue[] | {
8
+ [key: string]: JsonValue;
9
+ };
10
+ /** Capture the wire value once, without invoking accessors or custom serialization hooks. */
11
+ export declare function captureRemoteFrontmatter(frontmatter: unknown): JsonValue;
12
+ /** Encode only the captured value, never the caller's live metadata a second time. */
13
+ export declare function encodeRemoteDocument(frontmatter: unknown, body: string): string;
14
+ export {};
15
+ //# sourceMappingURL=remote-document-codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-document-codec.d.ts","sourceRoot":"","sources":["../src/remote-document-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,kFAAkF;AAClF,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKzC;AAED,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/F,6FAA6F;AAC7F,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAuExE;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/E"}