@origintrail-official/dkg-agent 10.0.19 → 10.0.21
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/dist/approved-private-replica.d.ts +54 -0
- package/dist/approved-private-replica.d.ts.map +1 -0
- package/dist/approved-private-replica.js +148 -0
- package/dist/approved-private-replica.js.map +1 -0
- package/dist/bounded-operation.d.ts +2 -0
- package/dist/bounded-operation.d.ts.map +1 -1
- package/dist/bounded-operation.js +5 -0
- package/dist/bounded-operation.js.map +1 -1
- package/dist/chain-finality-confirmations-v1.d.ts +7 -0
- package/dist/chain-finality-confirmations-v1.d.ts.map +1 -0
- package/dist/chain-finality-confirmations-v1.js +9 -0
- package/dist/chain-finality-confirmations-v1.js.map +1 -0
- package/dist/chain-reconciler.d.ts +23 -0
- package/dist/chain-reconciler.d.ts.map +1 -1
- package/dist/chain-reconciler.js +35 -0
- package/dist/chain-reconciler.js.map +1 -1
- package/dist/confirmed-graph-scoped-vm-resolver.d.ts +7 -1
- package/dist/confirmed-graph-scoped-vm-resolver.d.ts.map +1 -1
- package/dist/confirmed-graph-scoped-vm-resolver.js +5 -3
- package/dist/confirmed-graph-scoped-vm-resolver.js.map +1 -1
- package/dist/context-graph-authority-dependency.d.ts +11 -0
- package/dist/context-graph-authority-dependency.d.ts.map +1 -0
- package/dist/context-graph-authority-dependency.js +50 -0
- package/dist/context-graph-authority-dependency.js.map +1 -0
- package/dist/context-graph-binding-state.d.ts +6 -0
- package/dist/context-graph-binding-state.d.ts.map +1 -1
- package/dist/context-graph-binding-state.js +17 -10
- package/dist/context-graph-binding-state.js.map +1 -1
- package/dist/context-graph-claim-proof.d.ts +74 -0
- package/dist/context-graph-claim-proof.d.ts.map +1 -0
- package/dist/context-graph-claim-proof.js +137 -0
- package/dist/context-graph-claim-proof.js.map +1 -0
- package/dist/context-graph-member-proof.d.ts +33 -0
- package/dist/context-graph-member-proof.d.ts.map +1 -0
- package/dist/context-graph-member-proof.js +142 -0
- package/dist/context-graph-member-proof.js.map +1 -0
- package/dist/context-graph-membership-persist-scheduler.d.ts +7 -23
- package/dist/context-graph-membership-persist-scheduler.d.ts.map +1 -1
- package/dist/context-graph-membership-persist-scheduler.js +12 -88
- package/dist/context-graph-membership-persist-scheduler.js.map +1 -1
- package/dist/context-graph-meta-confirmation.d.ts +22 -2
- package/dist/context-graph-meta-confirmation.d.ts.map +1 -1
- package/dist/context-graph-meta-confirmation.js +54 -23
- package/dist/context-graph-meta-confirmation.js.map +1 -1
- package/dist/context-graph-meta-projection.d.ts +13 -2
- package/dist/context-graph-meta-projection.d.ts.map +1 -1
- package/dist/context-graph-meta-projection.js +61 -24
- package/dist/context-graph-meta-projection.js.map +1 -1
- package/dist/context-graph-metadata-relocation.d.ts +18 -30
- package/dist/context-graph-metadata-relocation.d.ts.map +1 -1
- package/dist/context-graph-metadata-relocation.js +32 -2
- package/dist/context-graph-metadata-relocation.js.map +1 -1
- package/dist/context-graph-private-meta-proof.d.ts +8 -9
- package/dist/context-graph-private-meta-proof.d.ts.map +1 -1
- package/dist/context-graph-private-meta-proof.js +25 -89
- package/dist/context-graph-private-meta-proof.js.map +1 -1
- package/dist/context-graph-public-meta-proof.d.ts +11 -1
- package/dist/context-graph-public-meta-proof.d.ts.map +1 -1
- package/dist/context-graph-public-meta-proof.js +23 -3
- package/dist/context-graph-public-meta-proof.js.map +1 -1
- package/dist/context-graph-read-authority.d.ts +30 -3
- package/dist/context-graph-read-authority.d.ts.map +1 -1
- package/dist/context-graph-read-authority.js +62 -18
- package/dist/context-graph-read-authority.js.map +1 -1
- package/dist/context-graph-storage-discovery.d.ts +14 -4
- package/dist/context-graph-storage-discovery.d.ts.map +1 -1
- package/dist/context-graph-storage-discovery.js +27 -7
- package/dist/context-graph-storage-discovery.js.map +1 -1
- package/dist/context-graph-subscription-authority-recovery.d.ts +7 -0
- package/dist/context-graph-subscription-authority-recovery.d.ts.map +1 -1
- package/dist/context-graph-subscription-authority-recovery.js +1 -0
- package/dist/context-graph-subscription-authority-recovery.js.map +1 -1
- package/dist/context-graph-subscription-persist-scheduler.d.ts +52 -0
- package/dist/context-graph-subscription-persist-scheduler.d.ts.map +1 -0
- package/dist/context-graph-subscription-persist-scheduler.js +78 -0
- package/dist/context-graph-subscription-persist-scheduler.js.map +1 -0
- package/dist/curator-dial-address.d.ts +16 -0
- package/dist/curator-dial-address.d.ts.map +1 -0
- package/dist/curator-dial-address.js +58 -0
- package/dist/curator-dial-address.js.map +1 -0
- package/dist/curator-meta-refresh.d.ts +18 -4
- package/dist/curator-meta-refresh.d.ts.map +1 -1
- package/dist/curator-meta-refresh.js +61 -58
- package/dist/curator-meta-refresh.js.map +1 -1
- package/dist/curator-peer-connection.d.ts +21 -0
- package/dist/curator-peer-connection.d.ts.map +1 -0
- package/dist/curator-peer-connection.js +41 -0
- package/dist/curator-peer-connection.js.map +1 -0
- package/dist/dkg-agent-agents-phonebook.d.ts +41 -0
- package/dist/dkg-agent-agents-phonebook.d.ts.map +1 -0
- package/dist/dkg-agent-agents-phonebook.js +155 -0
- package/dist/dkg-agent-agents-phonebook.js.map +1 -0
- package/dist/dkg-agent-base.d.ts +162 -24
- package/dist/dkg-agent-base.d.ts.map +1 -1
- package/dist/dkg-agent-base.js +175 -147
- package/dist/dkg-agent-base.js.map +1 -1
- package/dist/dkg-agent-cg-chain-observation.d.ts +6 -1
- package/dist/dkg-agent-cg-chain-observation.d.ts.map +1 -1
- package/dist/dkg-agent-cg-chain-observation.js +20 -5
- package/dist/dkg-agent-cg-chain-observation.js.map +1 -1
- package/dist/dkg-agent-cg-name-resolution.d.ts +38 -2
- package/dist/dkg-agent-cg-name-resolution.d.ts.map +1 -1
- package/dist/dkg-agent-cg-name-resolution.js +100 -8
- package/dist/dkg-agent-cg-name-resolution.js.map +1 -1
- package/dist/dkg-agent-cg-registry.d.ts +43 -3
- package/dist/dkg-agent-cg-registry.d.ts.map +1 -1
- package/dist/dkg-agent-cg-registry.js +267 -129
- package/dist/dkg-agent-cg-registry.js.map +1 -1
- package/dist/dkg-agent-cg-resolve.d.ts +6 -4
- package/dist/dkg-agent-cg-resolve.d.ts.map +1 -1
- package/dist/dkg-agent-cg-resolve.js +40 -18
- package/dist/dkg-agent-cg-resolve.js.map +1 -1
- package/dist/dkg-agent-constants.d.ts +10 -2
- package/dist/dkg-agent-constants.d.ts.map +1 -1
- package/dist/dkg-agent-constants.js +10 -2
- package/dist/dkg-agent-constants.js.map +1 -1
- package/dist/dkg-agent-context-graph.d.ts.map +1 -1
- package/dist/dkg-agent-context-graph.js +1 -5
- package/dist/dkg-agent-context-graph.js.map +1 -1
- package/dist/dkg-agent-crypto.d.ts +128 -21
- package/dist/dkg-agent-crypto.d.ts.map +1 -1
- package/dist/dkg-agent-crypto.js +824 -176
- package/dist/dkg-agent-crypto.js.map +1 -1
- package/dist/dkg-agent-diagnostics.d.ts.map +1 -1
- package/dist/dkg-agent-diagnostics.js +4 -3
- package/dist/dkg-agent-diagnostics.js.map +1 -1
- package/dist/dkg-agent-helpers.d.ts +2 -2
- package/dist/dkg-agent-helpers.d.ts.map +1 -1
- package/dist/dkg-agent-helpers.js +3 -3
- package/dist/dkg-agent-helpers.js.map +1 -1
- package/dist/dkg-agent-join.d.ts +12 -1
- package/dist/dkg-agent-join.d.ts.map +1 -1
- package/dist/dkg-agent-join.js +80 -92
- package/dist/dkg-agent-join.js.map +1 -1
- package/dist/dkg-agent-lifecycle.d.ts +129 -22
- package/dist/dkg-agent-lifecycle.d.ts.map +1 -1
- package/dist/dkg-agent-lifecycle.js +690 -211
- package/dist/dkg-agent-lifecycle.js.map +1 -1
- package/dist/dkg-agent-publish.d.ts +33 -40
- package/dist/dkg-agent-publish.d.ts.map +1 -1
- package/dist/dkg-agent-publish.js +194 -281
- package/dist/dkg-agent-publish.js.map +1 -1
- package/dist/dkg-agent-query.d.ts +7 -0
- package/dist/dkg-agent-query.d.ts.map +1 -1
- package/dist/dkg-agent-query.js +102 -86
- package/dist/dkg-agent-query.js.map +1 -1
- package/dist/dkg-agent-registered-private-empty-vm.d.ts +70 -0
- package/dist/dkg-agent-registered-private-empty-vm.d.ts.map +1 -0
- package/dist/dkg-agent-registered-private-empty-vm.js +133 -0
- package/dist/dkg-agent-registered-private-empty-vm.js.map +1 -0
- package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts +8 -3
- package/dist/dkg-agent-rfc64-catalog-auto-publish.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog-auto-publish.js +45 -51
- package/dist/dkg-agent-rfc64-catalog-auto-publish.js.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.d.ts +87 -80
- package/dist/dkg-agent-rfc64-catalog.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.js +726 -476
- package/dist/dkg-agent-rfc64-catalog.js.map +1 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts +6 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.js +29 -13
- package/dist/dkg-agent-rfc64-meta-bootstrap.js.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.d.ts +8 -0
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.js +249 -40
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.js.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection.js +3 -2
- package/dist/dkg-agent-rfc64-swm-catalog-projection.js.map +1 -1
- package/dist/dkg-agent-swm-host.d.ts +217 -52
- package/dist/dkg-agent-swm-host.d.ts.map +1 -1
- package/dist/dkg-agent-swm-host.js +1305 -858
- package/dist/dkg-agent-swm-host.js.map +1 -1
- package/dist/dkg-agent-swm-state.d.ts +15 -0
- package/dist/dkg-agent-swm-state.d.ts.map +1 -1
- package/dist/dkg-agent-swm-state.js +43 -0
- package/dist/dkg-agent-swm-state.js.map +1 -1
- package/dist/dkg-agent-swm-substrate.d.ts +49 -8
- package/dist/dkg-agent-swm-substrate.d.ts.map +1 -1
- package/dist/dkg-agent-swm-substrate.js +219 -46
- package/dist/dkg-agent-swm-substrate.js.map +1 -1
- package/dist/dkg-agent-types.d.ts +86 -27
- package/dist/dkg-agent-types.d.ts.map +1 -1
- package/dist/dkg-agent-types.js.map +1 -1
- package/dist/dkg-agent-vm-promotion.d.ts +4 -0
- package/dist/dkg-agent-vm-promotion.d.ts.map +1 -1
- package/dist/dkg-agent-vm-promotion.js +40 -5
- package/dist/dkg-agent-vm-promotion.js.map +1 -1
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts +7 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts.map +1 -1
- package/dist/dkg-agent-vm-reconcile-scheduling.js +18 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.js.map +1 -1
- package/dist/dkg-agent.d.ts +31 -2
- package/dist/dkg-agent.d.ts.map +1 -1
- package/dist/dkg-agent.js +188 -72
- package/dist/dkg-agent.js.map +1 -1
- package/dist/exact-graph-content-verifier.d.ts.map +1 -1
- package/dist/exact-graph-content-verifier.js +3 -2
- package/dist/exact-graph-content-verifier.js.map +1 -1
- package/dist/finalization-handler.d.ts +26 -211
- package/dist/finalization-handler.d.ts.map +1 -1
- package/dist/finalization-handler.js +94 -1652
- package/dist/finalization-handler.js.map +1 -1
- package/dist/finalization-recovery-sqlite-displacement.d.ts +37 -0
- package/dist/finalization-recovery-sqlite-displacement.d.ts.map +1 -0
- package/dist/finalization-recovery-sqlite-displacement.js +102 -0
- package/dist/finalization-recovery-sqlite-displacement.js.map +1 -0
- package/dist/finalization-recovery-sqlite-policy.d.ts +20 -4
- package/dist/finalization-recovery-sqlite-policy.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-policy.js +21 -5
- package/dist/finalization-recovery-sqlite-policy.js.map +1 -1
- package/dist/finalization-recovery-sqlite-rows.d.ts +53 -0
- package/dist/finalization-recovery-sqlite-rows.d.ts.map +1 -0
- package/dist/finalization-recovery-sqlite-rows.js +77 -0
- package/dist/finalization-recovery-sqlite-rows.js.map +1 -0
- package/dist/finalization-recovery-sqlite-store.d.ts +10 -4
- package/dist/finalization-recovery-sqlite-store.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-store.js +49 -50
- package/dist/finalization-recovery-sqlite-store.js.map +1 -1
- package/dist/finalization-recovery-store.d.ts +18 -0
- package/dist/finalization-recovery-store.d.ts.map +1 -1
- package/dist/finalization-recovery-store.js +24 -0
- package/dist/finalization-recovery-store.js.map +1 -1
- package/dist/finalization-recovery-worker.js +1 -1
- package/dist/finalization-recovery-worker.js.map +1 -1
- package/dist/finalization-recovery.d.ts +2 -3
- package/dist/finalization-recovery.d.ts.map +1 -1
- package/dist/finalization-recovery.js +12 -9
- package/dist/finalization-recovery.js.map +1 -1
- package/dist/finalized-authority-cold-resolution.d.ts +6 -1
- package/dist/finalized-authority-cold-resolution.d.ts.map +1 -1
- package/dist/finalized-authority-cold-resolution.js +22 -3
- package/dist/finalized-authority-cold-resolution.js.map +1 -1
- package/dist/gossip-publish-handler.d.ts.map +1 -1
- package/dist/gossip-publish-handler.js +4 -2
- package/dist/gossip-publish-handler.js.map +1 -1
- package/dist/gossip-session.d.ts +29 -0
- package/dist/gossip-session.d.ts.map +1 -0
- package/dist/gossip-session.js +48 -0
- package/dist/gossip-session.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/context-graph-authority/approved-member-acceptance.d.ts +61 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.js +75 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.js.map +1 -0
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts +5 -5
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.d.ts.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js +59 -49
- package/dist/internal/context-graph-authority/context-graph-agent-gate-authority.js.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-authority.d.ts +1 -0
- package/dist/internal/context-graph-authority/context-graph-authority.d.ts.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-authority.js +25 -0
- package/dist/internal/context-graph-authority/context-graph-authority.js.map +1 -1
- package/dist/internal/context-graph-authority/finalized-target-projection.d.ts +17 -0
- package/dist/internal/context-graph-authority/finalized-target-projection.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/finalized-target-projection.js +36 -0
- package/dist/internal/context-graph-authority/finalized-target-projection.js.map +1 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.d.ts +84 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.js +175 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.js.map +1 -0
- package/dist/internal/context-graph-binding-abort.d.ts +3 -0
- package/dist/internal/context-graph-binding-abort.d.ts.map +1 -0
- package/dist/internal/context-graph-binding-abort.js +32 -0
- package/dist/internal/context-graph-binding-abort.js.map +1 -0
- package/dist/internal/context-graph-cache-invalidating-store.d.ts +3 -0
- package/dist/internal/context-graph-cache-invalidating-store.d.ts.map +1 -0
- package/dist/internal/context-graph-cache-invalidating-store.js +167 -0
- package/dist/internal/context-graph-cache-invalidating-store.js.map +1 -0
- package/dist/internal/context-graph-meta-record-copy.d.ts +3 -0
- package/dist/internal/context-graph-meta-record-copy.d.ts.map +1 -0
- package/dist/internal/context-graph-meta-record-copy.js +21 -0
- package/dist/internal/context-graph-meta-record-copy.js.map +1 -0
- package/dist/internal/gossip/host-mode-handler.d.ts +11 -0
- package/dist/internal/gossip/host-mode-handler.d.ts.map +1 -0
- package/dist/internal/gossip/host-mode-handler.js +41 -0
- package/dist/internal/gossip/host-mode-handler.js.map +1 -0
- package/dist/internal/join-encryption-key-bundle.d.ts +10 -0
- package/dist/internal/join-encryption-key-bundle.d.ts.map +1 -0
- package/dist/internal/join-encryption-key-bundle.js +72 -0
- package/dist/internal/join-encryption-key-bundle.js.map +1 -0
- package/dist/internal/knowledge-asset-vm-publish-request.d.ts +31 -0
- package/dist/internal/knowledge-asset-vm-publish-request.d.ts.map +1 -0
- package/dist/internal/knowledge-asset-vm-publish-request.js +91 -0
- package/dist/internal/knowledge-asset-vm-publish-request.js.map +1 -0
- package/dist/internal/lifecycle-sync-policy.d.ts +5 -0
- package/dist/internal/lifecycle-sync-policy.d.ts.map +1 -0
- package/dist/internal/lifecycle-sync-policy.js +12 -0
- package/dist/internal/lifecycle-sync-policy.js.map +1 -0
- package/dist/internal/local-private-member.d.ts +14 -0
- package/dist/internal/local-private-member.d.ts.map +1 -0
- package/dist/internal/local-private-member.js +21 -0
- package/dist/internal/local-private-member.js.map +1 -0
- package/dist/internal/promote/assertion-promote-precommit.d.ts +41 -1
- package/dist/internal/promote/assertion-promote-precommit.d.ts.map +1 -1
- package/dist/internal/promote/assertion-promote-precommit.js +79 -22
- package/dist/internal/promote/assertion-promote-precommit.js.map +1 -1
- package/dist/internal/storage-ack-owned-request.d.ts +16 -0
- package/dist/internal/storage-ack-owned-request.d.ts.map +1 -0
- package/dist/internal/storage-ack-owned-request.js +16 -0
- package/dist/internal/storage-ack-owned-request.js.map +1 -0
- package/dist/internal/vm-reconcile-local-admission-wait.d.ts +96 -0
- package/dist/internal/vm-reconcile-local-admission-wait.d.ts.map +1 -0
- package/dist/internal/vm-reconcile-local-admission-wait.js +226 -0
- package/dist/internal/vm-reconcile-local-admission-wait.js.map +1 -0
- package/dist/internal/vm-reconcile-read-authority.d.ts +27 -0
- package/dist/internal/vm-reconcile-read-authority.d.ts.map +1 -0
- package/dist/internal/vm-reconcile-read-authority.js +33 -0
- package/dist/internal/vm-reconcile-read-authority.js.map +1 -0
- package/dist/internal/vm-reconcile-sweep-admission.d.ts +2 -0
- package/dist/internal/vm-reconcile-sweep-admission.d.ts.map +1 -1
- package/dist/internal/vm-reconcile-sweep.d.ts +16 -4
- package/dist/internal/vm-reconcile-sweep.d.ts.map +1 -1
- package/dist/internal/vm-reconcile-sweep.js +91 -50
- package/dist/internal/vm-reconcile-sweep.js.map +1 -1
- package/dist/internal/workspace-projected-delegatees.d.ts +3 -0
- package/dist/internal/workspace-projected-delegatees.d.ts.map +1 -0
- package/dist/internal/workspace-projected-delegatees.js +34 -0
- package/dist/internal/workspace-projected-delegatees.js.map +1 -0
- package/dist/join-approval-restart-projection.d.ts +14 -0
- package/dist/join-approval-restart-projection.d.ts.map +1 -0
- package/dist/join-approval-restart-projection.js +32 -0
- package/dist/join-approval-restart-projection.js.map +1 -0
- package/dist/keyed-persist-scheduler.d.ts +72 -0
- package/dist/keyed-persist-scheduler.d.ts.map +1 -0
- package/dist/keyed-persist-scheduler.js +140 -0
- package/dist/keyed-persist-scheduler.js.map +1 -0
- package/dist/map-with-concurrency.d.ts +7 -0
- package/dist/map-with-concurrency.d.ts.map +1 -1
- package/dist/map-with-concurrency.js +36 -0
- package/dist/map-with-concurrency.js.map +1 -1
- package/dist/p2p/network-admission-coordinator.d.ts +15 -0
- package/dist/p2p/network-admission-coordinator.d.ts.map +1 -1
- package/dist/p2p/network-admission-coordinator.js +20 -2
- package/dist/p2p/network-admission-coordinator.js.map +1 -1
- package/dist/p2p/peer-connect.d.ts +10 -1
- package/dist/p2p/peer-connect.d.ts.map +1 -1
- package/dist/p2p/peer-connect.js +11 -2
- package/dist/p2p/peer-connect.js.map +1 -1
- package/dist/p2p/peer-selection.d.ts +8 -0
- package/dist/p2p/peer-selection.d.ts.map +1 -1
- package/dist/p2p/peer-selection.js +21 -12
- package/dist/p2p/peer-selection.js.map +1 -1
- package/dist/p2p/protocol-readiness.d.ts +3 -3
- package/dist/p2p/protocol-readiness.d.ts.map +1 -1
- package/dist/p2p/protocol-readiness.js +4 -3
- package/dist/p2p/protocol-readiness.js.map +1 -1
- package/dist/prepare-unscoped-context-graph-read-checks.d.ts.map +1 -1
- package/dist/prepare-unscoped-context-graph-read-checks.js +12 -0
- package/dist/prepare-unscoped-context-graph-read-checks.js.map +1 -1
- package/dist/registered-context-graph-authority.d.ts +19 -0
- package/dist/registered-context-graph-authority.d.ts.map +1 -1
- package/dist/registered-private-empty-vm-attempt-v1.d.ts +34 -0
- package/dist/registered-private-empty-vm-attempt-v1.d.ts.map +1 -0
- package/dist/registered-private-empty-vm-attempt-v1.js +120 -0
- package/dist/registered-private-empty-vm-attempt-v1.js.map +1 -0
- package/dist/reserved-ka-id-allocation.d.ts +12 -0
- package/dist/reserved-ka-id-allocation.d.ts.map +1 -0
- package/dist/reserved-ka-id-allocation.js +25 -0
- package/dist/reserved-ka-id-allocation.js.map +1 -0
- package/dist/rfc64/applied-catalog-authority-transition-v1.d.ts.map +1 -1
- package/dist/rfc64/applied-catalog-authority-transition-v1.js +15 -17
- package/dist/rfc64/applied-catalog-authority-transition-v1.js.map +1 -1
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts +5 -3
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.d.ts.map +1 -1
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.js +9 -0
- package/dist/rfc64/authority-rpc-circuit-breaker-v1.js.map +1 -1
- package/dist/rfc64/catalog-completion-evidence-v1.d.ts +38 -0
- package/dist/rfc64/catalog-completion-evidence-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-completion-evidence-v1.js +49 -0
- package/dist/rfc64/catalog-completion-evidence-v1.js.map +1 -0
- package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts +12 -13
- package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-operational-applied-heads-v1.js +17 -52
- package/dist/rfc64/catalog-operational-applied-heads-v1.js.map +1 -1
- package/dist/rfc64/catalog-operational-reads-v1.d.ts +13 -0
- package/dist/rfc64/catalog-operational-reads-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-operational-reads-v1.js +56 -0
- package/dist/rfc64/catalog-operational-reads-v1.js.map +1 -0
- package/dist/rfc64/catalog-operational-targets-v1.d.ts +55 -0
- package/dist/rfc64/catalog-operational-targets-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-operational-targets-v1.js +379 -0
- package/dist/rfc64/catalog-operational-targets-v1.js.map +1 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.d.ts +28 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.js +93 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.js.map +1 -0
- package/dist/rfc64/catalog-repair-retry-v1.d.ts +13 -0
- package/dist/rfc64/catalog-repair-retry-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-repair-retry-v1.js +39 -0
- package/dist/rfc64/catalog-repair-retry-v1.js.map +1 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts +52 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js +188 -32
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts +2 -8
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js +10 -37
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts +13 -0
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.js +11 -0
- package/dist/rfc64/catalog-rollout-authority-v1.js.map +1 -1
- package/dist/rfc64/catalog-row-authorship.d.ts +12 -0
- package/dist/rfc64/catalog-row-authorship.d.ts.map +1 -1
- package/dist/rfc64/catalog-row-authorship.js +110 -57
- package/dist/rfc64/catalog-row-authorship.js.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.d.ts +31 -10
- package/dist/rfc64/inventory-v1/candidate.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.js +51 -16
- package/dist/rfc64/inventory-v1/candidate.js.map +1 -1
- package/dist/rfc64/inventory-v1/index.d.ts +1 -1
- package/dist/rfc64/inventory-v1/index.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/index.js +1 -1
- package/dist/rfc64/inventory-v1/index.js.map +1 -1
- package/dist/rfc64/inventory-v1/open.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/open.js +7 -4
- package/dist/rfc64/inventory-v1/open.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.d.ts +3 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.js +15 -0
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.js.map +1 -1
- package/dist/rfc64/legacy-swm-boundary-codec-v1.d.ts +25 -0
- package/dist/rfc64/legacy-swm-boundary-codec-v1.d.ts.map +1 -0
- package/dist/rfc64/legacy-swm-boundary-codec-v1.js +127 -0
- package/dist/rfc64/legacy-swm-boundary-codec-v1.js.map +1 -0
- package/dist/rfc64/legacy-swm-boundary-v1.d.ts +12 -0
- package/dist/rfc64/legacy-swm-boundary-v1.d.ts.map +1 -1
- package/dist/rfc64/legacy-swm-boundary-v1.js +83 -144
- package/dist/rfc64/legacy-swm-boundary-v1.js.map +1 -1
- package/dist/rfc64/private-catalog-subscription-readiness-v1.d.ts +33 -0
- package/dist/rfc64/private-catalog-subscription-readiness-v1.d.ts.map +1 -0
- package/dist/rfc64/private-catalog-subscription-readiness-v1.js +97 -0
- package/dist/rfc64/private-catalog-subscription-readiness-v1.js.map +1 -0
- package/dist/rfc64/private-read-roster-v1.d.ts +14 -0
- package/dist/rfc64/private-read-roster-v1.d.ts.map +1 -0
- package/dist/rfc64/private-read-roster-v1.js +57 -0
- package/dist/rfc64/private-read-roster-v1.js.map +1 -0
- package/dist/rfc64/public-catalog-native-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-receiver-v1.js +26 -21
- package/dist/rfc64/public-catalog-native-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts +17 -11
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.js +10 -8
- package/dist/rfc64/public-catalog-native-reconciler-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.d.ts +9 -0
- package/dist/rfc64/public-catalog-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.js +11 -2
- package/dist/rfc64/public-catalog-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.js +21 -22
- package/dist/rfc64/public-catalog-service-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-successor-producer-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-successor-producer-v1.js +5 -4
- package/dist/rfc64/public-catalog-successor-producer-v1.js.map +1 -1
- package/dist/rfc64/registered-private-empty-vm-proof-v1.d.ts +20 -0
- package/dist/rfc64/registered-private-empty-vm-proof-v1.d.ts.map +1 -0
- package/dist/rfc64/registered-private-empty-vm-proof-v1.js +26 -0
- package/dist/rfc64/registered-private-empty-vm-proof-v1.js.map +1 -0
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js +60 -53
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js.map +1 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.d.ts +2 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.js +44 -4
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.js.map +1 -1
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts +3 -1
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.js +34 -0
- package/dist/rfc64/swm-inventory-shadow-runtime-v1.js.map +1 -1
- package/dist/sync/auth/pipe-request-tail.d.ts +5 -1
- package/dist/sync/auth/pipe-request-tail.d.ts.map +1 -1
- package/dist/sync/auth/pipe-request-tail.js +13 -3
- package/dist/sync/auth/pipe-request-tail.js.map +1 -1
- package/dist/sync/auth/request-build.d.ts +3 -0
- package/dist/sync/auth/request-build.d.ts.map +1 -1
- package/dist/sync/auth/request-build.js +11 -2
- package/dist/sync/auth/request-build.js.map +1 -1
- package/dist/sync/backpressure.d.ts +27 -16
- package/dist/sync/backpressure.d.ts.map +1 -1
- package/dist/sync/backpressure.js +66 -40
- package/dist/sync/backpressure.js.map +1 -1
- package/dist/sync/catchup-policy.d.ts +2 -0
- package/dist/sync/catchup-policy.d.ts.map +1 -1
- package/dist/sync/catchup-policy.js +2 -0
- package/dist/sync/catchup-policy.js.map +1 -1
- package/dist/sync/exact-asset-fetch.d.ts +22 -0
- package/dist/sync/exact-asset-fetch.d.ts.map +1 -1
- package/dist/sync/exact-asset-fetch.js +30 -3
- package/dist/sync/exact-asset-fetch.js.map +1 -1
- package/dist/sync/exact-assets.d.ts +7 -5
- package/dist/sync/exact-assets.d.ts.map +1 -1
- package/dist/sync/exact-assets.js +13 -8
- package/dist/sync/exact-assets.js.map +1 -1
- package/dist/sync/exact-batch-observation.d.ts +3 -0
- package/dist/sync/exact-batch-observation.d.ts.map +1 -0
- package/dist/sync/exact-batch-observation.js +13 -0
- package/dist/sync/exact-batch-observation.js.map +1 -0
- package/dist/sync/exact-batch-stream-capability.d.ts +24 -0
- package/dist/sync/exact-batch-stream-capability.d.ts.map +1 -0
- package/dist/sync/exact-batch-stream-capability.js +88 -0
- package/dist/sync/exact-batch-stream-capability.js.map +1 -0
- package/dist/sync/exact-batch-stream-contract.d.ts +78 -0
- package/dist/sync/exact-batch-stream-contract.d.ts.map +1 -0
- package/dist/sync/exact-batch-stream-contract.js +206 -0
- package/dist/sync/exact-batch-stream-contract.js.map +1 -0
- package/dist/sync/on-connect/sync-on-connect.d.ts +1 -1
- package/dist/sync/on-connect/sync-on-connect.d.ts.map +1 -1
- package/dist/sync/on-connect/sync-on-connect.js +3 -3
- package/dist/sync/on-connect/sync-on-connect.js.map +1 -1
- package/dist/sync/on-demand-agents-phonebook.d.ts +162 -0
- package/dist/sync/on-demand-agents-phonebook.d.ts.map +1 -0
- package/dist/sync/on-demand-agents-phonebook.js +571 -0
- package/dist/sync/on-demand-agents-phonebook.js.map +1 -0
- package/dist/sync/peer-connection.d.ts.map +1 -1
- package/dist/sync/peer-connection.js +11 -2
- package/dist/sync/peer-connection.js.map +1 -1
- package/dist/sync/priority-admission-queue.d.ts +17 -0
- package/dist/sync/priority-admission-queue.d.ts.map +1 -1
- package/dist/sync/priority-admission-queue.js +58 -37
- package/dist/sync/priority-admission-queue.js.map +1 -1
- package/dist/sync/requester/admission-boundary.d.ts +12 -0
- package/dist/sync/requester/admission-boundary.d.ts.map +1 -0
- package/dist/sync/requester/admission-boundary.js +22 -0
- package/dist/sync/requester/admission-boundary.js.map +1 -0
- package/dist/sync/requester/durable-sync.d.ts +2 -1
- package/dist/sync/requester/durable-sync.d.ts.map +1 -1
- package/dist/sync/requester/durable-sync.js +3 -188
- package/dist/sync/requester/durable-sync.js.map +1 -1
- package/dist/sync/requester/exact-batch-stream-driver.d.ts +83 -0
- package/dist/sync/requester/exact-batch-stream-driver.d.ts.map +1 -0
- package/dist/sync/requester/exact-batch-stream-driver.js +299 -0
- package/dist/sync/requester/exact-batch-stream-driver.js.map +1 -0
- package/dist/sync/requester/exact-batch-stream.d.ts +72 -0
- package/dist/sync/requester/exact-batch-stream.d.ts.map +1 -0
- package/dist/sync/requester/exact-batch-stream.js +267 -0
- package/dist/sync/requester/exact-batch-stream.js.map +1 -0
- package/dist/sync/requester/exact-recovery-transport.d.ts +19 -0
- package/dist/sync/requester/exact-recovery-transport.d.ts.map +1 -0
- package/dist/sync/requester/exact-recovery-transport.js +3 -0
- package/dist/sync/requester/exact-recovery-transport.js.map +1 -0
- package/dist/sync/requester/finalized-swm-twin-reconciliation.js +12 -3
- package/dist/sync/requester/finalized-swm-twin-reconciliation.js.map +1 -1
- package/dist/sync/requester/graph-scoped-materialization.d.ts.map +1 -1
- package/dist/sync/requester/graph-scoped-materialization.js +61 -27
- package/dist/sync/requester/graph-scoped-materialization.js.map +1 -1
- package/dist/sync/requester/page-fetch.d.ts +7 -0
- package/dist/sync/requester/page-fetch.d.ts.map +1 -1
- package/dist/sync/requester/page-fetch.js +103 -49
- package/dist/sync/requester/page-fetch.js.map +1 -1
- package/dist/sync/requester/shared-memory-sync.d.ts +10 -5
- package/dist/sync/requester/shared-memory-sync.d.ts.map +1 -1
- package/dist/sync/requester/shared-memory-sync.js +149 -150
- package/dist/sync/requester/shared-memory-sync.js.map +1 -1
- package/dist/sync/requester/swm-materialization-memo.d.ts +12 -0
- package/dist/sync/requester/swm-materialization-memo.d.ts.map +1 -0
- package/dist/sync/requester/swm-materialization-memo.js +54 -0
- package/dist/sync/requester/swm-materialization-memo.js.map +1 -0
- package/dist/sync/requester/swm-recovery.d.ts +3 -29
- package/dist/sync/requester/swm-recovery.d.ts.map +1 -1
- package/dist/sync/requester/swm-recovery.js +11 -10
- package/dist/sync/requester/swm-recovery.js.map +1 -1
- package/dist/sync/requester/swm-snapshot-materializer.d.ts.map +1 -1
- package/dist/sync/requester/swm-snapshot-materializer.js +18 -0
- package/dist/sync/requester/swm-snapshot-materializer.js.map +1 -1
- package/dist/sync/requester/swm-target-executor.d.ts +6 -0
- package/dist/sync/requester/swm-target-executor.d.ts.map +1 -1
- package/dist/sync/requester/swm-target-executor.js +24 -3
- package/dist/sync/requester/swm-target-executor.js.map +1 -1
- package/dist/sync/requester/verified-asset-preparation.d.ts +9 -0
- package/dist/sync/requester/verified-asset-preparation.d.ts.map +1 -0
- package/dist/sync/requester/verified-asset-preparation.js +190 -0
- package/dist/sync/requester/verified-asset-preparation.js.map +1 -0
- package/dist/sync/responder/asset-metadata.d.ts +18 -0
- package/dist/sync/responder/asset-metadata.d.ts.map +1 -0
- package/dist/sync/responder/asset-metadata.js +27 -0
- package/dist/sync/responder/asset-metadata.js.map +1 -0
- package/dist/sync/responder/durable-data-request-policy.d.ts +2 -16
- package/dist/sync/responder/durable-data-request-policy.d.ts.map +1 -1
- package/dist/sync/responder/durable-data-request-policy.js +1 -31
- package/dist/sync/responder/durable-data-request-policy.js.map +1 -1
- package/dist/sync/responder/exact-asset-export-cache.d.ts +89 -0
- package/dist/sync/responder/exact-asset-export-cache.d.ts.map +1 -0
- package/dist/sync/responder/exact-asset-export-cache.js +550 -0
- package/dist/sync/responder/exact-asset-export-cache.js.map +1 -0
- package/dist/sync/responder/exact-batch-stream.d.ts +47 -0
- package/dist/sync/responder/exact-batch-stream.d.ts.map +1 -0
- package/dist/sync/responder/exact-batch-stream.js +151 -0
- package/dist/sync/responder/exact-batch-stream.js.map +1 -0
- package/dist/sync/responder/exact-data-session.d.ts +67 -0
- package/dist/sync/responder/exact-data-session.d.ts.map +1 -0
- package/dist/sync/responder/exact-data-session.js +130 -0
- package/dist/sync/responder/exact-data-session.js.map +1 -0
- package/dist/sync/responder/exact-graph-cursor-filter.d.ts +9 -0
- package/dist/sync/responder/exact-graph-cursor-filter.d.ts.map +1 -0
- package/dist/sync/responder/exact-graph-cursor-filter.js +101 -0
- package/dist/sync/responder/exact-graph-cursor-filter.js.map +1 -0
- package/dist/sync/responder/exact-graph-reader.d.ts +95 -0
- package/dist/sync/responder/exact-graph-reader.d.ts.map +1 -0
- package/dist/sync/responder/exact-graph-reader.js +623 -0
- package/dist/sync/responder/exact-graph-reader.js.map +1 -0
- package/dist/sync/responder/exact-page-reader.d.ts +37 -0
- package/dist/sync/responder/exact-page-reader.d.ts.map +1 -0
- package/dist/sync/responder/exact-page-reader.js +130 -0
- package/dist/sync/responder/exact-page-reader.js.map +1 -0
- package/dist/sync/responder/graph-plan.d.ts +19 -85
- package/dist/sync/responder/graph-plan.d.ts.map +1 -1
- package/dist/sync/responder/graph-plan.js +51 -988
- package/dist/sync/responder/graph-plan.js.map +1 -1
- package/dist/sync/responder/page-framing-policy.d.ts +31 -0
- package/dist/sync/responder/page-framing-policy.d.ts.map +1 -0
- package/dist/sync/responder/page-framing-policy.js +41 -0
- package/dist/sync/responder/page-framing-policy.js.map +1 -0
- package/dist/sync/responder/responder-row-page.d.ts +85 -0
- package/dist/sync/responder/responder-row-page.d.ts.map +1 -0
- package/dist/sync/responder/responder-row-page.js +181 -0
- package/dist/sync/responder/responder-row-page.js.map +1 -0
- package/dist/sync/responder/row-serialization.d.ts +34 -0
- package/dist/sync/responder/row-serialization.d.ts.map +1 -0
- package/dist/sync/responder/row-serialization.js +69 -0
- package/dist/sync/responder/row-serialization.js.map +1 -0
- package/dist/sync/responder/session-plan-memo.d.ts +20 -0
- package/dist/sync/responder/session-plan-memo.d.ts.map +1 -0
- package/dist/sync/responder/session-plan-memo.js +135 -0
- package/dist/sync/responder/session-plan-memo.js.map +1 -0
- package/dist/sync/responder/sync-handler.d.ts +26 -1
- package/dist/sync/responder/sync-handler.d.ts.map +1 -1
- package/dist/sync/responder/sync-handler.js +107 -58
- package/dist/sync/responder/sync-handler.js.map +1 -1
- package/dist/sync/shared-memory-completion.d.ts +30 -0
- package/dist/sync/shared-memory-completion.d.ts.map +1 -1
- package/dist/sync/shared-memory-completion.js +13 -0
- package/dist/sync/shared-memory-completion.js.map +1 -1
- package/dist/sync/system-context-graph-policy.d.ts +10 -0
- package/dist/sync/system-context-graph-policy.d.ts.map +1 -1
- package/dist/sync/system-context-graph-policy.js +11 -0
- package/dist/sync/system-context-graph-policy.js.map +1 -1
- package/dist/sync/wire-compression.d.ts +47 -0
- package/dist/sync/wire-compression.d.ts.map +1 -0
- package/dist/sync/wire-compression.js +111 -0
- package/dist/sync/wire-compression.js.map +1 -0
- package/dist/unscoped-query-consistency.d.ts +12 -0
- package/dist/unscoped-query-consistency.d.ts.map +1 -1
- package/dist/unscoped-query-consistency.js +17 -1
- package/dist/unscoped-query-consistency.js.map +1 -1
- package/dist/vm-promotion-audit.d.ts +2 -2
- package/dist/vm-promotion-audit.d.ts.map +1 -1
- package/dist/vm-promotion-audit.js +26 -9
- package/dist/vm-promotion-audit.js.map +1 -1
- package/dist/vm-publish-snapshot-preflight.d.ts +13 -0
- package/dist/vm-publish-snapshot-preflight.d.ts.map +1 -0
- package/dist/vm-publish-snapshot-preflight.js +94 -0
- package/dist/vm-publish-snapshot-preflight.js.map +1 -0
- package/dist/vm-reconcile-dispatcher.d.ts +42 -1
- package/dist/vm-reconcile-dispatcher.d.ts.map +1 -1
- package/dist/vm-reconcile-dispatcher.js +103 -4
- package/dist/vm-reconcile-dispatcher.js.map +1 -1
- package/dist/vm-reconcile-peer-topology.d.ts +7 -9
- package/dist/vm-reconcile-peer-topology.d.ts.map +1 -1
- package/dist/vm-reconcile-peer-topology.js +1 -37
- package/dist/vm-reconcile-peer-topology.js.map +1 -1
- package/dist/vm-recovery-candidate-order.d.ts +16 -0
- package/dist/vm-recovery-candidate-order.d.ts.map +1 -0
- package/dist/vm-recovery-candidate-order.js +24 -0
- package/dist/vm-recovery-candidate-order.js.map +1 -0
- package/dist/vm-recovery-core-transport-preference.d.ts +69 -0
- package/dist/vm-recovery-core-transport-preference.d.ts.map +1 -0
- package/dist/vm-recovery-core-transport-preference.js +131 -0
- package/dist/vm-recovery-core-transport-preference.js.map +1 -0
- package/dist/vm-recovery-experiment-policy.d.ts +24 -0
- package/dist/vm-recovery-experiment-policy.d.ts.map +1 -0
- package/dist/vm-recovery-experiment-policy.js +18 -0
- package/dist/vm-recovery-experiment-policy.js.map +1 -0
- package/dist/vm-recovery-footprint.d.ts +54 -0
- package/dist/vm-recovery-footprint.d.ts.map +1 -1
- package/dist/vm-recovery-footprint.js +88 -24
- package/dist/vm-recovery-footprint.js.map +1 -1
- package/dist/vm-recovery-microbatch.d.ts +2 -0
- package/dist/vm-recovery-microbatch.d.ts.map +1 -1
- package/dist/vm-recovery-microbatch.js +7 -3
- package/dist/vm-recovery-microbatch.js.map +1 -1
- package/dist/vm-recovery-pass-authority.d.ts +84 -0
- package/dist/vm-recovery-pass-authority.d.ts.map +1 -0
- package/dist/vm-recovery-pass-authority.js +126 -0
- package/dist/vm-recovery-pass-authority.js.map +1 -0
- package/dist/vm-recovery-phase-timing.d.ts +75 -0
- package/dist/vm-recovery-phase-timing.d.ts.map +1 -0
- package/dist/vm-recovery-phase-timing.js +236 -0
- package/dist/vm-recovery-phase-timing.js.map +1 -0
- package/dist/vm-recovery-preparation.d.ts +143 -0
- package/dist/vm-recovery-preparation.d.ts.map +1 -0
- package/dist/vm-recovery-preparation.js +433 -0
- package/dist/vm-recovery-preparation.js.map +1 -0
- package/dist/vm-recovery-provider-policy.d.ts +13 -1
- package/dist/vm-recovery-provider-policy.d.ts.map +1 -1
- package/dist/vm-recovery-provider-policy.js +37 -5
- package/dist/vm-recovery-provider-policy.js.map +1 -1
- package/dist/vm-recovery-stream-profile.d.ts +15 -0
- package/dist/vm-recovery-stream-profile.d.ts.map +1 -0
- package/dist/vm-recovery-stream-profile.js +53 -0
- package/dist/vm-recovery-stream-profile.js.map +1 -0
- package/dist/vm-recovery-stream-setback-policy.d.ts +54 -0
- package/dist/vm-recovery-stream-setback-policy.d.ts.map +1 -0
- package/dist/vm-recovery-stream-setback-policy.js +85 -0
- package/dist/vm-recovery-stream-setback-policy.js.map +1 -0
- package/dist/vm-recovery-timing-observer.d.ts +27 -0
- package/dist/vm-recovery-timing-observer.d.ts.map +1 -0
- package/dist/vm-recovery-timing-observer.js +49 -0
- package/dist/vm-recovery-timing-observer.js.map +1 -0
- package/dist/vm-recovery-transport-budget-policy.d.ts +32 -0
- package/dist/vm-recovery-transport-budget-policy.d.ts.map +1 -0
- package/dist/vm-recovery-transport-budget-policy.js +55 -0
- package/dist/vm-recovery-transport-budget-policy.js.map +1 -0
- package/dist/vm-recovery-transport-plan.d.ts +83 -0
- package/dist/vm-recovery-transport-plan.d.ts.map +1 -0
- package/dist/vm-recovery-transport-plan.js +117 -0
- package/dist/vm-recovery-transport-plan.js.map +1 -0
- package/dist/vm-refresh.d.ts +138 -0
- package/dist/vm-refresh.d.ts.map +1 -0
- package/dist/vm-refresh.js +201 -0
- package/dist/vm-refresh.js.map +1 -0
- package/package.json +19 -9
- package/dist/finalization-annotations.d.ts +0 -5
- package/dist/finalization-annotations.d.ts.map +0 -1
- package/dist/finalization-annotations.js +0 -6
- package/dist/finalization-annotations.js.map +0 -1
- package/dist/swm-ka-bound.d.ts +0 -21
- package/dist/swm-ka-bound.d.ts.map +0 -1
- package/dist/swm-ka-bound.js +0 -36
- package/dist/swm-ka-bound.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-data-request-policy.js","sourceRoot":"","sources":["../../../src/sync/responder/durable-data-request-policy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"durable-data-request-policy.js","sourceRoot":"","sources":["../../../src/sync/responder/durable-data-request-policy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type TripleStore } from '@origintrail-official/dkg-storage';
|
|
2
|
+
import type { SyncRow } from './snapshot-cache.js';
|
|
3
|
+
import { SyncRowSnapshotBudgetError, type SyncResponderSnapshotBudget } from './snapshot-budget.js';
|
|
4
|
+
/** Separate from the broad snapshot loader: unsigned public hints cannot raise these. */
|
|
5
|
+
export declare const EXACT_ASSET_EXPORT_MAX_ROWS = 16384;
|
|
6
|
+
export declare const EXACT_ASSET_EXPORT_MAX_STORE_BYTES: number;
|
|
7
|
+
export declare const EXACT_ASSET_EXPORT_MAX_HEAP_BYTES: number;
|
|
8
|
+
export declare const EXACT_ASSET_EXPORT_CANONICAL_BYTES: number;
|
|
9
|
+
export declare const EXACT_ASSET_ENCODED_CACHE_MAX_BYTES: number;
|
|
10
|
+
export declare const EXACT_ASSET_ENCODED_CACHE_MAX_ENTRIES = 1024;
|
|
11
|
+
export declare const EXACT_ASSET_ENCODED_CACHE_TTL_MS: number;
|
|
12
|
+
export interface ExactAssetExportLease {
|
|
13
|
+
readonly rows: readonly SyncRow[];
|
|
14
|
+
readonly identity: string;
|
|
15
|
+
/** Observational count for this successful lease; absent on custom fixtures. */
|
|
16
|
+
readonly wholePayloadExports?: 0 | 1;
|
|
17
|
+
/** Source/metadata fence after the handler's last asynchronous encoding boundary. */
|
|
18
|
+
assertCurrent(): Promise<void>;
|
|
19
|
+
/** The handler holds the charge through serialization and physical compression. */
|
|
20
|
+
release(): void;
|
|
21
|
+
}
|
|
22
|
+
export interface ExactAssetEncodedExportLease {
|
|
23
|
+
/** Response-owned bounded META bytes from the same initial snapshot as the body. */
|
|
24
|
+
readonly metadata: Uint8Array;
|
|
25
|
+
/** Response-owned bytes. Mutating them cannot change the retained copy. */
|
|
26
|
+
readonly body: Uint8Array;
|
|
27
|
+
readonly plainBytes: number;
|
|
28
|
+
readonly identity: string;
|
|
29
|
+
readonly wholePayloadExports: 0 | 1;
|
|
30
|
+
/** Local observation only; a warm copy performs no serialization/codec. */
|
|
31
|
+
readonly encodingDurationMs: number;
|
|
32
|
+
/** Fresh full metadata and available source revision fence before ASSET_END. */
|
|
33
|
+
assertCurrent(): Promise<void>;
|
|
34
|
+
release(): void;
|
|
35
|
+
}
|
|
36
|
+
export type ExactAssetExportStage = 'export-metadata-before' | 'export-store-payload-query' | 'export-canonical-preparation-root' | 'export-metadata-after';
|
|
37
|
+
export interface ExactAssetExportRequest {
|
|
38
|
+
readonly contextGraphId: string;
|
|
39
|
+
readonly assetUal: string;
|
|
40
|
+
readonly graph: string;
|
|
41
|
+
readonly expectedRows: number;
|
|
42
|
+
readonly expectedIdentity?: string;
|
|
43
|
+
readonly signal?: AbortSignal;
|
|
44
|
+
/** Optional local observation; never controls export ownership or proof. */
|
|
45
|
+
readonly onStage?: (stage: ExactAssetExportStage, durationMs: number) => unknown;
|
|
46
|
+
/** Request-scoped bounded reason; never exposes a selector or budget key. */
|
|
47
|
+
readonly onFallback?: (reason: ExactAssetExportFallbackReason, budgetReason?: SyncRowSnapshotBudgetError['reason']) => unknown;
|
|
48
|
+
/**
|
|
49
|
+
* Trusted local authority read for legacy metadata with no KA accessPolicy.
|
|
50
|
+
* Absence stays strict by default. Every metadata fence reads authority again;
|
|
51
|
+
* explicit policy or private commitments can never use this exception.
|
|
52
|
+
*/
|
|
53
|
+
readonly authorizeMissingAccessPolicy?: () => Promise<boolean>;
|
|
54
|
+
}
|
|
55
|
+
/** Encoded exports derive graph/count/identity from their own bounded metadata read. */
|
|
56
|
+
export type ExactAssetEncodedExportRequest = Omit<ExactAssetExportRequest, 'graph' | 'expectedRows' | 'expectedIdentity'>;
|
|
57
|
+
export interface ExactAssetExportCache {
|
|
58
|
+
/** null is a resource/capability refusal; the existing conservative reader remains available. */
|
|
59
|
+
acquire(request: ExactAssetExportRequest): Promise<ExactAssetExportLease | null>;
|
|
60
|
+
/** Experimental batch only; legacy row export ownership remains unchanged. */
|
|
61
|
+
acquireEncoded(request: ExactAssetEncodedExportRequest): Promise<ExactAssetEncodedExportLease | null>;
|
|
62
|
+
stats(): Readonly<{
|
|
63
|
+
exports: number;
|
|
64
|
+
cacheHits: number;
|
|
65
|
+
encodedCacheHits: number;
|
|
66
|
+
encodedCacheEntries: number;
|
|
67
|
+
encodedCacheBytes: number;
|
|
68
|
+
fallbacks: Readonly<Partial<Record<ExactAssetExportFallbackReason, number>>>;
|
|
69
|
+
}>;
|
|
70
|
+
}
|
|
71
|
+
export type ExactAssetExportFallbackReason = 'store-capability' | 'row-profile' | 'metadata-profile' | 'non-public' | 'private-commitments' | 'blank-nodes' | 'heap-profile' | 'canonical-byte-profile' | 'store-byte-profile' | 'build-admission' | 'response-admission';
|
|
72
|
+
/**
|
|
73
|
+
* Bounded, per-KA export. Cached rows are performance data, never chain authority.
|
|
74
|
+
* The legacy row path recomputes every page on stores lacking stable revisions.
|
|
75
|
+
* The experimental encoded path may retain an earlier root-verified immutable
|
|
76
|
+
* assertion copy, always fenced by fresh full public metadata. Neither copy
|
|
77
|
+
* establishes chain authority or proves present revisionless physical DATA.
|
|
78
|
+
*/
|
|
79
|
+
export declare function createBoundedExactAssetExportCache(params: {
|
|
80
|
+
readonly store: TripleStore;
|
|
81
|
+
readonly budget: SyncResponderSnapshotBudget;
|
|
82
|
+
readonly ttlMs?: number;
|
|
83
|
+
readonly maxEntries?: number;
|
|
84
|
+
/** Test/operator construction may shrink, never raise, encoded retention. */
|
|
85
|
+
readonly encodedTtlMs?: number;
|
|
86
|
+
readonly encodedMaxEntries?: number;
|
|
87
|
+
readonly encodedMaxBytes?: number;
|
|
88
|
+
}): ExactAssetExportCache;
|
|
89
|
+
//# sourceMappingURL=exact-asset-export-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exact-asset-export-cache.d.ts","sourceRoot":"","sources":["../../../src/sync/responder/exact-asset-export-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,mCAAmC,CAAC;AAO3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAYpG,yFAAyF;AACzF,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD,eAAO,MAAM,kCAAkC,QAAkB,CAAC;AAClE,eAAO,MAAM,iCAAiC,QAAmB,CAAC;AAClE,eAAO,MAAM,kCAAkC,QAAkB,CAAC;AAUlE,eAAO,MAAM,mCAAmC,QAAoB,CAAC;AACrE,eAAO,MAAM,qCAAqC,OAAQ,CAAC;AAC3D,eAAO,MAAM,gCAAgC,QAAsB,CAAC;AAIpE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,qFAAqF;IACrF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,mFAAmF;IACnF,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,gFAAgF;IAChF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GAAG,4BAA4B,GACvF,mCAAmC,GAAG,uBAAuB,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACjF,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,8BAA8B,EAAE,YAAY,CAAC,EAAE,0BAA0B,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC;IAC/H;;;;OAIG;IACH,QAAQ,CAAC,4BAA4B,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAChE;AAED,wFAAwF;AACxF,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAAC,uBAAuB,EAAE,OAAO,GAAG,cAAc,GAAG,kBAAkB,CAAC,CAAC;AAE1H,MAAM,WAAW,qBAAqB;IACpC,iGAAiG;IACjG,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACjF,8EAA8E;IAC9E,cAAc,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IACtG,KAAK,IAAI,QAAQ,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;KAC9E,CAAC,CAAC;CACJ;AAED,MAAM,MAAM,8BAA8B,GAAG,kBAAkB,GAAG,aAAa,GAC3E,kBAAkB,GAAG,YAAY,GAAG,qBAAqB,GAAG,aAAa,GACzE,cAAc,GAAG,wBAAwB,GAAG,oBAAoB,GAChE,iBAAiB,GAAG,oBAAoB,CAAC;AAsD7C;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE;IACzD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,GAAG,qBAAqB,CAmcxB"}
|
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
import { assertSafeIri, compareCodePoint } from '@origintrail-official/dkg-core';
|
|
2
|
+
import { StoreResponseTooLargeError, ExactGraphReadError, asGraphWriteRevisionSource, supportsBoundedExactGraphExport, readBoundedGraphPayload, } from '@origintrail-official/dkg-storage';
|
|
3
|
+
import { computeFlatKCRootV10, } from '@origintrail-official/dkg-publisher';
|
|
4
|
+
import { sha256 } from '@noble/hashes/sha2.js';
|
|
5
|
+
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
6
|
+
import { SyncRowSnapshotBudgetError } from './snapshot-budget.js';
|
|
7
|
+
import { observeExactBatch } from '../exact-batch-observation.js';
|
|
8
|
+
import { EXACT_BATCH_MAX_FRAME_BYTES } from '../exact-batch-stream-contract.js';
|
|
9
|
+
import { EXACT_SYNC_GZIP_ENCODING, EXACT_SYNC_GZIP_MAX_COMPRESSED_BYTES, EXACT_SYNC_GZIP_MAX_INFLATED_BYTES, encodeNegotiatedExactSyncResponse, } from '../wire-compression.js';
|
|
10
|
+
import { serializeResponderRows } from './row-serialization.js';
|
|
11
|
+
import { parseResponderAssetMetadata } from './asset-metadata.js';
|
|
12
|
+
/** Separate from the broad snapshot loader: unsigned public hints cannot raise these. */
|
|
13
|
+
export const EXACT_ASSET_EXPORT_MAX_ROWS = 16_384;
|
|
14
|
+
export const EXACT_ASSET_EXPORT_MAX_STORE_BYTES = 8 * 1024 * 1024;
|
|
15
|
+
export const EXACT_ASSET_EXPORT_MAX_HEAP_BYTES = 32 * 1024 * 1024;
|
|
16
|
+
export const EXACT_ASSET_EXPORT_CANONICAL_BYTES = 4 * 1024 * 1024;
|
|
17
|
+
const BUILD_RESERVATION_BYTES = 80 * 1024 * 1024;
|
|
18
|
+
// Two UTF-16 serialization copies, encoded bytes and the codec's owned input;
|
|
19
|
+
// retain this through the physical encoder and final metadata fence.
|
|
20
|
+
const RESPONSE_RESERVATION_BYTES = 96 * 1024 * 1024;
|
|
21
|
+
const METADATA_MAX_ROWS = 128;
|
|
22
|
+
const METADATA_MAX_BYTES = 64 * 1024;
|
|
23
|
+
const ENCODER = new TextEncoder();
|
|
24
|
+
// Compressed performance copies share the ordinary responder budget. These
|
|
25
|
+
// bounds are local construction limits, never unsigned request allowances.
|
|
26
|
+
export const EXACT_ASSET_ENCODED_CACHE_MAX_BYTES = 192 * 1024 * 1024;
|
|
27
|
+
export const EXACT_ASSET_ENCODED_CACHE_MAX_ENTRIES = 1_024;
|
|
28
|
+
export const EXACT_ASSET_ENCODED_CACHE_TTL_MS = 6 * 60 * 60 * 1_000;
|
|
29
|
+
const ENCODED_ENTRY_OVERHEAD_BYTES = 4_096;
|
|
30
|
+
const ENCODED_CACHE_FORMAT = 'exact-asset-body-nquads-v1';
|
|
31
|
+
function throwIfAborted(signal) {
|
|
32
|
+
if (!signal?.aborted)
|
|
33
|
+
return;
|
|
34
|
+
throw signal.reason instanceof Error
|
|
35
|
+
? signal.reason
|
|
36
|
+
: Object.assign(new Error('Exact asset export cancelled'), { name: 'AbortError' });
|
|
37
|
+
}
|
|
38
|
+
function changed() {
|
|
39
|
+
return Object.assign(new Error('Sync session exact asset export expired: metadata or source changed before page completion'), {
|
|
40
|
+
code: 'SYNC_EXACT_EXPORT_CHANGED',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function invalid() {
|
|
44
|
+
return Object.assign(new Error('Exact asset export does not match its confirmed count or Merkle root'), {
|
|
45
|
+
code: 'SYNC_EXACT_EXPORT_INVALID',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function compareRows(a, b) {
|
|
49
|
+
return compareCodePoint(a.s, b.s) || compareCodePoint(a.p, b.p) || compareCodePoint(a.o, b.o);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Bounded, per-KA export. Cached rows are performance data, never chain authority.
|
|
53
|
+
* The legacy row path recomputes every page on stores lacking stable revisions.
|
|
54
|
+
* The experimental encoded path may retain an earlier root-verified immutable
|
|
55
|
+
* assertion copy, always fenced by fresh full public metadata. Neither copy
|
|
56
|
+
* establishes chain authority or proves present revisionless physical DATA.
|
|
57
|
+
*/
|
|
58
|
+
export function createBoundedExactAssetExportCache(params) {
|
|
59
|
+
const { store, budget } = params;
|
|
60
|
+
const ttlMs = params.ttlMs ?? 60_000;
|
|
61
|
+
const maxEntries = params.maxEntries ?? 8;
|
|
62
|
+
if (!Number.isSafeInteger(ttlMs) || ttlMs < 1 || !Number.isSafeInteger(maxEntries) || maxEntries < 1) {
|
|
63
|
+
throw new RangeError('Exact asset export cache limits must be positive safe integers');
|
|
64
|
+
}
|
|
65
|
+
const revisions = asGraphWriteRevisionSource(store);
|
|
66
|
+
const cache = new Map();
|
|
67
|
+
const encodedCache = new Map();
|
|
68
|
+
const encodedTtlMs = params.encodedTtlMs ?? EXACT_ASSET_ENCODED_CACHE_TTL_MS;
|
|
69
|
+
const encodedMaxEntries = params.encodedMaxEntries ?? EXACT_ASSET_ENCODED_CACHE_MAX_ENTRIES;
|
|
70
|
+
const encodedMaxBytes = params.encodedMaxBytes ?? EXACT_ASSET_ENCODED_CACHE_MAX_BYTES;
|
|
71
|
+
for (const [value, limit] of [
|
|
72
|
+
[encodedTtlMs, EXACT_ASSET_ENCODED_CACHE_TTL_MS],
|
|
73
|
+
[encodedMaxEntries, EXACT_ASSET_ENCODED_CACHE_MAX_ENTRIES],
|
|
74
|
+
[encodedMaxBytes, EXACT_ASSET_ENCODED_CACHE_MAX_BYTES],
|
|
75
|
+
]) {
|
|
76
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > limit) {
|
|
77
|
+
throw new RangeError('Exact asset encoded cache limits must be positive bounded safe integers');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let encodedCacheBytes = 0;
|
|
81
|
+
const canReadWholeAsset = supportsBoundedExactGraphExport(store);
|
|
82
|
+
let exports = 0;
|
|
83
|
+
let cacheHits = 0;
|
|
84
|
+
let encodedCacheHits = 0;
|
|
85
|
+
const fallbacks = {};
|
|
86
|
+
const refuse = (reason, request, budgetReason) => {
|
|
87
|
+
fallbacks[reason] = (fallbacks[reason] ?? 0) + 1;
|
|
88
|
+
observeExactBatch(() => request.onFallback?.(reason, budgetReason));
|
|
89
|
+
return null;
|
|
90
|
+
};
|
|
91
|
+
const discard = (entry) => {
|
|
92
|
+
if (entry.active !== 0)
|
|
93
|
+
return false;
|
|
94
|
+
if (cache.get(entry.key) === entry)
|
|
95
|
+
cache.delete(entry.key);
|
|
96
|
+
budget.remove(entry.id);
|
|
97
|
+
return true;
|
|
98
|
+
};
|
|
99
|
+
const prune = () => {
|
|
100
|
+
for (const entry of cache.values()) {
|
|
101
|
+
if (Date.now() - entry.cachedAt >= ttlMs)
|
|
102
|
+
discard(entry);
|
|
103
|
+
}
|
|
104
|
+
while (cache.size > maxEntries) {
|
|
105
|
+
const idle = [...cache.values()].find((entry) => entry.active === 0);
|
|
106
|
+
if (!idle || !discard(idle))
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const reserve = (id, key, rows, bytesEstimate, onEvict) => {
|
|
111
|
+
try {
|
|
112
|
+
budget.admit({ id, key, rows, bytesEstimate, phase: 'durable_data', onEvict });
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (error instanceof SyncRowSnapshotBudgetError)
|
|
117
|
+
return error;
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const reserveResponseLease = (entry, responseId) => {
|
|
122
|
+
budget.touch(entry.id);
|
|
123
|
+
const rejected = reserve(responseId, `${entry.key}:response`, 0, RESPONSE_RESERVATION_BYTES, () => { });
|
|
124
|
+
if (rejected) {
|
|
125
|
+
if (entry.active === 0)
|
|
126
|
+
budget.release(entry.id);
|
|
127
|
+
return rejected;
|
|
128
|
+
}
|
|
129
|
+
entry.active += 1;
|
|
130
|
+
let released = false;
|
|
131
|
+
return {
|
|
132
|
+
get released() { return released; },
|
|
133
|
+
release(retainIdleEntry) {
|
|
134
|
+
if (released)
|
|
135
|
+
return;
|
|
136
|
+
released = true;
|
|
137
|
+
budget.remove(responseId);
|
|
138
|
+
entry.active -= 1;
|
|
139
|
+
// Retention policy belongs to the row or encoded cache caller.
|
|
140
|
+
if (entry.active === 0 && retainIdleEntry())
|
|
141
|
+
budget.release(entry.id);
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
const readMetadata = async (request, expected) => {
|
|
146
|
+
throwIfAborted(request.signal);
|
|
147
|
+
const metaGraph = `did:dkg:context-graph:${request.contextGraphId}/_meta`;
|
|
148
|
+
let result;
|
|
149
|
+
try {
|
|
150
|
+
result = await store.query(`
|
|
151
|
+
SELECT ?predicate ?object WHERE {
|
|
152
|
+
GRAPH <${assertSafeIri(metaGraph)}> { <${assertSafeIri(request.assetUal)}> ?predicate ?object }
|
|
153
|
+
} LIMIT ${METADATA_MAX_ROWS + 1}
|
|
154
|
+
`, {
|
|
155
|
+
source: 'sync.responder.exactAssetExport.metadata', priority: 'background',
|
|
156
|
+
signal: request.signal, maxResponseBytes: METADATA_MAX_BYTES,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (error instanceof StoreResponseTooLargeError) {
|
|
161
|
+
if (expected?.expectedIdentity !== undefined)
|
|
162
|
+
throw changed();
|
|
163
|
+
return refuse('metadata-profile', request);
|
|
164
|
+
}
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
throwIfAborted(request.signal);
|
|
168
|
+
if (result.type !== 'bindings' || result.bindings.length > METADATA_MAX_ROWS) {
|
|
169
|
+
if (expected?.expectedIdentity !== undefined)
|
|
170
|
+
throw changed();
|
|
171
|
+
return refuse('metadata-profile', request);
|
|
172
|
+
}
|
|
173
|
+
const metadata = parseResponderAssetMetadata(result.bindings, { contextGraphId: request.contextGraphId, ual: request.assetUal });
|
|
174
|
+
if (!metadata) {
|
|
175
|
+
if (expected?.expectedIdentity !== undefined)
|
|
176
|
+
throw changed();
|
|
177
|
+
throw invalid();
|
|
178
|
+
}
|
|
179
|
+
// A retained export must never silently downgrade into the paged fallback
|
|
180
|
+
// after its metadata changes, including a new private/over-limit profile.
|
|
181
|
+
const { identity, confirmed: parsed } = metadata;
|
|
182
|
+
throwIfAborted(request.signal);
|
|
183
|
+
if (expected?.expectedIdentity !== undefined && identity !== expected.expectedIdentity)
|
|
184
|
+
throw changed();
|
|
185
|
+
if (parsed.state !== 'confirmed')
|
|
186
|
+
throw invalid();
|
|
187
|
+
if (metadata.accessPolicy !== 'public') {
|
|
188
|
+
if (metadata.accessPolicy !== 'absent' || parsed.envelope.privateTripleCount !== 0
|
|
189
|
+
|| !request.authorizeMissingAccessPolicy || (await request.authorizeMissingAccessPolicy()) !== true) {
|
|
190
|
+
return refuse('non-public', request);
|
|
191
|
+
}
|
|
192
|
+
// Authorization is mandatory control flow, never an observation. Its
|
|
193
|
+
// rejection propagates, and cancellation cannot turn it into a grant.
|
|
194
|
+
throwIfAborted(request.signal);
|
|
195
|
+
}
|
|
196
|
+
if (parsed.envelope.privateTripleCount !== 0)
|
|
197
|
+
return refuse('private-commitments', request);
|
|
198
|
+
if (expected && (parsed.envelope.assertionGraph !== expected.graph || parsed.envelope.publicTripleCount !== expected.expectedRows)) {
|
|
199
|
+
throw changed();
|
|
200
|
+
}
|
|
201
|
+
return { identity, envelope: parsed.envelope, metaGraph, bindings: metadata.bindings };
|
|
202
|
+
};
|
|
203
|
+
const sourceRevision = (graph, metaGraph) => {
|
|
204
|
+
if (!revisions)
|
|
205
|
+
return { key: null, reusable: true };
|
|
206
|
+
const meta = revisions.getWriteRevision(metaGraph);
|
|
207
|
+
const body = revisions.getWriteRevision(graph);
|
|
208
|
+
// An indeterminate remote write never proves quiescence. Keep its token
|
|
209
|
+
// as a local-write fence, but only fresh count/root-verified assertion
|
|
210
|
+
// bytes may be served: neither row nor encoded caches may replay it.
|
|
211
|
+
return { key: JSON.stringify([meta.generation, body.generation, meta.stable, body.stable]),
|
|
212
|
+
reusable: meta.stable && body.stable };
|
|
213
|
+
};
|
|
214
|
+
const lease = (entry, keep, request, revision, wholePayloadExports) => {
|
|
215
|
+
const response = reserveResponseLease(entry, Symbol('exact-export-response'));
|
|
216
|
+
if (response instanceof SyncRowSnapshotBudgetError) {
|
|
217
|
+
if (!keep)
|
|
218
|
+
discard(entry);
|
|
219
|
+
return refuse('response-admission', request, response.reason);
|
|
220
|
+
}
|
|
221
|
+
return Object.freeze({
|
|
222
|
+
rows: entry.rows,
|
|
223
|
+
identity: entry.identity,
|
|
224
|
+
wholePayloadExports,
|
|
225
|
+
async assertCurrent() {
|
|
226
|
+
if (response.released)
|
|
227
|
+
throw changed();
|
|
228
|
+
const metadata = await readMetadata(request, { ...request, expectedIdentity: entry.identity });
|
|
229
|
+
if (!metadata || sourceRevision(request.graph, metadata.metaGraph).key !== revision)
|
|
230
|
+
throw changed();
|
|
231
|
+
throwIfAborted(request.signal);
|
|
232
|
+
},
|
|
233
|
+
release() {
|
|
234
|
+
response.release(() => {
|
|
235
|
+
if (keep && cache.get(entry.key) === entry)
|
|
236
|
+
return true;
|
|
237
|
+
discard(entry);
|
|
238
|
+
return false;
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
};
|
|
243
|
+
const acquireRows = async (request, knownMetadata) => {
|
|
244
|
+
const observeStage = (stage, started) => {
|
|
245
|
+
observeExactBatch(() => request.onStage?.(stage, performance.now() - started));
|
|
246
|
+
};
|
|
247
|
+
throwIfAborted(request.signal);
|
|
248
|
+
if (!canReadWholeAsset)
|
|
249
|
+
return refuse('store-capability', request);
|
|
250
|
+
if (!Number.isSafeInteger(request.expectedRows) || request.expectedRows < 1
|
|
251
|
+
|| request.expectedRows > EXACT_ASSET_EXPORT_MAX_ROWS)
|
|
252
|
+
return refuse('row-profile', request);
|
|
253
|
+
let stageStarted = performance.now();
|
|
254
|
+
const metadata = knownMetadata ?? await readMetadata(request, request);
|
|
255
|
+
if (!knownMetadata)
|
|
256
|
+
observeStage('export-metadata-before', stageStarted);
|
|
257
|
+
if (!metadata)
|
|
258
|
+
return null;
|
|
259
|
+
const { key: revision, reusable } = sourceRevision(request.graph, metadata.metaGraph);
|
|
260
|
+
const key = JSON.stringify([request.graph, metadata.identity, revision]);
|
|
261
|
+
prune();
|
|
262
|
+
if (reusable && revision !== null) {
|
|
263
|
+
const hit = cache.get(key);
|
|
264
|
+
if (hit && Date.now() - hit.cachedAt < ttlMs) {
|
|
265
|
+
throwIfAborted(request.signal);
|
|
266
|
+
if (sourceRevision(request.graph, metadata.metaGraph).key !== revision)
|
|
267
|
+
throw changed();
|
|
268
|
+
cacheHits += 1;
|
|
269
|
+
return lease(hit, true, request, revision, 0);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
const id = Symbol('exact-asset-export');
|
|
273
|
+
const rejected = reserve(id, key, request.expectedRows + 1, BUILD_RESERVATION_BYTES, () => { });
|
|
274
|
+
if (rejected)
|
|
275
|
+
return refuse('build-admission', request, rejected.reason);
|
|
276
|
+
let retained = false;
|
|
277
|
+
try {
|
|
278
|
+
stageStarted = performance.now();
|
|
279
|
+
const payload = await readBoundedGraphPayload(store, request.graph, {
|
|
280
|
+
expectedQuadCount: request.expectedRows, outputGraph: request.graph, canonicalGraph: '',
|
|
281
|
+
profile: {
|
|
282
|
+
maxRows: EXACT_ASSET_EXPORT_MAX_ROWS, maxResponseBytes: EXACT_ASSET_EXPORT_MAX_STORE_BYTES,
|
|
283
|
+
maxNQuadsBytes: EXACT_ASSET_EXPORT_CANONICAL_BYTES, maxHeapBytes: EXACT_ASSET_EXPORT_MAX_HEAP_BYTES,
|
|
284
|
+
rowOverheadBytes: 160, heapAccounting: 'output-graph',
|
|
285
|
+
},
|
|
286
|
+
queryOptions: {
|
|
287
|
+
source: 'sync.responder.exactAssetExport.payload', priority: 'background', signal: request.signal,
|
|
288
|
+
},
|
|
289
|
+
onQuerySettled: () => {
|
|
290
|
+
// Includes scheduler wait, HTTP/body settlement and JSON decoding.
|
|
291
|
+
observeStage('export-store-payload-query', stageStarted);
|
|
292
|
+
stageStarted = performance.now();
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
throwIfAborted(request.signal);
|
|
296
|
+
if (payload.status === 'refused')
|
|
297
|
+
return refuse(payload.reason, request);
|
|
298
|
+
const { heapBytes } = payload;
|
|
299
|
+
const rows = payload.quads.map((quad) => Object.freeze({
|
|
300
|
+
s: quad.subject, p: quad.predicate, o: quad.object, g: quad.graph,
|
|
301
|
+
}));
|
|
302
|
+
rows.sort(compareRows);
|
|
303
|
+
const root = computeFlatKCRootV10(rows.map((row) => ({
|
|
304
|
+
subject: row.s, predicate: row.p, object: row.o, graph: '',
|
|
305
|
+
})), []);
|
|
306
|
+
if (!sameRoot(root, metadata.envelope))
|
|
307
|
+
throw invalid();
|
|
308
|
+
observeStage('export-canonical-preparation-root', stageStarted);
|
|
309
|
+
stageStarted = performance.now();
|
|
310
|
+
const after = await readMetadata(request, { ...request, expectedIdentity: metadata.identity });
|
|
311
|
+
if (!after || sourceRevision(request.graph, metadata.metaGraph).key !== revision)
|
|
312
|
+
throw changed();
|
|
313
|
+
observeStage('export-metadata-after', stageStarted);
|
|
314
|
+
throwIfAborted(request.signal);
|
|
315
|
+
exports += 1;
|
|
316
|
+
const entry = {
|
|
317
|
+
id, key, rows: Object.freeze(rows), identity: metadata.identity,
|
|
318
|
+
heapBytes, cachedAt: Date.now(), active: 0,
|
|
319
|
+
};
|
|
320
|
+
budget.admit({ id, replaceId: id, key, rows: rows.length, bytesEstimate: heapBytes,
|
|
321
|
+
phase: 'durable_data', onEvict: () => { if (cache.get(key) === entry)
|
|
322
|
+
cache.delete(key); } });
|
|
323
|
+
if (reusable && revision !== null) {
|
|
324
|
+
while (cache.size >= maxEntries) {
|
|
325
|
+
const idle = [...cache.values()].find((value) => value.active === 0);
|
|
326
|
+
if (!idle || !discard(idle))
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
if (cache.size < maxEntries)
|
|
330
|
+
cache.set(key, entry);
|
|
331
|
+
}
|
|
332
|
+
const acquired = lease(entry, cache.get(key) === entry, request, revision, 1);
|
|
333
|
+
if (!acquired)
|
|
334
|
+
discard(entry);
|
|
335
|
+
retained = acquired !== null;
|
|
336
|
+
return acquired;
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
if (error instanceof ExactGraphReadError)
|
|
340
|
+
throw invalid();
|
|
341
|
+
if (error instanceof SyncRowSnapshotBudgetError)
|
|
342
|
+
return refuse('build-admission', request, error.reason);
|
|
343
|
+
throw error;
|
|
344
|
+
}
|
|
345
|
+
finally {
|
|
346
|
+
// Cancellation waits for the actual query promise above before its charge disappears.
|
|
347
|
+
if (!retained)
|
|
348
|
+
budget.remove(id);
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
const discardEncoded = (entry) => {
|
|
352
|
+
if (entry.active !== 0)
|
|
353
|
+
return false;
|
|
354
|
+
if (encodedCache.get(entry.key) === entry) {
|
|
355
|
+
encodedCache.delete(entry.key);
|
|
356
|
+
encodedCacheBytes -= entry.heapBytes;
|
|
357
|
+
}
|
|
358
|
+
budget.remove(entry.id);
|
|
359
|
+
return true;
|
|
360
|
+
};
|
|
361
|
+
const pruneEncoded = () => {
|
|
362
|
+
for (const entry of encodedCache.values()) {
|
|
363
|
+
if (Date.now() - entry.lastUsedAt >= encodedTtlMs)
|
|
364
|
+
discardEncoded(entry);
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
const encodedKey = (request, metadata, revision) => (JSON.stringify([ENCODED_CACHE_FORMAT, request.contextGraphId, request.assetUal, request.graph,
|
|
368
|
+
metadata.identity, metadata.envelope.assertionVersion, bytesToHex(metadata.envelope.merkleRoot),
|
|
369
|
+
metadata.envelope.publicTripleCount, metadata.envelope.privateTripleCount, EXACT_SYNC_GZIP_ENCODING, revision]));
|
|
370
|
+
const assertEncodedCurrent = async (request, identity, revision) => {
|
|
371
|
+
const after = await readMetadata(request, { ...request, expectedIdentity: identity });
|
|
372
|
+
if (!after || sourceRevision(request.graph, after.metaGraph).key !== revision)
|
|
373
|
+
throw changed();
|
|
374
|
+
throwIfAborted(request.signal);
|
|
375
|
+
};
|
|
376
|
+
const retainEncoded = (key, body, plainBytes, identity) => {
|
|
377
|
+
// This is opportunistic retention after a completed source fence. A cache
|
|
378
|
+
// admission failure must not turn a valid current response into refusal.
|
|
379
|
+
if (encodedCache.has(key))
|
|
380
|
+
return;
|
|
381
|
+
pruneEncoded();
|
|
382
|
+
const heapBytes = body.byteLength + ENCODED_ENTRY_OVERHEAD_BYTES + 2 * key.length;
|
|
383
|
+
if (heapBytes > encodedMaxBytes)
|
|
384
|
+
return;
|
|
385
|
+
while (encodedCache.size >= encodedMaxEntries || encodedCacheBytes + heapBytes > encodedMaxBytes) {
|
|
386
|
+
const idle = [...encodedCache.values()].find(entry => entry.active === 0);
|
|
387
|
+
if (!idle || !discardEncoded(idle))
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
const id = Symbol('exact-asset-encoded-cache');
|
|
391
|
+
// Reserve before taking ownership of an extra physical copy.
|
|
392
|
+
if (reserve(id, key, 0, heapBytes, () => {
|
|
393
|
+
const entry = encodedCache.get(key);
|
|
394
|
+
if (entry?.id !== id)
|
|
395
|
+
return;
|
|
396
|
+
encodedCache.delete(key);
|
|
397
|
+
encodedCacheBytes -= entry.heapBytes;
|
|
398
|
+
}))
|
|
399
|
+
return;
|
|
400
|
+
try {
|
|
401
|
+
const owned = body.slice();
|
|
402
|
+
const entry = { id, key, body: owned, digest: bytesToHex(sha256(owned)),
|
|
403
|
+
plainBytes, identity, heapBytes, lastUsedAt: Date.now(), active: 0 };
|
|
404
|
+
encodedCache.set(key, entry);
|
|
405
|
+
encodedCacheBytes += heapBytes;
|
|
406
|
+
budget.release(id);
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
budget.remove(id);
|
|
410
|
+
throw error;
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
return {
|
|
414
|
+
stats() {
|
|
415
|
+
pruneEncoded();
|
|
416
|
+
return Object.freeze({ exports, cacheHits, encodedCacheHits,
|
|
417
|
+
encodedCacheEntries: encodedCache.size, encodedCacheBytes,
|
|
418
|
+
fallbacks: Object.freeze({ ...fallbacks }) });
|
|
419
|
+
},
|
|
420
|
+
acquire: acquireRows,
|
|
421
|
+
async acquireEncoded(scope) {
|
|
422
|
+
throwIfAborted(scope.signal);
|
|
423
|
+
if (!canReadWholeAsset)
|
|
424
|
+
return refuse('store-capability', scope);
|
|
425
|
+
const started = performance.now();
|
|
426
|
+
const metadata = await readMetadata(scope);
|
|
427
|
+
observeExactBatch(() => scope.onStage?.('export-metadata-before', performance.now() - started));
|
|
428
|
+
if (!metadata)
|
|
429
|
+
return null;
|
|
430
|
+
const request = { ...scope, graph: metadata.envelope.assertionGraph,
|
|
431
|
+
expectedRows: metadata.envelope.publicTripleCount, expectedIdentity: metadata.identity };
|
|
432
|
+
if (!Number.isSafeInteger(request.expectedRows) || request.expectedRows < 1
|
|
433
|
+
|| request.expectedRows > EXACT_ASSET_EXPORT_MAX_ROWS)
|
|
434
|
+
return refuse('row-profile', request);
|
|
435
|
+
const metaBytes = ENCODER.encode(serializeResponderRows(metadata.bindings.map(row => ({
|
|
436
|
+
s: request.assetUal, p: row.predicate, o: row.object, g: metadata.metaGraph,
|
|
437
|
+
}))));
|
|
438
|
+
if (metaBytes.byteLength > EXACT_BATCH_MAX_FRAME_BYTES)
|
|
439
|
+
return refuse('metadata-profile', request);
|
|
440
|
+
const metaDigest = bytesToHex(sha256(metaBytes));
|
|
441
|
+
const { key: revision, reusable } = sourceRevision(request.graph, metadata.metaGraph);
|
|
442
|
+
const key = encodedKey(request, metadata, revision);
|
|
443
|
+
pruneEncoded();
|
|
444
|
+
const hit = reusable ? encodedCache.get(key) : undefined;
|
|
445
|
+
if (hit && Date.now() - hit.lastUsedAt < encodedTtlMs) {
|
|
446
|
+
// Only the independently verified immutable assertion copy is reused.
|
|
447
|
+
// On revisionless stores this is not evidence that present physical
|
|
448
|
+
// DATA remains unchanged. Fresh metadata/public profile and the final
|
|
449
|
+
// fence still apply, and the receiver still authenticates chain truth.
|
|
450
|
+
if (sourceRevision(request.graph, metadata.metaGraph).key !== revision)
|
|
451
|
+
throw changed();
|
|
452
|
+
if (bytesToHex(sha256(hit.body)) !== hit.digest) {
|
|
453
|
+
discardEncoded(hit);
|
|
454
|
+
throw invalid();
|
|
455
|
+
}
|
|
456
|
+
const response = reserveResponseLease(hit, Symbol('exact-encoded-response'));
|
|
457
|
+
if (response instanceof SyncRowSnapshotBudgetError) {
|
|
458
|
+
return refuse('response-admission', request, response.reason);
|
|
459
|
+
}
|
|
460
|
+
try {
|
|
461
|
+
const body = hit.body.slice();
|
|
462
|
+
hit.lastUsedAt = Date.now();
|
|
463
|
+
encodedCache.delete(key);
|
|
464
|
+
encodedCache.set(key, hit);
|
|
465
|
+
encodedCacheHits += 1;
|
|
466
|
+
return Object.freeze({ metadata: metaBytes, body, plainBytes: hit.plainBytes, identity: hit.identity,
|
|
467
|
+
wholePayloadExports: 0, encodingDurationMs: 0,
|
|
468
|
+
async assertCurrent() {
|
|
469
|
+
if (response.released)
|
|
470
|
+
throw changed();
|
|
471
|
+
await assertEncodedCurrent(request, hit.identity, revision);
|
|
472
|
+
if (bytesToHex(sha256(metaBytes)) !== metaDigest)
|
|
473
|
+
throw invalid();
|
|
474
|
+
},
|
|
475
|
+
release() {
|
|
476
|
+
response.release(() => {
|
|
477
|
+
if (Date.now() - hit.lastUsedAt >= encodedTtlMs) {
|
|
478
|
+
discardEncoded(hit);
|
|
479
|
+
return false;
|
|
480
|
+
}
|
|
481
|
+
return true;
|
|
482
|
+
});
|
|
483
|
+
}, });
|
|
484
|
+
}
|
|
485
|
+
catch (error) {
|
|
486
|
+
response.release(() => true);
|
|
487
|
+
throw error;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
const rows = await acquireRows(request, metadata);
|
|
491
|
+
if (!rows)
|
|
492
|
+
return null;
|
|
493
|
+
let transferred = false;
|
|
494
|
+
try {
|
|
495
|
+
const encodeStarted = performance.now();
|
|
496
|
+
const plain = ENCODER.encode(serializeResponderRows(rows.rows));
|
|
497
|
+
const plainBytes = plain.byteLength;
|
|
498
|
+
const body = await encodeNegotiatedExactSyncResponse(plain, {
|
|
499
|
+
request: { phase: 'data', assetUals: [request.assetUal], responseEncoding: EXACT_SYNC_GZIP_ENCODING },
|
|
500
|
+
signal: request.signal,
|
|
501
|
+
});
|
|
502
|
+
throwIfAborted(request.signal);
|
|
503
|
+
// Keep the physical codec's existing compressed and plaintext bounds.
|
|
504
|
+
if (body.byteLength < 1 || body.byteLength > EXACT_SYNC_GZIP_MAX_COMPRESSED_BYTES
|
|
505
|
+
|| plainBytes > EXACT_SYNC_GZIP_MAX_INFLATED_BYTES)
|
|
506
|
+
throw invalid();
|
|
507
|
+
const encodingDurationMs = performance.now() - encodeStarted;
|
|
508
|
+
const digest = bytesToHex(sha256(body));
|
|
509
|
+
let released = false;
|
|
510
|
+
let retained = false;
|
|
511
|
+
const encoded = Object.freeze({ metadata: metaBytes, body, plainBytes, identity: rows.identity,
|
|
512
|
+
wholePayloadExports: rows.wholePayloadExports ?? 1, encodingDurationMs,
|
|
513
|
+
async assertCurrent() {
|
|
514
|
+
if (released)
|
|
515
|
+
throw changed();
|
|
516
|
+
await rows.assertCurrent();
|
|
517
|
+
if (bytesToHex(sha256(metaBytes)) !== metaDigest)
|
|
518
|
+
throw invalid();
|
|
519
|
+
// The cold response is caller-owned until promotion. Never retain
|
|
520
|
+
// bytes changed by a send adapter or another response consumer.
|
|
521
|
+
if (bytesToHex(sha256(body)) !== digest)
|
|
522
|
+
throw invalid();
|
|
523
|
+
if (!retained && reusable) {
|
|
524
|
+
retainEncoded(key, body, plainBytes, rows.identity);
|
|
525
|
+
retained = true;
|
|
526
|
+
}
|
|
527
|
+
},
|
|
528
|
+
release() {
|
|
529
|
+
if (released)
|
|
530
|
+
return;
|
|
531
|
+
released = true;
|
|
532
|
+
rows.release();
|
|
533
|
+
},
|
|
534
|
+
});
|
|
535
|
+
transferred = true;
|
|
536
|
+
return encoded;
|
|
537
|
+
}
|
|
538
|
+
finally {
|
|
539
|
+
// The physical encoder settles before its row/response charge ends.
|
|
540
|
+
if (!transferred)
|
|
541
|
+
rows.release();
|
|
542
|
+
}
|
|
543
|
+
},
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
function sameRoot(root, envelope) {
|
|
547
|
+
return root.length === envelope.merkleRoot.length
|
|
548
|
+
&& root.every((byte, index) => byte === envelope.merkleRoot[index]);
|
|
549
|
+
}
|
|
550
|
+
//# sourceMappingURL=exact-asset-export-cache.js.map
|