@superbee/core 0.2.0-pre.16 → 0.2.0-pre.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +622 -5
- package/dist/blob-journal.d.ts +187 -2
- package/dist/blob-journal.d.ts.map +1 -1
- package/dist/blob-journal.js +377 -5
- package/dist/blob-journal.js.map +1 -1
- package/dist/body-replace-guards.d.ts +50 -0
- package/dist/body-replace-guards.d.ts.map +1 -0
- package/dist/body-replace-guards.js +158 -0
- package/dist/body-replace-guards.js.map +1 -0
- package/dist/builtin-recipes/content.d.ts +93 -0
- package/dist/builtin-recipes/content.d.ts.map +1 -0
- package/dist/builtin-recipes/content.js +288 -0
- package/dist/builtin-recipes/content.js.map +1 -0
- package/dist/builtin-recipes.d.ts +10 -0
- package/dist/builtin-recipes.d.ts.map +1 -0
- package/dist/builtin-recipes.js +97 -0
- package/dist/builtin-recipes.js.map +1 -0
- package/dist/bundle-health/index.d.ts +14 -0
- package/dist/bundle-health/index.d.ts.map +1 -0
- package/dist/bundle-health/index.js +12 -0
- package/dist/bundle-health/index.js.map +1 -0
- package/dist/bundle-health/kind-findings.d.ts +44 -0
- package/dist/bundle-health/kind-findings.d.ts.map +1 -0
- package/dist/bundle-health/kind-findings.js +68 -0
- package/dist/bundle-health/kind-findings.js.map +1 -0
- package/dist/bundle-health/legacy-page.d.ts +39 -0
- package/dist/bundle-health/legacy-page.d.ts.map +1 -0
- package/dist/bundle-health/legacy-page.js +50 -0
- package/dist/bundle-health/legacy-page.js.map +1 -0
- package/dist/bundle-health/report.d.ts +202 -0
- package/dist/bundle-health/report.d.ts.map +1 -0
- package/dist/bundle-health/report.js +438 -0
- package/dist/bundle-health/report.js.map +1 -0
- package/dist/code-point-order.d.ts +8 -0
- package/dist/code-point-order.d.ts.map +1 -0
- package/dist/code-point-order.js +20 -0
- package/dist/code-point-order.js.map +1 -0
- package/dist/connectors.d.ts +223 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +1143 -0
- package/dist/connectors.js.map +1 -0
- package/dist/document-field-actions.d.ts +18 -0
- package/dist/document-field-actions.d.ts.map +1 -1
- package/dist/document-field-actions.js +91 -29
- package/dist/document-field-actions.js.map +1 -1
- package/dist/document-mutation.d.ts +7 -9
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +16 -16
- package/dist/document-mutation.js.map +1 -1
- package/dist/file-journaled-backend.d.ts +31 -5
- package/dist/file-journaled-backend.d.ts.map +1 -1
- package/dist/file-journaled-backend.js +131 -118
- package/dist/file-journaled-backend.js.map +1 -1
- package/dist/hosted-client/blob-delivery.d.ts +6 -0
- package/dist/hosted-client/blob-delivery.d.ts.map +1 -1
- package/dist/hosted-client/blob-delivery.js +23 -1
- package/dist/hosted-client/blob-delivery.js.map +1 -1
- package/dist/hosted-client/blob-write.d.ts +386 -0
- package/dist/hosted-client/blob-write.d.ts.map +1 -0
- package/dist/hosted-client/blob-write.js +770 -0
- package/dist/hosted-client/blob-write.js.map +1 -0
- package/dist/hosted-client/client.d.ts +64 -0
- package/dist/hosted-client/client.d.ts.map +1 -1
- package/dist/hosted-client/client.js +31 -0
- package/dist/hosted-client/client.js.map +1 -1
- package/dist/hosted-client/directory.d.ts +46 -0
- package/dist/hosted-client/directory.d.ts.map +1 -0
- package/dist/hosted-client/directory.js +74 -0
- package/dist/hosted-client/directory.js.map +1 -0
- package/dist/hosted-client/errors.d.ts +10 -0
- package/dist/hosted-client/errors.d.ts.map +1 -1
- package/dist/hosted-client/errors.js +13 -0
- package/dist/hosted-client/errors.js.map +1 -1
- package/dist/hosted-client/inbox.d.ts +320 -0
- package/dist/hosted-client/inbox.d.ts.map +1 -0
- package/dist/hosted-client/inbox.js +379 -0
- package/dist/hosted-client/inbox.js.map +1 -0
- package/dist/hosted-client/index.d.ts +11 -4
- package/dist/hosted-client/index.d.ts.map +1 -1
- package/dist/hosted-client/index.js +11 -4
- package/dist/hosted-client/index.js.map +1 -1
- package/dist/hosted-client/journal.d.ts +103 -0
- package/dist/hosted-client/journal.d.ts.map +1 -0
- package/dist/hosted-client/journal.js +464 -0
- package/dist/hosted-client/journal.js.map +1 -0
- package/dist/hosted-client/node.d.ts +5 -1
- package/dist/hosted-client/node.d.ts.map +1 -1
- package/dist/hosted-client/node.js +6 -1
- package/dist/hosted-client/node.js.map +1 -1
- package/dist/hosted-client/write.d.ts +28 -2
- package/dist/hosted-client/write.d.ts.map +1 -1
- package/dist/hosted-client/write.js +33 -11
- package/dist/hosted-client/write.js.map +1 -1
- package/dist/hosted-transport/answer-rows.d.ts +3 -2
- package/dist/hosted-transport/answer-rows.d.ts.map +1 -1
- package/dist/hosted-transport/answer-rows.js +1 -1
- package/dist/hosted-transport/answer-rows.js.map +1 -1
- package/dist/hosted-transport/carrier.d.ts +10 -0
- package/dist/hosted-transport/carrier.d.ts.map +1 -1
- package/dist/hosted-transport/carrier.js +22 -2
- package/dist/hosted-transport/carrier.js.map +1 -1
- package/dist/hosted-transport/whole-document-transport.d.ts +1 -1
- package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -1
- package/dist/hosted-transport/whole-document-transport.js +20 -12
- package/dist/hosted-transport/whole-document-transport.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/kind-authoring.d.ts +170 -0
- package/dist/kind-authoring.d.ts.map +1 -0
- package/dist/kind-authoring.js +451 -0
- package/dist/kind-authoring.js.map +1 -0
- package/dist/kind-conformance-error.d.ts +15 -0
- package/dist/kind-conformance-error.d.ts.map +1 -0
- package/dist/kind-conformance-error.js +20 -0
- package/dist/kind-conformance-error.js.map +1 -0
- package/dist/kinds-load.js +4 -4
- package/dist/kinds-load.js.map +1 -1
- package/dist/kinds.d.ts +2 -0
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +10 -2
- package/dist/kinds.js.map +1 -1
- package/dist/paths.d.ts +16 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +25 -0
- package/dist/paths.js.map +1 -1
- package/dist/query-filter.d.ts +9 -0
- package/dist/query-filter.d.ts.map +1 -1
- package/dist/query-filter.js +19 -3
- package/dist/query-filter.js.map +1 -1
- package/dist/recipe-lifecycle/stamp.d.ts +11 -0
- package/dist/recipe-lifecycle/stamp.d.ts.map +1 -1
- package/dist/recipe-lifecycle/stamp.js +6 -0
- package/dist/recipe-lifecycle/stamp.js.map +1 -1
- package/dist/record-overlay/apply.d.ts +43 -0
- package/dist/record-overlay/apply.d.ts.map +1 -0
- package/dist/record-overlay/apply.js +527 -0
- package/dist/record-overlay/apply.js.map +1 -0
- package/dist/record-overlay/canonical.d.ts +22 -0
- package/dist/record-overlay/canonical.d.ts.map +1 -0
- package/dist/record-overlay/canonical.js +47 -0
- package/dist/record-overlay/canonical.js.map +1 -0
- package/dist/record-overlay/digest.d.ts +4 -0
- package/dist/record-overlay/digest.d.ts.map +1 -0
- package/dist/record-overlay/digest.js +11 -0
- package/dist/record-overlay/digest.js.map +1 -0
- package/dist/record-overlay/errors.d.ts +44 -0
- package/dist/record-overlay/errors.d.ts.map +1 -0
- package/dist/record-overlay/errors.js +55 -0
- package/dist/record-overlay/errors.js.map +1 -0
- package/dist/record-overlay/findings.d.ts +5 -0
- package/dist/record-overlay/findings.d.ts.map +1 -0
- package/dist/record-overlay/findings.js +83 -0
- package/dist/record-overlay/findings.js.map +1 -0
- package/dist/record-overlay/index.d.ts +23 -0
- package/dist/record-overlay/index.d.ts.map +1 -0
- package/dist/record-overlay/index.js +21 -0
- package/dist/record-overlay/index.js.map +1 -0
- package/dist/record-overlay/plan.d.ts +12 -0
- package/dist/record-overlay/plan.d.ts.map +1 -0
- package/dist/record-overlay/plan.js +285 -0
- package/dist/record-overlay/plan.js.map +1 -0
- package/dist/record-overlay/policy.d.ts +69 -0
- package/dist/record-overlay/policy.d.ts.map +1 -0
- package/dist/record-overlay/policy.js +228 -0
- package/dist/record-overlay/policy.js.map +1 -0
- package/dist/record-overlay/redact.d.ts +3 -0
- package/dist/record-overlay/redact.d.ts.map +1 -0
- package/dist/record-overlay/redact.js +27 -0
- package/dist/record-overlay/redact.js.map +1 -0
- package/dist/record-overlay/signal-kind.d.ts +30 -0
- package/dist/record-overlay/signal-kind.d.ts.map +1 -0
- package/dist/record-overlay/signal-kind.js +38 -0
- package/dist/record-overlay/signal-kind.js.map +1 -0
- package/dist/record-overlay/signal-text.d.ts +45 -0
- package/dist/record-overlay/signal-text.d.ts.map +1 -0
- package/dist/record-overlay/signal-text.js +116 -0
- package/dist/record-overlay/signal-text.js.map +1 -0
- package/dist/record-overlay/source-index.d.ts +19 -0
- package/dist/record-overlay/source-index.d.ts.map +1 -0
- package/dist/record-overlay/source-index.js +102 -0
- package/dist/record-overlay/source-index.js.map +1 -0
- package/dist/record-overlay/types.d.ts +291 -0
- package/dist/record-overlay/types.d.ts.map +1 -0
- package/dist/record-overlay/types.js +2 -0
- package/dist/record-overlay/types.js.map +1 -0
- package/dist/remote-operations.js +5 -2
- package/dist/remote-operations.js.map +1 -1
- package/dist/search/contract.d.ts +151 -0
- package/dist/search/contract.d.ts.map +1 -0
- package/dist/search/contract.js +78 -0
- package/dist/search/contract.js.map +1 -0
- package/dist/search/errors.d.ts +30 -0
- package/dist/search/errors.d.ts.map +1 -0
- package/dist/search/errors.js +50 -0
- package/dist/search/errors.js.map +1 -0
- package/dist/search/identity.d.ts +12 -0
- package/dist/search/identity.d.ts.map +1 -0
- package/dist/search/identity.js +90 -0
- package/dist/search/identity.js.map +1 -0
- package/dist/search/index.d.ts +15 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +14 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/memory-source.d.ts +25 -0
- package/dist/search/memory-source.d.ts.map +1 -0
- package/dist/search/memory-source.js +230 -0
- package/dist/search/memory-source.js.map +1 -0
- package/dist/search/rank.d.ts +34 -0
- package/dist/search/rank.d.ts.map +1 -0
- package/dist/search/rank.js +129 -0
- package/dist/search/rank.js.map +1 -0
- package/dist/search/row-text.d.ts +38 -0
- package/dist/search/row-text.d.ts.map +1 -0
- package/dist/search/row-text.js +88 -0
- package/dist/search/row-text.js.map +1 -0
- package/dist/search/search.d.ts +28 -0
- package/dist/search/search.d.ts.map +1 -0
- package/dist/search/search.js +240 -0
- package/dist/search/search.js.map +1 -0
- package/dist/search/source.d.ts +67 -0
- package/dist/search/source.d.ts.map +1 -0
- package/dist/search/source.js +2 -0
- package/dist/search/source.js.map +1 -0
- package/dist/search/text.d.ts +47 -0
- package/dist/search/text.d.ts.map +1 -0
- package/dist/search/text.js +148 -0
- package/dist/search/text.js.map +1 -0
- package/dist/source-engine/guard.d.ts +82 -0
- package/dist/source-engine/guard.d.ts.map +1 -0
- package/dist/source-engine/guard.js +396 -0
- package/dist/source-engine/guard.js.map +1 -0
- package/dist/source-engine/index.d.ts +24 -0
- package/dist/source-engine/index.d.ts.map +1 -0
- package/dist/source-engine/index.js +20 -0
- package/dist/source-engine/index.js.map +1 -0
- package/dist/source-engine/machine-state.d.ts +74 -0
- package/dist/source-engine/machine-state.d.ts.map +1 -0
- package/dist/source-engine/machine-state.js +48 -0
- package/dist/source-engine/machine-state.js.map +1 -0
- package/dist/source-engine/observe.d.ts +18 -0
- package/dist/source-engine/observe.d.ts.map +1 -0
- package/dist/source-engine/observe.js +598 -0
- package/dist/source-engine/observe.js.map +1 -0
- package/dist/source-engine/robots.d.ts +53 -0
- package/dist/source-engine/robots.d.ts.map +1 -0
- package/dist/source-engine/robots.js +158 -0
- package/dist/source-engine/robots.js.map +1 -0
- package/dist/source-engine/types.d.ts +285 -0
- package/dist/source-engine/types.d.ts.map +1 -0
- package/dist/source-engine/types.js +2 -0
- package/dist/source-engine/types.js.map +1 -0
- package/dist/source-harness/conformance.d.ts +16 -0
- package/dist/source-harness/conformance.d.ts.map +1 -0
- package/dist/source-harness/conformance.js +265 -0
- package/dist/source-harness/conformance.js.map +1 -0
- package/dist/source-harness/fixture.d.ts +95 -0
- package/dist/source-harness/fixture.d.ts.map +1 -0
- package/dist/source-harness/fixture.js +261 -0
- package/dist/source-harness/fixture.js.map +1 -0
- package/dist/source-harness/index.d.ts +22 -0
- package/dist/source-harness/index.d.ts.map +1 -0
- package/dist/source-harness/index.js +19 -0
- package/dist/source-harness/index.js.map +1 -0
- package/dist/source-harness/peer.d.ts +74 -0
- package/dist/source-harness/peer.d.ts.map +1 -0
- package/dist/source-harness/peer.js +106 -0
- package/dist/source-harness/peer.js.map +1 -0
- package/dist/storage.d.ts +2 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/uncertain-write.d.ts +39 -6
- package/dist/uncertain-write.d.ts.map +1 -1
- package/dist/uncertain-write.js +25 -3
- package/dist/uncertain-write.js.map +1 -1
- package/package.json +33 -1
package/dist/blob-journal.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/** File-journal optional ordinary-file admission. Frozen payloads are data, never authority:
|
|
2
2
|
* a dispatcher must compare their scope with its current trusted context before delivery. */
|
|
3
|
-
import { captureBlobWriteExpected, decodeBlobWriteResult, assertBlobKey } from "./blob-contract.js";
|
|
3
|
+
import { captureBlobWriteExpected, decodeBlobWriteResult, assertBlobKey, isBlobContentType, isSafeBlobKey } from "./blob-contract.js";
|
|
4
4
|
import { isHostedBundleId } from "./dependencies.js";
|
|
5
5
|
import { isAgentLabelVia, isWriteBinding, isWriteRequestId } from "./write-identity.js";
|
|
6
6
|
import { sha256HexOfBytes } from "./sha256.js";
|
|
7
|
-
import { captureJournalValue, equalJournalValue, assertMetaExpectation, JournalGuardConflict } from "./journaled-backend.js";
|
|
7
|
+
import { captureJournalValue, equalJournalValue, assertMetaExpectation, IntentStateConflict, JournalGuardConflict, JournalSnapshotConflict } from "./journaled-backend.js";
|
|
8
|
+
import { isReservedFile } from "./paths.js";
|
|
9
|
+
import { PAGE_ENTRY_PREFIX, PAGE_REGISTRY_PREFIX, VIEW_ENTRY_PREFIX, VIEW_REGISTRY_PREFIX } from "./page.js";
|
|
8
10
|
export { isWriteRequestId } from "./write-identity.js";
|
|
9
11
|
export const BLOB_JOURNAL_BOUNDS = Object.freeze({ rawBytes: 16 * 1024 * 1024, preparedBytes: 24 * 1024 * 1024,
|
|
10
12
|
/** The file codec checks the actual tagged encoding, not an estimate of JSON text. */
|
|
@@ -20,6 +22,20 @@ export function captureBlobDeletionHold(value) {
|
|
|
20
22
|
throw new TypeError("invalid blob deletion hold");
|
|
21
23
|
return hold;
|
|
22
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Why a claimed attempt is proven never to have left the process. Only for this invocation's own
|
|
27
|
+
* claim, made through the same open journal, and only for a failure before the carrier is invoked
|
|
28
|
+
* (credentials, an already-aborted signal, a malformed identity, a local precondition) or the
|
|
29
|
+
* carrier's own `denied`, which by its contract means nothing left. Any other carrier or transport
|
|
30
|
+
* failure, and any claim found at open, may have been sent: that is `unknown`.
|
|
31
|
+
*/
|
|
32
|
+
export const BLOB_NOT_DISPATCHED_CODES = Object.freeze(["credentials_unavailable", "credentials_denied", "aborted", "invalid_identity", "precondition_failed"]);
|
|
33
|
+
export function captureBlobNotDispatched(value) {
|
|
34
|
+
const evidence = captureJournalValue(value);
|
|
35
|
+
if (!object(evidence) || !only(evidence, ["code"]) || !BLOB_NOT_DISPATCHED_CODES.includes(evidence.code))
|
|
36
|
+
throw new TypeError("invalid blob not-dispatched evidence");
|
|
37
|
+
return evidence;
|
|
38
|
+
}
|
|
23
39
|
const object = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
|
|
24
40
|
const only = (v, keys) => Object.keys(v).every(key => keys.includes(key));
|
|
25
41
|
const timestamp = (v) => typeof v === "string" && v.length <= 64 && /^\d{4}-\d\d-\d\dT.*(?:Z|[+-]\d\d:\d\d)$/.test(v) && Number.isFinite(Date.parse(v));
|
|
@@ -67,7 +83,37 @@ export function prepareBlobIntent(input, bytes) {
|
|
|
67
83
|
throw new RangeError("prepared blob exceeds its byte bound");
|
|
68
84
|
return payload;
|
|
69
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Payloads already validated, keyed by the payload text itself: validation is a pure function of
|
|
88
|
+
* that text, and one write validates its record's payload many times (every guard and transition
|
|
89
|
+
* re-captures it). Bounded by count and by payload length, oldest out first; each hit still
|
|
90
|
+
* returns a fresh copy, so no caller shares or can change a cached value.
|
|
91
|
+
*/
|
|
92
|
+
const DECODED = new Map();
|
|
93
|
+
const DECODED_ENTRIES = 8;
|
|
94
|
+
const DECODED_CHARS = 32 * 1024 * 1024;
|
|
95
|
+
let decodedChars = 0;
|
|
96
|
+
function copyPrepared(value) {
|
|
97
|
+
return { ...value, scope: { ...value.scope }, intent: { ...value.intent }, identity: { ...value.identity } };
|
|
98
|
+
}
|
|
70
99
|
export function decodePreparedBlobIntent(payload) {
|
|
100
|
+
const cached = typeof payload === "string" ? DECODED.get(payload) : undefined;
|
|
101
|
+
if (cached)
|
|
102
|
+
return copyPrepared(cached);
|
|
103
|
+
const decoded = decodeUncachedPreparedBlobIntent(payload);
|
|
104
|
+
if (payload.length <= DECODED_CHARS) {
|
|
105
|
+
DECODED.set(payload, copyPrepared(decoded));
|
|
106
|
+
decodedChars += payload.length;
|
|
107
|
+
for (const key of DECODED.keys()) {
|
|
108
|
+
if (DECODED.size <= DECODED_ENTRIES && decodedChars <= DECODED_CHARS)
|
|
109
|
+
break;
|
|
110
|
+
DECODED.delete(key);
|
|
111
|
+
decodedChars -= key.length;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return decoded;
|
|
115
|
+
}
|
|
116
|
+
function decodeUncachedPreparedBlobIntent(payload) {
|
|
71
117
|
if (typeof payload !== "string" || payload.length > BLOB_JOURNAL_BOUNDS.preparedBytes || new TextEncoder().encode(payload).byteLength > BLOB_JOURNAL_BOUNDS.preparedBytes)
|
|
72
118
|
throw new TypeError("invalid prepared blob payload");
|
|
73
119
|
const value = JSON.parse(payload);
|
|
@@ -100,7 +146,7 @@ export function blobReceipt(prepared, raw) {
|
|
|
100
146
|
}
|
|
101
147
|
export function captureBlobIntentRecord(value) {
|
|
102
148
|
const row = captureJournalValue(value);
|
|
103
|
-
if (!object(row) || !only(row, ["recordFamily", "requestId", "target", "prepared", "sequence", "attempts", "state", "updatedAt", "receipt", "notAppliedThrough", "deletionHold"]) || row.recordFamily !== "blob" || !Number.isSafeInteger(row.sequence) || row.sequence < 1 || !Number.isSafeInteger(row.attempts) || row.attempts < 0 || !timestamp(row.updatedAt) || !["pending", "in_flight", "acknowledged", "conflict", "refused", "unknown"].includes(row.state))
|
|
149
|
+
if (!object(row) || !only(row, ["recordFamily", "requestId", "target", "prepared", "sequence", "attempts", "state", "updatedAt", "receipt", "notAppliedThrough", "deletionHold", "notDispatched"]) || row.recordFamily !== "blob" || !Number.isSafeInteger(row.sequence) || row.sequence < 1 || !Number.isSafeInteger(row.attempts) || row.attempts < 0 || !timestamp(row.updatedAt) || !["pending", "in_flight", "acknowledged", "conflict", "refused", "unknown"].includes(row.state))
|
|
104
150
|
throw new TypeError("invalid blob intent record");
|
|
105
151
|
const prepared = decodePreparedBlobIntent(row.prepared);
|
|
106
152
|
if (row.requestId !== prepared.identity.requestId || row.target !== prepared.intent.key)
|
|
@@ -113,8 +159,13 @@ export function captureBlobIntentRecord(value) {
|
|
|
113
159
|
if (prefix === 0 || prepared.intent.operationId !== "blobs.delete.v1")
|
|
114
160
|
throw new TypeError("blob hold requires its proven deletion prefix");
|
|
115
161
|
}
|
|
116
|
-
if (
|
|
117
|
-
|
|
162
|
+
if (row.notDispatched !== undefined) {
|
|
163
|
+
captureBlobNotDispatched(row.notDispatched);
|
|
164
|
+
if (prefix === 0)
|
|
165
|
+
throw new TypeError("blob not-dispatched evidence requires its proven prefix");
|
|
166
|
+
}
|
|
167
|
+
if (prefix > 0 && row.deletionHold === undefined && row.notDispatched === undefined)
|
|
168
|
+
throw new TypeError("blob non-execution prefix requires typed evidence");
|
|
118
169
|
const terminal = row.state === "acknowledged" || row.state === "conflict" || row.state === "refused";
|
|
119
170
|
if (terminal !== (row.receipt !== undefined))
|
|
120
171
|
throw new TypeError("blob terminal state requires its receipt");
|
|
@@ -165,4 +216,325 @@ export function captureBlobMutationOptions(options) {
|
|
|
165
216
|
throw new JournalGuardConflict(captured.guard.key);
|
|
166
217
|
return captured;
|
|
167
218
|
}
|
|
219
|
+
// ── the one transition owner ─────────────────────────────────────────────────────────────
|
|
220
|
+
// Every blob journal decides admission, claims, settlement, non-execution proof, retirement and
|
|
221
|
+
// guarded metadata through these pure functions; a backend only persists what they return.
|
|
222
|
+
/** Admission refused: an unsettled intent on the same bundle and key was not named as a premise. */
|
|
223
|
+
export class BlobAdmissionConflict extends JournalGuardConflict {
|
|
224
|
+
unsettled;
|
|
225
|
+
constructor(key, unsettled) {
|
|
226
|
+
super(key);
|
|
227
|
+
this.message = `'${key}' already has an unsettled blob intent (${unsettled.join(", ") || "premise mismatch"}) in this bundle; name it as a premise to admit beside it`;
|
|
228
|
+
this.unsettled = Object.freeze([...unsettled]);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/** The guard must equal the complete same-key intent set and every named meta premise. */
|
|
232
|
+
export function assertBlobGuardMatches(view, guard) {
|
|
233
|
+
assertBlobJournalGuard(guard, { key: guard.key, intents: [...view.blobIntentsFor(guard.key)], meta: guard.meta.map(row => ({ key: row.key, expected: view.meta(row.key) })) });
|
|
234
|
+
}
|
|
235
|
+
/** The top-level folders that hold Superbee's own records, never ordinary files: View and page entries and registries, conventions, recipes and references. */
|
|
236
|
+
const NON_ORDINARY_ROOTS = Object.freeze([PAGE_ENTRY_PREFIX, PAGE_REGISTRY_PREFIX, VIEW_ENTRY_PREFIX, VIEW_REGISTRY_PREFIX, "conventions/", "recipes/", "references/"].map(prefix => prefix.slice(0, -1)));
|
|
237
|
+
/**
|
|
238
|
+
* Whether `key` names an ordinary file a blob write may change: a safe blob key that is not a
|
|
239
|
+
* reserved file and does not sit under one of Superbee's own record folders (compared
|
|
240
|
+
* case-insensitively, under compatibility folding, as a case-insensitive file system would).
|
|
241
|
+
* The one key policy for every blob writer: the hosted client and the CLI's checkout sync.
|
|
242
|
+
*/
|
|
243
|
+
export function isOrdinaryBlobKey(key) {
|
|
244
|
+
if (typeof key !== "string")
|
|
245
|
+
return false;
|
|
246
|
+
try {
|
|
247
|
+
assertBlobKey(key);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
if (isReservedFile(key))
|
|
253
|
+
return false;
|
|
254
|
+
const root = key.split("/")[0].normalize("NFKD").toLowerCase().toUpperCase().toLowerCase();
|
|
255
|
+
return !NON_ORDINARY_ROOTS.includes(root);
|
|
256
|
+
}
|
|
257
|
+
export function checkBlobAdmission(input) {
|
|
258
|
+
const refuse = (reason, message) => ({ ok: false, code: "invalid_input", reason, message });
|
|
259
|
+
if (!isSafeBlobKey(input.key))
|
|
260
|
+
return refuse("unsafe_key", "the blob key is not a safe ordinary-file key");
|
|
261
|
+
if (!isOrdinaryBlobKey(input.key))
|
|
262
|
+
return refuse("protected_key", "the blob key names a reserved file or a folder of Superbee's own records (views, pages, conventions, recipes, references), which blob writes never change");
|
|
263
|
+
const deletion = input.operation === "delete";
|
|
264
|
+
if (!deletion && !isBlobContentType(input.contentType))
|
|
265
|
+
return refuse("invalid_content_type", "the blob content type is not a valid MIME value");
|
|
266
|
+
if (input.operation !== "create" && !isBlobContentType(input.expectedContentType))
|
|
267
|
+
return refuse("invalid_expected_content_type", "replace and delete pin the expected content type");
|
|
268
|
+
if (deletion)
|
|
269
|
+
return input.byteLength === undefined ? { ok: true } : refuse("bytes_with_delete", "a blob delete carries no bytes");
|
|
270
|
+
if (!Number.isSafeInteger(input.byteLength) || input.byteLength < 0)
|
|
271
|
+
return refuse("missing_bytes", "a blob create or replace carries bytes");
|
|
272
|
+
const advertised = input.maximumBytes;
|
|
273
|
+
if (advertised !== undefined && advertised !== null && (!Number.isSafeInteger(advertised) || advertised < 1))
|
|
274
|
+
return refuse("invalid_bound", "the advertised blob write bound is not a positive integer");
|
|
275
|
+
const bound = Math.min(BLOB_JOURNAL_BOUNDS.rawBytes, advertised ?? BLOB_JOURNAL_BOUNDS.rawBytes);
|
|
276
|
+
if (input.byteLength > bound)
|
|
277
|
+
return refuse("too_large", `the blob is ${input.byteLength} bytes; the write bound is ${bound}`);
|
|
278
|
+
return { ok: true };
|
|
279
|
+
}
|
|
280
|
+
/** One unsettled intent per (bundle, key): every receipt-less same-bundle intent on the key must be
|
|
281
|
+
* named, exactly, in `unsettled`. Other bundles on the same key never block. */
|
|
282
|
+
export function assertBlobSameKeyAdmission(existing, prepared, unsettled = []) {
|
|
283
|
+
const key = prepared.intent.key;
|
|
284
|
+
const blocking = existing.filter(row => row.target === key && row.receipt === undefined && decodePreparedBlobIntent(row.prepared).scope.bundleId === prepared.scope.bundleId);
|
|
285
|
+
const named = new Set(unsettled.map(row => row.requestId));
|
|
286
|
+
if (named.size !== unsettled.length || unsettled.length !== blocking.length || !blocking.every(row => unsettled.some(premise => equalJournalValue(premise, row))))
|
|
287
|
+
throw new BlobAdmissionConflict(key, blocking.map(row => row.requestId));
|
|
288
|
+
}
|
|
289
|
+
export function captureBlobAdmission(prepared, options) {
|
|
290
|
+
const decoded = decodePreparedBlobIntent(prepared);
|
|
291
|
+
const { unsettled, ...rest } = object(options) ? options : {};
|
|
292
|
+
const captured = captureBlobMutationOptions((object(options) ? rest : options));
|
|
293
|
+
if (captured.guard.key !== decoded.intent.key)
|
|
294
|
+
throw new JournalGuardConflict(decoded.intent.key);
|
|
295
|
+
let premise;
|
|
296
|
+
if (unsettled !== undefined) {
|
|
297
|
+
const rows = captureJournalValue(unsettled);
|
|
298
|
+
if (!Array.isArray(rows))
|
|
299
|
+
throw new JournalGuardConflict(decoded.intent.key);
|
|
300
|
+
premise = rows.map(row => captureBlobIntentRecord(row));
|
|
301
|
+
}
|
|
302
|
+
return { prepared, decoded, options: captured, ...(premise === undefined ? {} : { unsettled: premise }) };
|
|
303
|
+
}
|
|
304
|
+
export function decideBlobAdmission(view, admission, now) {
|
|
305
|
+
const { decoded, prepared, options: { guard, meta = [], removeMeta = [] } } = admission;
|
|
306
|
+
assertBlobGuardMatches(view, guard);
|
|
307
|
+
if (view.intentState(decoded.identity.requestId) !== null)
|
|
308
|
+
throw new JournalSnapshotConflict(guard.key);
|
|
309
|
+
assertBlobSameKeyAdmission(view.blobIntentsFor(guard.key), decoded, admission.unsettled);
|
|
310
|
+
const sequence = view.sequence + 1;
|
|
311
|
+
if (!Number.isSafeInteger(sequence))
|
|
312
|
+
throw new RangeError("journal sequence exhausted");
|
|
313
|
+
const record = captureBlobIntentRecord({ recordFamily: "blob", requestId: decoded.identity.requestId, target: decoded.intent.key, prepared, sequence, attempts: 0, state: "pending", updatedAt: now });
|
|
314
|
+
return { result: record, sequence, intents: [{ requestId: record.requestId, value: record }], meta, removeMeta };
|
|
315
|
+
}
|
|
316
|
+
const PATCH_KEYS = ["state", "attempts", "receipt", "notAppliedThrough", "deletionHold", "notDispatched"];
|
|
317
|
+
export function captureBlobUpdate(requestId, expectedState, patch, options) {
|
|
318
|
+
const captured = captureJournalValue(patch);
|
|
319
|
+
const mutation = captureBlobMutationOptions(options);
|
|
320
|
+
// An undefined-valued key would merge into the record as a present key; a patch names only values.
|
|
321
|
+
if (!captured || typeof captured !== "object" || Array.isArray(captured) || Object.entries(captured).some(([key, value]) => !PATCH_KEYS.includes(key) || value === undefined))
|
|
322
|
+
throw new JournalGuardConflict(mutation.guard.key);
|
|
323
|
+
return { requestId, expectedState, patch: captured, options: mutation };
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* The single claim/settle/non-execution rule. A claim consumes exactly one eligibility (`pending` or
|
|
327
|
+
* `unknown`, every earlier attempt proven not applied) before any wire operation. Proof of
|
|
328
|
+
* non-execution extends the prefix by exactly the claimed attempt and returns the record to
|
|
329
|
+
* `pending`: a deletion hold from `in_flight` or `unknown`, not-dispatched only from an `in_flight`
|
|
330
|
+
* claim this journal handle made at exactly the current attempt (`claimedHere`).
|
|
331
|
+
* A receipt freezes the record. Anything else may not touch the counters or the evidence.
|
|
332
|
+
*/
|
|
333
|
+
export function nextBlobIntentRecord(current, update, guardKey, now, options = {}) {
|
|
334
|
+
const { requestId, expectedState, patch } = update;
|
|
335
|
+
const { checkRecord, claimedHere = false } = options;
|
|
336
|
+
if (!current || current.state !== expectedState)
|
|
337
|
+
throw new IntentStateConflict(requestId, expectedState, current?.state ?? null);
|
|
338
|
+
if (current.target !== guardKey)
|
|
339
|
+
throw new JournalGuardConflict(guardKey);
|
|
340
|
+
const next = captureBlobIntentRecord({ ...current, ...patch, updatedAt: now });
|
|
341
|
+
checkRecord?.(next);
|
|
342
|
+
const beforePrefix = current.notAppliedThrough ?? 0, afterPrefix = next.notAppliedThrough ?? 0;
|
|
343
|
+
const sameHold = equalJournalValue(current.deletionHold, next.deletionHold);
|
|
344
|
+
const sameNotDispatched = equalJournalValue(current.notDispatched, next.notDispatched);
|
|
345
|
+
const refuse = () => new JournalGuardConflict(guardKey);
|
|
346
|
+
if (current.receipt && (next.attempts !== current.attempts || next.state !== current.state || !equalJournalValue(current.receipt, next.receipt) || afterPrefix !== beforePrefix || !sameHold || !sameNotDispatched))
|
|
347
|
+
throw refuse();
|
|
348
|
+
if (next.attempts !== current.attempts) {
|
|
349
|
+
if (current.receipt || !["pending", "unknown"].includes(current.state) || next.state !== "in_flight" || next.attempts !== current.attempts + 1 || beforePrefix !== current.attempts || afterPrefix !== beforePrefix || !sameHold || !sameNotDispatched)
|
|
350
|
+
throw refuse();
|
|
351
|
+
}
|
|
352
|
+
else if (afterPrefix !== beforePrefix) {
|
|
353
|
+
// Typed evidence belongs to this exact claimed count and must extend the complete prefix.
|
|
354
|
+
const held = patch.deletionHold !== undefined, notDispatched = patch.notDispatched !== undefined;
|
|
355
|
+
if (current.receipt || next.state !== "pending" || patch.attempts !== current.attempts || beforePrefix !== current.attempts - 1 || afterPrefix !== current.attempts || next.receipt !== undefined || held === notDispatched)
|
|
356
|
+
throw refuse();
|
|
357
|
+
if (held ? !["in_flight", "unknown"].includes(current.state) : current.state !== "in_flight" || !sameHold || !claimedHere)
|
|
358
|
+
throw refuse();
|
|
359
|
+
}
|
|
360
|
+
else if (!sameHold || !sameNotDispatched || patch.state === "in_flight")
|
|
361
|
+
throw refuse();
|
|
362
|
+
return next;
|
|
363
|
+
}
|
|
364
|
+
export function decideBlobUpdate(view, update, now, checkRecord) {
|
|
365
|
+
const { guard, meta = [], removeMeta = [] } = update.options;
|
|
366
|
+
assertBlobGuardMatches(view, guard);
|
|
367
|
+
const current = view.blobIntent(update.requestId);
|
|
368
|
+
if (!current && view.intentState(update.requestId) !== null)
|
|
369
|
+
throw new IntentStateConflict(update.requestId, update.expectedState, view.intentState(update.requestId));
|
|
370
|
+
const claimedHere = current !== undefined && view.claimedInThisSession(update.requestId, current.attempts);
|
|
371
|
+
const next = nextBlobIntentRecord(current, update, guard.key, now, { ...(checkRecord ? { checkRecord } : {}), claimedHere });
|
|
372
|
+
const claimed = next.attempts !== current.attempts ? next.attempts : next.state !== "in_flight" ? null : undefined;
|
|
373
|
+
return { result: next, intents: [{ requestId: update.requestId, value: next }], meta, removeMeta, ...(claimed === undefined ? {} : { session: { requestId: update.requestId, claimed } }) };
|
|
374
|
+
}
|
|
375
|
+
/** The patch that records typed non-execution of the latest claimed attempt. `not_dispatched` is
|
|
376
|
+
* only for this invocation's own claim, before the carrier is invoked or refused by it as `denied`;
|
|
377
|
+
* the journal refuses it for a claim it did not make in this session. Any other carrier or
|
|
378
|
+
* transport failure is `unknown`, never this. */
|
|
379
|
+
export function blobNonExecutionPatch(current, reason) {
|
|
380
|
+
const { kind, ...evidence } = reason;
|
|
381
|
+
const base = { state: "pending", attempts: current.attempts, notAppliedThrough: current.attempts };
|
|
382
|
+
if (kind === "deletion_hold")
|
|
383
|
+
return { ...base, deletionHold: captureBlobDeletionHold(evidence) };
|
|
384
|
+
if (kind === "not_dispatched")
|
|
385
|
+
return { ...base, notDispatched: captureBlobNotDispatched(evidence) };
|
|
386
|
+
throw new TypeError("unknown blob non-execution kind");
|
|
387
|
+
}
|
|
388
|
+
/** Fresh submission is allowed only while every earlier attempt is proven not applied. */
|
|
389
|
+
export function blobIntentResendable(row) {
|
|
390
|
+
return row.receipt === undefined && (row.state === "pending" || row.state === "unknown") && (row.notAppliedThrough ?? 0) === row.attempts;
|
|
391
|
+
}
|
|
392
|
+
export function captureBlobRetirement(key, requestIds, options) {
|
|
393
|
+
assertBlobKey(key);
|
|
394
|
+
const ids = captureJournalValue([...requestIds]);
|
|
395
|
+
const captured = captureBlobMutationOptions(options);
|
|
396
|
+
if (captured.guard.key !== key || ids.length === 0 || ids.some(id => typeof id !== "string") || new Set(ids).size !== ids.length)
|
|
397
|
+
throw new JournalGuardConflict(key);
|
|
398
|
+
return { key, requestIds: ids, options: captured };
|
|
399
|
+
}
|
|
400
|
+
/** Only terminal records with their receipt retire, and only together with their key's guard. */
|
|
401
|
+
export function decideBlobRetirement(view, retirement) {
|
|
402
|
+
const { key, requestIds, options: { guard, meta = [], removeMeta = [] } } = retirement;
|
|
403
|
+
assertBlobGuardMatches(view, guard);
|
|
404
|
+
for (const id of requestIds) {
|
|
405
|
+
const row = view.blobIntent(id);
|
|
406
|
+
if (!row || row.target !== key || !row.receipt || !["acknowledged", "refused", "conflict"].includes(row.state))
|
|
407
|
+
throw new JournalGuardConflict(key);
|
|
408
|
+
}
|
|
409
|
+
return { result: undefined, intents: requestIds.map(requestId => ({ requestId, value: null })), meta, removeMeta };
|
|
410
|
+
}
|
|
411
|
+
export function captureBlobForget(requestId, options) {
|
|
412
|
+
const captured = captureBlobMutationOptions(options);
|
|
413
|
+
if (typeof requestId !== "string" || !isWriteRequestId(requestId))
|
|
414
|
+
throw new JournalGuardConflict(captured.guard.key);
|
|
415
|
+
return { requestId, options: captured };
|
|
416
|
+
}
|
|
417
|
+
/** Only an `unknown`, receipt-less intent whose latest attempt is not proven unapplied may be forgotten. */
|
|
418
|
+
export function decideBlobForget(view, forget) {
|
|
419
|
+
const { requestId, options: { guard, meta = [], removeMeta = [] } } = forget;
|
|
420
|
+
assertBlobGuardMatches(view, guard);
|
|
421
|
+
const row = view.blobIntent(requestId);
|
|
422
|
+
if (!row || row.state !== "unknown")
|
|
423
|
+
throw new IntentStateConflict(requestId, "unknown", row?.state ?? view.intentState(requestId));
|
|
424
|
+
if (row.target !== guard.key || row.receipt !== undefined || (row.notAppliedThrough ?? 0) >= row.attempts)
|
|
425
|
+
throw new JournalGuardConflict(guard.key);
|
|
426
|
+
return { result: undefined, intents: [{ requestId, value: null }], meta, removeMeta };
|
|
427
|
+
}
|
|
428
|
+
export function captureBlobMetaWrite(key, changes, options) {
|
|
429
|
+
assertBlobKey(key);
|
|
430
|
+
const captured = captureBlobMutationOptions({ ...captureJournalValue(changes), guard: options.guard });
|
|
431
|
+
if (captured.guard.key !== key)
|
|
432
|
+
throw new JournalGuardConflict(key);
|
|
433
|
+
return { key, options: captured };
|
|
434
|
+
}
|
|
435
|
+
export function decideBlobMetaWrite(view, write) {
|
|
436
|
+
assertBlobGuardMatches(view, write.options.guard);
|
|
437
|
+
return { result: undefined, intents: [], meta: write.options.meta ?? [], removeMeta: write.options.removeMeta ?? [] };
|
|
438
|
+
}
|
|
439
|
+
/** A same-key read and the complete guard a later mutation must present. Values are copies. */
|
|
440
|
+
export function readBlobJournal(view, key, options = {}) {
|
|
441
|
+
assertBlobKey(key);
|
|
442
|
+
const intents = [...view.blobIntentsFor(key)].sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row));
|
|
443
|
+
const meta = new Map();
|
|
444
|
+
const premises = [];
|
|
445
|
+
for (const name of new Set(options.meta ?? [])) {
|
|
446
|
+
if (typeof name !== "string")
|
|
447
|
+
throw new JournalGuardConflict(key);
|
|
448
|
+
const actual = view.meta(name);
|
|
449
|
+
if (actual.present) {
|
|
450
|
+
const value = structuredClone(actual.value);
|
|
451
|
+
meta.set(name, value);
|
|
452
|
+
premises.push({ key: name, expected: { present: true, value: structuredClone(value) } });
|
|
453
|
+
}
|
|
454
|
+
else
|
|
455
|
+
premises.push({ key: name, expected: { present: false } });
|
|
456
|
+
}
|
|
457
|
+
return { key, intents, meta, guard: { key, intents: structuredClone(intents), meta: premises } };
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* A {@link BlobJournaledBackend} held in memory, for a browser or a test: the same pure transition
|
|
461
|
+
* functions as the file journal, nothing durable. Each verb decides and applies with no await in
|
|
462
|
+
* between, so verbs never interleave. A terminal receipt is bounded by its JSON size here, where
|
|
463
|
+
* the file journal measures its own tagged encoding. `state` restores exported rows as a new
|
|
464
|
+
* handle would find them: an `in_flight` claim among them is not this handle's.
|
|
465
|
+
*/
|
|
466
|
+
export function createMemoryBlobJournal(state) {
|
|
467
|
+
const intents = new Map();
|
|
468
|
+
const meta = new Map();
|
|
469
|
+
const claims = new Map();
|
|
470
|
+
let sequence = 0;
|
|
471
|
+
if (state !== undefined) {
|
|
472
|
+
const restored = captureJournalValue(state);
|
|
473
|
+
if (!object(restored) || !only(restored, ["intents", "meta", "sequence"]) || !Array.isArray(restored.intents) || !Array.isArray(restored.meta) || !Number.isSafeInteger(restored.sequence) || restored.sequence < 0)
|
|
474
|
+
throw new TypeError("invalid memory blob journal state");
|
|
475
|
+
for (const row of restored.intents) {
|
|
476
|
+
const captured = captureBlobIntentRecord(row);
|
|
477
|
+
if (intents.has(captured.requestId) || captured.sequence > restored.sequence)
|
|
478
|
+
throw new TypeError("invalid memory blob journal state");
|
|
479
|
+
intents.set(captured.requestId, captured);
|
|
480
|
+
}
|
|
481
|
+
for (const entry of restored.meta) {
|
|
482
|
+
if (!Array.isArray(entry) || entry.length !== 2 || typeof entry[0] !== "string" || meta.has(entry[0]))
|
|
483
|
+
throw new TypeError("invalid memory blob journal state");
|
|
484
|
+
meta.set(entry[0], entry[1]);
|
|
485
|
+
}
|
|
486
|
+
sequence = restored.sequence;
|
|
487
|
+
}
|
|
488
|
+
const view = {
|
|
489
|
+
blobIntentsFor: key => [...intents.values()].filter(row => row.target === key),
|
|
490
|
+
blobIntent: id => intents.get(id),
|
|
491
|
+
intentState: id => intents.get(id)?.state ?? null,
|
|
492
|
+
meta: key => meta.has(key) ? { present: true, value: meta.get(key) } : { present: false },
|
|
493
|
+
get sequence() { return sequence; },
|
|
494
|
+
claimedInThisSession: (id, attempts) => claims.get(id) === attempts,
|
|
495
|
+
};
|
|
496
|
+
const apply = (decision) => {
|
|
497
|
+
for (const { requestId, value } of decision.intents) {
|
|
498
|
+
if (value)
|
|
499
|
+
intents.set(requestId, structuredClone(value));
|
|
500
|
+
else
|
|
501
|
+
intents.delete(requestId);
|
|
502
|
+
}
|
|
503
|
+
if (decision.sequence !== undefined)
|
|
504
|
+
sequence = decision.sequence;
|
|
505
|
+
for (const row of decision.meta)
|
|
506
|
+
meta.set(row.key, structuredClone(row.value));
|
|
507
|
+
for (const key of decision.removeMeta)
|
|
508
|
+
meta.delete(key);
|
|
509
|
+
if (decision.session) {
|
|
510
|
+
if (decision.session.claimed === null)
|
|
511
|
+
claims.delete(decision.session.requestId);
|
|
512
|
+
else
|
|
513
|
+
claims.set(decision.session.requestId, decision.session.claimed);
|
|
514
|
+
}
|
|
515
|
+
for (const { requestId, value } of decision.intents)
|
|
516
|
+
if (value === null)
|
|
517
|
+
claims.delete(requestId);
|
|
518
|
+
return decision.result;
|
|
519
|
+
};
|
|
520
|
+
const checkReceipt = (row) => {
|
|
521
|
+
if (row.receipt !== undefined && new TextEncoder().encode(JSON.stringify(row.receipt)).byteLength > BLOB_JOURNAL_BOUNDS.terminalReceiptBytes)
|
|
522
|
+
throw new RangeError("a blob terminal receipt exceeds its byte bound");
|
|
523
|
+
};
|
|
524
|
+
return {
|
|
525
|
+
async readBlobWithJournal(key, options = {}) { return readBlobJournal(view, key, options); },
|
|
526
|
+
async writeBlobMeta(key, changes, options) { apply(decideBlobMetaWrite(view, captureBlobMetaWrite(key, changes, options))); },
|
|
527
|
+
async admitPreparedBlob(prepared, options) { return structuredClone(apply(decideBlobAdmission(view, captureBlobAdmission(prepared, options), new Date().toISOString()))); },
|
|
528
|
+
async listBlobIntents(state) {
|
|
529
|
+
const wanted = state === undefined ? null : new Set(typeof state === "string" ? [state] : state);
|
|
530
|
+
return [...intents.values()].filter(row => !wanted || wanted.has(row.state)).sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row));
|
|
531
|
+
},
|
|
532
|
+
async readBlobIntent(requestId) { const row = intents.get(requestId); return row && structuredClone(row); },
|
|
533
|
+
async updateBlobIntent(requestId, expectedState, patch, options) { return structuredClone(apply(decideBlobUpdate(view, captureBlobUpdate(requestId, expectedState, patch, options), new Date().toISOString(), checkReceipt))); },
|
|
534
|
+
async retireBlobIntents(key, requestIds, options) { apply(decideBlobRetirement(view, captureBlobRetirement(key, requestIds, options))); },
|
|
535
|
+
async forgetBlobIntent(requestId, options) { apply(decideBlobForget(view, captureBlobForget(requestId, options))); },
|
|
536
|
+
async readMeta(key) { return meta.has(key) ? structuredClone(meta.get(key)) : undefined; },
|
|
537
|
+
exportState: () => ({ intents: [...intents.values()].sort((a, b) => a.sequence - b.sequence).map(row => structuredClone(row)), meta: [...meta].map(([key, value]) => [key, structuredClone(value)]), sequence }),
|
|
538
|
+
};
|
|
539
|
+
}
|
|
168
540
|
//# sourceMappingURL=blob-journal.js.map
|
package/dist/blob-journal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob-journal.js","sourceRoot":"","sources":["../src/blob-journal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"blob-journal.js","sourceRoot":"","sources":["../src/blob-journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { InvalidInputError } from "./errors.js";
|
|
2
|
+
import type { KindConvention } from "./kinds.js";
|
|
3
|
+
import type { Bundle, Link, OkfDocument } from "./types.js";
|
|
4
|
+
export declare const BODY_PREVIEW_LIMIT = 1000;
|
|
5
|
+
export declare const BODY_PREVIEW_TRUNCATION_MARKER = "[superbee:body-preview-truncated]";
|
|
6
|
+
export declare const BODY_PREVIEW_TRUNCATION_SIGNATURE: RegExp;
|
|
7
|
+
export declare const BODY_PREVIEW_KEY = "body_preview";
|
|
8
|
+
export declare const BODY_PREVIEW_RESERVED_KEYS: readonly string[];
|
|
9
|
+
export declare function attachBodyPreview(rec: Record<string, unknown>, body: string, fullBodyHelp: readonly string[]): void;
|
|
10
|
+
export type BodyPreviewFinding = {
|
|
11
|
+
reason: "preview_marker";
|
|
12
|
+
marker: string;
|
|
13
|
+
notice: string;
|
|
14
|
+
} | {
|
|
15
|
+
reason: "stored_body_preview";
|
|
16
|
+
preview_limit: number;
|
|
17
|
+
supplied_body_chars: number;
|
|
18
|
+
stored_body_chars: number;
|
|
19
|
+
};
|
|
20
|
+
/** Unchanged serialized bodies and stored notices carried by a preserving append are safe. */
|
|
21
|
+
export declare function bodyPreviewFinding(existing: OkfDocument, nextBody: string): BodyPreviewFinding | undefined;
|
|
22
|
+
export type BodyReplaceFinding = BodyPreviewFinding | {
|
|
23
|
+
reason: "dropped_links";
|
|
24
|
+
dropped_links: Link[];
|
|
25
|
+
};
|
|
26
|
+
export declare class BodyReplaceError extends InvalidInputError {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly finding: BodyReplaceFinding;
|
|
29
|
+
readonly storedCarriesNotice: boolean;
|
|
30
|
+
constructor(id: string, finding: BodyReplaceFinding, storedCarriesNotice?: boolean);
|
|
31
|
+
}
|
|
32
|
+
export interface BodyReplacePosture {
|
|
33
|
+
acceptTruncatedBody?: boolean;
|
|
34
|
+
replaceLinks?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** Exact pairs consume first; target mode then admits retext while preserving occurrence counts.
|
|
37
|
+
* Exact-edge mode is available to authorities that protect relationship text as well. */
|
|
38
|
+
export declare function computeDroppedLinks(existingLinks: readonly Link[], nextLinks: readonly Link[], mode?: "target" | "exact-edge"): Link[];
|
|
39
|
+
export declare function droppedLinks(_bundle: Bundle, existing: OkfDocument, nextBody: string): Link[];
|
|
40
|
+
export declare function guardTruncatedBodyPreview(existing: OkfDocument, nextBody: string, acceptTruncatedBody: boolean): void;
|
|
41
|
+
export declare function guardDroppedLinks(bundle: Bundle, existing: OkfDocument, nextBody: string, replaceLinks: boolean): void;
|
|
42
|
+
export declare function guardBodyReplace(bundle: Bundle, existing: OkfDocument, nextBody: string, posture?: BodyReplacePosture): void;
|
|
43
|
+
/** A scalar patch cannot replace a declared list, even when the stored field is absent. */
|
|
44
|
+
export declare class TypedListPatchError extends InvalidInputError {
|
|
45
|
+
readonly field: string;
|
|
46
|
+
readonly fieldType: "string-list" | "https-url-list";
|
|
47
|
+
constructor(field: string, fieldType: "string-list" | "https-url-list");
|
|
48
|
+
}
|
|
49
|
+
export declare function assertTypedListPatch(kind: KindConvention, storageField: string): void;
|
|
50
|
+
//# sourceMappingURL=body-replace-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-replace-guards.d.ts","sourceRoot":"","sources":["../src/body-replace-guards.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,8BAA8B,sCAAsC,CAAC;AAMlF,eAAO,MAAM,iCAAiC,QACiD,CAAC;AAEhG,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAMvD,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,IAAI,CAaN;AAwBD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAErH,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAO1G;AAED,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,aAAa,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC;AACzG,qBAAa,gBAAiB,SAAQ,iBAAiB;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;gBAC1B,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,UAAQ;CAKjF;AACD,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;yFACyF;AACzF,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,GAAE,QAAQ,GAAG,YAAuB,GAAG,IAAI,EAAE,CAmChJ;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,CAE7F;AACD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAIrH;AACD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,CAItH;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAI5H;AAED,2FAA2F;AAC3F,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,gBAAgB,CAAC;gBACzC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,gBAAgB;CAKvE;AACD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAIrF"}
|