@superbee/core 0.2.0-pre.3 → 0.2.0-pre.30
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 +1082 -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/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 +103 -2
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BodyReplacePosture } from "./body-replace-guards.js";
|
|
1
2
|
/**
|
|
2
3
|
* Shared type shapes for the OKF store engine.
|
|
3
4
|
*
|
|
@@ -140,7 +141,8 @@ export interface ReadBlobResult {
|
|
|
140
141
|
export interface VersionInfo {
|
|
141
142
|
/** Opaque content-addressed version token for this revision. */
|
|
142
143
|
version: Version;
|
|
143
|
-
/** Who wrote this revision.
|
|
144
|
+
/** Who wrote this revision. History-keeping backends default at write time to a local identity.
|
|
145
|
+
* FilesystemBackend reports `unattributed` when document bytes carry no mutation attribution. */
|
|
144
146
|
actor: string;
|
|
145
147
|
/** ISO-8601 instant this revision was recorded. */
|
|
146
148
|
timestamp: string;
|
|
@@ -155,6 +157,10 @@ export interface VersionInfo {
|
|
|
155
157
|
}
|
|
156
158
|
/** Options controlling a conditional / attributed {@link StorageBackend.write}. */
|
|
157
159
|
export interface WriteOptions {
|
|
160
|
+
/** Explicit per-document replacement intent carried by RemoteBackend to the wire authority.
|
|
161
|
+
* Raw storage adapters ignore it; it grants no metadata/Kind policy bypass.
|
|
162
|
+
*/
|
|
163
|
+
bodyReplace?: BodyReplacePosture;
|
|
158
164
|
/**
|
|
159
165
|
* Compare-and-swap guard. When set to a {@link Version} token, the write succeeds
|
|
160
166
|
* ONLY if the backend's current version for `id` equals that token; otherwise it
|
|
@@ -349,11 +355,16 @@ export interface StorageBackend {
|
|
|
349
355
|
* a facet it chooses to honor. A backend that does not implement this method
|
|
350
356
|
* (FilesystemBackend / MemoryBackend — both local to their data, where a head projection
|
|
351
357
|
* saves nothing) is served by the engine's fallback (`list` +
|
|
352
|
-
* `readMany`, bodies read then dropped)
|
|
353
|
-
*
|
|
354
|
-
*
|
|
358
|
+
* `readMany`, bodies read then dropped). Both paths honor the scan's malformed-doc
|
|
359
|
+
* resilience: given `onSkip`, a backend reports each document it could not parse there and
|
|
360
|
+
* leaves it out; without it, a malformed document fails the scan.
|
|
355
361
|
*/
|
|
356
|
-
queryHeads?(filter?: QueryFilter
|
|
362
|
+
queryHeads?(filter?: QueryFilter, options?: {
|
|
363
|
+
onSkip?: (skip: {
|
|
364
|
+
id: ConceptId;
|
|
365
|
+
reason: string;
|
|
366
|
+
}) => void;
|
|
367
|
+
}): Promise<HeadResult[]>;
|
|
357
368
|
/**
|
|
358
369
|
* OPTIONAL capabilities self-declaration. `StorageBackend` carries
|
|
359
370
|
* no capabilities descriptor by default, so a wire router that wants to report an adapter's
|
|
@@ -395,6 +406,23 @@ export interface QueryFilter {
|
|
|
395
406
|
* (e.g. `tags: [a,b]`) matches on membership. A field the doc lacks never matches (empty set).
|
|
396
407
|
*/
|
|
397
408
|
fields?: Record<string, string>;
|
|
409
|
+
/**
|
|
410
|
+
* Restrict to concepts whose `sources` list holds at least one entry carrying this identity
|
|
411
|
+
* (see {@link SourceIdentity}). A selector naming neither key imposes no constraint, like an
|
|
412
|
+
* empty `tags` list.
|
|
413
|
+
*/
|
|
414
|
+
sources?: SourceIdentity;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* An OKF `sources[]` identity: `resource` names the provider namespace and `id` the record within
|
|
418
|
+
* it. Each supplied key must equal the entry's own property of the same name by exact,
|
|
419
|
+
* case-sensitive string comparison: no trimming, URL normalization, or `String()` coercion. An
|
|
420
|
+
* entry that is not a mapping, or whose property is absent or not a string, never matches, and
|
|
421
|
+
* neither does a `sources` value that is not a list.
|
|
422
|
+
*/
|
|
423
|
+
export interface SourceIdentity {
|
|
424
|
+
resource?: string;
|
|
425
|
+
id?: string;
|
|
398
426
|
}
|
|
399
427
|
/** A single resolved outbound cross-link (a standard markdown link, never a wikilink). */
|
|
400
428
|
export interface Link {
|
|
@@ -406,6 +434,11 @@ export interface Link {
|
|
|
406
434
|
text: string;
|
|
407
435
|
/** The raw target as written in the markdown, before resolution (e.g. `/a/b.md`, `./x.md`). */
|
|
408
436
|
href: string;
|
|
437
|
+
/**
|
|
438
|
+
* Set only on a cross-bundle edge (`okf://<alias>/<path>.md`): the declared alias of the bundle
|
|
439
|
+
* `to` lives in. Absent on every local link, so local edge output is unchanged.
|
|
440
|
+
*/
|
|
441
|
+
bundle?: string;
|
|
409
442
|
}
|
|
410
443
|
/**
|
|
411
444
|
* Filter for {@link queryEdges} — the whole-bundle derived edge list, filtered. `from`/`to` each
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,uJAAuJ;IACvJ,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iHAAiH;IACjH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,EAAE,EAAE,SAAS,CAAC;IACd,+BAA+B;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+EAA+E;AAC/E,MAAM,WAAW,MAAM;IACrB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,gGAAgG;AAChG,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,uGAAuG;AACvG,MAAM,WAAW,UAAU;IACzB,mCAAmC;IACnC,GAAG,EAAE,WAAW,CAAC;IACjB,iIAAiI;IACjI,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,EAAE,EAAE,SAAS,CAAC;IACd,8CAA8C;IAC9C,WAAW,EAAE,WAAW,CAAC;IACzB,mKAAmK;IACnK,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,KAAK,EAAE,UAAU,CAAC;IAClB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,+GAA+G;AAC/G,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared type shapes for the OKF store engine.
|
|
3
|
-
*
|
|
4
|
-
* These are the contract types originally sketched in `index.ts`; they are kept
|
|
5
|
-
* here so the implementation modules can import them without a cycle, and are
|
|
6
|
-
* re-exported verbatim from `index.ts` to keep the public contract stable.
|
|
7
|
-
*
|
|
8
|
-
* @see OKF spec — GoogleCloudPlatform/knowledge-catalog, `okf/SPEC.md`
|
|
9
|
-
* @packageDocumentation
|
|
10
|
-
*/
|
|
11
1
|
export {};
|
|
12
2
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -15,9 +15,13 @@
|
|
|
15
15
|
* `sleep` used for the submission deadline and the delay between lookups; there is no
|
|
16
16
|
* injectable clock, and a transport's own latency is real.
|
|
17
17
|
*/
|
|
18
|
+
import type { BodyReplacePosture } from "./body-replace-guards.js";
|
|
18
19
|
import type { Version } from "./types.js";
|
|
19
|
-
/**
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* The operation an intent performs: a whole-document write, or `document.delete` (the document
|
|
22
|
+
* leaves at exactly the intent's base). The union is open.
|
|
23
|
+
*/
|
|
24
|
+
export type OperationKind = "document.write" | "document.delete" | (string & {});
|
|
21
25
|
/**
|
|
22
26
|
* The journal states of an intent. `unknown` is the primitive's own classification of an
|
|
23
27
|
* exhausted attempt: the authority may or may not hold the write, and a later attempt begins
|
|
@@ -29,8 +33,21 @@ export interface OperationIntent {
|
|
|
29
33
|
/** Durable request identity: minted once at record time, reused verbatim on every retry. */
|
|
30
34
|
requestId: string;
|
|
31
35
|
kind: OperationKind;
|
|
36
|
+
/** Explicit whole-document edit intent, captured durably with this request identity.
|
|
37
|
+
* Absent on legacy/automatic writes, which retain body-replacement protection.
|
|
38
|
+
*/
|
|
39
|
+
readonly bodyReplace?: Readonly<BodyReplacePosture>;
|
|
32
40
|
/** The target the operation applies to; a concept id for `document.write`. */
|
|
33
41
|
target: string;
|
|
42
|
+
/**
|
|
43
|
+
* The tombstone a create acknowledges it re-creates: the id's latest deletion, as the
|
|
44
|
+
* authority named it. Set only by an explicit decision to re-create a deleted document (the
|
|
45
|
+
* caller's own observed delete, or `keep` on a "deleted remotely" conflict), and only on a
|
|
46
|
+
* create recorded after that decision; never inferred by a transport. An authority whose latest
|
|
47
|
+
* deletion of the id is another one refuses the create, and the refusal comes back as a
|
|
48
|
+
* conflict.
|
|
49
|
+
*/
|
|
50
|
+
recreates?: Version;
|
|
34
51
|
/** The shared version the local edit was made against, or `null` for a create. */
|
|
35
52
|
base: Version | null;
|
|
36
53
|
/** The content-addressed version of `content`. */
|
|
@@ -50,28 +67,115 @@ export interface OperationIntent {
|
|
|
50
67
|
export type Outcome = {
|
|
51
68
|
kind: "committed";
|
|
52
69
|
version: Version;
|
|
53
|
-
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The shared head moved. `actual` is the version the authority serves now, or `null` when it
|
|
73
|
+
* serves none ("deleted remotely"). With `actual: null`, `tombstone` names the deletion the
|
|
74
|
+
* authority reported, when it reported one: the acknowledgement a deliberate re-create sends.
|
|
75
|
+
* It is never a version any read serves, so it is never a base or a remote version.
|
|
76
|
+
*/
|
|
77
|
+
| {
|
|
54
78
|
kind: "conflict";
|
|
55
79
|
actual: Version | null;
|
|
56
|
-
|
|
80
|
+
tombstone?: Version;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `executed` is present only on a refusal that is not the identity's recorded answer: `false`
|
|
84
|
+
* when this attempt was refused before it could execute (nothing was sent, or the authority
|
|
85
|
+
* refused it before dispatch), `"unknown"` when the authority's answer does not say. Such a
|
|
86
|
+
* refusal is evidence about this attempt only, never about an earlier delivery of the identity.
|
|
87
|
+
*/
|
|
88
|
+
| {
|
|
57
89
|
kind: "refused";
|
|
58
90
|
code: string;
|
|
59
91
|
message: string;
|
|
60
|
-
|
|
92
|
+
executed?: false | "unknown";
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* `refusal` names the attempt-only refusal that ended the call, when one did: a resend refused
|
|
96
|
+
* before execution while an earlier delivery may still be held. The identity stays unknown;
|
|
97
|
+
* the refusal says why it could not be settled now (for example, access withdrawn).
|
|
98
|
+
*/
|
|
99
|
+
| {
|
|
61
100
|
kind: "unknown";
|
|
101
|
+
refusal?: {
|
|
102
|
+
code: string;
|
|
103
|
+
message: string;
|
|
104
|
+
};
|
|
62
105
|
};
|
|
106
|
+
/**
|
|
107
|
+
* A lookup's answer that the authority holds the identity without a result yet: a delivery of
|
|
108
|
+
* it was admitted and may still commit. Distinct from `null`, which says it was never admitted.
|
|
109
|
+
*/
|
|
110
|
+
export interface LookupPending {
|
|
111
|
+
kind: "pending";
|
|
112
|
+
}
|
|
113
|
+
/** The one {@link LookupPending} answer. */
|
|
114
|
+
export declare const LOOKUP_PENDING: LookupPending;
|
|
63
115
|
/** A transport to a shared authority that records outcomes by request identity. */
|
|
64
116
|
export interface OperationTransport {
|
|
65
117
|
/** Deliver the intent once; a repeated `requestId` must return the recorded outcome unchanged. */
|
|
66
118
|
submit(intent: OperationIntent, options?: {
|
|
67
119
|
signal?: AbortSignal;
|
|
68
120
|
}): Promise<Outcome>;
|
|
69
|
-
/**
|
|
70
|
-
|
|
121
|
+
/**
|
|
122
|
+
* The recorded outcome for `requestId`; {@link LookupPending} when the authority holds it
|
|
123
|
+
* unanswered; or `null` when the authority never recorded it. A transport that cannot tell
|
|
124
|
+
* pending from absent answers `null` for both.
|
|
125
|
+
*/
|
|
126
|
+
lookup(requestId: string): Promise<Outcome | LookupPending | null>;
|
|
127
|
+
}
|
|
128
|
+
/** Minimal classification for recorded-only delivery. A commit need not invent a new-head
|
|
129
|
+
* version (for example, an identified blob delete can carry its complete absence receipt). */
|
|
130
|
+
export interface NonExecutedAttempt {
|
|
131
|
+
kind: "not-executed";
|
|
132
|
+
attempts: number;
|
|
133
|
+
details: unknown;
|
|
134
|
+
}
|
|
135
|
+
export type RecordedWriteOutcome = NonExecutedAttempt | {
|
|
136
|
+
kind: "committed";
|
|
137
|
+
} | {
|
|
138
|
+
kind: "conflict";
|
|
139
|
+
} | {
|
|
140
|
+
kind: "refused";
|
|
141
|
+
code: string;
|
|
142
|
+
message: string;
|
|
143
|
+
} | {
|
|
144
|
+
kind: "unknown";
|
|
145
|
+
};
|
|
146
|
+
export type RecordedWriteIntent = Pick<OperationIntent, "requestId" | "kind" | "target" | "createdAt" | "attempts" | "state"> & {
|
|
147
|
+
/** Opt-in qualification; old no-prefix explicit callers retain their contract. */
|
|
148
|
+
notAppliedThrough?: number;
|
|
149
|
+
};
|
|
150
|
+
export interface RecordedWriteTransport<I extends RecordedWriteIntent, O extends RecordedWriteOutcome> {
|
|
151
|
+
submit(intent: I, options?: {
|
|
152
|
+
signal?: AbortSignal;
|
|
153
|
+
}): Promise<O>;
|
|
154
|
+
/** Null/absence is inconclusive and NEVER grants this path permission to submit. */
|
|
155
|
+
lookup(requestId: string): Promise<O | null>;
|
|
156
|
+
}
|
|
157
|
+
/** Explicit starts are for callers that own persistence, not proof minted by this primitive.
|
|
158
|
+
* submit-claimed requires a freshly successful durable in_flight CAS, held under the checkout
|
|
159
|
+
* lock, immediately before this call; its counted attempt is sent at most once. After reopening,
|
|
160
|
+
* or when that freshness cannot be established, use lookup. Replaying a stored claim is NOT a
|
|
161
|
+
* fresh CAS. Nor does a new CAS prove an earlier unclear delivery cannot still commit: those
|
|
162
|
+
* identities must use lookup. This function creates no ticket or journal persistence itself. */
|
|
163
|
+
export type RecordedWriteOptions = Omit<UncertainWriteOptions, "settlement" | "maxSubmissions" | "earlierDeliveryUnclear"> & {
|
|
164
|
+
settlement: "recorded-only";
|
|
165
|
+
start: "submit-claimed" | "lookup";
|
|
166
|
+
};
|
|
167
|
+
export interface RecordedWriteResult<I extends RecordedWriteIntent, O extends RecordedWriteOutcome> {
|
|
168
|
+
intent: Omit<I, "attempts" | "state"> & Pick<RecordedWriteIntent, "attempts" | "state">;
|
|
169
|
+
outcome: O | {
|
|
170
|
+
kind: "unknown";
|
|
171
|
+
};
|
|
172
|
+
lookups: number;
|
|
71
173
|
}
|
|
72
174
|
/** Wait `ms`, resolving early and harmlessly when `signal` aborts. Injected by tests. */
|
|
73
175
|
export type Sleep = (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
74
176
|
export interface UncertainWriteOptions {
|
|
177
|
+
/** Exact-content writes may settle matching conflicts; governed writes require recorded evidence. */
|
|
178
|
+
settlement?: "exact-content" | "recorded-only";
|
|
75
179
|
/** How long one submission may take before its outcome is treated as unknown. */
|
|
76
180
|
deadlineMs?: number;
|
|
77
181
|
/** Lookups attempted after an unknown submission before giving up (default 3). */
|
|
@@ -82,6 +186,20 @@ export interface UncertainWriteOptions {
|
|
|
82
186
|
maxSubmissions?: number;
|
|
83
187
|
/** Timer; defaults to a `setTimeout` sleep. */
|
|
84
188
|
sleep?: Sleep;
|
|
189
|
+
/**
|
|
190
|
+
* Ends the call early once aborted: no further lookup or resubmission starts, the wait between
|
|
191
|
+
* lookups is cut short, and the outcome is `unknown` unless one was already known. Absent, the
|
|
192
|
+
* call runs every lookup and submission it is permitted.
|
|
193
|
+
*/
|
|
194
|
+
signal?: AbortSignal;
|
|
195
|
+
/**
|
|
196
|
+
* The intent's earlier submission, made by an earlier call, ended without a definitive answer
|
|
197
|
+
* (its outcome was unknown, or the call stopped while it was in flight). A resubmission refused
|
|
198
|
+
* before execution is then `unknown`, as one after an unclear submission in this call is.
|
|
199
|
+
* Default false: an earlier submission answered with such a refusal (a paused intent requeued)
|
|
200
|
+
* may be resent and refused again definitively.
|
|
201
|
+
*/
|
|
202
|
+
earlierDeliveryUnclear?: boolean;
|
|
85
203
|
}
|
|
86
204
|
export interface UncertainWriteResult {
|
|
87
205
|
/** The intent with `attempts` and `state` advanced to reflect this call. */
|
|
@@ -90,12 +208,16 @@ export interface UncertainWriteResult {
|
|
|
90
208
|
/** How many times `lookup` was called in this call. */
|
|
91
209
|
lookups: number;
|
|
92
210
|
}
|
|
93
|
-
/**
|
|
211
|
+
/**
|
|
212
|
+
* Refusal codes that pause shared operations rather than say the content is wrong: the caller's
|
|
213
|
+
* authorization is gone, or a hosted sync quota (`REQUEST_CAPACITY_*`, one per scope the host
|
|
214
|
+
* names) is spent. Nothing is lost; the refused intents are requeued when the store resumes.
|
|
215
|
+
*/
|
|
94
216
|
export declare const AUTHORIZATION_REFUSAL_CODES: ReadonlySet<string>;
|
|
95
217
|
/** True when a refusal reports lost permission, which pauses further shared operations. */
|
|
96
|
-
export declare function isAuthorizationRefusal(outcome: Outcome): boolean;
|
|
218
|
+
export declare function isAuthorizationRefusal(outcome: Outcome | RecordedWriteOutcome): boolean;
|
|
97
219
|
/** The journal state an outcome settles an intent into. */
|
|
98
|
-
export declare function stateForOutcome(outcome: Outcome): OperationState;
|
|
220
|
+
export declare function stateForOutcome(outcome: Outcome | RecordedWriteOutcome): OperationState;
|
|
99
221
|
/** The longest request identity the wire accepts as `Idempotency-Key`. */
|
|
100
222
|
export declare const REQUEST_ID_MAX_LENGTH = 128;
|
|
101
223
|
/**
|
|
@@ -114,10 +236,12 @@ export declare function mintRequestId(): string;
|
|
|
114
236
|
* at that version. This is the wire's post-expiry compare-and-swap property: a committed write
|
|
115
237
|
* whose acknowledgement was lost and whose recorded outcome expired from the authority's
|
|
116
238
|
* retention window is resubmitted with its original `base`, which no longer matches, and the
|
|
117
|
-
* authority answers a conflict against the version the client itself committed.
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
239
|
+
* authority answers a conflict against the version the client itself committed. If the head
|
|
240
|
+
* has meanwhile returned to `base` exactly, the premise matches and the resubmission is applied
|
|
241
|
+
* again instead (see {@link performUncertainWrite}). The mapping depends only on the outcome and
|
|
242
|
+
* the intent, so the primitive owns it and every consumer settles such a write as acknowledged
|
|
243
|
+
* rather than presenting it as a concurrent edit. Every other conflict, including one against
|
|
244
|
+
* an absent head (`actual: null`), is returned unchanged.
|
|
121
245
|
*/
|
|
122
246
|
export declare function settleAgainstIntent(outcome: Outcome, intent: OperationIntent): Outcome;
|
|
123
247
|
/**
|
|
@@ -125,9 +249,9 @@ export declare function settleAgainstIntent(outcome: Outcome, intent: OperationI
|
|
|
125
249
|
*
|
|
126
250
|
* Flow: when the intent has never been submitted, submit it; when it has (`attempts > 0`), or
|
|
127
251
|
* when a submission's outcome is unknown, look the request identity up. A positive lookup
|
|
128
|
-
* settles the intent. A `null` lookup
|
|
129
|
-
* resubmission with the same `requestId` is the first delivery and is allowed, up
|
|
130
|
-
* `maxSubmissions`. A lookup that fails leaves the outcome unknown and the intent for a later
|
|
252
|
+
* settles the intent. A `null` lookup is taken as proof that the authority never recorded the
|
|
253
|
+
* request, so a resubmission with the same `requestId` is the first delivery and is allowed, up
|
|
254
|
+
* to `maxSubmissions`. A lookup that fails leaves the outcome unknown and the intent for a later
|
|
131
255
|
* call.
|
|
132
256
|
*
|
|
133
257
|
* No resubmission happens without a `null` lookup because a blind retry after an unknown
|
|
@@ -135,8 +259,26 @@ export declare function settleAgainstIntent(outcome: Outcome, intent: OperationI
|
|
|
135
259
|
* twice, and even on one with it the retry can only ever learn what the lookup already knew.
|
|
136
260
|
* The lookup is what turns "unknown" into a fact before any second delivery.
|
|
137
261
|
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
262
|
+
* That fact is only as good as the transport's `null`. An authority that has expired or lost a
|
|
263
|
+
* record answers as if it never recorded it, and the reference wire transport returns `null`
|
|
264
|
+
* then. The resubmission is guarded only by its `base`, and versions are content hashes: if the
|
|
265
|
+
* write had landed and a third party has since restored `base` exactly, the premise matches, the
|
|
266
|
+
* write is applied a second time over that revert, and the outcome is `committed`. The hosted
|
|
267
|
+
* transport never answers `null` for an absent record once the intent is older than the host's
|
|
268
|
+
* stated retention window, less a skew margin, so it does not resubmit there.
|
|
269
|
+
*
|
|
270
|
+
* A refusal before execution ({@link isAuthorizationRefusal}) of a resubmission that follows an
|
|
271
|
+
* unclear submission (in this call, or an earlier one per `earlierDeliveryUnclear`) is `unknown`,
|
|
272
|
+
* carrying that refusal, not settled: a `null` lookup cannot prove an earlier delivery will not
|
|
273
|
+
* still arrive, and the delivery can still commit. After a {@link LookupPending} answer, which
|
|
274
|
+
* says a delivery is held, the same holds for every refusal the transport marks `executed`
|
|
275
|
+
* (a gateway's `400` included). A pending lookup still permits the resubmission.
|
|
276
|
+
*
|
|
277
|
+
* By default every outcome passes through {@link settleAgainstIntent}, so a conflict naming the
|
|
278
|
+
* intent's own version is committed. `recorded-only` preserves the recorded outcome instead.
|
|
140
279
|
*/
|
|
280
|
+
export declare function performUncertainWrite<I extends RecordedWriteIntent, O extends RecordedWriteOutcome>(transport: RecordedWriteTransport<I, O>, intent: I, options: RecordedWriteOptions): Promise<RecordedWriteResult<I, O>>;
|
|
281
|
+
/** Compatibility path: a complete document intent, with the existing counters/resubmission
|
|
282
|
+
* defaults. Body delivery's recorded-only call without start remains on this path. */
|
|
141
283
|
export declare function performUncertainWrite(transport: OperationTransport, intent: OperationIntent, options?: UncertainWriteOptions): Promise<UncertainWriteResult>;
|
|
142
284
|
//# sourceMappingURL=uncertain-write.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uncertain-write.d.ts","sourceRoot":"","sources":["../src/uncertain-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C
|
|
1
|
+
{"version":3,"file":"uncertain-write.d.ts","sourceRoot":"","sources":["../src/uncertain-write.ts"],"names":[],"mappings":"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"}
|
package/dist/uncertain-write.js
CHANGED
|
@@ -15,12 +15,36 @@
|
|
|
15
15
|
* `sleep` used for the submission deadline and the delay between lookups; there is no
|
|
16
16
|
* injectable clock, and a transport's own latency is real.
|
|
17
17
|
*/
|
|
18
|
-
/**
|
|
19
|
-
export const
|
|
18
|
+
/** The one {@link LookupPending} answer. */
|
|
19
|
+
export const LOOKUP_PENDING = Object.freeze({ kind: "pending" });
|
|
20
|
+
/**
|
|
21
|
+
* Refusal codes that pause shared operations rather than say the content is wrong: the caller's
|
|
22
|
+
* authorization is gone, or a hosted sync quota (`REQUEST_CAPACITY_*`, one per scope the host
|
|
23
|
+
* names) is spent. Nothing is lost; the refused intents are requeued when the store resumes.
|
|
24
|
+
*/
|
|
25
|
+
export const AUTHORIZATION_REFUSAL_CODES = new Set([
|
|
26
|
+
"AUTH_REQUIRED",
|
|
27
|
+
"FORBIDDEN",
|
|
28
|
+
"UNAUTHORIZED",
|
|
29
|
+
"PERMISSION_DENIED",
|
|
30
|
+
"REQUEST_CAPACITY_PRINCIPAL",
|
|
31
|
+
"REQUEST_CAPACITY_BUNDLE",
|
|
32
|
+
]);
|
|
20
33
|
/** True when a refusal reports lost permission, which pauses further shared operations. */
|
|
21
34
|
export function isAuthorizationRefusal(outcome) {
|
|
22
35
|
return outcome.kind === "refused" && AUTHORIZATION_REFUSAL_CODES.has(outcome.code);
|
|
23
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* True when a resend's refusal cannot settle an identity whose earlier delivery is unclear. An
|
|
39
|
+
* authorization refusal never can: access lost now says nothing about a delivery authorized
|
|
40
|
+
* earlier. Once a lookup answered {@link LookupPending}, an earlier delivery is known to be held,
|
|
41
|
+
* so no refusal the transport marks as attempt-only (`executed`) can either. Without that
|
|
42
|
+
* answer, a marked refusal of the same bytes (a schema `400`, the mass-delete hold) settles, as
|
|
43
|
+
* it would refuse a delayed first delivery too.
|
|
44
|
+
*/
|
|
45
|
+
function refusalLeavesUnknown(outcome, held) {
|
|
46
|
+
return outcome.kind === "refused" && (isAuthorizationRefusal(outcome) || (held && outcome.executed !== undefined));
|
|
47
|
+
}
|
|
24
48
|
/** The journal state an outcome settles an intent into. */
|
|
25
49
|
export function stateForOutcome(outcome) {
|
|
26
50
|
switch (outcome.kind) {
|
|
@@ -30,6 +54,8 @@ export function stateForOutcome(outcome) {
|
|
|
30
54
|
return "conflict";
|
|
31
55
|
case "refused":
|
|
32
56
|
return "refused";
|
|
57
|
+
case "not-executed":
|
|
58
|
+
return "pending";
|
|
33
59
|
case "unknown":
|
|
34
60
|
return "unknown";
|
|
35
61
|
}
|
|
@@ -77,10 +103,12 @@ const UNKNOWN = { kind: "unknown" };
|
|
|
77
103
|
* at that version. This is the wire's post-expiry compare-and-swap property: a committed write
|
|
78
104
|
* whose acknowledgement was lost and whose recorded outcome expired from the authority's
|
|
79
105
|
* retention window is resubmitted with its original `base`, which no longer matches, and the
|
|
80
|
-
* authority answers a conflict against the version the client itself committed.
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
106
|
+
* authority answers a conflict against the version the client itself committed. If the head
|
|
107
|
+
* has meanwhile returned to `base` exactly, the premise matches and the resubmission is applied
|
|
108
|
+
* again instead (see {@link performUncertainWrite}). The mapping depends only on the outcome and
|
|
109
|
+
* the intent, so the primitive owns it and every consumer settles such a write as acknowledged
|
|
110
|
+
* rather than presenting it as a concurrent edit. Every other conflict, including one against
|
|
111
|
+
* an absent head (`actual: null`), is returned unchanged.
|
|
84
112
|
*/
|
|
85
113
|
export function settleAgainstIntent(outcome, intent) {
|
|
86
114
|
if (outcome.kind === "conflict" && outcome.actual !== null && outcome.actual === intent.local) {
|
|
@@ -107,53 +135,76 @@ async function submitOnce(transport, intent, deadlineMs, sleep) {
|
|
|
107
135
|
controller.abort();
|
|
108
136
|
return UNKNOWN;
|
|
109
137
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Deliver `intent` and settle it against the authority's recorded outcome.
|
|
112
|
-
*
|
|
113
|
-
* Flow: when the intent has never been submitted, submit it; when it has (`attempts > 0`), or
|
|
114
|
-
* when a submission's outcome is unknown, look the request identity up. A positive lookup
|
|
115
|
-
* settles the intent. A `null` lookup proves the authority never recorded the request, so a
|
|
116
|
-
* resubmission with the same `requestId` is the first delivery and is allowed, up to
|
|
117
|
-
* `maxSubmissions`. A lookup that fails leaves the outcome unknown and the intent for a later
|
|
118
|
-
* call.
|
|
119
|
-
*
|
|
120
|
-
* No resubmission happens without a `null` lookup because a blind retry after an unknown
|
|
121
|
-
* outcome is unsound: on an authority without request identity the retry applies the write
|
|
122
|
-
* twice, and even on one with it the retry can only ever learn what the lookup already knew.
|
|
123
|
-
* The lookup is what turns "unknown" into a fact before any second delivery.
|
|
124
|
-
*
|
|
125
|
-
* Every outcome passes through {@link settleAgainstIntent} before it is returned, so a conflict
|
|
126
|
-
* that names the intent's own version is reported as committed at that version.
|
|
127
|
-
*/
|
|
128
138
|
export async function performUncertainWrite(transport, intent, options = {}) {
|
|
139
|
+
const explicitStart = "start" in options;
|
|
140
|
+
if (explicitStart) {
|
|
141
|
+
if (options.settlement !== "recorded-only" || (options.start !== "submit-claimed" && options.start !== "lookup") ||
|
|
142
|
+
!Number.isSafeInteger(intent.attempts) || intent.attempts < 0 ||
|
|
143
|
+
!["pending", "in_flight", "acknowledged", "conflict", "refused", "unknown"].includes(intent.state) ||
|
|
144
|
+
(options.start === "submit-claimed" && (intent.state !== "in_flight" || intent.attempts < 1)))
|
|
145
|
+
throw new Error("Invalid recorded-only delivery start or durable claim.");
|
|
146
|
+
if (intent.notAppliedThrough !== undefined && (!Number.isSafeInteger(intent.notAppliedThrough) || intent.notAppliedThrough < 0 || intent.notAppliedThrough > intent.attempts || options.start === "submit-claimed" && intent.notAppliedThrough !== intent.attempts - 1))
|
|
147
|
+
throw new Error("Invalid recorded-only non-execution prefix or durable claim.");
|
|
148
|
+
// Capture the descriptor before the first asynchronous boundary. Additional prepared data
|
|
149
|
+
// belongs to the typed caller; the primitive neither fabricates nor interprets its fields.
|
|
150
|
+
intent = { ...intent };
|
|
151
|
+
options = { ...options };
|
|
152
|
+
}
|
|
153
|
+
if (options.settlement !== undefined && options.settlement !== "exact-content" && options.settlement !== "recorded-only") {
|
|
154
|
+
throw new Error("Unknown uncertain-write settlement mode.");
|
|
155
|
+
}
|
|
129
156
|
const sleep = options.sleep ?? defaultSleep;
|
|
130
157
|
const maxLookups = Math.max(1, options.maxLookups ?? 3);
|
|
131
|
-
const maxSubmissions = Math.max(1, options.maxSubmissions ?? 2);
|
|
158
|
+
const maxSubmissions = explicitStart ? 1 : Math.max(1, options.maxSubmissions ?? 2);
|
|
132
159
|
const lookupDelayMs = options.lookupDelayMs ?? 250;
|
|
160
|
+
const { signal } = options;
|
|
161
|
+
// Whether a submission of this identity may still be held by the authority unanswered.
|
|
162
|
+
let unclear = options.earlierDeliveryUnclear === true && intent.attempts > 0;
|
|
163
|
+
// Whether any lookup in this call answered pending: a delivery of this identity was held, so
|
|
164
|
+
// a later absent answer in the same call does not undo it.
|
|
165
|
+
let held = false;
|
|
133
166
|
let attempts = intent.attempts;
|
|
134
167
|
let submissions = 0;
|
|
135
168
|
let lookups = 0;
|
|
136
169
|
const finish = (raw) => {
|
|
137
|
-
|
|
170
|
+
// Only the compatibility overload admits exact-content settlement and it requires the
|
|
171
|
+
// original full OperationIntent/Outcome contract. Explicit starts never use those fields.
|
|
172
|
+
const outcome = options.settlement === "recorded-only" ? raw : settleAgainstIntent(raw, intent);
|
|
138
173
|
return { intent: { ...intent, attempts, state: stateForOutcome(outcome) }, outcome, lookups };
|
|
139
174
|
};
|
|
140
175
|
// A previously submitted intent starts at the lookup, never at a submission.
|
|
141
|
-
let needSubmission = attempts === 0;
|
|
176
|
+
let needSubmission = explicitStart ? options.start === "submit-claimed" : attempts === 0;
|
|
142
177
|
for (;;) {
|
|
143
178
|
if (needSubmission) {
|
|
144
|
-
if (submissions >= maxSubmissions)
|
|
179
|
+
if (submissions >= maxSubmissions || ((explicitStart || submissions > 0) && signal?.aborted))
|
|
145
180
|
return finish(UNKNOWN);
|
|
146
181
|
submissions += 1;
|
|
147
|
-
|
|
182
|
+
if (!explicitStart)
|
|
183
|
+
attempts += 1;
|
|
148
184
|
const outcome = await submitOnce(transport, { ...intent, attempts, state: "in_flight" }, options.deadlineMs, sleep);
|
|
185
|
+
if (outcome.kind === "not-executed") {
|
|
186
|
+
if (!explicitStart || intent.notAppliedThrough === undefined || intent.notAppliedThrough !== attempts - 1 || outcome.attempts !== attempts || signal?.aborted)
|
|
187
|
+
return finish(UNKNOWN);
|
|
188
|
+
return finish(outcome);
|
|
189
|
+
}
|
|
190
|
+
// A resend refused before it reached execution (no credential, access withdrawn, a spent
|
|
191
|
+
// quota, a gateway's schema check) is evidence about that resend only: an earlier, unclear delivery may still be held
|
|
192
|
+
// by the authority and commit, so the identity stays unknown and the intent is kept.
|
|
193
|
+
if (unclear && refusalLeavesUnknown(outcome, held))
|
|
194
|
+
return finish(explicitStart ? UNKNOWN : { kind: "unknown", refusal: { code: outcome.code, message: outcome.message } });
|
|
149
195
|
if (outcome.kind !== "unknown")
|
|
150
196
|
return finish(outcome);
|
|
197
|
+
unclear = true;
|
|
151
198
|
}
|
|
152
199
|
needSubmission = false;
|
|
153
200
|
let recorded;
|
|
154
201
|
for (let round = 0; round < maxLookups; round++) {
|
|
202
|
+
if (signal?.aborted)
|
|
203
|
+
break;
|
|
155
204
|
if (round > 0)
|
|
156
|
-
await sleep(lookupDelayMs);
|
|
205
|
+
await sleep(lookupDelayMs, signal);
|
|
206
|
+
if (signal?.aborted)
|
|
207
|
+
break;
|
|
157
208
|
lookups += 1;
|
|
158
209
|
try {
|
|
159
210
|
recorded = await transport.lookup(intent.requestId);
|
|
@@ -166,8 +217,16 @@ export async function performUncertainWrite(transport, intent, options = {}) {
|
|
|
166
217
|
}
|
|
167
218
|
if (recorded === undefined)
|
|
168
219
|
return finish(UNKNOWN);
|
|
220
|
+
if (recorded !== null && recorded.kind === "pending") {
|
|
221
|
+
// Held unanswered: a delivery of this identity was admitted and may still commit.
|
|
222
|
+
unclear = true;
|
|
223
|
+
held = true;
|
|
224
|
+
recorded = null;
|
|
225
|
+
}
|
|
169
226
|
if (recorded !== null)
|
|
170
|
-
return finish(recorded);
|
|
227
|
+
return finish(recorded.kind === "not-executed" ? UNKNOWN : recorded);
|
|
228
|
+
if (explicitStart)
|
|
229
|
+
return finish(UNKNOWN);
|
|
171
230
|
needSubmission = true;
|
|
172
231
|
}
|
|
173
232
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uncertain-write.js","sourceRoot":"","sources":["../src/uncertain-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"uncertain-write.js","sourceRoot":"","sources":["../src/uncertain-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsFH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAkB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAwFhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC;IACtE,eAAe;IACf,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,4BAA4B;IAC5B,yBAAyB;CAC1B,CAAC,CAAC;AAEH,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB,CAAC,OAAuC;IAC5E,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,OAA6B,EAAE,IAAa;IACxE,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAK,OAAkC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC;AACjJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,OAAuC;IACrE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,cAAc,CAAC;QACxB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,qBAAqB,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAI,UAAyD,CAAC,MAAM,CAAC;IACpF,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;IAC3F,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,YAAY,GAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACzC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;IAC5B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,OAAO;QACd,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEL,MAAM,OAAO,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,MAAuB;IAC3E,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9F,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,UAAU,CAAgE,SAAuD,EAAE,MAAS,EAAE,UAA8B,EAAE,KAAY;IACvM,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC1E,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,OAAO,EAAE,CAAC,EAClD,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACrD,CAAC;IACF,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,OAAO,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,OAAO,OAAO,CAAC;AACjB,CAAC;AA2CD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAmL,EACnL,MAA2B,EAC3B,UAA2E,EAAE;IAE7E,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC;IACzC,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,UAAU,KAAK,eAAe,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;YAC5G,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC;YAC7D,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAClG,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC7K,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACzV,0FAA0F;QAC1F,2FAA2F;QAC3F,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACvB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,eAAe,IAAI,OAAO,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;QACzH,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC;IACnD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,uFAAuF;IACvF,IAAI,OAAO,GAAG,OAAO,CAAC,sBAAsB,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC7E,6FAA6F;IAC7F,2DAA2D;IAC3D,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,MAAM,GAAG,CAAC,GAAyB,EAAkE,EAAE;QAC3G,sFAAsF;QACtF,0FAA0F;QAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAc,EAAE,MAAyB,CAAC,CAAC;QAC9H,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAChG,CAAC,CAAC;IAEF,6EAA6E;IAC7E,IAAI,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC;IACzF,SAAS,CAAC;QACR,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,WAAW,IAAI,cAAc,IAAI,CAAC,CAAC,aAAa,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,OAAO,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACrH,WAAW,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,aAAa;gBAAE,QAAQ,IAAI,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACpH,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,EAAE,OAAO;oBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtL,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,yFAAyF;YACzF,sHAAsH;YACtH,qFAAqF;YACrF,IAAI,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC;gBAChD,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAqB,CAAC,CAAC;YAC9I,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,cAAc,GAAG,KAAK,CAAC;QACvB,IAAI,QAAiE,CAAC;QACtE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM;YAC3B,IAAI,KAAK,GAAG,CAAC;gBAAE,MAAM,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM;YAC3B,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,SAAS,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,MAAM;QACR,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrD,kFAAkF;YAClF,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,IAAI,CAAC;YACZ,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5F,IAAI,aAAa;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;AACH,CAAC"}
|