@superbee/core 0.2.0-pre.4 → 0.2.0-pre.40
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 +1209 -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 +22 -2
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +153 -38
- package/dist/backend.js.map +1 -1
- package/dist/blob-contract.d.ts +82 -0
- package/dist/blob-contract.d.ts.map +1 -0
- package/dist/blob-contract.js +134 -0
- package/dist/blob-contract.js.map +1 -0
- package/dist/blob-journal.d.ts +303 -0
- package/dist/blob-journal.d.ts.map +1 -0
- package/dist/blob-journal.js +541 -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 +207 -0
- package/dist/bundle-health/report.d.ts.map +1 -0
- package/dist/bundle-health/report.js +454 -0
- package/dist/bundle-health/report.js.map +1 -0
- package/dist/bundle-ops.d.ts +3 -2
- package/dist/bundle-ops.d.ts.map +1 -1
- package/dist/bundle-ops.js +4 -4
- package/dist/bundle-ops.js.map +1 -1
- package/dist/bundle.d.ts +3 -4
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +5 -14
- 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/code-unit-order.d.ts +15 -0
- package/dist/code-unit-order.d.ts.map +1 -0
- package/dist/code-unit-order.js +17 -0
- package/dist/code-unit-order.js.map +1 -0
- package/dist/connector-request.d.ts +112 -0
- package/dist/connector-request.d.ts.map +1 -0
- package/dist/connector-request.js +495 -0
- package/dist/connector-request.js.map +1 -0
- package/dist/connectors.d.ts +297 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +1233 -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 +191 -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 +7 -2
- package/dist/document-codec.d.ts.map +1 -1
- package/dist/document-codec.js +8 -5
- 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 +35 -13
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +124 -60
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-transfer.d.ts +208 -0
- package/dist/document-transfer.d.ts.map +1 -0
- package/dist/document-transfer.js +928 -0
- package/dist/document-transfer.js.map +1 -0
- 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 +21 -9
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +72 -14
- 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 +97 -21
- package/dist/filesystem-identity.d.ts.map +1 -1
- package/dist/filesystem-identity.js +398 -119
- 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/frontmatter.d.ts +8 -6
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +5 -4
- package/dist/frontmatter.js.map +1 -1
- package/dist/governed-body-write.d.ts +8 -1
- package/dist/governed-body-write.d.ts.map +1 -1
- package/dist/governed-body-write.js +9 -2
- package/dist/governed-body-write.js.map +1 -1
- package/dist/heads-digest.d.ts.map +1 -1
- package/dist/heads-digest.js +2 -1
- package/dist/heads-digest.js.map +1 -1
- 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 +68 -0
- package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
- package/dist/hosted-client/blob-delivery.js +170 -0
- package/dist/hosted-client/blob-delivery.js.map +1 -0
- package/dist/hosted-client/blob-write.d.ts +387 -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 +457 -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/identity-fold.d.ts +18 -0
- package/dist/identity-fold.d.ts.map +1 -0
- package/dist/identity-fold.js +22 -0
- package/dist/identity-fold.js.map +1 -0
- package/dist/index.d.ts +41 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -9
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +25 -33
- package/dist/indexeddb-backend.d.ts.map +1 -1
- package/dist/indexeddb-backend.js +264 -8
- package/dist/indexeddb-backend.js.map +1 -1
- package/dist/inventory-guard.d.ts +58 -0
- package/dist/inventory-guard.d.ts.map +1 -0
- package/dist/inventory-guard.js +169 -0
- package/dist/inventory-guard.js.map +1 -0
- package/dist/journaled-backend.d.ts +149 -9
- package/dist/journaled-backend.d.ts.map +1 -1
- package/dist/journaled-backend.js +64 -58
- 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 +452 -0
- package/dist/kind-authoring.js.map +1 -0
- package/dist/kind-changes.d.ts +45 -0
- package/dist/kind-changes.d.ts.map +1 -0
- package/dist/kind-changes.js +96 -0
- package/dist/kind-changes.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-deprecation.d.ts +32 -0
- package/dist/kind-deprecation.d.ts.map +1 -0
- package/dist/kind-deprecation.js +141 -0
- package/dist/kind-deprecation.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 +111 -2
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +386 -20
- package/dist/kinds.js.map +1 -1
- package/dist/link-emit.d.ts +29 -0
- package/dist/link-emit.d.ts.map +1 -0
- package/dist/link-emit.js +39 -0
- package/dist/link-emit.js.map +1 -0
- package/dist/link-types.d.ts +27 -0
- package/dist/link-types.d.ts.map +1 -0
- package/dist/link-types.js +60 -0
- package/dist/link-types.js.map +1 -0
- package/dist/links.d.ts +52 -3
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +259 -18
- 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 +3 -0
- package/dist/memory-backend.d.ts.map +1 -1
- package/dist/memory-backend.js +44 -2
- package/dist/memory-backend.js.map +1 -1
- package/dist/okf-actor.d.ts +1 -0
- package/dist/okf-actor.d.ts.map +1 -1
- package/dist/okf-actor.js +1 -0
- package/dist/okf-actor.js.map +1 -1
- package/dist/okf-authoring.d.ts +4 -0
- package/dist/okf-authoring.d.ts.map +1 -0
- package/dist/okf-authoring.js +12 -0
- package/dist/okf-authoring.js.map +1 -0
- package/dist/okf-standard-fields.d.ts +3 -0
- package/dist/okf-standard-fields.d.ts.map +1 -1
- package/dist/okf-standard-fields.js +3 -0
- package/dist/okf-standard-fields.js.map +1 -1
- package/dist/path-fold.d.ts +39 -0
- package/dist/path-fold.d.ts.map +1 -0
- package/dist/path-fold.js +41 -0
- package/dist/path-fold.js.map +1 -0
- package/dist/paths.d.ts +18 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +32 -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 +43 -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 +124 -0
- package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
- package/dist/recipe-lifecycle/evolution.js +993 -0
- package/dist/recipe-lifecycle/evolution.js.map +1 -0
- package/dist/recipe-lifecycle/index.d.ts +34 -0
- package/dist/recipe-lifecycle/index.d.ts.map +1 -0
- package/dist/recipe-lifecycle/index.js +28 -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 +604 -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/retirement-apply.d.ts +59 -0
- package/dist/recipe-lifecycle/retirement-apply.d.ts.map +1 -0
- package/dist/recipe-lifecycle/retirement-apply.js +165 -0
- package/dist/recipe-lifecycle/retirement-apply.js.map +1 -0
- package/dist/recipe-lifecycle/retirement.d.ts +89 -0
- package/dist/recipe-lifecycle/retirement.d.ts.map +1 -0
- package/dist/recipe-lifecycle/retirement.js +347 -0
- package/dist/recipe-lifecycle/retirement.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 +74 -0
- package/dist/record-overlay/policy.d.ts.map +1 -0
- package/dist/record-overlay/policy.js +235 -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 +58 -13
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +156 -36
- 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 +17 -1
- package/dist/remote-error.d.ts.map +1 -1
- package/dist/remote-error.js +32 -2
- package/dist/remote-error.js.map +1 -1
- 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 +1 -1
- package/dist/remote-parsers.js +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/driver.d.ts +40 -0
- package/dist/source-engine/driver.d.ts.map +1 -0
- package/dist/source-engine/driver.js +392 -0
- package/dist/source-engine/driver.js.map +1 -0
- package/dist/source-engine/evidence.d.ts +39 -0
- package/dist/source-engine/evidence.d.ts.map +1 -0
- package/dist/source-engine/evidence.js +54 -0
- package/dist/source-engine/evidence.js.map +1 -0
- package/dist/source-engine/guard.d.ts +87 -0
- package/dist/source-engine/guard.d.ts.map +1 -0
- package/dist/source-engine/guard.js +427 -0
- package/dist/source-engine/guard.js.map +1 -0
- package/dist/source-engine/index.d.ts +33 -0
- package/dist/source-engine/index.d.ts.map +1 -0
- package/dist/source-engine/index.js +26 -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 +10 -0
- package/dist/source-engine/observe.d.ts.map +1 -0
- package/dist/source-engine/observe.js +270 -0
- package/dist/source-engine/observe.js.map +1 -0
- package/dist/source-engine/overlay.d.ts +50 -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/snapshot.d.ts +104 -0
- package/dist/source-engine/snapshot.d.ts.map +1 -0
- package/dist/source-engine/snapshot.js +240 -0
- package/dist/source-engine/snapshot.js.map +1 -0
- package/dist/source-engine/types.d.ts +292 -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 +97 -0
- package/dist/source-harness/fixture.d.ts.map +1 -0
- package/dist/source-harness/fixture.js +276 -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 +9 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +6 -1
- package/dist/storage.js.map +1 -1
- package/dist/string-identity-agreement.d.ts +35 -0
- package/dist/string-identity-agreement.d.ts.map +1 -0
- package/dist/string-identity-agreement.js +72 -0
- package/dist/string-identity-agreement.js.map +1 -0
- package/dist/types.d.ts +41 -6
- 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 +157 -17
- package/dist/uncertain-write.d.ts.map +1 -1
- package/dist/uncertain-write.js +86 -30
- 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/view-launch-contract.d.ts +14 -0
- package/dist/view-launch-contract.d.ts.map +1 -0
- package/dist/view-launch-contract.js +23 -0
- package/dist/view-launch-contract.js.map +1 -0
- 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 +140 -3
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
// The one-call document write: one whole document to a hosted bundle, create-only or against an
|
|
2
|
+
// expected version, settled through the shared uncertain-write primitive over the whole-document
|
|
3
|
+
// transport. The client owns only what an app without a checkout lacks: a binding (minted once
|
|
4
|
+
// per client), an intent store the lookup rebuilds its request from, and the result's shape.
|
|
5
|
+
import { readBundleOkfVersion } from "../engine.js";
|
|
6
|
+
import { createHostedReadAdapter, createWholeDocumentTransport, } from "../hosted-transport/index.js";
|
|
7
|
+
import { mintRequestId, performUncertainWrite, } from "../uncertain-write.js";
|
|
8
|
+
import { isContentVersion } from "../version-transport.js";
|
|
9
|
+
import { versionOfBytes } from "../versioning.js";
|
|
10
|
+
/** An in-memory {@link HostedIntentStore}: records live as long as the store. */
|
|
11
|
+
export function createMemoryIntentStore() {
|
|
12
|
+
const records = new Map();
|
|
13
|
+
return {
|
|
14
|
+
put(intent) {
|
|
15
|
+
records.set(intent.requestId, Object.freeze({ ...intent }));
|
|
16
|
+
},
|
|
17
|
+
get(requestId) {
|
|
18
|
+
return records.get(requestId);
|
|
19
|
+
},
|
|
20
|
+
delete(requestId) {
|
|
21
|
+
records.delete(requestId);
|
|
22
|
+
},
|
|
23
|
+
async *list() {
|
|
24
|
+
yield* [...records.values()];
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** The code of {@link HostedIntentsNotListable}. */
|
|
29
|
+
export const INTENTS_NOT_LISTABLE = "INTENTS_NOT_LISTABLE";
|
|
30
|
+
/** `heldWrites` was asked of a client whose intent store has no `list`. */
|
|
31
|
+
export class HostedIntentsNotListable extends Error {
|
|
32
|
+
code = INTENTS_NOT_LISTABLE;
|
|
33
|
+
constructor() {
|
|
34
|
+
super("this client's intent store cannot list its writes (it has no list method)");
|
|
35
|
+
this.name = "HostedIntentsNotListable";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** The identity an app's request names: a lowercase UUID v4, the only form the host admits. */
|
|
39
|
+
const REQUEST_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
40
|
+
/** The default time a bundle's capabilities answer serves writes: 60 s. */
|
|
41
|
+
export const DEFAULT_CAPABILITIES_TTL_MS = 60_000;
|
|
42
|
+
export function createCapabilitiesCache(ttlMs = DEFAULT_CAPABILITIES_TTL_MS, now = Date.now) {
|
|
43
|
+
if (typeof ttlMs !== "number" || !Number.isFinite(ttlMs) || ttlMs < 0)
|
|
44
|
+
throw new TypeError("capabilitiesTtlMs is a finite number of milliseconds, 0 or more");
|
|
45
|
+
return { ttlMs, now, entries: new Map() };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The write side of a bundle named in `workspace`: the held one while its answer is in flight or
|
|
49
|
+
* fresh, so concurrent writes share one read, else (or when `fresh`) a new reader and read, which
|
|
50
|
+
* replaces the held one. A read that fails is never held. Each new read also removes every
|
|
51
|
+
* expired entry, so a long-lived client holds only bundles written within the TTL.
|
|
52
|
+
*/
|
|
53
|
+
export function writeSide(context, workspace, bundleId, fresh = false) {
|
|
54
|
+
const cache = context.capabilities;
|
|
55
|
+
const key = JSON.stringify([workspace, bundleId]);
|
|
56
|
+
const live = (side) => side.answeredAt === undefined || cache.now() - side.answeredAt < cache.ttlMs;
|
|
57
|
+
const held = cache.entries.get(key);
|
|
58
|
+
if (held && !fresh && live(held))
|
|
59
|
+
return held;
|
|
60
|
+
for (const [other, side] of cache.entries)
|
|
61
|
+
if (!live(side))
|
|
62
|
+
cache.entries.delete(other);
|
|
63
|
+
const reader = createHostedReadAdapter({ carrier: context.carrierFor(workspace), bundleId, routes: context.readRoutes });
|
|
64
|
+
const answer = reader.hostedCapabilities().then(async (capabilities) => {
|
|
65
|
+
// The edition from this same answer's root; the editions core parses, any other reads as
|
|
66
|
+
// none, as the CLI's checkout reads it.
|
|
67
|
+
const edition = await readBundleOkfVersion({ readReserved: async () => capabilities.root });
|
|
68
|
+
return { capabilities, okfVersion: edition === "0.1" || edition === "0.2" ? edition : null };
|
|
69
|
+
});
|
|
70
|
+
const side = { reader, answer, answeredAt: undefined };
|
|
71
|
+
if (cache.ttlMs === 0)
|
|
72
|
+
return side;
|
|
73
|
+
cache.entries.set(key, side);
|
|
74
|
+
answer.then(() => {
|
|
75
|
+
side.answeredAt = cache.now();
|
|
76
|
+
}, () => {
|
|
77
|
+
if (cache.entries.get(key) === side)
|
|
78
|
+
cache.entries.delete(key);
|
|
79
|
+
});
|
|
80
|
+
return side;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Refusals after which a bundle's held capabilities may be what went wrong, so the next write
|
|
84
|
+
* reads them again: no writes served (`read_only`); input the host or the client's parse under
|
|
85
|
+
* the held edition refused (`invalid_input`, `validation_failed`); and the bundle gone or access
|
|
86
|
+
* withdrawn, which the write answer reports as `PERMISSION_DENIED` (`bundle_not_found`,
|
|
87
|
+
* `insufficient_scope`, `access_denied`).
|
|
88
|
+
*/
|
|
89
|
+
const DROPPING_REFUSALS = new Set(["read_only", "invalid_input", "validation_failed", "bundle_not_found", "PERMISSION_DENIED"]);
|
|
90
|
+
/** Forget `side` as the bundle's held write side, so the next write reads its capabilities again. */
|
|
91
|
+
export function dropWriteSide(context, workspace, bundleId, side) {
|
|
92
|
+
const key = JSON.stringify([workspace, bundleId]);
|
|
93
|
+
if (context.capabilities.entries.get(key) === side)
|
|
94
|
+
context.capabilities.entries.delete(key);
|
|
95
|
+
}
|
|
96
|
+
/** Drop a write side after a result that may say its capabilities are stale: such a refusal, or any `unknown`. */
|
|
97
|
+
function settleWriteSide(context, workspace, bundleId, side, result) {
|
|
98
|
+
if (result.status === "unknown" || (result.status === "refused" && DROPPING_REFUSALS.has(result.code)))
|
|
99
|
+
dropWriteSide(context, workspace, bundleId, side);
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The reader a transport needs. The retention window decides whether an `absent` lookup lets an
|
|
104
|
+
* intent be resent, so it always comes from a capabilities read made now, never a held answer: a
|
|
105
|
+
* window the host has since shortened must not resend an identity it may already have expired.
|
|
106
|
+
* That read refreshes the held entry. It runs only after an `absent` lookup; a failure leaves the
|
|
107
|
+
* outcome unknown.
|
|
108
|
+
*/
|
|
109
|
+
function writeRemote(context, intent, reader) {
|
|
110
|
+
return {
|
|
111
|
+
read: (id) => reader.read(id),
|
|
112
|
+
operationsRetentionMs: async () => (await writeSide(context, intent.workspace, intent.bundleId, true).answer).capabilities.operationsRetentionMs,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Run `task` after every earlier task of this client under the same request identity, so two
|
|
117
|
+
* calls naming one identity never check and record it at the same time.
|
|
118
|
+
*/
|
|
119
|
+
async function serialized(context, requestId, task) {
|
|
120
|
+
const previous = context.inFlight.get(requestId) ?? Promise.resolve();
|
|
121
|
+
const run = previous.then(task, task);
|
|
122
|
+
const settled = run.then(() => undefined, () => undefined);
|
|
123
|
+
context.inFlight.set(requestId, settled);
|
|
124
|
+
try {
|
|
125
|
+
return await run;
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
if (context.inFlight.get(requestId) === settled)
|
|
129
|
+
context.inFlight.delete(requestId);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function writeRoutes(prefix) {
|
|
133
|
+
return { create: `${prefix}/create`, replace: `${prefix}/replace`, delete: `${prefix}/delete`, outcome: `${prefix}/outcome` };
|
|
134
|
+
}
|
|
135
|
+
function operationIntent(intent) {
|
|
136
|
+
return {
|
|
137
|
+
requestId: intent.requestId,
|
|
138
|
+
kind: intent.operation === "create" ? "document.create" : "document.replace",
|
|
139
|
+
target: intent.documentId,
|
|
140
|
+
base: intent.expectedVersion,
|
|
141
|
+
local: intent.digest,
|
|
142
|
+
content: intent.document,
|
|
143
|
+
createdAt: intent.createdAt,
|
|
144
|
+
attempts: intent.attempts,
|
|
145
|
+
state: intent.state,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/** True when two intents are the same write: everything but its delivery progress and record time. */
|
|
149
|
+
function sameWrite(a, b) {
|
|
150
|
+
return (a.requestId === b.requestId &&
|
|
151
|
+
a.bundleId === b.bundleId &&
|
|
152
|
+
a.workspace === b.workspace &&
|
|
153
|
+
a.operation === b.operation &&
|
|
154
|
+
a.documentId === b.documentId &&
|
|
155
|
+
a.digest === b.digest &&
|
|
156
|
+
a.document === b.document &&
|
|
157
|
+
a.expectedVersion === b.expectedVersion);
|
|
158
|
+
}
|
|
159
|
+
/** True when two writes differ only in the workspace their bundle was named in. */
|
|
160
|
+
function onlyWorkspaceDiffers(a, b) {
|
|
161
|
+
return a.workspace !== b.workspace && sameWrite({ ...a, workspace: b.workspace }, b);
|
|
162
|
+
}
|
|
163
|
+
function resultOf(intent, outcome) {
|
|
164
|
+
const base = { requestId: intent.requestId, documentId: intent.documentId };
|
|
165
|
+
switch (outcome.kind) {
|
|
166
|
+
case "committed":
|
|
167
|
+
return { ...base, status: "committed", version: outcome.version };
|
|
168
|
+
case "conflict":
|
|
169
|
+
return { ...base, status: "conflict", reason: "version_conflict", currentVersion: outcome.actual, ...(outcome.tombstone !== undefined ? { tombstone: outcome.tombstone } : {}) };
|
|
170
|
+
case "refused":
|
|
171
|
+
// Settled, so final: the client never resends it, under this identity or a new one.
|
|
172
|
+
if (outcome.code === "concurrent_change")
|
|
173
|
+
return { ...base, status: "conflict", reason: "concurrent_change", message: outcome.message };
|
|
174
|
+
return { ...base, status: "refused", code: outcome.code, message: outcome.message };
|
|
175
|
+
case "unknown":
|
|
176
|
+
return { ...base, status: "unknown", ...(outcome.refusal ? { refusal: { code: outcome.refusal.code, message: outcome.refusal.message } } : {}) };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* `work`, or the abort's reason as soon as `signal` aborts, whichever comes first. For a read made
|
|
181
|
+
* before anything is sent (the capabilities answer), so a hung credential provider never holds a
|
|
182
|
+
* caller past its own abort; the read itself goes on for any other caller sharing it.
|
|
183
|
+
*/
|
|
184
|
+
export function untilAborted(work, signal) {
|
|
185
|
+
if (signal.aborted)
|
|
186
|
+
return Promise.reject(signal.reason);
|
|
187
|
+
return new Promise((resolve, reject) => {
|
|
188
|
+
const abort = () => reject(signal.reason);
|
|
189
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
190
|
+
work.then(resolve, reject).finally(() => signal.removeEventListener("abort", abort));
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/** The signal a write's requests run under: the client's, and the caller's when given. */
|
|
194
|
+
export function writeSignal(context, signal) {
|
|
195
|
+
return signal ? AbortSignal.any([context.signal, signal]) : context.signal;
|
|
196
|
+
}
|
|
197
|
+
function transportFor(context, intent, reader, capabilities, signal) {
|
|
198
|
+
const { store } = context;
|
|
199
|
+
return createWholeDocumentTransport({
|
|
200
|
+
carrier: context.carrierFor(intent.workspace),
|
|
201
|
+
bundleId: intent.bundleId,
|
|
202
|
+
binding: intent.binding,
|
|
203
|
+
intentFor: async (requestId) => {
|
|
204
|
+
const stored = await store.get(requestId);
|
|
205
|
+
return stored ? operationIntent(stored) : undefined;
|
|
206
|
+
},
|
|
207
|
+
remote: writeRemote(context, intent, reader),
|
|
208
|
+
routes: writeRoutes(context.prefix),
|
|
209
|
+
...(intent.okfVersion !== null ? { okfVersion: intent.okfVersion } : {}),
|
|
210
|
+
documentInputBytes: capabilities.documentInputBytes,
|
|
211
|
+
signal,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Record what an outcome leaves: a settled write leaves the store, an unknown one stays with its
|
|
216
|
+
* attempt count. Only the record of this same write is touched, never another write's under the
|
|
217
|
+
* identity. A store failure here never hides the outcome from the caller.
|
|
218
|
+
*/
|
|
219
|
+
async function recordOutcome(context, intent, outcome, attempts) {
|
|
220
|
+
try {
|
|
221
|
+
const stored = await context.store.get(intent.requestId);
|
|
222
|
+
if (!stored || !sameWrite(stored, intent))
|
|
223
|
+
return;
|
|
224
|
+
if (outcome.kind === "unknown") {
|
|
225
|
+
if (attempts !== stored.attempts || stored.state !== "unknown")
|
|
226
|
+
await context.store.put({ ...stored, attempts, state: "unknown" });
|
|
227
|
+
}
|
|
228
|
+
else
|
|
229
|
+
await context.store.delete(intent.requestId);
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// The record before the submission stands; the answer is the caller's either way.
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Deliver a recorded intent and settle it: the submission (unless one already left) and, after
|
|
237
|
+
* an unclear answer, the lookup under the same identity and binding, as `performUncertainWrite`
|
|
238
|
+
* decides. The record's attempt count is stored before each submission leaves; when that fails
|
|
239
|
+
* before the first submission, nothing is sent and the store's error is thrown.
|
|
240
|
+
*/
|
|
241
|
+
async function deliver(context, intent, reader, capabilities, callerSignal) {
|
|
242
|
+
// Stopping on a store failure ends the primitive's lookups at once, without the delay between them.
|
|
243
|
+
const halt = new AbortController();
|
|
244
|
+
const signal = AbortSignal.any([callerSignal, halt.signal]);
|
|
245
|
+
const transport = transportFor(context, intent, reader, capabilities, signal);
|
|
246
|
+
// The intent store failed before a first submission could be recorded: nothing was sent.
|
|
247
|
+
let storeFailure;
|
|
248
|
+
const recording = {
|
|
249
|
+
async submit(sending, options) {
|
|
250
|
+
try {
|
|
251
|
+
await context.store.put({ ...intent, attempts: sending.attempts, state: "in_flight" });
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
// A first submission that cannot be recorded is not sent; a later one is not sent either,
|
|
255
|
+
// and the earlier submission's outcome stays unknown.
|
|
256
|
+
if (sending.attempts === 1)
|
|
257
|
+
storeFailure = { cause: error };
|
|
258
|
+
halt.abort();
|
|
259
|
+
throw error;
|
|
260
|
+
}
|
|
261
|
+
return transport.submit(sending, options);
|
|
262
|
+
},
|
|
263
|
+
lookup: (requestId) => transport.lookup(requestId),
|
|
264
|
+
};
|
|
265
|
+
const { outcome, intent: settled } = await performUncertainWrite(recording, operationIntent(intent), {
|
|
266
|
+
settlement: transport.settlement,
|
|
267
|
+
signal,
|
|
268
|
+
// Every held record with a submission is one whose answer was never definitive.
|
|
269
|
+
earlierDeliveryUnclear: intent.attempts > 0,
|
|
270
|
+
...(context.lookupDelayMs !== undefined ? { lookupDelayMs: context.lookupDelayMs } : {}),
|
|
271
|
+
});
|
|
272
|
+
if (storeFailure)
|
|
273
|
+
throw storeFailure.cause;
|
|
274
|
+
// A refusal after the caller aborted is the abort's (the carrier sends nothing once it has),
|
|
275
|
+
// never the host's verdict: the identity stays unknown and its record is kept, with no reason.
|
|
276
|
+
const answer = callerSignal.aborted && (outcome.kind === "refused" || outcome.kind === "unknown") ? { kind: "unknown" } : outcome;
|
|
277
|
+
await recordOutcome(context, intent, answer, settled.attempts);
|
|
278
|
+
return resultOf(intent, answer);
|
|
279
|
+
}
|
|
280
|
+
/** `HostedClient.write`. */
|
|
281
|
+
export async function hostedWrite(context, bundleId, input, options = {}) {
|
|
282
|
+
if (typeof bundleId !== "string" || bundleId === "")
|
|
283
|
+
throw new TypeError("a write names its bundle");
|
|
284
|
+
if (typeof input !== "object" || input === null)
|
|
285
|
+
throw new TypeError("a write takes { id, document } with expectedVersion or expectAbsent");
|
|
286
|
+
const { id, document } = input;
|
|
287
|
+
if (typeof id !== "string" || id === "")
|
|
288
|
+
throw new TypeError("a write names its document id");
|
|
289
|
+
if (typeof document !== "string")
|
|
290
|
+
throw new TypeError("a write's document is the whole serialized document");
|
|
291
|
+
const creates = input.expectAbsent === true;
|
|
292
|
+
if (creates === (input.expectedVersion !== undefined))
|
|
293
|
+
throw new TypeError("a write takes exactly one of expectedVersion and expectAbsent: true");
|
|
294
|
+
if (!creates && !isContentVersion(input.expectedVersion))
|
|
295
|
+
throw new TypeError("expectedVersion is not a version");
|
|
296
|
+
if (options.requestId !== undefined && !REQUEST_ID.test(options.requestId))
|
|
297
|
+
throw new TypeError("a request identity is a lowercase UUID v4");
|
|
298
|
+
const requested = {
|
|
299
|
+
requestId: options.requestId ?? mintRequestId(),
|
|
300
|
+
bundleId,
|
|
301
|
+
workspace: context.workspace,
|
|
302
|
+
operation: creates ? "create" : "replace",
|
|
303
|
+
documentId: id,
|
|
304
|
+
document,
|
|
305
|
+
digest: versionOfBytes(document),
|
|
306
|
+
expectedVersion: creates ? null : input.expectedVersion,
|
|
307
|
+
};
|
|
308
|
+
return serialized(context, requested.requestId, async () => {
|
|
309
|
+
const signal = writeSignal(context, options.signal);
|
|
310
|
+
signal.throwIfAborted();
|
|
311
|
+
const known = options.requestId !== undefined ? await context.store.get(requested.requestId) : undefined;
|
|
312
|
+
if (known && !sameWrite(known, requested)) {
|
|
313
|
+
const message = onlyWorkspaceDiffers(known, requested)
|
|
314
|
+
? `This request identity names the same write in ${known.workspace === null ? "no workspace" : `workspace '${known.workspace}'`}; confirm it from that client. Nothing was sent.`
|
|
315
|
+
: "This request identity already names a different write; nothing was sent.";
|
|
316
|
+
return { requestId: requested.requestId, documentId: id, status: "refused", code: "invalid_input", message };
|
|
317
|
+
}
|
|
318
|
+
// Nothing has left yet: a failure to read the bundle's capabilities is the caller's typed
|
|
319
|
+
// error. Everything this write uses from capabilities comes from this one answer.
|
|
320
|
+
const side = writeSide(context, requested.workspace, bundleId);
|
|
321
|
+
const { capabilities, okfVersion } = await side.answer;
|
|
322
|
+
const settle = (result) => settleWriteSide(context, requested.workspace, bundleId, side, result);
|
|
323
|
+
if (known)
|
|
324
|
+
return settle(await deliver(context, known, side.reader, capabilities, signal));
|
|
325
|
+
if (!capabilities.operations) {
|
|
326
|
+
return settle({ requestId: requested.requestId, documentId: id, status: "refused", code: "read_only", message: "The host serves no identified writes for this bundle; nothing was sent." });
|
|
327
|
+
}
|
|
328
|
+
const intent = {
|
|
329
|
+
...requested,
|
|
330
|
+
binding: context.binding,
|
|
331
|
+
okfVersion,
|
|
332
|
+
createdAt: new Date().toISOString(),
|
|
333
|
+
attempts: 0,
|
|
334
|
+
state: "pending",
|
|
335
|
+
};
|
|
336
|
+
await context.store.put(intent);
|
|
337
|
+
return settle(await deliver(context, intent, side.reader, capabilities, signal));
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
/** The held intent and its bundle's write side and capabilities, or what a lookup answers without them. */
|
|
341
|
+
async function heldIntent(context, requestId) {
|
|
342
|
+
const intent = typeof requestId === "string" ? await context.store.get(requestId) : undefined;
|
|
343
|
+
if (!intent)
|
|
344
|
+
return { status: "unrecorded", requestId };
|
|
345
|
+
const side = writeSide(context, intent.workspace, intent.bundleId);
|
|
346
|
+
try {
|
|
347
|
+
return { intent, side, reader: side.reader, capabilities: (await side.answer).capabilities };
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
// The write may have left: an unreadable bundle is no evidence either way.
|
|
351
|
+
return { requestId: intent.requestId, documentId: intent.documentId, status: "unknown" };
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/** One outcome lookup of a held write, never a send; a host holding no outcome yet is `unknown`. */
|
|
355
|
+
async function lookupOnly(context, intent, reader, capabilities, signal) {
|
|
356
|
+
const transport = transportFor(context, intent, reader, capabilities, signal);
|
|
357
|
+
let outcome;
|
|
358
|
+
try {
|
|
359
|
+
const recorded = await transport.lookup(intent.requestId);
|
|
360
|
+
outcome = recorded === null || recorded.kind === "pending" ? { kind: "unknown" } : recorded;
|
|
361
|
+
}
|
|
362
|
+
catch {
|
|
363
|
+
outcome = { kind: "unknown" };
|
|
364
|
+
}
|
|
365
|
+
await recordOutcome(context, intent, outcome, intent.attempts);
|
|
366
|
+
return resultOf(intent, outcome);
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* `HostedClient.lookupWrite`: what the host recorded for a held write, by one outcome lookup under
|
|
370
|
+
* the identity and binding it was sent with. It never sends the write: a host that holds no
|
|
371
|
+
* outcome yet (absent or pending), or a lookup that fails, is `unknown`.
|
|
372
|
+
*/
|
|
373
|
+
export async function hostedLookupWrite(context, requestId, options = {}) {
|
|
374
|
+
const signal = writeSignal(context, options.signal);
|
|
375
|
+
signal.throwIfAborted();
|
|
376
|
+
return serialized(context, requestId, async () => {
|
|
377
|
+
// Aborted while an earlier call under this identity ran: this one sends nothing.
|
|
378
|
+
signal.throwIfAborted();
|
|
379
|
+
const held = await heldIntent(context, requestId);
|
|
380
|
+
if (!("intent" in held))
|
|
381
|
+
return held;
|
|
382
|
+
return settleWriteSide(context, held.intent.workspace, held.intent.bundleId, held.side, await lookupOnly(context, held.intent, held.reader, held.capabilities, signal));
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* `HostedClient.settleWrite`: settle a held write. It looks the identity up under the binding it
|
|
387
|
+
* was sent with; when the host never recorded it (within the retention window it serves), it
|
|
388
|
+
* delivers that same identity once more, as the write itself would have. An unclear lookup is
|
|
389
|
+
* `unknown` again. A bundle the host serves no writes for is only looked up.
|
|
390
|
+
*/
|
|
391
|
+
export async function hostedSettleWrite(context, requestId, options = {}) {
|
|
392
|
+
const signal = writeSignal(context, options.signal);
|
|
393
|
+
signal.throwIfAborted();
|
|
394
|
+
return serialized(context, requestId, async () => {
|
|
395
|
+
// Aborted while an earlier call under this identity ran: this one sends nothing.
|
|
396
|
+
signal.throwIfAborted();
|
|
397
|
+
const held = await heldIntent(context, requestId);
|
|
398
|
+
if (!("intent" in held))
|
|
399
|
+
return held;
|
|
400
|
+
const settle = (result) => settleWriteSide(context, held.intent.workspace, held.intent.bundleId, held.side, result);
|
|
401
|
+
if (!held.capabilities.operations)
|
|
402
|
+
return settle(await lookupOnly(context, held.intent, held.reader, held.capabilities, signal));
|
|
403
|
+
// A recorded intent may never have left (a store written before a crash): delivery starts
|
|
404
|
+
// with a submission then, under the recorded identity, exactly as the write would have.
|
|
405
|
+
return settle(await deliver(context, held.intent, held.reader, held.capabilities, signal));
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
/** `HostedClient.heldWrites`: every write the intent store holds. */
|
|
409
|
+
export async function hostedHeldWrites(context) {
|
|
410
|
+
const { store } = context;
|
|
411
|
+
if (typeof store.list !== "function")
|
|
412
|
+
throw new HostedIntentsNotListable();
|
|
413
|
+
const held = [];
|
|
414
|
+
for await (const intent of store.list())
|
|
415
|
+
held.push(intent);
|
|
416
|
+
return held;
|
|
417
|
+
}
|
|
418
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/hosted-client/write.ts"],"names":[],"mappings":"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"}
|