@optimystic/db-p2p 0.13.4 → 0.14.0
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 +6 -6
- package/dist/src/cluster/block-transfer-service.d.ts +67 -8
- package/dist/src/cluster/block-transfer-service.d.ts.map +1 -1
- package/dist/src/cluster/block-transfer-service.js +101 -62
- package/dist/src/cluster/block-transfer-service.js.map +1 -1
- package/dist/src/cluster/client.d.ts +18 -1
- package/dist/src/cluster/client.d.ts.map +1 -1
- package/dist/src/cluster/client.js +55 -39
- package/dist/src/cluster/client.js.map +1 -1
- package/dist/src/cluster/cluster-error.d.ts +38 -0
- package/dist/src/cluster/cluster-error.d.ts.map +1 -0
- package/dist/src/cluster/cluster-error.js +51 -0
- package/dist/src/cluster/cluster-error.js.map +1 -0
- package/dist/src/cluster/cluster-repo.d.ts +135 -3
- package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
- package/dist/src/cluster/cluster-repo.js +333 -58
- package/dist/src/cluster/cluster-repo.js.map +1 -1
- package/dist/src/cluster/commit-cert.d.ts +63 -0
- package/dist/src/cluster/commit-cert.d.ts.map +1 -0
- package/dist/src/cluster/commit-cert.js +108 -0
- package/dist/src/cluster/commit-cert.js.map +1 -0
- package/dist/src/cluster/service.d.ts +46 -11
- package/dist/src/cluster/service.d.ts.map +1 -1
- package/dist/src/cluster/service.js +97 -33
- package/dist/src/cluster/service.js.map +1 -1
- package/dist/src/cluster/spread-on-churn.d.ts +13 -0
- package/dist/src/cluster/spread-on-churn.d.ts.map +1 -1
- package/dist/src/cluster/spread-on-churn.js +34 -4
- package/dist/src/cluster/spread-on-churn.js.map +1 -1
- package/dist/src/cohort-topic/bootstrap-evidence-builder.d.ts +59 -0
- package/dist/src/cohort-topic/bootstrap-evidence-builder.d.ts.map +1 -0
- package/dist/src/cohort-topic/bootstrap-evidence-builder.js +79 -0
- package/dist/src/cohort-topic/bootstrap-evidence-builder.js.map +1 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.d.ts +81 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.d.ts.map +1 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.js +93 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.js.map +1 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.d.ts +108 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.d.ts.map +1 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.js +108 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.js.map +1 -0
- package/dist/src/cohort-topic/change-bridge.d.ts +65 -0
- package/dist/src/cohort-topic/change-bridge.d.ts.map +1 -0
- package/dist/src/cohort-topic/change-bridge.js +76 -0
- package/dist/src/cohort-topic/change-bridge.js.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.d.ts +74 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.d.ts.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.js +87 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.js.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.d.ts +42 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.d.ts.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.js +57 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.js.map +1 -0
- package/dist/src/cohort-topic/fret-trust-anchor.d.ts +100 -0
- package/dist/src/cohort-topic/fret-trust-anchor.d.ts.map +1 -0
- package/dist/src/cohort-topic/fret-trust-anchor.js +115 -0
- package/dist/src/cohort-topic/fret-trust-anchor.js.map +1 -0
- package/dist/src/cohort-topic/host.d.ts +573 -0
- package/dist/src/cohort-topic/host.d.ts.map +1 -0
- package/dist/src/cohort-topic/host.js +1460 -0
- package/dist/src/cohort-topic/host.js.map +1 -0
- package/dist/src/cohort-topic/index.d.ts +14 -0
- package/dist/src/cohort-topic/index.d.ts.map +1 -0
- package/dist/src/cohort-topic/index.js +14 -0
- package/dist/src/cohort-topic/index.js.map +1 -0
- package/dist/src/cohort-topic/membership-publish-sink.d.ts +14 -0
- package/dist/src/cohort-topic/membership-publish-sink.d.ts.map +1 -0
- package/dist/src/cohort-topic/membership-publish-sink.js +17 -0
- package/dist/src/cohort-topic/membership-publish-sink.js.map +1 -0
- package/dist/src/cohort-topic/membership-source.d.ts +36 -0
- package/dist/src/cohort-topic/membership-source.d.ts.map +1 -0
- package/dist/src/cohort-topic/membership-source.js +58 -0
- package/dist/src/cohort-topic/membership-source.js.map +1 -0
- package/dist/src/cohort-topic/peer-codec.d.ts +18 -0
- package/dist/src/cohort-topic/peer-codec.d.ts.map +1 -0
- package/dist/src/cohort-topic/peer-codec.js +26 -0
- package/dist/src/cohort-topic/peer-codec.js.map +1 -0
- package/dist/src/cohort-topic/peer-sig.d.ts +52 -0
- package/dist/src/cohort-topic/peer-sig.d.ts.map +1 -0
- package/dist/src/cohort-topic/peer-sig.js +83 -0
- package/dist/src/cohort-topic/peer-sig.js.map +1 -0
- package/dist/src/cohort-topic/protocols.d.ts +49 -0
- package/dist/src/cohort-topic/protocols.d.ts.map +1 -0
- package/dist/src/cohort-topic/protocols.js +58 -0
- package/dist/src/cohort-topic/protocols.js.map +1 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.d.ts +49 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.d.ts.map +1 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.js +42 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.js.map +1 -0
- package/dist/src/cohort-topic/size-estimator.d.ts +16 -0
- package/dist/src/cohort-topic/size-estimator.d.ts.map +1 -0
- package/dist/src/cohort-topic/size-estimator.js +16 -0
- package/dist/src/cohort-topic/size-estimator.js.map +1 -0
- package/dist/src/cohort-topic/stream-util.d.ts +19 -0
- package/dist/src/cohort-topic/stream-util.d.ts.map +1 -0
- package/dist/src/cohort-topic/stream-util.js +76 -0
- package/dist/src/cohort-topic/stream-util.js.map +1 -0
- package/dist/src/cohort-topic/threshold-crypto.d.ts +94 -0
- package/dist/src/cohort-topic/threshold-crypto.d.ts.map +1 -0
- package/dist/src/cohort-topic/threshold-crypto.js +178 -0
- package/dist/src/cohort-topic/threshold-crypto.js.map +1 -0
- package/dist/src/cohort-topic/topic-router.d.ts +41 -0
- package/dist/src/cohort-topic/topic-router.d.ts.map +1 -0
- package/dist/src/cohort-topic/topic-router.js +63 -0
- package/dist/src/cohort-topic/topic-router.js.map +1 -0
- package/dist/src/dispute/cascade.d.ts +179 -0
- package/dist/src/dispute/cascade.d.ts.map +1 -0
- package/dist/src/dispute/cascade.js +315 -0
- package/dist/src/dispute/cascade.js.map +1 -0
- package/dist/src/dispute/client.d.ts +2 -1
- package/dist/src/dispute/client.d.ts.map +1 -1
- package/dist/src/dispute/client.js +12 -3
- package/dist/src/dispute/client.js.map +1 -1
- package/dist/src/dispute/dispute-service.d.ts +41 -1
- package/dist/src/dispute/dispute-service.d.ts.map +1 -1
- package/dist/src/dispute/dispute-service.js +147 -21
- package/dist/src/dispute/dispute-service.js.map +1 -1
- package/dist/src/dispute/index.d.ts +2 -0
- package/dist/src/dispute/index.d.ts.map +1 -1
- package/dist/src/dispute/index.js +2 -0
- package/dist/src/dispute/index.js.map +1 -1
- package/dist/src/dispute/invalidation.d.ts +266 -0
- package/dist/src/dispute/invalidation.d.ts.map +1 -0
- package/dist/src/dispute/invalidation.js +405 -0
- package/dist/src/dispute/invalidation.js.map +1 -0
- package/dist/src/dispute/types.d.ts +14 -0
- package/dist/src/dispute/types.d.ts.map +1 -1
- package/dist/src/dispute/types.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p-key-network.d.ts +8 -1
- package/dist/src/libp2p-key-network.d.ts.map +1 -1
- package/dist/src/libp2p-key-network.js +67 -8
- package/dist/src/libp2p-key-network.js.map +1 -1
- package/dist/src/libp2p-node-base.d.ts +57 -3
- package/dist/src/libp2p-node-base.d.ts.map +1 -1
- package/dist/src/libp2p-node-base.js +523 -6
- package/dist/src/libp2p-node-base.js.map +1 -1
- package/dist/src/matchmaking/aggregate-counts.d.ts +67 -0
- package/dist/src/matchmaking/aggregate-counts.d.ts.map +1 -0
- package/dist/src/matchmaking/aggregate-counts.js +60 -0
- package/dist/src/matchmaking/aggregate-counts.js.map +1 -0
- package/dist/src/matchmaking/index.d.ts +20 -0
- package/dist/src/matchmaking/index.d.ts.map +1 -0
- package/dist/src/matchmaking/index.js +20 -0
- package/dist/src/matchmaking/index.js.map +1 -0
- package/dist/src/matchmaking/module.d.ts +181 -0
- package/dist/src/matchmaking/module.d.ts.map +1 -0
- package/dist/src/matchmaking/module.js +221 -0
- package/dist/src/matchmaking/module.js.map +1 -0
- package/dist/src/matchmaking/protocols.d.ts +37 -0
- package/dist/src/matchmaking/protocols.d.ts.map +1 -0
- package/dist/src/matchmaking/protocols.js +42 -0
- package/dist/src/matchmaking/protocols.js.map +1 -0
- package/dist/src/matchmaking/provider-manager.d.ts +52 -0
- package/dist/src/matchmaking/provider-manager.d.ts.map +1 -0
- package/dist/src/matchmaking/provider-manager.js +74 -0
- package/dist/src/matchmaking/provider-manager.js.map +1 -0
- package/dist/src/matchmaking/query-handler.d.ts +34 -0
- package/dist/src/matchmaking/query-handler.d.ts.map +1 -0
- package/dist/src/matchmaking/query-handler.js +62 -0
- package/dist/src/matchmaking/query-handler.js.map +1 -0
- package/dist/src/matchmaking/query-transport.d.ts +180 -0
- package/dist/src/matchmaking/query-transport.d.ts.map +1 -0
- package/dist/src/matchmaking/query-transport.js +315 -0
- package/dist/src/matchmaking/query-transport.js.map +1 -0
- package/dist/src/matchmaking/seeker-manager.d.ts +39 -0
- package/dist/src/matchmaking/seeker-manager.d.ts.map +1 -0
- package/dist/src/matchmaking/seeker-manager.js +49 -0
- package/dist/src/matchmaking/seeker-manager.js.map +1 -0
- package/dist/src/matchmaking/seeker-walk-client.d.ts +127 -0
- package/dist/src/matchmaking/seeker-walk-client.d.ts.map +1 -0
- package/dist/src/matchmaking/seeker-walk-client.js +189 -0
- package/dist/src/matchmaking/seeker-walk-client.js.map +1 -0
- package/dist/src/matchmaking/traffic-validation.d.ts +128 -0
- package/dist/src/matchmaking/traffic-validation.d.ts.map +1 -0
- package/dist/src/matchmaking/traffic-validation.js +105 -0
- package/dist/src/matchmaking/traffic-validation.js.map +1 -0
- package/dist/src/network/network-manager-service.d.ts +4 -2
- package/dist/src/network/network-manager-service.d.ts.map +1 -1
- package/dist/src/network/network-manager-service.js +9 -3
- package/dist/src/network/network-manager-service.js.map +1 -1
- package/dist/src/protocol-client.d.ts +25 -0
- package/dist/src/protocol-client.d.ts.map +1 -1
- package/dist/src/protocol-client.js +126 -4
- package/dist/src/protocol-client.js.map +1 -1
- package/dist/src/reactivity/forwarder-host.d.ts +198 -0
- package/dist/src/reactivity/forwarder-host.d.ts.map +1 -0
- package/dist/src/reactivity/forwarder-host.js +355 -0
- package/dist/src/reactivity/forwarder-host.js.map +1 -0
- package/dist/src/reactivity/index.d.ts +19 -0
- package/dist/src/reactivity/index.d.ts.map +1 -0
- package/dist/src/reactivity/index.js +19 -0
- package/dist/src/reactivity/index.js.map +1 -0
- package/dist/src/reactivity/notify-transport.d.ts +70 -0
- package/dist/src/reactivity/notify-transport.d.ts.map +1 -0
- package/dist/src/reactivity/notify-transport.js +111 -0
- package/dist/src/reactivity/notify-transport.js.map +1 -0
- package/dist/src/reactivity/origination-manager.d.ts +110 -0
- package/dist/src/reactivity/origination-manager.d.ts.map +1 -0
- package/dist/src/reactivity/origination-manager.js +129 -0
- package/dist/src/reactivity/origination-manager.js.map +1 -0
- package/dist/src/reactivity/protocols.d.ts +43 -0
- package/dist/src/reactivity/protocols.d.ts.map +1 -0
- package/dist/src/reactivity/protocols.js +50 -0
- package/dist/src/reactivity/protocols.js.map +1 -0
- package/dist/src/reactivity/push-state-gossip.d.ts +132 -0
- package/dist/src/reactivity/push-state-gossip.d.ts.map +1 -0
- package/dist/src/reactivity/push-state-gossip.js +231 -0
- package/dist/src/reactivity/push-state-gossip.js.map +1 -0
- package/dist/src/reactivity/recover-transport.d.ts +167 -0
- package/dist/src/reactivity/recover-transport.d.ts.map +1 -0
- package/dist/src/reactivity/recover-transport.js +308 -0
- package/dist/src/reactivity/recover-transport.js.map +1 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.d.ts +142 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.d.ts.map +1 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.js +223 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.js.map +1 -0
- package/dist/src/reactivity/subscriber-registry.d.ts +47 -0
- package/dist/src/reactivity/subscriber-registry.d.ts.map +1 -0
- package/dist/src/reactivity/subscriber-registry.js +87 -0
- package/dist/src/reactivity/subscriber-registry.js.map +1 -0
- package/dist/src/reactivity/subscription-manager.d.ts +221 -0
- package/dist/src/reactivity/subscription-manager.d.ts.map +1 -0
- package/dist/src/reactivity/subscription-manager.js +302 -0
- package/dist/src/reactivity/subscription-manager.js.map +1 -0
- package/dist/src/reactivity/topic-bytes.d.ts +32 -0
- package/dist/src/reactivity/topic-bytes.d.ts.map +1 -0
- package/dist/src/reactivity/topic-bytes.js +34 -0
- package/dist/src/reactivity/topic-bytes.js.map +1 -0
- package/dist/src/repo/client.d.ts.map +1 -1
- package/dist/src/repo/client.js +51 -19
- package/dist/src/repo/client.js.map +1 -1
- package/dist/src/repo/cluster-coordinator.d.ts +9 -0
- package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
- package/dist/src/repo/cluster-coordinator.js +65 -22
- package/dist/src/repo/cluster-coordinator.js.map +1 -1
- package/dist/src/repo/coordinator-repo.d.ts +20 -0
- package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
- package/dist/src/repo/coordinator-repo.js +101 -16
- package/dist/src/repo/coordinator-repo.js.map +1 -1
- package/dist/src/repo/service.d.ts +46 -1
- package/dist/src/repo/service.d.ts.map +1 -1
- package/dist/src/repo/service.js +79 -45
- package/dist/src/repo/service.js.map +1 -1
- package/dist/src/rpc-deadline.d.ts +37 -0
- package/dist/src/rpc-deadline.d.ts.map +1 -0
- package/dist/src/rpc-deadline.js +31 -0
- package/dist/src/rpc-deadline.js.map +1 -0
- package/dist/src/storage/block-storage.d.ts +2 -0
- package/dist/src/storage/block-storage.d.ts.map +1 -1
- package/dist/src/storage/block-storage.js +95 -2
- package/dist/src/storage/block-storage.js.map +1 -1
- package/dist/src/storage/i-block-storage.d.ts +25 -0
- package/dist/src/storage/i-block-storage.d.ts.map +1 -1
- package/dist/src/storage/storage-repo.d.ts +53 -2
- package/dist/src/storage/storage-repo.d.ts.map +1 -1
- package/dist/src/storage/storage-repo.js +193 -9
- package/dist/src/storage/storage-repo.js.map +1 -1
- package/dist/src/sync/client.d.ts +4 -1
- package/dist/src/sync/client.d.ts.map +1 -1
- package/dist/src/sync/client.js +5 -2
- package/dist/src/sync/client.js.map +1 -1
- package/dist/src/testing/cohort-topic-mesh-harness.d.ts +219 -0
- package/dist/src/testing/cohort-topic-mesh-harness.d.ts.map +1 -0
- package/dist/src/testing/cohort-topic-mesh-harness.js +467 -0
- package/dist/src/testing/cohort-topic-mesh-harness.js.map +1 -0
- package/dist/src/testing/matchmaking-mesh-harness.d.ts +187 -0
- package/dist/src/testing/matchmaking-mesh-harness.d.ts.map +1 -0
- package/dist/src/testing/matchmaking-mesh-harness.js +358 -0
- package/dist/src/testing/matchmaking-mesh-harness.js.map +1 -0
- package/dist/src/testing/mesh-harness.d.ts.map +1 -1
- package/dist/src/testing/mesh-harness.js +23 -1
- package/dist/src/testing/mesh-harness.js.map +1 -1
- package/dist/src/testing/reactivity-mesh-harness.d.ts +298 -0
- package/dist/src/testing/reactivity-mesh-harness.d.ts.map +1 -0
- package/dist/src/testing/reactivity-mesh-harness.js +663 -0
- package/dist/src/testing/reactivity-mesh-harness.js.map +1 -0
- package/package.json +7 -4
- package/src/cluster/block-transfer-service.ts +133 -68
- package/src/cluster/client.ts +64 -45
- package/src/cluster/cluster-error.ts +64 -0
- package/src/cluster/cluster-repo.ts +405 -55
- package/src/cluster/commit-cert.ts +139 -0
- package/src/cluster/service.ts +116 -44
- package/src/cluster/spread-on-churn.ts +328 -285
- package/src/cohort-topic/bootstrap-evidence-builder.ts +122 -0
- package/src/cohort-topic/bootstrap-evidence-verifiers.ts +132 -0
- package/src/cohort-topic/bootstrap-parent-reference.ts +159 -0
- package/src/cohort-topic/change-bridge.ts +109 -0
- package/src/cohort-topic/cohort-gossip-driver.ts +144 -0
- package/src/cohort-topic/cohort-gossip-transport.ts +74 -0
- package/src/cohort-topic/fret-trust-anchor.ts +153 -0
- package/src/cohort-topic/host.ts +2175 -0
- package/src/cohort-topic/index.ts +13 -0
- package/src/cohort-topic/membership-publish-sink.ts +20 -0
- package/src/cohort-topic/membership-source.ts +68 -0
- package/src/cohort-topic/peer-codec.ts +31 -0
- package/src/cohort-topic/peer-sig.ts +86 -0
- package/src/cohort-topic/protocols.ts +71 -0
- package/src/cohort-topic/reactivity-membership-gate.ts +77 -0
- package/src/cohort-topic/size-estimator.ts +16 -0
- package/src/cohort-topic/stream-util.ts +87 -0
- package/src/cohort-topic/threshold-crypto.ts +239 -0
- package/src/cohort-topic/topic-router.ts +77 -0
- package/src/dispute/cascade.ts +517 -0
- package/src/dispute/client.ts +12 -2
- package/src/dispute/dispute-service.ts +171 -24
- package/src/dispute/index.ts +42 -0
- package/src/dispute/invalidation.ts +587 -0
- package/src/dispute/types.ts +14 -0
- package/src/index.ts +4 -0
- package/src/libp2p-key-network.ts +67 -9
- package/src/libp2p-node-base.ts +633 -14
- package/src/matchmaking/aggregate-counts.ts +104 -0
- package/src/matchmaking/index.ts +20 -0
- package/src/matchmaking/module.ts +363 -0
- package/src/matchmaking/protocols.ts +51 -0
- package/src/matchmaking/provider-manager.ts +95 -0
- package/src/matchmaking/query-handler.ts +88 -0
- package/src/matchmaking/query-transport.ts +483 -0
- package/src/matchmaking/seeker-manager.ts +64 -0
- package/src/matchmaking/seeker-walk-client.ts +293 -0
- package/src/matchmaking/traffic-validation.ts +195 -0
- package/src/network/network-manager-service.ts +9 -2
- package/src/protocol-client.ts +119 -5
- package/src/reactivity/forwarder-host.ts +438 -0
- package/src/reactivity/index.ts +19 -0
- package/src/reactivity/notify-transport.ts +144 -0
- package/src/reactivity/origination-manager.ts +192 -0
- package/src/reactivity/protocols.ts +61 -0
- package/src/reactivity/push-state-gossip.ts +291 -0
- package/src/reactivity/recover-transport.ts +408 -0
- package/src/reactivity/rotation-rereg-scheduler.ts +256 -0
- package/src/reactivity/subscriber-registry.ts +96 -0
- package/src/reactivity/subscription-manager.ts +450 -0
- package/src/reactivity/topic-bytes.ts +37 -0
- package/src/repo/client.ts +54 -19
- package/src/repo/cluster-coordinator.ts +66 -26
- package/src/repo/coordinator-repo.ts +99 -15
- package/src/repo/service.ts +90 -42
- package/src/rpc-deadline.ts +45 -0
- package/src/storage/block-storage.ts +106 -3
- package/src/storage/i-block-storage.ts +27 -0
- package/src/storage/storage-repo.ts +209 -13
- package/src/sync/client.ts +5 -2
- package/src/testing/cohort-topic-mesh-harness.ts +613 -0
- package/src/testing/matchmaking-mesh-harness.ts +475 -0
- package/src/testing/mesh-harness.ts +22 -2
- package/src/testing/reactivity-mesh-harness.ts +922 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-manager-service.js","sourceRoot":"","sources":["../../../src/network/network-manager-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"network-manager-service.js","sourceRoot":"","sources":["../../../src/network/network-manager-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import type { PeerId, IPeerNetwork } from '@optimystic/db-core';
|
|
2
|
+
/**
|
|
3
|
+
* Thrown when the per-peer dial deadline expires before a stream is established.
|
|
4
|
+
* Distinct from a libp2p dial failure (no route, refused, etc.) so the
|
|
5
|
+
* batch-retry loop and diagnostic surfaces can identify a slow/unreachable peer
|
|
6
|
+
* specifically. `.code === DIAL_TIMEOUT_ERROR_CODE`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DIAL_TIMEOUT_ERROR_CODE = "DIAL_TIMEOUT";
|
|
9
|
+
export declare class DialTimeoutError extends Error {
|
|
10
|
+
readonly code = "DIAL_TIMEOUT";
|
|
11
|
+
constructor(peer: string, protocol: string, ms: number);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Thrown when a peer dialed successfully but the response-read deadline expired
|
|
15
|
+
* before it wrote a reply (it connected, then went silent). Distinct from
|
|
16
|
+
* {@link DialTimeoutError} (never connected) and from a parent cancellation
|
|
17
|
+
* (`options.signal`), so callers/diagnostics can tell "peer went quiet" apart
|
|
18
|
+
* from "peer was unreachable" and "we cancelled". `.code === RESPONSE_TIMEOUT_ERROR_CODE`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const RESPONSE_TIMEOUT_ERROR_CODE = "RESPONSE_TIMEOUT";
|
|
21
|
+
export declare class ResponseTimeoutError extends Error {
|
|
22
|
+
readonly code = "RESPONSE_TIMEOUT";
|
|
23
|
+
constructor(peer: string, protocol: string, ms: number);
|
|
24
|
+
}
|
|
2
25
|
/** Base class for clients that communicate via a libp2p protocol */
|
|
3
26
|
export declare class ProtocolClient {
|
|
4
27
|
protected readonly peerId: PeerId;
|
|
@@ -7,6 +30,8 @@ export declare class ProtocolClient {
|
|
|
7
30
|
protected processMessage<T>(message: unknown, protocol: string, options?: {
|
|
8
31
|
signal?: AbortSignal;
|
|
9
32
|
correlationId?: string;
|
|
33
|
+
dialTimeoutMs?: number;
|
|
34
|
+
responseTimeoutMs?: number;
|
|
10
35
|
}): Promise<T>;
|
|
11
36
|
}
|
|
12
37
|
//# sourceMappingURL=protocol-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-client.d.ts","sourceRoot":"","sources":["../../src/protocol-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMhE,oEAAoE;AACpE,qBAAa,cAAc;IAEzB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY;gBADzB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,YAAY;cAG7B,cAAc,CAAC,CAAC,EAC/B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"protocol-client.d.ts","sourceRoot":"","sources":["../../src/protocol-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMhE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,kBAA2B;gBAC5B,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAItD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAE9D,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,sBAA+B;gBAChC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAItD;AAED,oEAAoE;AACpE,qBAAa,cAAc;IAEzB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY;gBADzB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,YAAY;cAG7B,cAAc,CAAC,CAAC,EAC/B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5G,OAAO,CAAC,CAAC,CAAC;CAuIb"}
|
|
@@ -3,6 +3,35 @@ import { encode as lpEncode, decode as lpDecode } from 'it-length-prefixed';
|
|
|
3
3
|
import { first } from './it-utility.js';
|
|
4
4
|
import { createLogger } from './logger.js';
|
|
5
5
|
const log = createLogger('protocol-client');
|
|
6
|
+
/**
|
|
7
|
+
* Thrown when the per-peer dial deadline expires before a stream is established.
|
|
8
|
+
* Distinct from a libp2p dial failure (no route, refused, etc.) so the
|
|
9
|
+
* batch-retry loop and diagnostic surfaces can identify a slow/unreachable peer
|
|
10
|
+
* specifically. `.code === DIAL_TIMEOUT_ERROR_CODE`.
|
|
11
|
+
*/
|
|
12
|
+
export const DIAL_TIMEOUT_ERROR_CODE = 'DIAL_TIMEOUT';
|
|
13
|
+
export class DialTimeoutError extends Error {
|
|
14
|
+
code = DIAL_TIMEOUT_ERROR_CODE;
|
|
15
|
+
constructor(peer, protocol, ms) {
|
|
16
|
+
super(`dial timeout: peer=${peer} protocol=${protocol} after ${ms}ms`);
|
|
17
|
+
this.name = 'DialTimeoutError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Thrown when a peer dialed successfully but the response-read deadline expired
|
|
22
|
+
* before it wrote a reply (it connected, then went silent). Distinct from
|
|
23
|
+
* {@link DialTimeoutError} (never connected) and from a parent cancellation
|
|
24
|
+
* (`options.signal`), so callers/diagnostics can tell "peer went quiet" apart
|
|
25
|
+
* from "peer was unreachable" and "we cancelled". `.code === RESPONSE_TIMEOUT_ERROR_CODE`.
|
|
26
|
+
*/
|
|
27
|
+
export const RESPONSE_TIMEOUT_ERROR_CODE = 'RESPONSE_TIMEOUT';
|
|
28
|
+
export class ResponseTimeoutError extends Error {
|
|
29
|
+
code = RESPONSE_TIMEOUT_ERROR_CODE;
|
|
30
|
+
constructor(peer, protocol, ms) {
|
|
31
|
+
super(`response timeout: peer=${peer} protocol=${protocol} after ${ms}ms`);
|
|
32
|
+
this.name = 'ResponseTimeoutError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
6
35
|
/** Base class for clients that communicate via a libp2p protocol */
|
|
7
36
|
export class ProtocolClient {
|
|
8
37
|
peerId;
|
|
@@ -16,16 +45,86 @@ export class ProtocolClient {
|
|
|
16
45
|
const cid = options?.correlationId;
|
|
17
46
|
log('dial peer=%s protocol=%s%s', peer, protocol, cid ? ` cid=${cid}` : '');
|
|
18
47
|
const t0 = Date.now();
|
|
48
|
+
// Per-peer dial deadline. When set, an unreachable peer fails fast so the
|
|
49
|
+
// caller can re-pick a different coordinator — independent of any overall
|
|
50
|
+
// transaction budget the caller may also be enforcing.
|
|
51
|
+
const dialTimeoutMs = options?.dialTimeoutMs;
|
|
52
|
+
const dialController = dialTimeoutMs && dialTimeoutMs > 0 ? new AbortController() : undefined;
|
|
53
|
+
let dialTimer;
|
|
54
|
+
const onParentAbort = () => dialController?.abort(options?.signal?.reason);
|
|
55
|
+
if (dialController) {
|
|
56
|
+
dialTimer = setTimeout(() => {
|
|
57
|
+
dialController.abort(new DialTimeoutError(peer, protocol, dialTimeoutMs));
|
|
58
|
+
}, dialTimeoutMs);
|
|
59
|
+
if (options?.signal) {
|
|
60
|
+
if (options.signal.aborted)
|
|
61
|
+
dialController.abort(options.signal.reason);
|
|
62
|
+
else
|
|
63
|
+
options.signal.addEventListener('abort', onParentAbort, { once: true });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const dialSignal = dialController?.signal ?? options?.signal;
|
|
19
67
|
let stream;
|
|
20
68
|
try {
|
|
21
|
-
stream = await this.peerNetwork.connect(this.peerId, protocol, { signal:
|
|
69
|
+
stream = await this.peerNetwork.connect(this.peerId, protocol, { signal: dialSignal });
|
|
22
70
|
}
|
|
23
71
|
catch (err) {
|
|
24
|
-
|
|
72
|
+
const elapsed = Date.now() - t0;
|
|
73
|
+
// If the dial AbortController fired due to our own timer, surface the
|
|
74
|
+
// dial-timeout error rather than the underlying AbortError so callers
|
|
75
|
+
// can distinguish "peer was slow" from "user/parent cancelled".
|
|
76
|
+
if (dialController?.signal.aborted && dialController.signal.reason instanceof DialTimeoutError) {
|
|
77
|
+
log('dial:timeout peer=%s protocol=%s ms=%d%s', peer, protocol, elapsed, cid ? ` cid=${cid}` : '');
|
|
78
|
+
throw dialController.signal.reason;
|
|
79
|
+
}
|
|
80
|
+
const errCode = err?.code;
|
|
81
|
+
const errMessage = err instanceof Error ? err.message : String(err);
|
|
82
|
+
const truncatedMsg = errMessage.length > 200 ? errMessage.slice(0, 200) + '…' : errMessage;
|
|
83
|
+
log('dial:fail peer=%s protocol=%s ms=%d code=%s msg=%s%s', peer, protocol, elapsed, typeof errCode === 'string' && errCode.length > 0 ? errCode : 'none', truncatedMsg, cid ? ` cid=${cid}` : '');
|
|
25
84
|
throw err;
|
|
26
85
|
}
|
|
86
|
+
finally {
|
|
87
|
+
if (dialTimer)
|
|
88
|
+
clearTimeout(dialTimer);
|
|
89
|
+
if (options?.signal)
|
|
90
|
+
options.signal.removeEventListener('abort', onParentAbort);
|
|
91
|
+
}
|
|
27
92
|
log('dial:ok peer=%s ms=%d%s', peer, Date.now() - t0, cid ? ` cid=${cid}` : '');
|
|
93
|
+
// Per-peer response deadline. The dial controller is already cleared once a
|
|
94
|
+
// stream is established, so a peer that connects but then never writes a frame
|
|
95
|
+
// (and never closes the stream) would hang the `first(...)` read below forever.
|
|
96
|
+
// Setting a timer alone is not enough — the underlying `for await` over the
|
|
97
|
+
// libp2p stream keeps awaiting regardless. The decisive action is to actively
|
|
98
|
+
// `stream.abort(...)`, which rejects the stream's async iterator and unblocks
|
|
99
|
+
// the read. A parent `options.signal` abort is forwarded the same way so a
|
|
100
|
+
// cancelled caller tears the stream down rather than leaking it. When neither
|
|
101
|
+
// `responseTimeoutMs` nor `signal` is supplied, no cap is imposed — preserving
|
|
102
|
+
// every existing caller (mirrors how omitting `dialTimeoutMs` imposes no dial cap).
|
|
103
|
+
const responseTimeoutMs = options?.responseTimeoutMs;
|
|
104
|
+
let responseTimer;
|
|
105
|
+
let responseTimeoutError;
|
|
106
|
+
const onParentAbortResponse = () => {
|
|
107
|
+
try {
|
|
108
|
+
stream.abort(options?.signal?.reason ?? new Error('aborted'));
|
|
109
|
+
}
|
|
110
|
+
catch { /* already torn down */ }
|
|
111
|
+
};
|
|
28
112
|
try {
|
|
113
|
+
if (responseTimeoutMs && responseTimeoutMs > 0) {
|
|
114
|
+
responseTimer = setTimeout(() => {
|
|
115
|
+
responseTimeoutError = new ResponseTimeoutError(peer, protocol, responseTimeoutMs);
|
|
116
|
+
try {
|
|
117
|
+
stream.abort(responseTimeoutError);
|
|
118
|
+
}
|
|
119
|
+
catch { /* already torn down */ }
|
|
120
|
+
}, responseTimeoutMs);
|
|
121
|
+
}
|
|
122
|
+
if (options?.signal) {
|
|
123
|
+
if (options.signal.aborted)
|
|
124
|
+
onParentAbortResponse();
|
|
125
|
+
else
|
|
126
|
+
options.signal.addEventListener('abort', onParentAbortResponse, { once: true });
|
|
127
|
+
}
|
|
29
128
|
// Send the request using length-prefixed encoding
|
|
30
129
|
const encoded = pipe([new TextEncoder().encode(JSON.stringify(message))], lpEncode);
|
|
31
130
|
for await (const chunk of encoded) {
|
|
@@ -44,12 +143,35 @@ export class ProtocolClient {
|
|
|
44
143
|
yield parsed;
|
|
45
144
|
}
|
|
46
145
|
});
|
|
47
|
-
|
|
146
|
+
let result;
|
|
147
|
+
try {
|
|
148
|
+
result = await first(() => source, () => { throw new Error('No response received'); });
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
// Aborting the stream (our timer or a parent abort) surfaces here as an
|
|
152
|
+
// iterator error. Translate it so callers see why the read ended.
|
|
153
|
+
if (responseTimeoutError) {
|
|
154
|
+
log('response:timeout peer=%s protocol=%s ms=%d%s', peer, protocol, Date.now() - t0, cid ? ` cid=${cid}` : '');
|
|
155
|
+
throw responseTimeoutError;
|
|
156
|
+
}
|
|
157
|
+
if (options?.signal?.aborted) {
|
|
158
|
+
throw options.signal.reason;
|
|
159
|
+
}
|
|
160
|
+
throw err;
|
|
161
|
+
}
|
|
48
162
|
log('response peer=%s protocol=%s ms=%d%s', peer, protocol, Date.now() - t0, cid ? ` cid=${cid}` : '');
|
|
49
163
|
return result;
|
|
50
164
|
}
|
|
51
165
|
finally {
|
|
52
|
-
|
|
166
|
+
if (responseTimer)
|
|
167
|
+
clearTimeout(responseTimer);
|
|
168
|
+
if (options?.signal)
|
|
169
|
+
options.signal.removeEventListener('abort', onParentAbortResponse);
|
|
170
|
+
// Closing an already-aborted stream must be safe.
|
|
171
|
+
try {
|
|
172
|
+
await stream.close();
|
|
173
|
+
}
|
|
174
|
+
catch { /* already torn down */ }
|
|
53
175
|
}
|
|
54
176
|
}
|
|
55
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-client.js","sourceRoot":"","sources":["../../src/protocol-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAE5C,oEAAoE;AACpE,MAAM,OAAO,cAAc;IAEN;IACA;IAFpB,YACoB,MAAc,EACd,WAAyB;QADzB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAc;IACzC,CAAC;IAEK,KAAK,CAAC,cAAc,CAC7B,OAAgB,EAChB,QAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"protocol-client.js","sourceRoot":"","sources":["../../src/protocol-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reactivity — forwarder **host** orchestrator (`docs/reactivity.md` §Propagation, §Slow-subscriber
|
|
3
|
+
* backpressure, §Per-cohort policy).
|
|
4
|
+
*
|
|
5
|
+
* This is the piece that turns the in-process forward *decision* (db-core's {@link ReactivityForwarder})
|
|
6
|
+
* into live fan-out over the {@link ReactivityNotifyTransport}. For one {@link NotificationV1} — whether
|
|
7
|
+
* locally originated (the change-bridge's `emit` seam binds to {@link ReactivityForwarderHost.ingest}) or
|
|
8
|
+
* inbound off a dial ({@link ReactivityForwarderHost.onInbound}) — it:
|
|
9
|
+
*
|
|
10
|
+
* 1. lazily instantiates the per-collection {@link PushState} + forwarder behind the Edge policy gate
|
|
11
|
+
* ({@link instantiateForwarderPushState}: `undefined` on an Edge node ⇒ this node never forwards);
|
|
12
|
+
* 2. runs the db-core receive path (verify → dedupe → buffer) and stops on `"duplicate"` / `"untrusted"`;
|
|
13
|
+
* 3. on `"forward"`, fans the **unmodified** frame out to every direct subscriber (through the
|
|
14
|
+
* per-subscriber bounded queue, so a slow/dead subscriber's drops never stall the rest) and every
|
|
15
|
+
* child cohort.
|
|
16
|
+
*
|
|
17
|
+
* It owns the per-subscriber dequeue→dial delivery loop, the bounded-queue backpressure interaction,
|
|
18
|
+
* subscriber-queue eviction (the memory bound — a departed subscriber's queue is reclaimed lazily each
|
|
19
|
+
* fan-out round), and per-topic serialization so the replay ring + dedupe set never interleave across two
|
|
20
|
+
* concurrent notifications for the same collection.
|
|
21
|
+
*
|
|
22
|
+
* **Subscriber-id space.** `selfPeerId`, the {@link ReactivityForwarderHostDeps.directSubscribers} output,
|
|
23
|
+
* the {@link CohortRef.primary} child targets, and every {@link ReactivityNotifyTransport.send} target are
|
|
24
|
+
* the **same** string space (it is also the `perSubscriberQueue` key). This host is agnostic to the concrete
|
|
25
|
+
* encoding so long as it is consistent across all four seams; the **transport** pins which space —
|
|
26
|
+
* {@link import("./notify-transport.js").Libp2pReactivityNotifyTransport.send} calls `peerIdFromString`, so
|
|
27
|
+
* the space is the **canonical peer-id string** (NOT base64url-of-member-bytes — that would silently fail
|
|
28
|
+
* `peerIdFromString` and never dial). The {@link reactivityDirectSubscribers} adapter and the node-wiring
|
|
29
|
+
* layer ([reactivity-notification-transport]) therefore both emit peer-id strings.
|
|
30
|
+
*
|
|
31
|
+
* This module deliberately touches neither the libp2p node assembly ([reactivity-notification-transport])
|
|
32
|
+
* nor gossip ([reactivity-pushstate-gossip]); it depends only on the transport interface + db-core logic,
|
|
33
|
+
* so it is unit-testable with a fake transport.
|
|
34
|
+
*/
|
|
35
|
+
import { type NotificationV1, type PeerRef, type NodeProfile, type PushState, type PushStateInit, type CohortRef, type NotificationVerifier, type RegistrationRecord, type RotationRedirectV1 } from "@optimystic/db-core";
|
|
36
|
+
import type { ReactivityNotifyTransport } from "./notify-transport.js";
|
|
37
|
+
/**
|
|
38
|
+
* The reactivity topic id a notification belongs to: `H(tailId ‖ "reactivity")` over the notification's
|
|
39
|
+
* tail anchor. Kept in one place so it matches origination's `reactivityTailBytes` encoding and the
|
|
40
|
+
* subscriber/forwarder verifier's coord derivation byte-for-byte (both decode `tailId` as base64url first).
|
|
41
|
+
*/
|
|
42
|
+
export declare function reactivityNotificationTopicId(n: NotificationV1): Uint8Array;
|
|
43
|
+
/** The minimal cohort read the {@link reactivityDirectSubscribers} adapter needs (a {@link CoordEngine} satisfies it). */
|
|
44
|
+
export interface ReactivityRecordSource {
|
|
45
|
+
/** This cohort's locally-known direct registration records for `topicId`. */
|
|
46
|
+
records(topicId: Uint8Array): readonly RegistrationRecord[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The direct-subscriber **peer-id strings** for a reactivity topic, read from a cohort's
|
|
50
|
+
* {@link RegistrationRecord} set: a record carries a subscriber iff its opaque `appState` decodes to a
|
|
51
|
+
* reactivity {@link import("@optimystic/db-core").SubscribeAppPayloadV1}. `record.participantId` is the
|
|
52
|
+
* subscriber's dialable member id (db-core's `service` pins `participantId = self`), carried as
|
|
53
|
+
* `peerIdToBytes(peerId) = utf8(peerIdString)`; this decodes it back to the canonical peer-id string via
|
|
54
|
+
* {@link bytesToPeerIdString} so the value is both the `transport.send` dial target (which calls
|
|
55
|
+
* `peerIdFromString`) and the `perSubscriberQueue` key. **The whole host runs in this peer-id-string space**
|
|
56
|
+
* — `selfPeerId`, `resolveChildPrimary`, and every `send` target must agree, or a base64url-vs-peer-id
|
|
57
|
+
* mismatch is a silent no-dial. A record whose `appState` is absent or decodes to a non-reactivity payload
|
|
58
|
+
* (e.g. a matchmaking registration sharing the cohort store) is skipped.
|
|
59
|
+
*/
|
|
60
|
+
export declare function reactivityDirectSubscribers(source: ReactivityRecordSource, topicId: Uint8Array): string[];
|
|
61
|
+
/** Construction inputs for a {@link ReactivityForwarderHost}. */
|
|
62
|
+
export interface ReactivityForwarderHostDeps {
|
|
63
|
+
/** One-way notification transport (unicast send + inbound subscribe); fan-out dials each target through it. */
|
|
64
|
+
readonly transport: ReactivityNotifyTransport;
|
|
65
|
+
/** This node's member id, base64url — never dialed; a co-located subscriber is delivered in-process. */
|
|
66
|
+
readonly selfPeerId: string;
|
|
67
|
+
/** Node profile; gates {@link PushState} instantiation (Edge ⇒ subscriber-only, never forwards). */
|
|
68
|
+
readonly profile: NodeProfile;
|
|
69
|
+
/** Build the per-collection {@link PushStateInit} on first ingest for a topic this node serves. */
|
|
70
|
+
readonly pushStateInit: (topicId: Uint8Array, n: NotificationV1) => PushStateInit;
|
|
71
|
+
/** The notification verifier for a topic (a db-core `createNotificationVerifier` over the host's service verifier, T3). */
|
|
72
|
+
readonly verifierFor: (topicId: Uint8Array) => NotificationVerifier;
|
|
73
|
+
/** Direct-subscriber member ids (base64url) for a topic — e.g. {@link reactivityDirectSubscribers} over the cohort. */
|
|
74
|
+
readonly directSubscribers: (topicId: Uint8Array) => string[];
|
|
75
|
+
/** Resolve a child cohort's dialable primary when {@link CohortRef.primary} is absent (e.g. a FRET resolver). */
|
|
76
|
+
readonly resolveChildPrimary?: (ref: CohortRef) => string | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Route an inbound notification to a co-located subscription manager, when this node also subscribes the
|
|
79
|
+
* topic. **Must be idempotent on `(collectionId, revision)`**: on the {@link ReactivityForwarderHost.onInbound}
|
|
80
|
+
* path a node that is both a cohort member *and* a subscriber invokes this **twice** for the same
|
|
81
|
+
* notification — once in the subscriber role (directly) and once in the forwarder role (when `self` is in
|
|
82
|
+
* {@link directSubscribers}, via `fanOut`'s self-delivery). The db-core subscriber's `(collectionId,
|
|
83
|
+
* revision)` dedupe (`createReactivitySubscriber`) collapses the second call to a no-op, so a correctly
|
|
84
|
+
* wired manager delivers exactly once; a sink without that dedupe would double-deliver.
|
|
85
|
+
*/
|
|
86
|
+
readonly deliverLocal?: (topicId: Uint8Array, n: NotificationV1) => void;
|
|
87
|
+
/** Wall clock (unix ms) stamped on `receive`. Default `Date.now`. */
|
|
88
|
+
readonly clock?: () => number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The reactivity fan-out orchestrator. Build one per node; it serves every reactivity topic the node is a
|
|
92
|
+
* cohort member for, lazily instantiating per-collection state on first ingest. Bind
|
|
93
|
+
* {@link ReactivityForwarderHost.ingest} to the origination `emit` seam and
|
|
94
|
+
* {@link ReactivityForwarderHost.onInbound} to the transport's inbound subscribe.
|
|
95
|
+
*/
|
|
96
|
+
export declare class ReactivityForwarderHost {
|
|
97
|
+
private readonly transport;
|
|
98
|
+
private readonly selfPeerId;
|
|
99
|
+
private readonly profile;
|
|
100
|
+
private readonly pushStateInit;
|
|
101
|
+
private readonly verifierFor;
|
|
102
|
+
private readonly directSubscribers;
|
|
103
|
+
private readonly resolveChildPrimary?;
|
|
104
|
+
private readonly deliverLocal?;
|
|
105
|
+
private readonly clock;
|
|
106
|
+
/** Per-topic served state. `ServedTopic` ⇒ forwards; `null` ⇒ resolved subscriber-only (Edge); absent ⇒ unresolved. */
|
|
107
|
+
private readonly served;
|
|
108
|
+
/** Per-topic serialization tail: an ingest chains onto its topic's prior ingest so the ring/dedupe never interleave. */
|
|
109
|
+
private readonly ingestTails;
|
|
110
|
+
/**
|
|
111
|
+
* Per **old-topic** drain gate: set by {@link markRotated} when this node observes the collection's tail
|
|
112
|
+
* rotate, keyed by the outgoing tail's topicId (base64url). For `T_drain` after the rotation
|
|
113
|
+
* {@link rotationRedirectFor} answers a recover request reaching the outgoing tail with the gate's
|
|
114
|
+
* {@link RotationRedirectV1} ("this moved — go to the new tree"); once the window closes the entry is
|
|
115
|
+
* evicted along with the topic's served `PushState`.
|
|
116
|
+
*/
|
|
117
|
+
private readonly rotationGates;
|
|
118
|
+
constructor(deps: ReactivityForwarderHostDeps);
|
|
119
|
+
/**
|
|
120
|
+
* Local origination emit **and** the inbound forwarder path: receive → forward → fan-out for one
|
|
121
|
+
* notification on `topicId`. Ingests for one topic run strictly in sequence (verify is async and the
|
|
122
|
+
* replay ring + dedupe set must not interleave); ingests for different topics proceed concurrently.
|
|
123
|
+
* Never rejects — a fan-out fault can never surface as a commit failure on the origination seam.
|
|
124
|
+
*/
|
|
125
|
+
ingest(topicId: Uint8Array, n: NotificationV1): Promise<void>;
|
|
126
|
+
/** One serialized ingest: resolve served state, run receive, fan out on `"forward"`. Isolates all throws. */
|
|
127
|
+
private ingestSerialized;
|
|
128
|
+
/**
|
|
129
|
+
* Inbound notify dial: run the **subscriber** role (in-process delivery to a co-located manager) and the
|
|
130
|
+
* **forwarder** role (receive + fan-out) as applicable. A node that is both a cohort member and a
|
|
131
|
+
* subscriber does both — the forwarder dedupe + the subscriber's `(collectionId, revision)` dedupe keep
|
|
132
|
+
* it idempotent. Never rejects.
|
|
133
|
+
*/
|
|
134
|
+
onInbound(_from: PeerRef, n: NotificationV1): Promise<void>;
|
|
135
|
+
/** The live {@link PushState} for a served topic, or `undefined` (Edge, or not yet ingested). Test/diagnostic. */
|
|
136
|
+
pushStateFor(topicId: Uint8Array): PushState | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* Every live forwarder {@link PushState} this node currently serves: the topics it has ingested at least
|
|
139
|
+
* one notification for and instantiated state behind the Edge gate (subscriber-only `null`s and
|
|
140
|
+
* not-yet-ingested topics are skipped). The push-state-gossip driver iterates these each round to
|
|
141
|
+
* broadcast convergence state to each collection's cohort, so a member that missed an origin dial still
|
|
142
|
+
* ends up holding the replay entry.
|
|
143
|
+
*/
|
|
144
|
+
livePushStates(): PushState[];
|
|
145
|
+
/**
|
|
146
|
+
* The live {@link PushState} this node serves for `collectionId` (base64url), or `undefined` if none.
|
|
147
|
+
* The served map is keyed by **topicId**, but a backfill request carries only a collectionId and a
|
|
148
|
+
* resume that lost its tail must still resolve the collection's current tail — so this scans for the
|
|
149
|
+
* served topic whose `PushState.collectionId` matches. Across a tail-rotation **drain window** a
|
|
150
|
+
* collection can briefly have two served topics (the outgoing and incoming tail); the one with the
|
|
151
|
+
* highest `lastRevision` is the current tail, so that is the one returned. (The precise drain-window
|
|
152
|
+
* redirect choreography is `reactivity-tail-rotation-transport`'s; this picks the current tail.)
|
|
153
|
+
*/
|
|
154
|
+
pushStateForCollection(collectionId: string): PushState | undefined;
|
|
155
|
+
/**
|
|
156
|
+
* Record that the topic anchored on `oldTopicId` has **rotated** to a successor tail, starting a
|
|
157
|
+
* {@link TailDrainGate} so the outgoing tail bounces recover requests to the new tree for `T_drain`
|
|
158
|
+
* (`docs/reactivity.md` §Tail rotation step 2). db-core derives the redirect's `newTopicId` internally via
|
|
159
|
+
* `reactivityTopicId(newTailId)`. The trigger is origination observing the collection's `event.tailId`
|
|
160
|
+
* change ({@link reactivity-rotation-host-wiring-e2e}); this seam is called directly in unit tests.
|
|
161
|
+
*
|
|
162
|
+
* **Idempotent / chained.** A second `markRotated` for the **same** successor is a no-op; a `markRotated`
|
|
163
|
+
* to a **later** successor (higher `effectiveAtRevision`) replaces the gate — so a chained OLD→A→B rotation
|
|
164
|
+
* advances the redirect to the most recent successor and restarts its drain window from `now`. An earlier
|
|
165
|
+
* (or equal) successor leaves the existing gate untouched.
|
|
166
|
+
*/
|
|
167
|
+
markRotated(oldTopicId: Uint8Array, redirect: {
|
|
168
|
+
newTailId: string;
|
|
169
|
+
effectiveAtRevision: number;
|
|
170
|
+
}, now: number): void;
|
|
171
|
+
/**
|
|
172
|
+
* The drain-window redirect for a recover request that reached the outgoing tail anchored on `oldTopicId`,
|
|
173
|
+
* or `undefined` if this topic never rotated / its drain window has elapsed. While the gate is draining
|
|
174
|
+
* (`isDraining(now)`) returns its {@link RotationRedirectV1}; once `T_drain` closes, evicts the gate **and**
|
|
175
|
+
* the topic's served `PushState` (the old tail originates nothing further — this also reclaims the
|
|
176
|
+
* `served` / `ingestTails` maps the 12.31 review flagged as un-evicted on rotation) and returns `undefined`,
|
|
177
|
+
* so the next request gets no reply and the subscriber re-walks / chain-reads.
|
|
178
|
+
*/
|
|
179
|
+
rotationRedirectFor(oldTopicId: Uint8Array, now: number): RotationRedirectV1 | undefined;
|
|
180
|
+
/**
|
|
181
|
+
* Fan the unmodified frame out: reconcile (GC) departed-subscriber queues, enqueue per-subscriber
|
|
182
|
+
* (drop-oldest under pressure), drain each queue and deliver (self in-process, others dialed, per-target
|
|
183
|
+
* isolated), then dial each resolved child cohort. One slow/dead target never blocks the loop for the rest.
|
|
184
|
+
*/
|
|
185
|
+
private fanOut;
|
|
186
|
+
/** Reclaim the queues of subscribers no longer in the live set (lazy, one round late). */
|
|
187
|
+
private reconcileQueues;
|
|
188
|
+
/** Deliver one notification to one subscriber: self in-process, everyone else over the transport. */
|
|
189
|
+
private deliverTo;
|
|
190
|
+
/** Route to a co-located subscription manager, isolating a throwing subscriber from the rest of the fan-out. */
|
|
191
|
+
private deliverInProcess;
|
|
192
|
+
/** Fire one unicast send, isolated: a synchronous throw or a rejection is swallowed, never the loop's concern. */
|
|
193
|
+
private dispatch;
|
|
194
|
+
/** Resolve (instantiating once, behind the Edge gate) the served state for a topic. */
|
|
195
|
+
private resolveServed;
|
|
196
|
+
private topicKey;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=forwarder-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forwarder-host.d.ts","sourceRoot":"","sources":["../../../src/reactivity/forwarder-host.ts"],"names":[],"mappings":"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"}
|