@zlink-systems/framework 0.25.0 → 0.27.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/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -13,6 +13,8 @@ import { ZLinkLocationKeyCodec } from './key-codec';
|
|
|
13
13
|
import { normalizeEndpoint } from '../../contracts/Configuration/EndpointNotation';
|
|
14
14
|
import { ZLinkAutoConnectPlanner } from './auto-connect-planner';
|
|
15
15
|
import { ZLinkStateLane } from '../execution/state-lane';
|
|
16
|
+
import { ConnectError } from '@zlink-systems/zlink';
|
|
17
|
+
import type { ZLinkDispatchErrorSink } from '../diagnostics/dispatch-error-port';
|
|
16
18
|
import type {
|
|
17
19
|
IZLinkAutoConnectExecutor,
|
|
18
20
|
IZLinkAutoConnectPeerPublisher,
|
|
@@ -33,6 +35,7 @@ export interface ZLinkAutoConnectReconcilerOptions {
|
|
|
33
35
|
readonly events?: ZLinkAutoConnectEventSink;
|
|
34
36
|
readonly options?: ZLinkLocationOptionOverrides;
|
|
35
37
|
readonly monotonicNowMs?: () => number;
|
|
38
|
+
readonly errorSink: ZLinkDispatchErrorSink;
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
export class ZLinkAutoConnectReconciler {
|
|
@@ -46,6 +49,7 @@ export class ZLinkAutoConnectReconciler {
|
|
|
46
49
|
private readonly events?: ZLinkAutoConnectEventSink;
|
|
47
50
|
private readonly options: Required<ZLinkLocationOptionOverrides>;
|
|
48
51
|
private readonly monotonicNowMs: () => number;
|
|
52
|
+
private readonly errorSink: ZLinkDispatchErrorSink;
|
|
49
53
|
private readonly active = new Map<string, ZLinkAutoConnectTarget>();
|
|
50
54
|
private readonly pendingDisconnects = new Map<string, ZLinkAutoConnectTarget>();
|
|
51
55
|
private readonly failedEndpoints = new Set<string>();
|
|
@@ -73,6 +77,7 @@ export class ZLinkAutoConnectReconciler {
|
|
|
73
77
|
this.events = options.events;
|
|
74
78
|
this.options = { ...zlinkRuntimeDefaultLocationOptions, ...options.options };
|
|
75
79
|
this.monotonicNowMs = options.monotonicNowMs ?? (() => performance.now());
|
|
80
|
+
this.errorSink = options.errorSink;
|
|
76
81
|
this.executor.onDisconnected?.((endpoint) => this.recordDisconnectedEndpoint(endpoint));
|
|
77
82
|
}
|
|
78
83
|
|
|
@@ -155,13 +160,6 @@ export class ZLinkAutoConnectReconciler {
|
|
|
155
160
|
await this.lane.run(() => {
|
|
156
161
|
this.storeFailedValue = false;
|
|
157
162
|
this.storeFailureStartedAtMs = undefined;
|
|
158
|
-
// After a store restart, owners may need one full lease interval to
|
|
159
|
-
// reclaim their token and republish a descriptor. Do not interpret the
|
|
160
|
-
// incomplete post-restart scan as a definitive removal.
|
|
161
|
-
// Keep the existing transport set through one lease interval while
|
|
162
|
-
// owners reclaim their tokens and republish descriptors. This deferral
|
|
163
|
-
// applies only after a Store operation failed; a successful empty scan
|
|
164
|
-
// is authoritative and must remove stale peers promptly.
|
|
165
163
|
this.recoveryDeferUntilMs = this.monotonicNowMs() + this.options.ownerLeaseTtlMs;
|
|
166
164
|
});
|
|
167
165
|
}
|
|
@@ -175,7 +173,6 @@ export class ZLinkAutoConnectReconciler {
|
|
|
175
173
|
);
|
|
176
174
|
});
|
|
177
175
|
const candidates = ZLinkAutoConnectPlanner.computeCandidates(this.local, rows);
|
|
178
|
-
const nowMs = this.monotonicNowMs();
|
|
179
176
|
this.executor.expectPeers?.([...candidates.values()]);
|
|
180
177
|
this.executor.replaceNotRequired?.(
|
|
181
178
|
ZLinkAutoConnectPlanner.computeNotRequired(this.local, rows)
|
|
@@ -196,6 +193,18 @@ export class ZLinkAutoConnectReconciler {
|
|
|
196
193
|
for (const [key, target] of existingTargets) {
|
|
197
194
|
if (activeKeys.has(key)) desired.set(key, target);
|
|
198
195
|
}
|
|
196
|
+
const deferringMissingTargets =
|
|
197
|
+
this.monotonicNowMs() < (await this.lane.run(() => this.recoveryDeferUntilMs));
|
|
198
|
+
let staleCandidates = candidates;
|
|
199
|
+
if (deferringMissingTargets) {
|
|
200
|
+
const retainedCandidates = new Map(candidates);
|
|
201
|
+
const lastDesired = await this.lane.run(() => [...this.lastDesired]);
|
|
202
|
+
for (const [key, target] of lastDesired) {
|
|
203
|
+
if (!desired.has(key)) desired.set(key, target);
|
|
204
|
+
if (!retainedCandidates.has(key)) retainedCandidates.set(key, target);
|
|
205
|
+
}
|
|
206
|
+
staleCandidates = retainedCandidates;
|
|
207
|
+
}
|
|
199
208
|
await this.lane.run(() => {
|
|
200
209
|
this.lastDesired = new Map(desired);
|
|
201
210
|
});
|
|
@@ -226,14 +235,13 @@ export class ZLinkAutoConnectReconciler {
|
|
|
226
235
|
await this.lane.run(() => {
|
|
227
236
|
this.pendingDisconnects.delete(key);
|
|
228
237
|
});
|
|
229
|
-
|
|
230
|
-
if (connected) {
|
|
238
|
+
await this.connectTarget(target, async () => {
|
|
231
239
|
connectedEndpoints.push(target.endpoint);
|
|
232
240
|
await this.lane.run(() => {
|
|
233
241
|
this.active.set(key, target);
|
|
234
242
|
this.failedEndpoints.delete(target.endpoint);
|
|
235
243
|
});
|
|
236
|
-
}
|
|
244
|
+
});
|
|
237
245
|
continue;
|
|
238
246
|
}
|
|
239
247
|
|
|
@@ -252,27 +260,17 @@ export class ZLinkAutoConnectReconciler {
|
|
|
252
260
|
await this.lane.run(() => {
|
|
253
261
|
this.pendingDisconnects.delete(key);
|
|
254
262
|
});
|
|
255
|
-
|
|
256
|
-
if (connected) {
|
|
263
|
+
await this.connectTarget(target, async () => {
|
|
257
264
|
connectedEndpoints.push(target.endpoint);
|
|
258
265
|
await this.lane.run(() => {
|
|
259
266
|
this.active.set(key, target);
|
|
260
267
|
this.failedEndpoints.delete(target.endpoint);
|
|
261
268
|
});
|
|
262
|
-
}
|
|
269
|
+
});
|
|
263
270
|
}
|
|
264
271
|
}
|
|
265
272
|
|
|
266
|
-
|
|
267
|
-
this.publishDesiredSetChange(connectedEndpoints, disconnectedEndpoints);
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// A store restart can expose an incomplete descriptor set while peers are
|
|
272
|
-
// reclaiming their owner leases. Preserve existing transport connections
|
|
273
|
-
// during that recovery window; stale-peer cleanup is safe after the
|
|
274
|
-
// deferred reconciliation has completed.
|
|
275
|
-
this.executor.disconnectStalePeers?.([...candidates.values()]);
|
|
273
|
+
this.executor.disconnectStalePeers?.([...staleCandidates.values()]);
|
|
276
274
|
|
|
277
275
|
const activeTargets = await this.lane.run(() => [...this.active]);
|
|
278
276
|
for (const [key, target] of activeTargets) {
|
|
@@ -409,10 +407,25 @@ export class ZLinkAutoConnectReconciler {
|
|
|
409
407
|
const retryTargets = await this.lane.run(() => this.beginStoreFailureCore());
|
|
410
408
|
if (retryTargets === undefined) return;
|
|
411
409
|
for (const [key, target] of retryTargets) {
|
|
412
|
-
|
|
410
|
+
await this.connectTarget(target, async () => {
|
|
413
411
|
await this.lane.run(() => this.completeStoreFailureConnectCore(key, target));
|
|
414
|
-
}
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
private async connectTarget(
|
|
417
|
+
target: ZLinkAutoConnectTarget,
|
|
418
|
+
accept: () => Promise<void>
|
|
419
|
+
): Promise<void> {
|
|
420
|
+
let accepted: boolean;
|
|
421
|
+
try {
|
|
422
|
+
accepted = await this.executor.connect(target);
|
|
423
|
+
} catch (error) {
|
|
424
|
+
if (!(error instanceof ConnectError)) throw error;
|
|
425
|
+
this.errorSink.reportRuntimeTaskException('auto-connect', error);
|
|
426
|
+
return;
|
|
415
427
|
}
|
|
428
|
+
if (accepted) await accept();
|
|
416
429
|
}
|
|
417
430
|
|
|
418
431
|
private beginStoreFailureCore():
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { UINT64_BYTES } from '@zlink-systems/stream-wire';
|
|
2
|
+
import { OPERATION_IDENTITY_BYTES } from '../foundation/operation-identity';
|
|
1
3
|
import { randomBytes } from 'node:crypto';
|
|
2
4
|
|
|
3
|
-
export function randomOperationId(entropy: Uint8Array = randomBytes(
|
|
5
|
+
export function randomOperationId(entropy: Uint8Array = randomBytes(OPERATION_IDENTITY_BYTES)): {
|
|
4
6
|
readonly high: bigint;
|
|
5
7
|
readonly low: bigint;
|
|
6
8
|
} {
|
|
7
|
-
if (entropy.byteLength !==
|
|
9
|
+
if (entropy.byteLength !== OPERATION_IDENTITY_BYTES)
|
|
10
|
+
throw new RangeError(`Operation ID entropy must be ${OPERATION_IDENTITY_BYTES} bytes.`);
|
|
8
11
|
const bytes = Buffer.from(entropy);
|
|
9
12
|
const high = bytes.readBigUInt64BE(0);
|
|
10
|
-
const low = bytes.readBigUInt64BE(
|
|
13
|
+
const low = bytes.readBigUInt64BE(UINT64_BYTES);
|
|
11
14
|
return high === 0n && low === 0n ? { high, low: 1n } : { high, low };
|
|
12
15
|
}
|
|
@@ -128,14 +128,23 @@ export interface ZLinkDomainLocationStore {
|
|
|
128
128
|
): Promise<ZLinkCreationTerminalReadResult>;
|
|
129
129
|
reserve(
|
|
130
130
|
request: ZLinkObjectReserveRequest,
|
|
131
|
-
signal?: AbortSignal
|
|
131
|
+
signal?: AbortSignal,
|
|
132
|
+
deadlineUnixMs?: bigint
|
|
132
133
|
): Promise<ZLinkObjectReserveResult>;
|
|
133
|
-
commit(
|
|
134
|
+
commit(
|
|
135
|
+
request: ZLinkObjectCommitRequest,
|
|
136
|
+
signal?: AbortSignal,
|
|
137
|
+
deadlineUnixMs?: bigint
|
|
138
|
+
): Promise<ZLinkObjectCommitResult>;
|
|
134
139
|
completeCreation(
|
|
135
140
|
request: ZLinkObjectCreationCompleteRequest,
|
|
136
141
|
signal?: AbortSignal
|
|
137
142
|
): Promise<ZLinkObjectCreationCompleteResult>;
|
|
138
|
-
abort(
|
|
143
|
+
abort(
|
|
144
|
+
request: ZLinkObjectAbortRequest,
|
|
145
|
+
signal?: AbortSignal,
|
|
146
|
+
deadlineUnixMs?: bigint
|
|
147
|
+
): Promise<ZLinkObjectAbortResult>;
|
|
139
148
|
|
|
140
149
|
prepareAggregate(
|
|
141
150
|
request: ZLinkAggregatePrepareRequest,
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AUTHORITY_ENVELOPE_MAX_BYTES,
|
|
3
|
+
CREATION_INTENT_MAX_BYTES,
|
|
4
|
+
CREATION_TERMINAL_ENVELOPE_MAX_BYTES
|
|
5
|
+
} from '../../contracts/Configuration/InternalDefaults';
|
|
6
|
+
import { UINT64_MAX } from '@zlink-systems/stream-wire';
|
|
7
|
+
import { ZLINK_MAX_ROUTING_ID_BYTES } from '../../contracts/Common/CoreTypes';
|
|
8
|
+
import { ZLINK_PROVIDER_MAX_PAGE_SIZE } from '../../contracts/Locations/Stores';
|
|
1
9
|
import { randomUUID } from 'node:crypto';
|
|
10
|
+
import { SHA256_DIGEST_BYTES } from '../foundation/actor-join-recovery-codec';
|
|
2
11
|
import type {
|
|
3
12
|
ZLinkAggregateAbortResult,
|
|
4
13
|
ZLinkAggregateCommitResult,
|
|
@@ -34,9 +43,9 @@ import { encodeAuthorityKey } from './authority-key-codec';
|
|
|
34
43
|
import { creationTerminalPreimage } from './opaque-record-key';
|
|
35
44
|
|
|
36
45
|
const MAX_GENERATION = 0x7fff_ffff_ffff_ffffn;
|
|
37
|
-
|
|
46
|
+
|
|
38
47
|
const CREATION_TERMINAL_RETENTION_MS = 5 * 60 * 1000;
|
|
39
|
-
const MAX_U64 =
|
|
48
|
+
const MAX_U64 = UINT64_MAX;
|
|
40
49
|
|
|
41
50
|
export interface ZLinkInMemoryAuthorityValidation {
|
|
42
51
|
isTargetLive(
|
|
@@ -190,10 +199,22 @@ export class ZLinkInMemoryAuthorityStore {
|
|
|
190
199
|
if (!this.isOwnerLive(row.snapshot)) {
|
|
191
200
|
return { kind: 'conflict', current: this.read(keyValue) };
|
|
192
201
|
}
|
|
202
|
+
if (
|
|
203
|
+
mutation.generationTransition === 'reincarnate' &&
|
|
204
|
+
(this.objectGeneration >= MAX_GENERATION || this.ownerGeneration >= MAX_GENERATION)
|
|
205
|
+
) {
|
|
206
|
+
return { kind: 'generationExhausted' };
|
|
207
|
+
}
|
|
193
208
|
const nextVersion = this.tryNextStoreVersion();
|
|
194
209
|
if (nextVersion === undefined) return { kind: 'generationExhausted' };
|
|
195
210
|
row.snapshot = {
|
|
196
211
|
...row.snapshot,
|
|
212
|
+
...(mutation.generationTransition === 'reincarnate'
|
|
213
|
+
? {
|
|
214
|
+
objectGeneration: ++this.objectGeneration,
|
|
215
|
+
authorityOwnerGeneration: ++this.ownerGeneration
|
|
216
|
+
}
|
|
217
|
+
: {}),
|
|
197
218
|
storeVersion: version(nextVersion),
|
|
198
219
|
payload: Buffer.from(mutation.payload)
|
|
199
220
|
};
|
|
@@ -208,8 +229,8 @@ export class ZLinkInMemoryAuthorityStore {
|
|
|
208
229
|
signal?: AbortSignal
|
|
209
230
|
): Promise<ZLinkAuthorityScanResult> {
|
|
210
231
|
signal?.throwIfAborted();
|
|
211
|
-
if (!Number.isInteger(limit) || limit < 1 || limit >
|
|
212
|
-
throw new RangeError(
|
|
232
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > ZLINK_PROVIDER_MAX_PAGE_SIZE) {
|
|
233
|
+
throw new RangeError(`Authority scan limit must be in 1..${ZLINK_PROVIDER_MAX_PAGE_SIZE}.`);
|
|
213
234
|
}
|
|
214
235
|
const decoded =
|
|
215
236
|
cursor === undefined
|
|
@@ -814,7 +835,7 @@ function validateAuthorityMutation(mutation: ZLinkAuthorityMutation): void {
|
|
|
814
835
|
}
|
|
815
836
|
const generationTransition = (mutation as { readonly generationTransition?: unknown })
|
|
816
837
|
.generationTransition;
|
|
817
|
-
if (generationTransition !== 'preserve') {
|
|
838
|
+
if (generationTransition !== 'preserve' && generationTransition !== 'reincarnate') {
|
|
818
839
|
throw new TypeError('Authority owner transitions require an aggregate CAS.');
|
|
819
840
|
}
|
|
820
841
|
}
|
|
@@ -826,9 +847,9 @@ function validateReserve(request: ZLinkObjectReserveRequest): void {
|
|
|
826
847
|
validatePayload(request.creatingPayload);
|
|
827
848
|
validateCapacityVector(request.capacity);
|
|
828
849
|
if (
|
|
829
|
-
request.intent.requestSha256.byteLength !==
|
|
850
|
+
request.intent.requestSha256.byteLength !== SHA256_DIGEST_BYTES ||
|
|
830
851
|
request.intent.requestEncodedSize < 0n ||
|
|
831
|
-
request.intent.requestEncodedSize > BigInt(
|
|
852
|
+
request.intent.requestEncodedSize > BigInt(CREATION_INTENT_MAX_BYTES)
|
|
832
853
|
) {
|
|
833
854
|
throw new TypeError('Object creation content receipt is invalid.');
|
|
834
855
|
}
|
|
@@ -837,9 +858,13 @@ function validateReserve(request: ZLinkObjectReserveRequest): void {
|
|
|
837
858
|
function validateCreationOperation(operation: ZLinkCreationOperationIdentity): void {
|
|
838
859
|
const sourceRid = String(operation.sourceNodeRid);
|
|
839
860
|
const sourceRidBytes = Buffer.byteLength(sourceRid, 'utf8');
|
|
840
|
-
if (
|
|
861
|
+
if (
|
|
862
|
+
sourceRidBytes < 1 ||
|
|
863
|
+
sourceRidBytes > ZLINK_MAX_ROUTING_ID_BYTES ||
|
|
864
|
+
sourceRid.includes('\0')
|
|
865
|
+
) {
|
|
841
866
|
throw new TypeError(
|
|
842
|
-
|
|
867
|
+
`Creation terminal source node RID must contain 1..${ZLINK_MAX_ROUTING_ID_BYTES} UTF-8 bytes without NUL.`
|
|
843
868
|
);
|
|
844
869
|
}
|
|
845
870
|
if (
|
|
@@ -861,8 +886,10 @@ function validateTerminalForMutation(
|
|
|
861
886
|
): ZLinkCreationTerminalRecord | undefined {
|
|
862
887
|
if (publication === undefined) return undefined;
|
|
863
888
|
validateCreationOperation(publication.operation);
|
|
864
|
-
if (publication.terminalEnvelope.byteLength >
|
|
865
|
-
throw new RangeError(
|
|
889
|
+
if (publication.terminalEnvelope.byteLength > CREATION_TERMINAL_ENVELOPE_MAX_BYTES) {
|
|
890
|
+
throw new RangeError(
|
|
891
|
+
`Creation terminal envelope must not exceed ${CREATION_TERMINAL_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
|
|
892
|
+
);
|
|
866
893
|
}
|
|
867
894
|
const deadlineMs = publication.operationDeadline.getTime();
|
|
868
895
|
const expiresAtMs = deadlineMs + CREATION_TERMINAL_RETENTION_MS;
|
|
@@ -915,8 +942,8 @@ function validateAggregateRequest(request: ZLinkAggregatePrepareRequest): void {
|
|
|
915
942
|
if (request.aggregateGeneration < 1n || request.participants.length < 1) {
|
|
916
943
|
throw new RangeError('Aggregate generation and participant count are invalid.');
|
|
917
944
|
}
|
|
918
|
-
if (request.inventoryDigest.byteLength !==
|
|
919
|
-
throw new TypeError(
|
|
945
|
+
if (request.inventoryDigest.byteLength !== SHA256_DIGEST_BYTES) {
|
|
946
|
+
throw new TypeError(`Aggregate inventory digest must contain ${SHA256_DIGEST_BYTES} bytes.`);
|
|
920
947
|
}
|
|
921
948
|
validateCapacityVector(request.capacity);
|
|
922
949
|
const keys = request.participants.map((participant) => participant.authorityKey.value);
|
|
@@ -927,8 +954,10 @@ function validateAggregateRequest(request: ZLinkAggregatePrepareRequest): void {
|
|
|
927
954
|
}
|
|
928
955
|
|
|
929
956
|
function validatePayload(payload: Uint8Array): void {
|
|
930
|
-
if (payload.byteLength >
|
|
931
|
-
throw new RangeError(
|
|
957
|
+
if (payload.byteLength > AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
958
|
+
throw new RangeError(
|
|
959
|
+
`Authority payload exceeds ${AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`
|
|
960
|
+
);
|
|
932
961
|
}
|
|
933
962
|
}
|
|
934
963
|
|
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
import type { RoutingId } from '../../contracts/Common';
|
|
2
|
+
import { ZLINK_MAX_IDENTITY_TEXT_BYTES } from '../../contracts/Common/CoreTypes';
|
|
3
|
+
import {
|
|
4
|
+
isValidPublicWeight,
|
|
5
|
+
ZLINK_MAX_PUBLIC_WEIGHT
|
|
6
|
+
} from '../../contracts/Configuration/RegistrationBuilderPolicy';
|
|
7
|
+
import type {
|
|
8
|
+
ZLinkActorTransferPrepareRequest,
|
|
9
|
+
ZLinkActorTransferRecord,
|
|
10
|
+
ZLinkActorTransferState,
|
|
11
|
+
ZLinkActorTransferWriteResult
|
|
12
|
+
} from '../../contracts/Locations/ActorTransfer';
|
|
13
|
+
import {
|
|
14
|
+
matchesActorLocation,
|
|
15
|
+
matchesPeerLocation,
|
|
16
|
+
matchesRouteLocation,
|
|
17
|
+
matchesSpotLocation
|
|
18
|
+
} from '../../location-store-integration';
|
|
19
|
+
import { encodeAuthorityKey } from './authority-key-codec';
|
|
20
|
+
import type { ZLinkDomainLocationStore } from './domain-store-contract';
|
|
21
|
+
import { ZLinkInMemoryAuthorityStore } from './in-memory-authority-store';
|
|
2
22
|
import {
|
|
3
|
-
ZLinkLocationKind,
|
|
4
23
|
ZLinkFrameworkRuntimeState,
|
|
24
|
+
ZLinkLocationKind,
|
|
5
25
|
ZLinkLocationWriteIntent,
|
|
6
26
|
ZLinkLocationWriteStatus,
|
|
7
27
|
ZLinkObjectRole,
|
|
8
28
|
type ZLinkActorLocation,
|
|
29
|
+
type ZLinkActorLocationFilter,
|
|
30
|
+
type ZLinkActorLocationKey,
|
|
9
31
|
type ZLinkAggregateAbortResult,
|
|
10
32
|
type ZLinkAggregateCommitResult,
|
|
11
33
|
type ZLinkAggregateFence,
|
|
@@ -18,22 +40,18 @@ import {
|
|
|
18
40
|
type ZLinkAuthorityScanCursor,
|
|
19
41
|
type ZLinkAuthorityScanResult,
|
|
20
42
|
type ZLinkAuthorityStoreVersion,
|
|
21
|
-
type
|
|
22
|
-
type
|
|
43
|
+
type ZLinkClientServerServerDescriptor,
|
|
44
|
+
type ZLinkClientServerServerDescriptorKey,
|
|
45
|
+
type ZLinkCreationOperationIdentity,
|
|
46
|
+
type ZLinkCreationTerminalReadResult,
|
|
47
|
+
type ZLinkFanoutPublisherDescriptor,
|
|
48
|
+
type ZLinkFanoutPublisherDescriptorKey,
|
|
23
49
|
type ZLinkLocationChangeStampScope,
|
|
24
50
|
type ZLinkLocationOwnerToken,
|
|
25
51
|
type ZLinkLocationPage,
|
|
26
52
|
type ZLinkLocationWriteResult,
|
|
27
53
|
type ZLinkMeshNodeDescriptor,
|
|
28
54
|
type ZLinkMeshNodeDescriptorKey,
|
|
29
|
-
type ZLinkClientServerServerDescriptor,
|
|
30
|
-
type ZLinkClientServerServerDescriptorKey,
|
|
31
|
-
type ZLinkFanoutPublisherDescriptor,
|
|
32
|
-
type ZLinkFanoutPublisherDescriptorKey,
|
|
33
|
-
type ZLinkOwnerLeaseClaimResult,
|
|
34
|
-
type ZLinkOwnerLeaseReadResult,
|
|
35
|
-
type ZLinkOwnerLeaseReleaseResult,
|
|
36
|
-
type ZLinkOwnerLeaseRenewResult,
|
|
37
55
|
type ZLinkObjectAbortRequest,
|
|
38
56
|
type ZLinkObjectAbortResult,
|
|
39
57
|
type ZLinkObjectCommitRequest,
|
|
@@ -42,8 +60,10 @@ import {
|
|
|
42
60
|
type ZLinkObjectCreationCompleteResult,
|
|
43
61
|
type ZLinkObjectReserveRequest,
|
|
44
62
|
type ZLinkObjectReserveResult,
|
|
45
|
-
type
|
|
46
|
-
type
|
|
63
|
+
type ZLinkOwnerLeaseClaimResult,
|
|
64
|
+
type ZLinkOwnerLeaseReadResult,
|
|
65
|
+
type ZLinkOwnerLeaseReleaseResult,
|
|
66
|
+
type ZLinkOwnerLeaseRenewResult,
|
|
47
67
|
type ZLinkPageRequest,
|
|
48
68
|
type ZLinkPeerLocation,
|
|
49
69
|
type ZLinkPeerLocationFilter,
|
|
@@ -55,23 +75,11 @@ import {
|
|
|
55
75
|
type ZLinkSpotLocationFilter,
|
|
56
76
|
type ZLinkSpotLocationKey
|
|
57
77
|
} from './internal-location-contracts';
|
|
58
|
-
import type {
|
|
59
|
-
ZLinkActorTransferPrepareRequest,
|
|
60
|
-
ZLinkActorTransferRecord,
|
|
61
|
-
ZLinkActorTransferState,
|
|
62
|
-
ZLinkActorTransferWriteResult
|
|
63
|
-
} from '../../contracts/Locations/ActorTransfer';
|
|
64
78
|
import type { ZLinkFanoutLocationStore } from './internal-store-contracts';
|
|
65
|
-
import type { ZLinkDomainLocationStore } from './domain-store-contract';
|
|
66
|
-
import { ZLinkInMemoryAuthorityStore } from './in-memory-authority-store';
|
|
67
|
-
import { encodeAuthorityKey } from './authority-key-codec';
|
|
68
79
|
import { ZLinkLocationKeyCodec } from './key-codec';
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
matchesRouteLocation,
|
|
73
|
-
matchesSpotLocation
|
|
74
|
-
} from '../../location-store-integration';
|
|
80
|
+
const MAX_LOCATION_GENERATION = 0x7fff_ffff_ffff_ffffn;
|
|
81
|
+
|
|
82
|
+
const MAX_DESCRIPTOR_OBJECT_CAPABILITIES = 1024;
|
|
75
83
|
|
|
76
84
|
export class ZLinkInMemoryLocationStore
|
|
77
85
|
implements ZLinkDomainLocationStore, ZLinkFanoutLocationStore
|
|
@@ -955,7 +963,7 @@ export class ZLinkInMemoryLocationStore
|
|
|
955
963
|
if (current !== undefined && current.leaseExpiresAt.getTime() > storeNow.getTime()) {
|
|
956
964
|
return { kind: 'conflict' };
|
|
957
965
|
}
|
|
958
|
-
if (this.ownerLeaseGeneration >=
|
|
966
|
+
if (this.ownerLeaseGeneration >= MAX_LOCATION_GENERATION) {
|
|
959
967
|
return { kind: 'generationExhausted' };
|
|
960
968
|
}
|
|
961
969
|
const token = { ownerId, leaseGeneration: ++this.ownerLeaseGeneration };
|
|
@@ -1282,12 +1290,14 @@ function validateMeshNodeDescriptor(descriptor: ZLinkMeshNodeDescriptor): void {
|
|
|
1282
1290
|
}
|
|
1283
1291
|
if (descriptor.objectRole === ZLinkObjectRole.Server) {
|
|
1284
1292
|
if (descriptor.entrySpotId !== undefined && !validDescriptorText(descriptor.entrySpotId)) {
|
|
1285
|
-
throw new TypeError(
|
|
1293
|
+
throw new TypeError(
|
|
1294
|
+
`MeshNode Entry Spot ID must contain 1..${ZLINK_MAX_IDENTITY_TEXT_BYTES} UTF-8 bytes.`
|
|
1295
|
+
);
|
|
1286
1296
|
}
|
|
1287
1297
|
} else if (descriptor.entrySpotId !== undefined) {
|
|
1288
1298
|
throw new TypeError('Only Object Server descriptors may publish an Entry Spot ID.');
|
|
1289
1299
|
}
|
|
1290
|
-
const maxGeneration =
|
|
1300
|
+
const maxGeneration = MAX_LOCATION_GENERATION;
|
|
1291
1301
|
if (
|
|
1292
1302
|
descriptor.lifecycleGeneration < 1n ||
|
|
1293
1303
|
descriptor.lifecycleGeneration > maxGeneration ||
|
|
@@ -1320,9 +1330,8 @@ function validateMeshNodeDescriptor(descriptor: ZLinkMeshNodeDescriptor): void {
|
|
|
1320
1330
|
!Number.isSafeInteger(descriptor.activationConcurrency.limit) ||
|
|
1321
1331
|
descriptor.activationConcurrency.limit < 1 ||
|
|
1322
1332
|
descriptor.activationConcurrency.active > descriptor.activationConcurrency.limit ||
|
|
1323
|
-
descriptor.placementWeight
|
|
1324
|
-
descriptor.
|
|
1325
|
-
descriptor.objectCapabilities.length > 1024 ||
|
|
1333
|
+
!isValidPublicWeight(descriptor.placementWeight) ||
|
|
1334
|
+
descriptor.objectCapabilities.length > MAX_DESCRIPTOR_OBJECT_CAPABILITIES ||
|
|
1326
1335
|
(descriptor.objectRole !== ZLinkObjectRole.Server && descriptor.objectCapabilities.length !== 0)
|
|
1327
1336
|
) {
|
|
1328
1337
|
throw new RangeError('MeshNode object capacity is invalid.');
|
|
@@ -1350,7 +1359,7 @@ function validateMeshNodeDescriptor(descriptor: ZLinkMeshNodeDescriptor): void {
|
|
|
1350
1359
|
|
|
1351
1360
|
function validDescriptorText(value: string): boolean {
|
|
1352
1361
|
const size = Buffer.byteLength(value, 'utf8');
|
|
1353
|
-
return size >= 1 && size <=
|
|
1362
|
+
return size >= 1 && size <= ZLINK_MAX_IDENTITY_TEXT_BYTES && !value.includes('\0');
|
|
1354
1363
|
}
|
|
1355
1364
|
|
|
1356
1365
|
function meshNodeImmutableFingerprint(descriptor: ZLinkMeshNodeDescriptor): string {
|
|
@@ -1436,7 +1445,7 @@ function validateClientServerDescriptor(descriptor: ZLinkClientServerServerDescr
|
|
|
1436
1445
|
) {
|
|
1437
1446
|
throw new TypeError('ClientServer descriptor identity and endpoint are required.');
|
|
1438
1447
|
}
|
|
1439
|
-
const maxGeneration =
|
|
1448
|
+
const maxGeneration = MAX_LOCATION_GENERATION;
|
|
1440
1449
|
if (
|
|
1441
1450
|
descriptor.lifecycleGeneration < 1n ||
|
|
1442
1451
|
descriptor.lifecycleGeneration > maxGeneration ||
|
|
@@ -1447,8 +1456,10 @@ function validateClientServerDescriptor(descriptor: ZLinkClientServerServerDescr
|
|
|
1447
1456
|
) {
|
|
1448
1457
|
throw new RangeError('ClientServer descriptor generations are invalid.');
|
|
1449
1458
|
}
|
|
1450
|
-
if (!
|
|
1451
|
-
throw new RangeError(
|
|
1459
|
+
if (!isValidPublicWeight(descriptor.weight)) {
|
|
1460
|
+
throw new RangeError(
|
|
1461
|
+
`ClientServer descriptor weight must be an integer in 0..${ZLINK_MAX_PUBLIC_WEIGHT}.`
|
|
1462
|
+
);
|
|
1452
1463
|
}
|
|
1453
1464
|
}
|
|
1454
1465
|
|
|
@@ -1483,7 +1494,7 @@ function validateFanoutPublisherDescriptor(descriptor: ZLinkFanoutPublisherDescr
|
|
|
1483
1494
|
) {
|
|
1484
1495
|
throw new TypeError('Fanout publisher descriptor identity and endpoint are required.');
|
|
1485
1496
|
}
|
|
1486
|
-
const maxGeneration =
|
|
1497
|
+
const maxGeneration = MAX_LOCATION_GENERATION;
|
|
1487
1498
|
if (
|
|
1488
1499
|
descriptor.lifecycleGeneration < 1n ||
|
|
1489
1500
|
descriptor.lifecycleGeneration > maxGeneration ||
|