@superbee/core 0.2.0-pre.3 → 0.2.0-pre.31
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 +1084 -0
- package/dist/artifact-contract.d.ts +90 -0
- package/dist/artifact-contract.d.ts.map +1 -0
- package/dist/artifact-contract.js +205 -0
- package/dist/artifact-contract.js.map +1 -0
- package/dist/backend.d.ts +19 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +83 -36
- package/dist/backend.js.map +1 -1
- package/dist/blob-contract.d.ts +80 -0
- package/dist/blob-contract.d.ts.map +1 -0
- package/dist/blob-contract.js +131 -0
- package/dist/blob-contract.js.map +1 -0
- package/dist/blob-journal.d.ts +302 -0
- package/dist/blob-journal.d.ts.map +1 -0
- package/dist/blob-journal.js +540 -0
- package/dist/blob-journal.js.map +1 -0
- package/dist/body-replace-guards.d.ts +52 -0
- package/dist/body-replace-guards.d.ts.map +1 -0
- package/dist/body-replace-guards.js +176 -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/bundle-ops.d.ts +1 -1
- package/dist/bundle-ops.d.ts.map +1 -1
- package/dist/bundle-ops.js +2 -2
- package/dist/bundle-ops.js.map +1 -1
- package/dist/bundle.d.ts +2 -1
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +3 -3
- package/dist/bundle.js.map +1 -1
- 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/connector-request.d.ts +87 -0
- package/dist/connector-request.d.ts.map +1 -0
- package/dist/connector-request.js +370 -0
- package/dist/connector-request.js.map +1 -0
- package/dist/connectors.d.ts +262 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +1179 -0
- package/dist/connectors.js.map +1 -0
- package/dist/cross-bundle.d.ts +135 -0
- package/dist/cross-bundle.d.ts.map +1 -0
- package/dist/cross-bundle.js +186 -0
- package/dist/cross-bundle.js.map +1 -0
- package/dist/dependencies.d.ts +94 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +180 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/document-codec.d.ts +5 -1
- package/dist/document-codec.d.ts.map +1 -1
- package/dist/document-codec.js +7 -4
- package/dist/document-codec.js.map +1 -1
- package/dist/document-field-actions.d.ts +31 -1
- package/dist/document-field-actions.d.ts.map +1 -1
- package/dist/document-field-actions.js +137 -34
- package/dist/document-field-actions.js.map +1 -1
- package/dist/document-mutation.d.ts +22 -10
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +61 -27
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-write-policy.d.ts.map +1 -1
- package/dist/document-write-policy.js +4 -2
- package/dist/document-write-policy.js.map +1 -1
- package/dist/domain-model.d.ts +73 -0
- package/dist/domain-model.d.ts.map +1 -0
- package/dist/domain-model.js +169 -0
- package/dist/domain-model.js.map +1 -0
- package/dist/engine.d.ts +16 -8
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +42 -4
- package/dist/engine.js.map +1 -1
- package/dist/file-journaled-backend-internal.d.ts +21 -0
- package/dist/file-journaled-backend-internal.d.ts.map +1 -0
- package/dist/file-journaled-backend-internal.js +12 -0
- package/dist/file-journaled-backend-internal.js.map +1 -0
- package/dist/file-journaled-backend.d.ts +160 -0
- package/dist/file-journaled-backend.d.ts.map +1 -0
- package/dist/file-journaled-backend.js +1345 -0
- package/dist/file-journaled-backend.js.map +1 -0
- package/dist/filesystem-host.d.ts +15 -0
- package/dist/filesystem-host.d.ts.map +1 -0
- package/dist/filesystem-host.js +20 -0
- package/dist/filesystem-host.js.map +1 -0
- package/dist/filesystem-identity.d.ts +86 -4
- package/dist/filesystem-identity.d.ts.map +1 -1
- package/dist/filesystem-identity.js +338 -102
- package/dist/filesystem-identity.js.map +1 -1
- package/dist/filesystem-lock.d.ts +16 -3
- package/dist/filesystem-lock.d.ts.map +1 -1
- package/dist/filesystem-lock.js +323 -77
- package/dist/filesystem-lock.js.map +1 -1
- package/dist/filesystem-push-role.d.ts +77 -0
- package/dist/filesystem-push-role.d.ts.map +1 -0
- package/dist/filesystem-push-role.js +165 -0
- package/dist/filesystem-push-role.js.map +1 -0
- package/dist/filesystem.d.ts +17 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/filesystem.js +18 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/governed-body-write.d.ts +106 -0
- package/dist/governed-body-write.d.ts.map +1 -0
- package/dist/governed-body-write.js +251 -0
- package/dist/governed-body-write.js.map +1 -0
- package/dist/host-policy-snapshot.d.ts +9 -0
- package/dist/host-policy-snapshot.d.ts.map +1 -0
- package/dist/host-policy-snapshot.js +33 -0
- package/dist/host-policy-snapshot.js.map +1 -0
- package/dist/host-text.d.ts +31 -0
- package/dist/host-text.d.ts.map +1 -0
- package/dist/host-text.js +77 -0
- package/dist/host-text.js.map +1 -0
- package/dist/hosted-client/binding.d.ts +7 -0
- package/dist/hosted-client/binding.d.ts.map +1 -0
- package/dist/hosted-client/binding.js +10 -0
- package/dist/hosted-client/binding.js.map +1 -0
- package/dist/hosted-client/blob-delivery.d.ts +67 -0
- package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
- package/dist/hosted-client/blob-delivery.js +169 -0
- package/dist/hosted-client/blob-delivery.js.map +1 -0
- 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/bundle-listing.d.ts +46 -0
- package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
- package/dist/hosted-client/bundle-listing.js +36 -0
- package/dist/hosted-client/bundle-listing.js.map +1 -0
- package/dist/hosted-client/client.d.ts +219 -0
- package/dist/hosted-client/client.d.ts.map +1 -0
- package/dist/hosted-client/client.js +309 -0
- package/dist/hosted-client/client.js.map +1 -0
- 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 +26 -0
- package/dist/hosted-client/errors.d.ts.map +1 -0
- package/dist/hosted-client/errors.js +35 -0
- package/dist/hosted-client/errors.js.map +1 -0
- 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 +30 -0
- package/dist/hosted-client/index.d.ts.map +1 -0
- package/dist/hosted-client/index.js +32 -0
- package/dist/hosted-client/index.js.map +1 -0
- 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 +74 -0
- package/dist/hosted-client/node.d.ts.map +1 -0
- package/dist/hosted-client/node.js +219 -0
- package/dist/hosted-client/node.js.map +1 -0
- package/dist/hosted-client/reference.d.ts +12 -0
- package/dist/hosted-client/reference.d.ts.map +1 -0
- package/dist/hosted-client/reference.js +29 -0
- package/dist/hosted-client/reference.js.map +1 -0
- package/dist/hosted-client/write.d.ts +217 -0
- package/dist/hosted-client/write.d.ts.map +1 -0
- package/dist/hosted-client/write.js +418 -0
- package/dist/hosted-client/write.js.map +1 -0
- package/dist/hosted-transport/answer-rows.d.ts +243 -0
- package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
- package/dist/hosted-transport/answer-rows.js +454 -0
- package/dist/hosted-transport/answer-rows.js.map +1 -0
- package/dist/hosted-transport/blob-reads.d.ts +35 -0
- package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
- package/dist/hosted-transport/blob-reads.js +179 -0
- package/dist/hosted-transport/blob-reads.js.map +1 -0
- package/dist/hosted-transport/blob-write.d.ts +34 -0
- package/dist/hosted-transport/blob-write.d.ts.map +1 -0
- package/dist/hosted-transport/blob-write.js +115 -0
- package/dist/hosted-transport/blob-write.js.map +1 -0
- package/dist/hosted-transport/carrier.d.ts +151 -0
- package/dist/hosted-transport/carrier.d.ts.map +1 -0
- package/dist/hosted-transport/carrier.js +260 -0
- package/dist/hosted-transport/carrier.js.map +1 -0
- package/dist/hosted-transport/history-pages.d.ts +55 -0
- package/dist/hosted-transport/history-pages.d.ts.map +1 -0
- package/dist/hosted-transport/history-pages.js +69 -0
- package/dist/hosted-transport/history-pages.js.map +1 -0
- package/dist/hosted-transport/index.d.ts +18 -0
- package/dist/hosted-transport/index.d.ts.map +1 -0
- package/dist/hosted-transport/index.js +18 -0
- package/dist/hosted-transport/index.js.map +1 -0
- package/dist/hosted-transport/operations.d.ts +85 -0
- package/dist/hosted-transport/operations.d.ts.map +1 -0
- package/dist/hosted-transport/operations.js +128 -0
- package/dist/hosted-transport/operations.js.map +1 -0
- package/dist/hosted-transport/paged-reads.d.ts +87 -0
- package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
- package/dist/hosted-transport/paged-reads.js +238 -0
- package/dist/hosted-transport/paged-reads.js.map +1 -0
- package/dist/hosted-transport/read-adapter.d.ts +256 -0
- package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
- package/dist/hosted-transport/read-adapter.js +568 -0
- package/dist/hosted-transport/read-adapter.js.map +1 -0
- package/dist/hosted-transport/root-write.d.ts +114 -0
- package/dist/hosted-transport/root-write.d.ts.map +1 -0
- package/dist/hosted-transport/root-write.js +171 -0
- package/dist/hosted-transport/root-write.js.map +1 -0
- package/dist/hosted-transport/whole-document-transport.d.ts +204 -0
- package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
- package/dist/hosted-transport/whole-document-transport.js +447 -0
- package/dist/hosted-transport/whole-document-transport.js.map +1 -0
- package/dist/index.d.ts +34 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -8
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +28 -37
- package/dist/indexeddb-backend.d.ts.map +1 -1
- package/dist/indexeddb-backend.js +467 -113
- package/dist/indexeddb-backend.js.map +1 -1
- package/dist/journaled-backend.d.ts +232 -15
- package/dist/journaled-backend.d.ts.map +1 -1
- package/dist/journaled-backend.js +254 -55
- package/dist/journaled-backend.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/kind-coverage.d.ts +99 -0
- package/dist/kind-coverage.d.ts.map +1 -0
- package/dist/kind-coverage.js +186 -0
- package/dist/kind-coverage.js.map +1 -0
- package/dist/kind-field-mutation.d.ts +4 -0
- package/dist/kind-field-mutation.d.ts.map +1 -1
- package/dist/kind-field-mutation.js +28 -3
- package/dist/kind-field-mutation.js.map +1 -1
- package/dist/kinds-load.js +4 -4
- package/dist/kinds-load.js.map +1 -1
- package/dist/kinds.d.ts +65 -2
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +341 -21
- package/dist/kinds.js.map +1 -1
- package/dist/link-types.d.ts +26 -0
- package/dist/link-types.d.ts.map +1 -0
- package/dist/link-types.js +57 -0
- package/dist/link-types.js.map +1 -0
- package/dist/links.d.ts +21 -3
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +213 -14
- package/dist/links.js.map +1 -1
- package/dist/managed-document-metadata.d.ts +2 -0
- package/dist/managed-document-metadata.d.ts.map +1 -0
- package/dist/managed-document-metadata.js +9 -0
- package/dist/managed-document-metadata.js.map +1 -0
- package/dist/memory-backend.d.ts.map +1 -1
- package/dist/memory-backend.js +6 -2
- package/dist/memory-backend.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/platform.d.ts +13 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +16 -0
- package/dist/platform.js.map +1 -1
- package/dist/portable-export.d.ts +119 -0
- package/dist/portable-export.d.ts.map +1 -0
- package/dist/portable-export.js +501 -0
- package/dist/portable-export.js.map +1 -0
- package/dist/publication-filesystem.d.ts +1 -1
- package/dist/publication-filesystem.d.ts.map +1 -1
- package/dist/publication-filesystem.js +1 -1
- package/dist/publication-filesystem.js.map +1 -1
- package/dist/qualified-links.d.ts +67 -0
- package/dist/qualified-links.d.ts.map +1 -0
- package/dist/qualified-links.js +117 -0
- package/dist/qualified-links.js.map +1 -0
- package/dist/query-filter.d.ts +16 -2
- package/dist/query-filter.d.ts.map +1 -1
- package/dist/query-filter.js +40 -1
- package/dist/query-filter.js.map +1 -1
- package/dist/query-order.d.ts +22 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +42 -0
- package/dist/query-order.js.map +1 -0
- package/dist/recipe-lifecycle/errors.d.ts +96 -0
- package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
- package/dist/recipe-lifecycle/errors.js +122 -0
- package/dist/recipe-lifecycle/errors.js.map +1 -0
- package/dist/recipe-lifecycle/evolution.d.ts +112 -0
- package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
- package/dist/recipe-lifecycle/evolution.js +941 -0
- package/dist/recipe-lifecycle/evolution.js.map +1 -0
- package/dist/recipe-lifecycle/index.d.ts +30 -0
- package/dist/recipe-lifecycle/index.d.ts.map +1 -0
- package/dist/recipe-lifecycle/index.js +26 -0
- package/dist/recipe-lifecycle/index.js.map +1 -0
- package/dist/recipe-lifecycle/install.d.ts +155 -0
- package/dist/recipe-lifecycle/install.d.ts.map +1 -0
- package/dist/recipe-lifecycle/install.js +594 -0
- package/dist/recipe-lifecycle/install.js.map +1 -0
- package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
- package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
- package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
- package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
- package/dist/recipe-lifecycle/stamp.d.ts +151 -0
- package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
- package/dist/recipe-lifecycle/stamp.js +364 -0
- package/dist/recipe-lifecycle/stamp.js.map +1 -0
- package/dist/recipe-set-preflight.d.ts +139 -0
- package/dist/recipe-set-preflight.d.ts.map +1 -0
- package/dist/recipe-set-preflight.js +536 -0
- package/dist/recipe-set-preflight.js.map +1 -0
- package/dist/recipes.d.ts +29 -1
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +137 -1
- package/dist/recipes.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-backend.d.ts +67 -67
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +168 -201
- package/dist/remote-backend.js.map +1 -1
- package/dist/remote-document-codec.d.ts +2 -1
- package/dist/remote-document-codec.d.ts.map +1 -1
- package/dist/remote-document-codec.js +3 -2
- package/dist/remote-document-codec.js.map +1 -1
- package/dist/remote-error.d.ts +38 -0
- package/dist/remote-error.d.ts.map +1 -0
- package/dist/remote-error.js +59 -0
- package/dist/remote-error.js.map +1 -0
- package/dist/remote-operations.d.ts +0 -40
- package/dist/remote-operations.d.ts.map +1 -1
- package/dist/remote-operations.js +26 -6
- package/dist/remote-operations.js.map +1 -1
- package/dist/remote-parsers.d.ts +86 -0
- package/dist/remote-parsers.d.ts.map +1 -0
- package/dist/remote-parsers.js +181 -0
- package/dist/remote-parsers.js.map +1 -0
- package/dist/remote.d.ts +5 -2
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +5 -1
- package/dist/remote.js.map +1 -1
- package/dist/search/backend-source.d.ts +6 -0
- package/dist/search/backend-source.d.ts.map +1 -0
- package/dist/search/backend-source.js +33 -0
- package/dist/search/backend-source.js.map +1 -0
- 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 +16 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +15 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/memory-source.d.ts +36 -0
- package/dist/search/memory-source.d.ts.map +1 -0
- package/dist/search/memory-source.js +235 -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 +257 -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 +150 -0
- package/dist/search/text.js.map +1 -0
- package/dist/site-capabilities.d.ts +345 -0
- package/dist/site-capabilities.d.ts.map +1 -0
- package/dist/site-capabilities.js +724 -0
- package/dist/site-capabilities.js.map +1 -0
- package/dist/source-engine/guard.d.ts +78 -0
- package/dist/source-engine/guard.d.ts.map +1 -0
- package/dist/source-engine/guard.js +423 -0
- package/dist/source-engine/guard.js.map +1 -0
- package/dist/source-engine/index.d.ts +26 -0
- package/dist/source-engine/index.d.ts.map +1 -0
- package/dist/source-engine/index.js +21 -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 +620 -0
- package/dist/source-engine/observe.js.map +1 -0
- package/dist/source-engine/overlay.d.ts +49 -0
- package/dist/source-engine/overlay.d.ts.map +1 -0
- package/dist/source-engine/overlay.js +114 -0
- package/dist/source-engine/overlay.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 +287 -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 +266 -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 +273 -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/source-profiles/index.d.ts +31 -0
- package/dist/source-profiles/index.d.ts.map +1 -0
- package/dist/source-profiles/index.js +206 -0
- package/dist/source-profiles/index.js.map +1 -0
- package/dist/source-profiles/link-header.d.ts +6 -0
- package/dist/source-profiles/link-header.d.ts.map +1 -0
- package/dist/source-profiles/link-header.js +131 -0
- package/dist/source-profiles/link-header.js.map +1 -0
- package/dist/storage.d.ts +6 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +4 -1
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +38 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +1 -1
- package/dist/uncertain-write.d.ts +161 -19
- package/dist/uncertain-write.d.ts.map +1 -1
- package/dist/uncertain-write.js +90 -31
- package/dist/uncertain-write.js.map +1 -1
- package/dist/versioning.d.ts +9 -4
- package/dist/versioning.d.ts.map +1 -1
- package/dist/versioning.js +9 -4
- package/dist/versioning.js.map +1 -1
- package/dist/write-identity.d.ts +5 -0
- package/dist/write-identity.d.ts.map +1 -0
- package/dist/write-identity.js +9 -0
- package/dist/write-identity.js.map +1 -0
- package/package.json +107 -2
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/** Immutable delivery evidence for body-only updates whose authority owns document metadata. */
|
|
2
|
+
import { parseMarkdown, normalizeDocumentBodyForStorage } from "./frontmatter.js";
|
|
3
|
+
import { assertSafeConceptId, isReservedFile, pathFromConceptId } from "./paths.js";
|
|
4
|
+
import { parseIsoInstant } from "./verification.js";
|
|
5
|
+
import { isContentVersion, versionOfBytes } from "./versioning.js";
|
|
6
|
+
import { isRequestIdentity, performUncertainWrite } from "./uncertain-write.js";
|
|
7
|
+
/**
|
|
8
|
+
* One body update's bounds. `bodyBytes` is a library ceiling in UTF-8 bytes, equal to the hosted
|
|
9
|
+
* kernel's document write bound (983,040) in raw bytes; a host that measures differently (the
|
|
10
|
+
* kernel measures canonical JSON and keeps definition documents at 64 KiB) preflights its own
|
|
11
|
+
* measure. The envelope carries the body twice (the operation and the prepared content),
|
|
12
|
+
* JSON-escaped, so it is 4 MiB.
|
|
13
|
+
*/
|
|
14
|
+
export const BODY_DELIVERY_LIMITS = Object.freeze({ labelBytes: 2048, bodyBytes: 983_040, envelopeBytes: 4 * 1024 * 1024 });
|
|
15
|
+
/** Complete journal reconciliation has a separate bound from each delivery envelope. */
|
|
16
|
+
export const BODY_RECONCILIATION_BYTES = 32 * 1024 * 1024;
|
|
17
|
+
function fail(message) { throw new Error(`Invalid body delivery: ${message}`); }
|
|
18
|
+
function record(value, keys, optional = []) {
|
|
19
|
+
if (!value || typeof value !== "object" || Array.isArray(value) ||
|
|
20
|
+
![Object.prototype, null].includes(Object.getPrototypeOf(value)))
|
|
21
|
+
fail("expected a plain record");
|
|
22
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
23
|
+
if (Reflect.ownKeys(value).some(key => typeof key !== "string" || !keys.includes(key) && !optional.includes(key)) ||
|
|
24
|
+
Object.values(descriptors).some(d => !d.enumerable || !("value" in d)) || keys.some(key => !Object.hasOwn(value, key)))
|
|
25
|
+
fail("unexpected or missing fields");
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function string(value, max = BODY_DELIVERY_LIMITS.labelBytes, nonempty = true) {
|
|
29
|
+
if (typeof value !== "string" || nonempty && !value.trim() || new TextEncoder().encode(value).length > max)
|
|
30
|
+
fail("invalid string or size limit");
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
function version(value) { if (!isContentVersion(value))
|
|
34
|
+
fail("invalid version"); return value; }
|
|
35
|
+
function request(value) { const id = string(value); if (!isRequestIdentity(id))
|
|
36
|
+
fail("invalid request identity"); return id; }
|
|
37
|
+
function timestamp(value) { const text = string(value); if (parseIsoInstant(text) === null)
|
|
38
|
+
fail("invalid timestamp"); return text; }
|
|
39
|
+
function integer(value) { if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0)
|
|
40
|
+
fail("invalid count"); return value; }
|
|
41
|
+
function target(value) {
|
|
42
|
+
const id = string(value);
|
|
43
|
+
assertSafeConceptId(id);
|
|
44
|
+
if (isReservedFile(pathFromConceptId(id)))
|
|
45
|
+
fail("reserved target");
|
|
46
|
+
return id;
|
|
47
|
+
}
|
|
48
|
+
function bounded(value) { string(JSON.stringify(value), BODY_DELIVERY_LIMITS.envelopeBytes); return value; }
|
|
49
|
+
function bodyContent(content, body, id, okfVersion) {
|
|
50
|
+
const raw = string(content, BODY_DELIVERY_LIMITS.envelopeBytes, false);
|
|
51
|
+
const parsed = parseMarkdown(raw, id, { okfVersion });
|
|
52
|
+
if (typeof parsed.frontmatter.type !== "string" || !parsed.frontmatter.type.trim())
|
|
53
|
+
fail("concept type required");
|
|
54
|
+
if (normalizeDocumentBodyForStorage(parsed.body) !== normalizeDocumentBodyForStorage(body))
|
|
55
|
+
fail("content body differs from operation");
|
|
56
|
+
return raw;
|
|
57
|
+
}
|
|
58
|
+
/** Capture a serialized envelope without changing its request identity or original history. */
|
|
59
|
+
export function validatePreparedBodyDelivery(value) {
|
|
60
|
+
const raw = record(value, ["schema", "scope", "requestId", "target", "okfVersion", "operation", "expectedVersion", "local", "content", "createdAt"], ["predecessor"]);
|
|
61
|
+
if (raw.schema !== 1 || raw.okfVersion !== "0.1" && raw.okfVersion !== "0.2")
|
|
62
|
+
fail("unsupported schema or edition");
|
|
63
|
+
const op = record(raw.operation, ["kind", "body"]);
|
|
64
|
+
if (op.kind !== "document.body.update")
|
|
65
|
+
fail("unsupported operation");
|
|
66
|
+
const operation = Object.freeze({ kind: "document.body.update", body: string(op.body, BODY_DELIVERY_LIMITS.bodyBytes, false) });
|
|
67
|
+
const id = target(raw.target);
|
|
68
|
+
const content = bodyContent(raw.content, operation.body, id, raw.okfVersion);
|
|
69
|
+
const local = version(raw.local);
|
|
70
|
+
if (versionOfBytes(content) !== local)
|
|
71
|
+
fail("local content hash mismatch");
|
|
72
|
+
let predecessor;
|
|
73
|
+
if (Object.hasOwn(raw, "predecessor")) {
|
|
74
|
+
const p = record(raw.predecessor, ["requestId", "acknowledgedVersion"]);
|
|
75
|
+
predecessor = Object.freeze({ requestId: request(p.requestId), acknowledgedVersion: version(p.acknowledgedVersion) });
|
|
76
|
+
if (predecessor.requestId === raw.requestId || predecessor.acknowledgedVersion !== raw.expectedVersion)
|
|
77
|
+
fail("invalid predecessor");
|
|
78
|
+
}
|
|
79
|
+
return Object.freeze(bounded({ schema: 1, scope: string(raw.scope), requestId: request(raw.requestId), target: id,
|
|
80
|
+
okfVersion: raw.okfVersion, operation, expectedVersion: version(raw.expectedVersion), local, content,
|
|
81
|
+
createdAt: timestamp(raw.createdAt), ...(predecessor ? { predecessor } : {}) }));
|
|
82
|
+
}
|
|
83
|
+
/** Successors derive their premise only from a fully bound predecessor receipt. */
|
|
84
|
+
export function prepareBodyDelivery(input, premise) {
|
|
85
|
+
const fields = record(input, ["scope", "requestId", "target", "okfVersion", "operation", "local", "content", "createdAt"]);
|
|
86
|
+
if (Object.hasOwn(premise, "expectedVersion")) {
|
|
87
|
+
const initial = record(premise, ["expectedVersion"]);
|
|
88
|
+
return validatePreparedBodyDelivery({ ...fields, schema: 1, expectedVersion: initial.expectedVersion });
|
|
89
|
+
}
|
|
90
|
+
const prior = record(premise, ["prepared", "receipt"]);
|
|
91
|
+
const prepared = validatePreparedBodyDelivery(prior.prepared);
|
|
92
|
+
const receipt = validateBodyReceipt(prepared, prior.receipt);
|
|
93
|
+
if (fields.scope !== prepared.scope || fields.target !== prepared.target || fields.okfVersion !== prepared.okfVersion || fields.requestId === prepared.requestId)
|
|
94
|
+
fail("successor identity mismatch");
|
|
95
|
+
return validatePreparedBodyDelivery({ ...fields, schema: 1, expectedVersion: receipt.version,
|
|
96
|
+
predecessor: { requestId: prepared.requestId, acknowledgedVersion: receipt.version } });
|
|
97
|
+
}
|
|
98
|
+
export function assertSameBodyDelivery(recorded, candidate) {
|
|
99
|
+
if (JSON.stringify(validatePreparedBodyDelivery(recorded)) !== JSON.stringify(validatePreparedBodyDelivery(candidate)))
|
|
100
|
+
fail("request identity reused with different input");
|
|
101
|
+
}
|
|
102
|
+
/** Content/version association is asserted by the trusted authority, not inferred from a later head. */
|
|
103
|
+
export function validateBodyReceipt(prepared, value) {
|
|
104
|
+
const p = validatePreparedBodyDelivery(prepared);
|
|
105
|
+
const raw = record(value, ["scope", "requestId", "target", "expectedVersion", "body", "version", "content"]);
|
|
106
|
+
if (raw.scope !== p.scope || raw.requestId !== p.requestId || raw.target !== p.target ||
|
|
107
|
+
raw.expectedVersion !== p.expectedVersion || raw.body !== p.operation.body)
|
|
108
|
+
fail("receipt binding mismatch");
|
|
109
|
+
return Object.freeze(bounded({ scope: p.scope, requestId: p.requestId, target: p.target, expectedVersion: p.expectedVersion,
|
|
110
|
+
body: p.operation.body, version: version(raw.version), content: bodyContent(raw.content, p.operation.body, p.target, p.okfVersion) }));
|
|
111
|
+
}
|
|
112
|
+
function captureOutcome(prepared, value) {
|
|
113
|
+
try {
|
|
114
|
+
if (!value || typeof value !== "object")
|
|
115
|
+
fail("invalid outcome");
|
|
116
|
+
switch (value.kind) {
|
|
117
|
+
case "committed": {
|
|
118
|
+
const raw = record(value, ["kind", "receipt"]);
|
|
119
|
+
const receipt = validateBodyReceipt(prepared, raw.receipt);
|
|
120
|
+
return Object.freeze({ kind: "committed", version: receipt.version, receipt });
|
|
121
|
+
}
|
|
122
|
+
case "conflict": {
|
|
123
|
+
const raw = record(value, ["kind", "actual"]);
|
|
124
|
+
return { kind: "conflict", actual: raw.actual === null ? null : version(raw.actual) };
|
|
125
|
+
}
|
|
126
|
+
case "refused": {
|
|
127
|
+
const raw = record(value, ["kind", "code", "message"]);
|
|
128
|
+
return { kind: "refused", code: string(raw.code), message: string(raw.message) };
|
|
129
|
+
}
|
|
130
|
+
case "unknown":
|
|
131
|
+
record(value, ["kind"]);
|
|
132
|
+
return { kind: "unknown" };
|
|
133
|
+
default: fail("unknown outcome kind");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return { kind: "unknown", diagnostic: "Invalid or incomplete delivery evidence" };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** Persist the envelope and attempted claim atomically BEFORE calling; this function does no persistence. */
|
|
141
|
+
export async function performBodyDelivery(transport, prepared, attempts, options = {}) {
|
|
142
|
+
const p = validatePreparedBodyDelivery(prepared);
|
|
143
|
+
integer(attempts);
|
|
144
|
+
const raw = record(options, [], ["deadlineMs", "maxLookups", "lookupDelayMs", "maxSubmissions", "sleep"]);
|
|
145
|
+
for (const key of ["deadlineMs", "maxLookups", "lookupDelayMs", "maxSubmissions"])
|
|
146
|
+
if (Object.hasOwn(raw, key))
|
|
147
|
+
integer(raw[key]);
|
|
148
|
+
if (raw.sleep !== undefined && typeof raw.sleep !== "function")
|
|
149
|
+
fail("invalid timer");
|
|
150
|
+
if (attempts > Number.MAX_SAFE_INTEGER - Math.max(1, options.maxSubmissions ?? 2))
|
|
151
|
+
fail("attempt counter overflow");
|
|
152
|
+
const result = await performUncertainWrite({
|
|
153
|
+
submit: async (_intent, signal) => captureOutcome(p, await transport.submit(p, signal)),
|
|
154
|
+
lookup: async () => { const value = await transport.lookup(p); return value === null ? null : captureOutcome(p, value); },
|
|
155
|
+
}, { requestId: p.requestId, kind: p.operation.kind, target: p.target, base: p.expectedVersion, local: p.local,
|
|
156
|
+
content: p.content, createdAt: p.createdAt, attempts, state: "pending" }, { ...options, settlement: "recorded-only" });
|
|
157
|
+
// Evidence travels on the chosen outcome, so a deadline-late response cannot replace it.
|
|
158
|
+
const chosen = result.outcome;
|
|
159
|
+
const outcome = chosen.kind === "committed"
|
|
160
|
+
? chosen.receipt && chosen.receipt.version === chosen.version ? { kind: "committed", receipt: chosen.receipt } : { kind: "unknown" }
|
|
161
|
+
: chosen.kind === "unknown" ? { kind: "unknown" } : chosen;
|
|
162
|
+
return Object.freeze({ prepared: p, attempts: result.intent.attempts, state: outcome.kind === "committed" ? "acknowledged" : outcome.kind,
|
|
163
|
+
lookups: result.lookups, outcome: Object.freeze(outcome), ...(chosen.diagnostic ? { diagnostic: chosen.diagnostic } : {}) });
|
|
164
|
+
}
|
|
165
|
+
function freezeDeep(value) {
|
|
166
|
+
if (value && typeof value === "object") {
|
|
167
|
+
for (const child of Object.values(value))
|
|
168
|
+
freezeDeep(child);
|
|
169
|
+
Object.freeze(value);
|
|
170
|
+
}
|
|
171
|
+
return value;
|
|
172
|
+
}
|
|
173
|
+
function captureIntent(value) {
|
|
174
|
+
const row = record(value, ["requestId", "kind", "target", "base", "local", "content", "createdAt", "attempts", "state", "sequence", "updatedAt", "baseContent"], ["after", "acknowledgedVersion", "remote", "refusal", "finding"]);
|
|
175
|
+
request(row.requestId);
|
|
176
|
+
string(row.kind);
|
|
177
|
+
target(row.target);
|
|
178
|
+
version(row.local);
|
|
179
|
+
if (row.base !== null)
|
|
180
|
+
version(row.base);
|
|
181
|
+
string(row.content, BODY_DELIVERY_LIMITS.envelopeBytes, false);
|
|
182
|
+
if (row.baseContent !== null)
|
|
183
|
+
string(row.baseContent, BODY_DELIVERY_LIMITS.envelopeBytes, false);
|
|
184
|
+
timestamp(row.createdAt);
|
|
185
|
+
timestamp(row.updatedAt);
|
|
186
|
+
integer(row.attempts);
|
|
187
|
+
integer(row.sequence);
|
|
188
|
+
if (!["pending", "in_flight", "acknowledged", "conflict", "refused", "unknown"].includes(row.state))
|
|
189
|
+
fail("invalid journal state");
|
|
190
|
+
if (Object.hasOwn(row, "after"))
|
|
191
|
+
request(row.after);
|
|
192
|
+
if (Object.hasOwn(row, "acknowledgedVersion"))
|
|
193
|
+
version(row.acknowledgedVersion);
|
|
194
|
+
if (Object.hasOwn(row, "finding"))
|
|
195
|
+
string(row.finding);
|
|
196
|
+
if (Object.hasOwn(row, "remote")) {
|
|
197
|
+
const remote = record(row.remote, ["version", "content"]);
|
|
198
|
+
if (remote.version !== null)
|
|
199
|
+
version(remote.version);
|
|
200
|
+
if (remote.content !== null)
|
|
201
|
+
string(remote.content, BODY_DELIVERY_LIMITS.envelopeBytes, false);
|
|
202
|
+
}
|
|
203
|
+
if (Object.hasOwn(row, "refusal")) {
|
|
204
|
+
const refusal = record(row.refusal, ["code", "message"]);
|
|
205
|
+
string(refusal.code);
|
|
206
|
+
string(refusal.message);
|
|
207
|
+
}
|
|
208
|
+
return JSON.parse(JSON.stringify(row));
|
|
209
|
+
}
|
|
210
|
+
/** Pure proposal only. Replacement requires an atomic full-journal, document AND shared-base CAS. */
|
|
211
|
+
export function reconcileBodyReceipt(prepared, receipt, snapshot) {
|
|
212
|
+
const p = validatePreparedBodyDelivery(prepared), r = validateBodyReceipt(p, receipt);
|
|
213
|
+
record(snapshot, ["version", "intents", "shared"]);
|
|
214
|
+
if (snapshot.version !== null)
|
|
215
|
+
version(snapshot.version);
|
|
216
|
+
if (!Array.isArray(snapshot.intents))
|
|
217
|
+
fail("invalid journal snapshot");
|
|
218
|
+
if (Object.keys(snapshot.intents).length !== snapshot.intents.length)
|
|
219
|
+
fail("invalid journal list");
|
|
220
|
+
let shared = null;
|
|
221
|
+
if (snapshot.shared !== null) {
|
|
222
|
+
const raw = record(snapshot.shared, ["version", "content"]);
|
|
223
|
+
const content = string(raw.content, BODY_DELIVERY_LIMITS.envelopeBytes, false);
|
|
224
|
+
const parsed = parseMarkdown(content, p.target, { okfVersion: p.okfVersion });
|
|
225
|
+
if (typeof parsed.frontmatter.type !== "string" || !parsed.frontmatter.type.trim())
|
|
226
|
+
fail("shared concept type required");
|
|
227
|
+
shared = { version: version(raw.version), content };
|
|
228
|
+
}
|
|
229
|
+
// Shared refresh can advance independently of the document and journal; compare all three.
|
|
230
|
+
const expected = { version: snapshot.version, intents: snapshot.intents.map(captureIntent), shared };
|
|
231
|
+
string(JSON.stringify(expected), BODY_RECONCILIATION_BYTES);
|
|
232
|
+
const ids = new Set(), sequences = new Set();
|
|
233
|
+
for (const row of expected.intents) {
|
|
234
|
+
request(row.requestId);
|
|
235
|
+
integer(row.sequence);
|
|
236
|
+
if (ids.has(row.requestId) || sequences.has(row.sequence))
|
|
237
|
+
fail("ambiguous journal snapshot");
|
|
238
|
+
ids.add(row.requestId);
|
|
239
|
+
sequences.add(row.sequence);
|
|
240
|
+
}
|
|
241
|
+
const anchor = expected.intents.find(row => row.requestId === p.requestId);
|
|
242
|
+
const boundAnchor = anchor?.target === p.target && anchor.local === p.local && anchor.content === p.content && anchor.createdAt === p.createdAt;
|
|
243
|
+
const newer = anchor ? expected.intents.filter(row => row.target === p.target && row.sequence > anchor.sequence) : [];
|
|
244
|
+
const compatible = boundAnchor && !newer.some(row => row.state === "acknowledged");
|
|
245
|
+
const alreadyShared = shared?.version === r.version && shared.content === r.content;
|
|
246
|
+
const advanceShared = compatible && shared?.version === p.expectedVersion && shared.version !== r.version;
|
|
247
|
+
const replace = compatible && (advanceShared || alreadyShared) && expected.version === p.local && newer.length === 0;
|
|
248
|
+
return freezeDeep({ action: replace ? "replace-local-under-CAS" : "preserve-local", receipt: r,
|
|
249
|
+
shared: advanceShared ? { action: "replace-shared-under-CAS", version: r.version, content: r.content } : { action: "preserve-shared" }, expected });
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=governed-body-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governed-body-write.js","sourceRoot":"","sources":["../src/governed-body-write.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAiE,MAAM,sBAAsB,CAAC;AAI/I;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;AAC5H,wFAAwF;AACxF,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AA0C1D,SAAS,IAAI,CAAC,OAAe,IAAW,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/F,SAAS,MAAM,CAAC,KAAc,EAAE,IAAuB,EAAE,WAA8B,EAAE;IACvF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3D,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtG,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7G,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACjK,OAAO,KAAoB,CAAC;AAC9B,CAAC;AACD,SAAS,MAAM,CAAC,KAAc,EAAE,MAAc,oBAAoB,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI;IAC5F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG;QAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACjJ,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,OAAO,CAAC,KAAc,IAAa,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAClH,SAAS,OAAO,CAAC,KAAc,IAAY,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/I,SAAS,SAAS,CAAC,KAAc,IAAY,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI;IAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;AACtJ,SAAS,OAAO,CAAC,KAAc,IAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;IAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAC7J,SAAS,MAAM,CAAC,KAAc;IAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,SAAS,OAAO,CAAI,KAAQ,IAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AACrH,SAAS,WAAW,CAAC,OAAgB,EAAE,IAAY,EAAE,EAAU,EAAE,UAAyB;IACxF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAClH,IAAI,+BAA+B,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,+BAA+B,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACxI,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACtK,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG,CAAC,UAAU,KAAK,KAAK;QAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACpH,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,IAAI,KAAK,sBAAsB;QAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAA+B,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACzI,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,KAAK;QAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3E,IAAI,WAAgD,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACxE,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACtH,IAAI,WAAW,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,mBAAmB,KAAK,GAAG,CAAC,eAAe;YAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtI,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAuB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;QACrI,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO;QACpG,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAID,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,KAAwB,EAAE,OAA4B;IACxF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3H,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACrD,OAAO,4BAA4B,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;QAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACtM,OAAO,4BAA4B,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,OAAO;QAC1F,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,mBAAmB,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAiB,EAAE,SAAkB;IAC1E,IAAI,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;QAAE,IAAI,CAAC,8CAA8C,CAAC,CAAC;AAC/K,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,mBAAmB,CAAC,QAA8B,EAAE,KAAc;IAChF,MAAM,CAAC,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7G,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QACjF,GAAG,CAAC,eAAe,KAAK,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI;QAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACjH,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe;QACzH,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3I,CAAC;AAGD,SAAS,cAAc,CAAC,QAA8B,EAAE,KAAc;IACpE,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjE,QAAS,KAAqB,CAAC,IAAI,EAAE,CAAC;YACpC,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAAC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,CAAC;YAC1J,KAAK,SAAS,CAAC,CAAC,CAAC;gBAAC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAAC,CAAC;YAC7J,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACpE,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,yCAAyC,EAAE,CAAC;IAAC,CAAC;AAChG,CAAC;AAED,6GAA6G;AAC7G,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAgC,EAAE,QAA8B,EAAE,QAAgB,EAClF,UAAqD,EAAE;IAEvD,MAAM,CAAC,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1G,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC;QAAE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClI,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU;QAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACtF,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;QACzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACvF,MAAM,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1H,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK;QAC5G,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;IACzH,yFAAyF;IACzF,MAAM,MAAM,GAAG,MAAM,CAAC,OAA2B,CAAC;IAClD,MAAM,OAAO,GAAwB,MAAM,CAAC,IAAI,KAAK,WAAW;QAC9D,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;QACpI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;QACvI,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjI,CAAC;AAaD,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAAC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAC9H,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACnO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjG,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAe,CAAC;QAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC7I,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,qBAAqB,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;QAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC/I,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAiB,CAAC;AACzD,CAAC;AACD,qGAAqG;AACrG,MAAM,UAAU,oBAAoB,CAAC,QAA8B,EAAE,OAA6B,EAAE,QAA2B;IAC7H,MAAM,CAAC,GAAG,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtF,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnD,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnG,IAAI,MAAM,GAAgC,IAAI,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9E,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACzH,MAAM,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACtD,CAAC;IACD,2FAA2F;IAC3F,MAAM,QAAQ,GAAsB,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACxH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,EAAE,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC9F,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC;IAChJ,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtH,MAAM,UAAU,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;IACnF,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;IACpF,MAAM,aAAa,GAAG,UAAU,IAAI,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;IAC1G,MAAM,OAAO,GAAG,UAAU,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACrH,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAC5F,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capture structural host policy: public fields, nested records/arrays, and prototype methods.
|
|
3
|
+
* Methods compose through the captured receiver, never through the caller's mutable object.
|
|
4
|
+
* Getters are evaluated once. Callbacks may still observe external OS facts. Policies must not
|
|
5
|
+
* require opaque internal slots/private fields or functions pre-bound to a mutable receiver;
|
|
6
|
+
* those cannot be reconstructed from a structural interface. Caller objects are never frozen.
|
|
7
|
+
*/
|
|
8
|
+
export declare function snapshotHostPolicy<T extends object>(input: T, seen?: WeakMap<object, object>): T;
|
|
9
|
+
//# sourceMappingURL=host-policy-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-policy-snapshot.d.ts","sourceRoot":"","sources":["../src/host-policy-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,0BAAgC,GAAG,CAAC,CAuBtG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capture structural host policy: public fields, nested records/arrays, and prototype methods.
|
|
3
|
+
* Methods compose through the captured receiver, never through the caller's mutable object.
|
|
4
|
+
* Getters are evaluated once. Callbacks may still observe external OS facts. Policies must not
|
|
5
|
+
* require opaque internal slots/private fields or functions pre-bound to a mutable receiver;
|
|
6
|
+
* those cannot be reconstructed from a structural interface. Caller objects are never frozen.
|
|
7
|
+
*/
|
|
8
|
+
export function snapshotHostPolicy(input, seen = new WeakMap()) {
|
|
9
|
+
const existing = seen.get(input);
|
|
10
|
+
if (existing)
|
|
11
|
+
return existing;
|
|
12
|
+
const result = (Array.isArray(input) ? [] : {});
|
|
13
|
+
seen.set(input, result);
|
|
14
|
+
const keys = new Set();
|
|
15
|
+
for (let owner = input; owner && owner !== Object.prototype && owner !== Array.prototype; owner = Object.getPrototypeOf(owner)) {
|
|
16
|
+
for (const key of Reflect.ownKeys(owner)) {
|
|
17
|
+
if (key !== "constructor" && !(Array.isArray(input) && key === "length"))
|
|
18
|
+
keys.add(key);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
for (const key of keys) {
|
|
22
|
+
const value = input[key];
|
|
23
|
+
Object.defineProperty(result, key, {
|
|
24
|
+
value: typeof value === "function" ? value.bind(result)
|
|
25
|
+
: value && typeof value === "object" ? snapshotHostPolicy(value, seen) : value,
|
|
26
|
+
enumerable: true,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(input))
|
|
30
|
+
result.length = input.length;
|
|
31
|
+
return Object.freeze(result);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=host-policy-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-policy-snapshot.js","sourceRoot":"","sources":["../src/host-policy-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAmB,KAAQ,EAAE,OAAO,IAAI,OAAO,EAAkB;IACjG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,QAAQ;QAAE,OAAO,QAAa,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAiC,CAAC;IAChF,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,KAAK,IAAI,KAAK,GAAkB,KAAK,EACnC,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAChE,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAI,KAAsC,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;YACjC,KAAK,EAAE,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrD,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;YAChF,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAG,MAA+B,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACjF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAM,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text that came from a host (a bundle's name, a person's name, a label) made safe to show a person
|
|
3
|
+
* or an agent: control and format characters removed (escape sequences, bidi overrides such as
|
|
4
|
+
* U+202E, zero-width characters), surrounding space trimmed, and at most `max` UTF-16 units kept,
|
|
5
|
+
* cut only between whole characters (never half a surrogate pair). The one rule every surface that
|
|
6
|
+
* shows host text uses.
|
|
7
|
+
*/
|
|
8
|
+
export declare function stripHostText(value: string, max: number): string;
|
|
9
|
+
/**
|
|
10
|
+
* Host data (a result's keys and strings) with control and format characters and the line and
|
|
11
|
+
* paragraph separators (U+2028, U+2029) removed, except tab, newline and carriage return, with no
|
|
12
|
+
* length cap: the rule of {@link stripHostText} for text that is shown whole.
|
|
13
|
+
*/
|
|
14
|
+
export declare function stripHostControls(value: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* A copy of parsed JSON data with every key and string through {@link stripHostControls}, and
|
|
17
|
+
* whether anything was removed (a key that collides with an earlier one once stripped is dropped,
|
|
18
|
+
* and counts as removed). Iterative, so a deeply nested answer cannot exhaust the stack.
|
|
19
|
+
*/
|
|
20
|
+
export declare function stripHostData(input: unknown): {
|
|
21
|
+
value: unknown;
|
|
22
|
+
removed: boolean;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* JSON text with every C1 control, U+2028, U+2029 and format character (bidi controls, zero-width
|
|
26
|
+
* characters, tag characters) escaped as `\uXXXX`, one escape per UTF-16 unit. `JSON.stringify`
|
|
27
|
+
* already escapes the C0 controls; these can occur only inside strings, so the text stays valid
|
|
28
|
+
* JSON and parses back to the same data.
|
|
29
|
+
*/
|
|
30
|
+
export declare function escapeHostJson(json: string): string;
|
|
31
|
+
//# sourceMappingURL=host-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-text.d.ts","sourceRoot":"","sources":["../src/host-text.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAiClF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAInD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text that came from a host (a bundle's name, a person's name, a label) made safe to show a person
|
|
3
|
+
* or an agent: control and format characters removed (escape sequences, bidi overrides such as
|
|
4
|
+
* U+202E, zero-width characters), surrounding space trimmed, and at most `max` UTF-16 units kept,
|
|
5
|
+
* cut only between whole characters (never half a surrogate pair). The one rule every surface that
|
|
6
|
+
* shows host text uses.
|
|
7
|
+
*/
|
|
8
|
+
export function stripHostText(value, max) {
|
|
9
|
+
let out = "";
|
|
10
|
+
for (const char of value.replace(/[\p{Cc}\p{Cf}]/gu, "").trim()) {
|
|
11
|
+
if (out.length + char.length > max)
|
|
12
|
+
break;
|
|
13
|
+
out += char;
|
|
14
|
+
}
|
|
15
|
+
return out.trim();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Host data (a result's keys and strings) with control and format characters and the line and
|
|
19
|
+
* paragraph separators (U+2028, U+2029) removed, except tab, newline and carriage return, with no
|
|
20
|
+
* length cap: the rule of {@link stripHostText} for text that is shown whole.
|
|
21
|
+
*/
|
|
22
|
+
export function stripHostControls(value) {
|
|
23
|
+
return value.replace(/[\p{Cc}\p{Cf}\u2028\u2029]/gu, (char) => (char === "\t" || char === "\n" || char === "\r" ? char : ""));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A copy of parsed JSON data with every key and string through {@link stripHostControls}, and
|
|
27
|
+
* whether anything was removed (a key that collides with an earlier one once stripped is dropped,
|
|
28
|
+
* and counts as removed). Iterative, so a deeply nested answer cannot exhaust the stack.
|
|
29
|
+
*/
|
|
30
|
+
export function stripHostData(input) {
|
|
31
|
+
let removed = false;
|
|
32
|
+
const clean = (text) => {
|
|
33
|
+
const stripped = stripHostControls(text);
|
|
34
|
+
if (stripped !== text)
|
|
35
|
+
removed = true;
|
|
36
|
+
return stripped;
|
|
37
|
+
};
|
|
38
|
+
const stack = [];
|
|
39
|
+
const place = (item) => {
|
|
40
|
+
if (typeof item === "string")
|
|
41
|
+
return clean(item);
|
|
42
|
+
if (typeof item !== "object" || item === null)
|
|
43
|
+
return item;
|
|
44
|
+
const copy = Array.isArray(item) ? [] : {};
|
|
45
|
+
stack.push([item, copy]);
|
|
46
|
+
return copy;
|
|
47
|
+
};
|
|
48
|
+
const value = place(input);
|
|
49
|
+
while (stack.length > 0) {
|
|
50
|
+
const [source, copy] = stack.pop();
|
|
51
|
+
if (Array.isArray(source)) {
|
|
52
|
+
for (const item of source)
|
|
53
|
+
copy.push(place(item));
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
for (const [rawKey, item] of Object.entries(source)) {
|
|
57
|
+
const key = clean(rawKey);
|
|
58
|
+
if (Object.prototype.hasOwnProperty.call(copy, key)) {
|
|
59
|
+
removed = true;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// defineProperty: a `__proto__` key stays an own key, as JSON.parse made it.
|
|
63
|
+
Object.defineProperty(copy, key, { value: place(item), enumerable: true, writable: true, configurable: true });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return { value, removed };
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* JSON text with every C1 control, U+2028, U+2029 and format character (bidi controls, zero-width
|
|
70
|
+
* characters, tag characters) escaped as `\uXXXX`, one escape per UTF-16 unit. `JSON.stringify`
|
|
71
|
+
* already escapes the C0 controls; these can occur only inside strings, so the text stays valid
|
|
72
|
+
* JSON and parses back to the same data.
|
|
73
|
+
*/
|
|
74
|
+
export function escapeHostJson(json) {
|
|
75
|
+
return json.replace(/[\u007f-\u009f\u2028\u2029]|\p{Cf}/gu, (char) => Array.from({ length: char.length }, (_, index) => `\\u${char.charCodeAt(index).toString(16).padStart(4, "0")}`).join(""));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=host-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-text.js","sourceRoot":"","sources":["../src/host-text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `sha256:<hex>` of a checkout's random id: the recovery binding (`X-Superbee-Checkout`) an
|
|
3
|
+
* identified write and its outcome lookup are pinned to, never the id itself. The CLI derives a
|
|
4
|
+
* checkout's binding with it, and a hosted client mints its own from a fresh id.
|
|
5
|
+
*/
|
|
6
|
+
export declare function checkoutBindingDigest(checkoutId: string): string;
|
|
7
|
+
//# sourceMappingURL=binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../src/hosted-client/binding.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { sha256HexOfUtf8 } from "../sha256.js";
|
|
2
|
+
/**
|
|
3
|
+
* `sha256:<hex>` of a checkout's random id: the recovery binding (`X-Superbee-Checkout`) an
|
|
4
|
+
* identified write and its outcome lookup are pinned to, never the id itself. The CLI derives a
|
|
5
|
+
* checkout's binding with it, and a hosted client mints its own from a fresh id.
|
|
6
|
+
*/
|
|
7
|
+
export function checkoutBindingDigest(checkoutId) {
|
|
8
|
+
return `sha256:${sha256HexOfUtf8(checkoutId)}`;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/hosted-client/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,OAAO,UAAU,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Typed delivery of an existing frozen blob journal intent. Persistence, fresh claims and
|
|
2
|
+
* checkout locking belong to the caller; this composition owns no retry or authorization policy. */
|
|
3
|
+
import { type BlobDeletionHold, type BlobIntentRecord, type BlobIntentPatch, type BlobReceipt, type BlobTargetScope } from "../blob-journal.js";
|
|
4
|
+
import { type RecordedWriteOptions, type OperationState } from "../uncertain-write.js";
|
|
5
|
+
import type { HostedBlobWriteAdapter } from "../hosted-transport/blob-write.js";
|
|
6
|
+
export interface HostedBlobDeliveryContext {
|
|
7
|
+
/** Separately trusted current checkout target, never selected from a journal record. */
|
|
8
|
+
scope: BlobTargetScope;
|
|
9
|
+
/** Trusted caller contract: close over that fixed target, scoped carrier and fresh capability
|
|
10
|
+
* provider; create an adapter bound to the supplied lifetime. The record supplies no authority. */
|
|
11
|
+
adapterFor(signal: AbortSignal): HostedBlobWriteAdapter;
|
|
12
|
+
}
|
|
13
|
+
export type HostedBlobDeliveryOptions = Omit<RecordedWriteOptions, "settlement"> & {
|
|
14
|
+
/** Admission only, for this delete submission. Never persisted or sent on lookup. */
|
|
15
|
+
acceptDeletes?: number;
|
|
16
|
+
};
|
|
17
|
+
export type HostedBlobDeliveryOutcome = {
|
|
18
|
+
kind: "committed";
|
|
19
|
+
receipt: Extract<BlobReceipt, {
|
|
20
|
+
result: {
|
|
21
|
+
ok: true;
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
} | {
|
|
25
|
+
kind: "conflict";
|
|
26
|
+
receipt: Extract<BlobReceipt, {
|
|
27
|
+
result: {
|
|
28
|
+
ok: false;
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
31
|
+
} | {
|
|
32
|
+
kind: "refused";
|
|
33
|
+
code: string;
|
|
34
|
+
message: string;
|
|
35
|
+
receipt: Extract<BlobReceipt, {
|
|
36
|
+
result: {
|
|
37
|
+
ok: false;
|
|
38
|
+
};
|
|
39
|
+
}>;
|
|
40
|
+
} | {
|
|
41
|
+
kind: "not-executed";
|
|
42
|
+
attempts: number;
|
|
43
|
+
details: BlobDeletionHold;
|
|
44
|
+
} | {
|
|
45
|
+
kind: "unknown";
|
|
46
|
+
};
|
|
47
|
+
export interface HostedBlobDeliveryResult {
|
|
48
|
+
attempts: number;
|
|
49
|
+
state: OperationState;
|
|
50
|
+
lookups: number;
|
|
51
|
+
outcome: HostedBlobDeliveryOutcome;
|
|
52
|
+
/** Pass only this patch to the existing full-guard updateBlobIntent transaction. */
|
|
53
|
+
patch: BlobIntentPatch;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Refusals the host answers before dispatch and records under no identity (`recorded: "no"`): a
|
|
57
|
+
* grant without blob writes, a bundle the person cannot reach, and the sync quota. One of them on
|
|
58
|
+
* an attempt whose earlier attempts are all proven not applied settles the write as refused.
|
|
59
|
+
*/
|
|
60
|
+
export declare const BLOB_UNRECORDED_REFUSAL_CODES: readonly ["insufficient_scope", "bundle_not_found", "request_capacity"];
|
|
61
|
+
/** A submit-claimed call requires a freshly durable in_flight CAS under the checkout lock.
|
|
62
|
+
* Reopened/unclear claims MUST use lookup; absence never proves an older delivery cannot commit.
|
|
63
|
+
* This function persists nothing. The caller subsequently applies patch under its full guard.
|
|
64
|
+
* deadlineMs bounds each lookup as well as the primitive's submission deadline; without it,
|
|
65
|
+
* the supplied wire carrier retains its own deadline. Caller cancellation ends either path. */
|
|
66
|
+
export declare function performHostedBlobDelivery(context: HostedBlobDeliveryContext, record: BlobIntentRecord, options: HostedBlobDeliveryOptions): Promise<HostedBlobDeliveryResult>;
|
|
67
|
+
//# sourceMappingURL=blob-delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob-delivery.d.ts","sourceRoot":"","sources":["../../src/hosted-client/blob-delivery.ts"],"names":[],"mappings":"AAAA;oGACoG;AACpG,OAAO,EAAwC,KAAK,gBAAgB,EAAqD,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzO,OAAO,EAAyB,KAAK,oBAAoB,EAAc,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG1H,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,MAAM,WAAW,yBAAyB;IACxC,wFAAwF;IACxF,KAAK,EAAE,eAAe,CAAC;IACvB;uGACmG;IACnG,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,sBAAsB,CAAC;CACzD;AACD,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,GAAG;IACjF,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,yBAAyB,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,KAAK,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,KAAK,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;CAAE,GAC5G;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AACxB,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,yBAAyB,CAAC;IACnC,oFAAoF;IACpF,KAAK,EAAE,eAAe,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,yEAAyF,CAAC;AAapI;;;;+FAI+F;AAC/F,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAqGnL"}
|