@zlink-systems/framework 0.30.0 → 0.30.2
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/LICENSE +150 -68
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
- package/dist/contracts/Channels/Calls.d.ts +2 -1
- package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
- package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
- package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
- package/dist/contracts/Common/encoded-payload-storage.js +5 -2
- package/dist/contracts/Configuration/Builders.d.ts +1 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
- package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
- package/dist/contracts/Handlers/Attributes.d.ts +5 -13
- package/dist/contracts/Handlers/Attributes.js +7 -11
- package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
- package/dist/contracts/Handlers/JsonContract.js +4 -153
- package/dist/contracts/Locations/Rows.d.ts +2 -0
- package/dist/contracts/Spots/Contracts.d.ts +6 -1
- package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
- package/dist/nest-integration.d.ts +1 -1
- package/dist/nest-integration.js +2 -1
- package/dist/runtime/abort.d.ts +5 -0
- package/dist/runtime/abort.js +10 -0
- package/dist/runtime/actors/actor-authority-publication.js +3 -2
- package/dist/runtime/actors/actor-client.d.ts +1 -2
- package/dist/runtime/actors/actor-client.js +52 -57
- package/dist/runtime/actors/actor-context.d.ts +2 -0
- package/dist/runtime/actors/actor-context.js +46 -9
- package/dist/runtime/actors/actor-handoff.d.ts +8 -4
- package/dist/runtime/actors/actor-handoff.js +219 -92
- package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
- package/dist/runtime/actors/actor-local-native-join.js +13 -12
- package/dist/runtime/actors/actor-mailbox.js +27 -1
- package/dist/runtime/actors/actor-remote-joiner.js +3 -1
- package/dist/runtime/actors/actor-remote-wire.js +15 -0
- package/dist/runtime/actors/actor-reply.d.ts +4 -0
- package/dist/runtime/actors/actor-reply.js +29 -0
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
- package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-state.js +2 -20
- package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
- package/dist/runtime/actors/index.d.ts +8 -3
- package/dist/runtime/actors/index.js +55 -27
- package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
- package/dist/runtime/actors/session-disconnected-wire.js +48 -0
- package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
- package/dist/runtime/admission.d.ts +9 -1
- package/dist/runtime/admission.js +56 -23
- package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
- package/dist/runtime/application-jobs/contracts.d.ts +12 -1
- package/dist/runtime/backend/contracts/index.d.ts +37 -12
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
- package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
- package/dist/runtime/backend/mesh-completion-table.js +154 -49
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
- package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
- package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
- package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
- package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
- package/dist/runtime/backend/runtime-message.d.ts +1 -0
- package/dist/runtime/backend/runtime-message.js +5 -0
- package/dist/runtime/backend/runtime-values.d.ts +1 -0
- package/dist/runtime/backend/runtime-values.js +2 -1
- package/dist/runtime/channels/channel-clients.d.ts +2 -0
- package/dist/runtime/channels/channel-clients.js +75 -23
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
- package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
- package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
- package/dist/runtime/channels/channel-dispatch-services.js +45 -0
- package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
- package/dist/runtime/channels/channel-dispatchers.js +62 -54
- package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
- package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
- package/dist/runtime/channels/channel-envelope.d.ts +2 -0
- package/dist/runtime/channels/channel-envelope.js +146 -28
- package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
- package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
- package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
- package/dist/runtime/channels/channel-runtime-manager.js +16 -16
- package/dist/runtime/channels/channel-transports.d.ts +18 -16
- package/dist/runtime/channels/channel-transports.js +77 -58
- package/dist/runtime/channels/client-server-location-runtime.js +5 -4
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/fanout-location-runtime.js +3 -3
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +2 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
- package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
- package/dist/runtime/channels/source-spot-router.d.ts +2 -2
- package/dist/runtime/channels/source-spot-router.js +4 -4
- package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-node-route-transport.js +4 -4
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
- package/dist/runtime/diagnostics/flow-context.js +19 -7
- package/dist/runtime/diagnostics/index.js +4 -9
- package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
- package/dist/runtime/diagnostics/message-flow.js +35 -5
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
- package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
- package/dist/runtime/execution/index.d.ts +4 -2
- package/dist/runtime/execution/index.js +33 -10
- package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
- package/dist/runtime/execution/serial-execution-queue.js +22 -2
- package/dist/runtime/execution/state-lane.d.ts +2 -0
- package/dist/runtime/execution/state-lane.js +5 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
- package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
- package/dist/runtime/foundation/durable-service-request.js +98 -0
- package/dist/runtime/foundation/operation-identity.d.ts +1 -0
- package/dist/runtime/foundation/operation-identity.js +5 -1
- package/dist/runtime/foundation/operation-registry.d.ts +25 -1
- package/dist/runtime/foundation/operation-registry.js +86 -18
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
- package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
- package/dist/runtime/foundation/service-liveness-registry.js +38 -0
- package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
- package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
- package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
- package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
- package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
- package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
- package/dist/runtime/foundation/service-stateful-registry.js +24 -26
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
- package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
- package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
- package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
- package/dist/runtime/foundation/service-topology-registry.js +61 -27
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
- package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
- package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
- package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
- package/dist/runtime/handlers/handler-instance-scope.js +54 -11
- package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
- package/dist/runtime/host/actor-packet-relay.js +59 -72
- package/dist/runtime/host/actor-placement-coordinator.js +25 -8
- package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
- package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
- package/dist/runtime/host/actor-transfer-runtime.js +85 -331
- package/dist/runtime/host/application-job-queue.d.ts +40 -7
- package/dist/runtime/host/application-job-queue.js +137 -42
- package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
- package/dist/runtime/host/entry-actor-runtime.js +3 -0
- package/dist/runtime/host/index.d.ts +12 -2
- package/dist/runtime/host/index.js +300 -202
- package/dist/runtime/host/location-runtime-owner.js +2 -6
- package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
- package/dist/runtime/host/mesh-router-resolver.js +14 -6
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
- package/dist/runtime/host/remote-bound-session-relay.js +73 -208
- package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
- package/dist/runtime/host/route-mesh-runtime.js +6 -4
- package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
- package/dist/runtime/host/runtime-shutdown.js +3 -2
- package/dist/runtime/host/service-relocation-control.d.ts +1 -0
- package/dist/runtime/host/service-relocation-control.js +10 -4
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
- package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
- package/dist/runtime/host/spot-address-transport.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
- package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
- package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
- package/dist/runtime/locations/actor-location-claims.js +34 -19
- package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
- package/dist/runtime/locations/auto-connect-loop.js +22 -14
- package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
- package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
- package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
- package/dist/runtime/locations/descriptor-publication.js +11 -0
- package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
- package/dist/runtime/locations/in-memory-authority-store.js +56 -19
- package/dist/runtime/locations/in-memory-location-store.js +1 -10
- package/dist/runtime/locations/index.d.ts +1 -0
- package/dist/runtime/locations/index.js +1 -0
- package/dist/runtime/locations/lease-tracker.js +1 -6
- package/dist/runtime/locations/lifecycle.d.ts +1 -2
- package/dist/runtime/locations/lifecycle.js +2 -5
- package/dist/runtime/locations/location-store-repository.d.ts +51 -1
- package/dist/runtime/locations/location-store-repository.js +363 -139
- package/dist/runtime/locations/relocation-blob.d.ts +18 -1
- package/dist/runtime/locations/relocation-blob.js +52 -1
- package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
- package/dist/runtime/locations/request-source-resolver.js +80 -0
- package/dist/runtime/locations/resolvers.js +1 -1
- package/dist/runtime/locations/runtime.d.ts +7 -3
- package/dist/runtime/locations/runtime.js +61 -53
- package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
- package/dist/runtime/messaging/framework-json-v1.js +38 -294
- package/dist/runtime/messaging/packet-name.d.ts +1 -1
- package/dist/runtime/messaging/packet-name.js +8 -24
- package/dist/runtime/messaging/payload-codec.d.ts +7 -1
- package/dist/runtime/messaging/payload-codec.js +7 -6
- package/dist/runtime/messaging/request-result.d.ts +2 -0
- package/dist/runtime/messaging/request-result.js +57 -0
- package/dist/runtime/messaging/submission-result.d.ts +1 -0
- package/dist/runtime/messaging/submission-result.js +5 -2
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
- package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
- package/dist/runtime/spots/index.d.ts +21 -11
- package/dist/runtime/spots/index.js +243 -178
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
- package/dist/runtime/spots/spot-activation-registry.js +21 -11
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +7 -7
- package/dist/runtime/spots/spot-activation.d.ts +7 -3
- package/dist/runtime/spots/spot-activation.js +140 -52
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
- package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-membership.js +0 -8
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
- package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
- package/dist/runtime/spots/spot-entry-activation.js +20 -11
- package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
- package/dist/runtime/spots/spot-handler-registry.js +24 -10
- package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
- package/dist/runtime/spots/spot-manager-public.js +2 -2
- package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
- package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
- package/dist/runtime/spots/spot-outbound.d.ts +3 -0
- package/dist/runtime/spots/spot-outbound.js +27 -18
- package/dist/runtime/spots/spot-remote-codec.js +5 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
- package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
- package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
- package/dist/runtime/spots/spot-serial-executor.js +61 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
- package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
- package/dist/runtime/spots/spot-timer.d.ts +57 -5
- package/dist/runtime/spots/spot-timer.js +288 -103
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
- package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
- package/dist/runtime/streams/bound-session-service.d.ts +1 -1
- package/dist/runtime/streams/bound-session-service.js +6 -11
- package/dist/runtime/streams/index.d.ts +3 -2
- package/dist/runtime/streams/index.js +6 -4
- package/dist/runtime/streams/managed-stream.js +3 -2
- package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
- package/dist/runtime/streams/session-actor-coordinator.js +15 -32
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
- package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
- package/dist/runtime/streams/stream-session-runtime.js +14 -31
- package/dist/runtime/workers/index.js +1 -1
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
- package/src/contracts/Channels/Calls.ts +2 -1
- package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
- package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
- package/src/contracts/Common/encoded-payload-storage.ts +6 -3
- package/src/contracts/Configuration/Builders.ts +4 -1
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
- package/src/contracts/Handlers/Attributes.ts +14 -21
- package/src/contracts/Handlers/JsonContract.ts +8 -216
- package/src/contracts/Locations/Rows.ts +2 -0
- package/src/contracts/Spots/Contracts.ts +10 -1
- package/src/contracts/Spots/ZLinkSpot.ts +3 -3
- package/src/nest-integration.ts +1 -0
- package/src/runtime/abort.ts +12 -0
- package/src/runtime/actors/actor-authority-publication.ts +3 -2
- package/src/runtime/actors/actor-client.ts +100 -85
- package/src/runtime/actors/actor-context.ts +49 -9
- package/src/runtime/actors/actor-handoff.ts +291 -110
- package/src/runtime/actors/actor-join-relocation.ts +3 -0
- package/src/runtime/actors/actor-local-native-join.ts +21 -26
- package/src/runtime/actors/actor-mailbox.ts +40 -2
- package/src/runtime/actors/actor-remote-joiner.ts +6 -1
- package/src/runtime/actors/actor-remote-wire.ts +17 -0
- package/src/runtime/actors/actor-reply.ts +42 -0
- package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
- package/src/runtime/actors/actor-routed-json-request.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
- package/src/runtime/actors/actor-runtime-state.ts +2 -20
- package/src/runtime/actors/actor-source-transfer.ts +1 -34
- package/src/runtime/actors/index.ts +60 -32
- package/src/runtime/actors/session-disconnected-wire.ts +66 -0
- package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
- package/src/runtime/admission.ts +69 -21
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
- package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
- package/src/runtime/application-jobs/contracts.ts +16 -1
- package/src/runtime/backend/contracts/index.ts +92 -18
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
- package/src/runtime/backend/mesh-completion-table.ts +160 -57
- package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
- package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
- package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
- package/src/runtime/backend/raw-binding-port.ts +7 -2
- package/src/runtime/backend/runtime-message.ts +6 -0
- package/src/runtime/backend/runtime-values.ts +1 -0
- package/src/runtime/channels/channel-clients.ts +132 -58
- package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
- package/src/runtime/channels/channel-dispatch-services.ts +69 -1
- package/src/runtime/channels/channel-dispatchers.ts +136 -90
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
- package/src/runtime/channels/channel-envelope.ts +225 -31
- package/src/runtime/channels/channel-outbound-operations.ts +22 -8
- package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
- package/src/runtime/channels/channel-runtime-manager.ts +41 -17
- package/src/runtime/channels/channel-transports.ts +171 -112
- package/src/runtime/channels/client-server-location-runtime.ts +11 -10
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
- package/src/runtime/channels/fanout-location-runtime.ts +17 -9
- package/src/runtime/channels/local-spot-route-transport.ts +3 -1
- package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
- package/src/runtime/channels/source-spot-router.ts +8 -4
- package/src/runtime/channels/spot-node-route-transport.ts +8 -4
- package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
- package/src/runtime/diagnostics/flow-context.ts +20 -7
- package/src/runtime/diagnostics/index.ts +1 -7
- package/src/runtime/diagnostics/message-flow.ts +47 -9
- package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
- package/src/runtime/execution/index.ts +40 -14
- package/src/runtime/execution/serial-execution-queue.ts +33 -4
- package/src/runtime/execution/state-lane.ts +7 -0
- package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
- package/src/runtime/foundation/durable-service-request.ts +137 -0
- package/src/runtime/foundation/operation-identity.ts +5 -1
- package/src/runtime/foundation/operation-registry.ts +98 -20
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
- package/src/runtime/foundation/service-liveness-registry.ts +39 -0
- package/src/runtime/foundation/service-mailbox.ts +8 -0
- package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
- package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
- package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
- package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
- package/src/runtime/foundation/service-stateful-registry.ts +38 -35
- package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
- package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
- package/src/runtime/foundation/service-topology-registry.ts +91 -36
- package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
- package/src/runtime/handlers/handler-instance-scope.ts +67 -16
- package/src/runtime/host/actor-packet-relay.ts +113 -94
- package/src/runtime/host/actor-placement-coordinator.ts +31 -8
- package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
- package/src/runtime/host/actor-transfer-runtime.ts +104 -430
- package/src/runtime/host/application-job-queue.ts +160 -41
- package/src/runtime/host/entry-actor-runtime.ts +4 -0
- package/src/runtime/host/index.ts +473 -271
- package/src/runtime/host/location-runtime-owner.ts +2 -6
- package/src/runtime/host/mesh-router-resolver.ts +13 -5
- package/src/runtime/host/remote-bound-session-relay.ts +88 -271
- package/src/runtime/host/route-mesh-runtime.ts +12 -6
- package/src/runtime/host/runtime-shutdown.ts +15 -4
- package/src/runtime/host/service-relocation-control.ts +11 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
- package/src/runtime/host/spot-address-transport.ts +4 -2
- package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
- package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
- package/src/runtime/locations/actor-location-claims.ts +52 -30
- package/src/runtime/locations/auto-connect-loop.ts +22 -14
- package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
- package/src/runtime/locations/auto-connect-types.ts +0 -1
- package/src/runtime/locations/descriptor-publication.ts +7 -0
- package/src/runtime/locations/domain-store-contract.ts +5 -0
- package/src/runtime/locations/in-memory-authority-store.ts +85 -23
- package/src/runtime/locations/in-memory-location-store.ts +1 -12
- package/src/runtime/locations/index.ts +1 -0
- package/src/runtime/locations/lease-tracker.ts +2 -9
- package/src/runtime/locations/lifecycle.ts +8 -26
- package/src/runtime/locations/location-store-repository.ts +628 -152
- package/src/runtime/locations/relocation-blob.ts +75 -1
- package/src/runtime/locations/request-source-resolver.ts +138 -0
- package/src/runtime/locations/resolvers.ts +2 -2
- package/src/runtime/locations/runtime.ts +98 -64
- package/src/runtime/messaging/framework-json-v1.ts +5 -325
- package/src/runtime/messaging/packet-name.ts +5 -25
- package/src/runtime/messaging/payload-codec.ts +8 -11
- package/src/runtime/messaging/request-result.ts +62 -0
- package/src/runtime/messaging/submission-result.ts +5 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
- package/src/runtime/spots/index.ts +389 -283
- package/src/runtime/spots/spot-activation-registry.ts +25 -13
- package/src/runtime/spots/spot-activation-state.ts +12 -19
- package/src/runtime/spots/spot-activation.ts +198 -96
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
- package/src/runtime/spots/spot-actor-membership.ts +0 -15
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
- package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
- package/src/runtime/spots/spot-entry-activation.ts +33 -21
- package/src/runtime/spots/spot-handler-registry.ts +56 -12
- package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
- package/src/runtime/spots/spot-manager-public.ts +2 -2
- package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
- package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
- package/src/runtime/spots/spot-outbound.ts +39 -19
- package/src/runtime/spots/spot-remote-codec.ts +9 -2
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
- package/src/runtime/spots/spot-runtime-ports.ts +1 -1
- package/src/runtime/spots/spot-serial-executor.ts +97 -25
- package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
- package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
- package/src/runtime/spots/spot-timer.ts +418 -158
- package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
- package/src/runtime/streams/bound-session-service.ts +7 -10
- package/src/runtime/streams/index.ts +12 -6
- package/src/runtime/streams/managed-stream.ts +4 -2
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
- package/src/runtime/streams/session-actor-coordinator.ts +39 -88
- package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
- package/src/runtime/streams/stream-session-runtime.ts +13 -34
- package/src/runtime/workers/index.ts +1 -1
|
@@ -1,216 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| { readonly type: 'uint32' }
|
|
10
|
-
| { readonly type: 'int64' }
|
|
11
|
-
| { readonly type: 'uint64' }
|
|
12
|
-
| { readonly type: 'bytes' }
|
|
13
|
-
| { readonly type: 'enum'; readonly names: readonly string[] }
|
|
14
|
-
| { readonly type: 'nullable'; readonly value: ZLinkJsonSchema }
|
|
15
|
-
| { readonly type: 'array'; readonly items: ZLinkJsonSchema }
|
|
16
|
-
| { readonly type: 'record'; readonly values: ZLinkJsonSchema }
|
|
17
|
-
| {
|
|
18
|
-
readonly type: 'object';
|
|
19
|
-
readonly properties: Readonly<Record<string, ZLinkJsonSchema>>;
|
|
20
|
-
readonly required: readonly string[];
|
|
21
|
-
/** Unknown properties are ignored during decoding unless this is false. */
|
|
22
|
-
readonly additionalProperties?: boolean;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Describes the request and optional reply fields carried under one packet
|
|
27
|
-
* name by the default JSON serializer.
|
|
28
|
-
*/
|
|
29
|
-
export interface ZLinkPacketJsonContract {
|
|
30
|
-
readonly payload: ZLinkJsonSchema;
|
|
31
|
-
readonly reply?: ZLinkJsonSchema;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const ZLINK_PACKET_JSON_CONTRACTS = Symbol.for('@zlink-systems/framework:packet-json-contracts');
|
|
35
|
-
|
|
36
|
-
export function defineZLinkPacketJsonContract(
|
|
37
|
-
packetName: string,
|
|
38
|
-
contract: ZLinkPacketJsonContract
|
|
39
|
-
): ZLinkPacketJsonContract {
|
|
40
|
-
if (packetName.trim().length === 0) {
|
|
41
|
-
throw new TypeError('ZLink packet name must not be empty.');
|
|
42
|
-
}
|
|
43
|
-
const runtimeContract: unknown = contract;
|
|
44
|
-
if (typeof runtimeContract !== 'object' || runtimeContract === null) {
|
|
45
|
-
throw new TypeError('ZLink packet JSON contract must be an object.');
|
|
46
|
-
}
|
|
47
|
-
const normalizedContract = runtimeContract as ZLinkPacketJsonContract;
|
|
48
|
-
const normalized = Object.freeze({
|
|
49
|
-
payload: normalizeJsonSchema(normalizedContract.payload, new Set(), 0),
|
|
50
|
-
...(normalizedContract.reply === undefined
|
|
51
|
-
? {}
|
|
52
|
-
: { reply: normalizeJsonSchema(normalizedContract.reply, new Set(), 0) })
|
|
53
|
-
});
|
|
54
|
-
const contracts = packetJsonContracts();
|
|
55
|
-
const current = contracts.get(packetName);
|
|
56
|
-
if (current !== undefined && canonicalContract(current) !== canonicalContract(normalized)) {
|
|
57
|
-
throw new TypeError(
|
|
58
|
-
`ZLink packet '${packetName}' has conflicting JSON contracts in one process.`
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
if (current !== undefined) return current;
|
|
62
|
-
contracts.set(packetName, normalized);
|
|
63
|
-
return normalized;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export function readZLinkPacketJsonContract(
|
|
67
|
-
packetName: string
|
|
68
|
-
): ZLinkPacketJsonContract | undefined {
|
|
69
|
-
return packetJsonContracts().get(packetName);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function normalizeJsonSchema(
|
|
73
|
-
schema: ZLinkJsonSchema,
|
|
74
|
-
parents: Set<object>,
|
|
75
|
-
depth: number
|
|
76
|
-
): ZLinkJsonSchema {
|
|
77
|
-
// Keep the runtime boundary defensive for JavaScript callers even though
|
|
78
|
-
// the TypeScript signature describes the accepted shape.
|
|
79
|
-
const runtimeSchema: unknown = schema;
|
|
80
|
-
if (
|
|
81
|
-
typeof runtimeSchema !== 'object' ||
|
|
82
|
-
runtimeSchema === null ||
|
|
83
|
-
depth > MAX_CONTRACT_SCHEMA_DEPTH
|
|
84
|
-
) {
|
|
85
|
-
throw new TypeError(
|
|
86
|
-
`ZLink packet JSON schema must be an acyclic object with at most ${MAX_CONTRACT_SCHEMA_DEPTH} levels.`
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
const normalizedSchema = runtimeSchema as ZLinkJsonSchema;
|
|
90
|
-
if (parents.has(normalizedSchema))
|
|
91
|
-
throw new TypeError('ZLink packet JSON schema must not contain a cycle.');
|
|
92
|
-
const nextParents = new Set(parents).add(normalizedSchema);
|
|
93
|
-
switch (normalizedSchema.type) {
|
|
94
|
-
case 'boolean':
|
|
95
|
-
case 'string':
|
|
96
|
-
case 'number':
|
|
97
|
-
case 'int32':
|
|
98
|
-
case 'uint32':
|
|
99
|
-
case 'int64':
|
|
100
|
-
case 'uint64':
|
|
101
|
-
case 'bytes':
|
|
102
|
-
return Object.freeze({ type: normalizedSchema.type });
|
|
103
|
-
case 'enum': {
|
|
104
|
-
if (
|
|
105
|
-
!Array.isArray(normalizedSchema.names) ||
|
|
106
|
-
normalizedSchema.names.length === 0 ||
|
|
107
|
-
normalizedSchema.names.some((name) => typeof name !== 'string' || name.length === 0)
|
|
108
|
-
) {
|
|
109
|
-
throw new TypeError('ZLink packet enum schema requires non-empty string names.');
|
|
110
|
-
}
|
|
111
|
-
if (new Set(normalizedSchema.names).size !== normalizedSchema.names.length) {
|
|
112
|
-
throw new TypeError('ZLink packet enum schema names must be unique.');
|
|
113
|
-
}
|
|
114
|
-
return Object.freeze({ type: 'enum', names: Object.freeze([...normalizedSchema.names]) });
|
|
115
|
-
}
|
|
116
|
-
case 'nullable':
|
|
117
|
-
return Object.freeze({
|
|
118
|
-
type: 'nullable',
|
|
119
|
-
value: normalizeJsonSchema(normalizedSchema.value, nextParents, depth + 1)
|
|
120
|
-
});
|
|
121
|
-
case 'array':
|
|
122
|
-
return Object.freeze({
|
|
123
|
-
type: 'array',
|
|
124
|
-
items: normalizeJsonSchema(normalizedSchema.items, nextParents, depth + 1)
|
|
125
|
-
});
|
|
126
|
-
case 'record':
|
|
127
|
-
return Object.freeze({
|
|
128
|
-
type: 'record',
|
|
129
|
-
values: normalizeJsonSchema(normalizedSchema.values, nextParents, depth + 1)
|
|
130
|
-
});
|
|
131
|
-
case 'object': {
|
|
132
|
-
const runtimeProperties: unknown = normalizedSchema.properties;
|
|
133
|
-
if (
|
|
134
|
-
typeof runtimeProperties !== 'object' ||
|
|
135
|
-
runtimeProperties === null ||
|
|
136
|
-
Array.isArray(runtimeProperties)
|
|
137
|
-
) {
|
|
138
|
-
throw new TypeError('ZLink packet object schema properties must be an object.');
|
|
139
|
-
}
|
|
140
|
-
if (
|
|
141
|
-
!Array.isArray(normalizedSchema.required) ||
|
|
142
|
-
normalizedSchema.required.some((name) => typeof name !== 'string' || name.length === 0)
|
|
143
|
-
) {
|
|
144
|
-
throw new TypeError('ZLink packet object schema required must contain property names.');
|
|
145
|
-
}
|
|
146
|
-
if (
|
|
147
|
-
normalizedSchema.additionalProperties !== undefined &&
|
|
148
|
-
typeof normalizedSchema.additionalProperties !== 'boolean'
|
|
149
|
-
) {
|
|
150
|
-
throw new TypeError('ZLink packet object schema additionalProperties must be boolean.');
|
|
151
|
-
}
|
|
152
|
-
const properties: Record<string, ZLinkJsonSchema> = {};
|
|
153
|
-
for (const [name, property] of Object.entries(
|
|
154
|
-
runtimeProperties as Record<string, ZLinkJsonSchema>
|
|
155
|
-
)) {
|
|
156
|
-
if (isPrototypeKey(name)) {
|
|
157
|
-
throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
|
|
158
|
-
}
|
|
159
|
-
properties[name] = normalizeJsonSchema(property, nextParents, depth + 1);
|
|
160
|
-
}
|
|
161
|
-
if (new Set(normalizedSchema.required).size !== normalizedSchema.required.length) {
|
|
162
|
-
throw new TypeError('ZLink packet JSON required properties must be unique.');
|
|
163
|
-
}
|
|
164
|
-
for (const name of normalizedSchema.required) {
|
|
165
|
-
if (isPrototypeKey(name)) {
|
|
166
|
-
throw new TypeError(`ZLink packet JSON property '${name}' is not allowed.`);
|
|
167
|
-
}
|
|
168
|
-
if (!Object.prototype.hasOwnProperty.call(properties, name)) {
|
|
169
|
-
throw new TypeError(
|
|
170
|
-
`ZLink packet JSON required property '${name}' has no property schema.`
|
|
171
|
-
);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return Object.freeze({
|
|
175
|
-
type: 'object',
|
|
176
|
-
properties: Object.freeze(properties),
|
|
177
|
-
required: Object.freeze([...normalizedSchema.required]),
|
|
178
|
-
...(normalizedSchema.additionalProperties === undefined
|
|
179
|
-
? {}
|
|
180
|
-
: { additionalProperties: normalizedSchema.additionalProperties })
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
throw new TypeError(
|
|
185
|
-
`ZLink packet JSON schema type '${String((normalizedSchema as { type?: unknown }).type)}' is not supported.`
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function packetJsonContracts(): Map<string, ZLinkPacketJsonContract> {
|
|
190
|
-
const root = globalThis as typeof globalThis & Record<symbol, unknown>;
|
|
191
|
-
let contracts = root[ZLINK_PACKET_JSON_CONTRACTS] as
|
|
192
|
-
Map<string, ZLinkPacketJsonContract> | undefined;
|
|
193
|
-
if (contracts === undefined) {
|
|
194
|
-
contracts = new Map();
|
|
195
|
-
Object.defineProperty(root, ZLINK_PACKET_JSON_CONTRACTS, {
|
|
196
|
-
configurable: false,
|
|
197
|
-
enumerable: false,
|
|
198
|
-
value: contracts,
|
|
199
|
-
writable: false
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
return contracts;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
function canonicalContract(value: unknown): string {
|
|
206
|
-
if (Array.isArray(value)) return `[${value.map(canonicalContract).join(',')}]`;
|
|
207
|
-
if (typeof value !== 'object' || value === null) return JSON.stringify(value);
|
|
208
|
-
return `{${Object.entries(value as Record<string, unknown>)
|
|
209
|
-
.sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
|
|
210
|
-
.map(([key, item]) => `${JSON.stringify(key)}:${canonicalContract(item)}`)
|
|
211
|
-
.join(',')}}`;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
function isPrototypeKey(name: string): boolean {
|
|
215
|
-
return name === '__proto__' || name === 'prototype' || name === 'constructor';
|
|
216
|
-
}
|
|
1
|
+
export {
|
|
2
|
+
defineZLinkPacketJsonContract,
|
|
3
|
+
readZLinkPacketJsonContract
|
|
4
|
+
} from '@zlink-systems/stream-wire/internal/json';
|
|
5
|
+
export type {
|
|
6
|
+
ZLinkJsonSchema,
|
|
7
|
+
ZLinkPacketJsonContract
|
|
8
|
+
} from '@zlink-systems/stream-wire/internal/json';
|
|
@@ -25,6 +25,8 @@ export interface ZLinkObjectCapability {
|
|
|
25
25
|
readonly policy: ZLinkObjectMaintenancePolicyKind;
|
|
26
26
|
readonly hasSnapshotAdapter: boolean;
|
|
27
27
|
readonly limit: number;
|
|
28
|
+
/** True only for an Actor capability whose node registered an Entry Spot type accepting it. */
|
|
29
|
+
readonly entryAccepted: boolean;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export interface ZLinkPopulationCapacity {
|
|
@@ -2,6 +2,7 @@ import type { ZLinkActor } from '../Actors';
|
|
|
2
2
|
import type { ZLinkChannelRequestCall, ZLinkPublishCall, ZLinkSendCall } from '../Channels';
|
|
3
3
|
import type { RoutingId, SpotId, Type, ZLinkMessageMetadata } from '../Common';
|
|
4
4
|
import type { ZLinkSpotTimerHandler } from '../Handlers';
|
|
5
|
+
import type { ZLinkRequest } from '../Handlers/Attributes';
|
|
5
6
|
import type { ZLinkTimer, ZLinkTimerOptions } from '../Timers';
|
|
6
7
|
import type {
|
|
7
8
|
ZLinkEntrySpot,
|
|
@@ -15,12 +16,20 @@ export interface ZLinkActorHandlerRegistry {
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export interface ZLinkSpotHandlerRegistry extends ZLinkActorHandlerRegistry {
|
|
19
|
+
/** Declares a timer handler constructor for relocation without registering an endpoint. */
|
|
20
|
+
addTimerHandler<THandler extends ZLinkSpotTimerHandler<ZLinkSpot>>(
|
|
21
|
+
handlerType: Type<THandler>
|
|
22
|
+
): this;
|
|
18
23
|
addPacket<THandler>(handlerType: Type<THandler>): this;
|
|
19
24
|
addSubscribe<THandler>(handlerType: Type<THandler>, channelName: string, topic: string): this;
|
|
20
25
|
}
|
|
21
26
|
|
|
22
27
|
export interface ZLinkInstanceSpotHandlerRegistry {
|
|
23
28
|
addPacket<THandler>(handlerType: Type<THandler>): this;
|
|
29
|
+
/** Declares a timer handler constructor for relocation without registering an endpoint. */
|
|
30
|
+
addTimerHandler<THandler extends ZLinkSpotTimerHandler<ZLinkInstanceSpot>>(
|
|
31
|
+
handlerType: Type<THandler>
|
|
32
|
+
): this;
|
|
24
33
|
}
|
|
25
34
|
|
|
26
35
|
export interface ZLinkWorkerCall<T> {
|
|
@@ -106,7 +115,7 @@ export interface ZLinkSpotRequestCall {
|
|
|
106
115
|
instanceSpot(instanceSpotType: string): this;
|
|
107
116
|
inMesh(meshName: string): this;
|
|
108
117
|
timeout(timeoutMs: number): this;
|
|
109
|
-
submit<TReply>(signal?: AbortSignal):
|
|
118
|
+
submit<TReply>(signal?: AbortSignal): ZLinkRequest<TReply>;
|
|
110
119
|
yield<TReply>(signal?: AbortSignal): Promise<TReply>;
|
|
111
120
|
}
|
|
112
121
|
|
|
@@ -61,8 +61,8 @@ export interface ZLinkSpot<
|
|
|
61
61
|
> extends ZLinkUserSpotActorLifecycle<TActor> {
|
|
62
62
|
readonly context: ZLinkSpotContext<TActor>;
|
|
63
63
|
configure?(): void;
|
|
64
|
-
onCreate?(request: ZLinkMessage): Promise<ZLinkSpotCreateResponse>;
|
|
65
|
-
onInitialize?(): Promise<void>;
|
|
64
|
+
onCreate?(request: ZLinkMessage, signal?: AbortSignal): Promise<ZLinkSpotCreateResponse>;
|
|
65
|
+
onInitialize?(signal?: AbortSignal): Promise<void>;
|
|
66
66
|
onClosing?(context: ZLinkSpotClosingContext, cleanupSignal: AbortSignal): Promise<void>;
|
|
67
67
|
onRelocationReadyCompleted?(completion: ZLinkSpotRelocationReadyCompletion): Promise<void>;
|
|
68
68
|
}
|
|
@@ -70,7 +70,7 @@ export interface ZLinkSpot<
|
|
|
70
70
|
export interface ZLinkInstanceSpot {
|
|
71
71
|
readonly context: ZLinkInstanceSpotContext;
|
|
72
72
|
configure?(): void;
|
|
73
|
-
onInitialize?(): Promise<void>;
|
|
73
|
+
onInitialize?(signal?: AbortSignal): Promise<void>;
|
|
74
74
|
onClosing?(context: ZLinkSpotClosingContext, cleanupSignal: AbortSignal): Promise<void>;
|
|
75
75
|
}
|
|
76
76
|
|
package/src/nest-integration.ts
CHANGED
|
@@ -77,6 +77,7 @@ export {
|
|
|
77
77
|
type ZLinkHandlerFilterScopeRunner
|
|
78
78
|
} from './runtime/channels/handler-filter-scope';
|
|
79
79
|
export {
|
|
80
|
+
registerHandlerInstanceScopeFactory as registerIntegrationHandlerInstanceScopeFactory,
|
|
80
81
|
disposeOwnedInstance as disposeIntegrationHandler,
|
|
81
82
|
disposeOwnedInstances as disposeIntegrationHandlers
|
|
82
83
|
} from './runtime/handlers/handler-instance-scope';
|
package/src/runtime/abort.ts
CHANGED
|
@@ -38,6 +38,18 @@ export function throwIfAborted(signal: AbortSignal | undefined): void {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Whether a handler or dispatch result is a thenable the caller must wait
|
|
43
|
+
* for. Synchronous results, including null and undefined, are not.
|
|
44
|
+
*/
|
|
45
|
+
export function isPromiseLike<T>(value: T | PromiseLike<T>): value is PromiseLike<T> {
|
|
46
|
+
return (
|
|
47
|
+
value !== null &&
|
|
48
|
+
(typeof value === 'object' || typeof value === 'function') &&
|
|
49
|
+
typeof (value as { then?: unknown }).then === 'function'
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
41
53
|
export function macrotaskBoundary(): Promise<void> {
|
|
42
54
|
return new Promise((resolve) => setImmediate(resolve));
|
|
43
55
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { routingIdsEqual } from '../routing-id';
|
|
1
2
|
import { createHash } from 'node:crypto';
|
|
2
3
|
import type { ActorRef } from '../../contracts';
|
|
3
4
|
import { ZLinkSpotKind } from '../../contracts';
|
|
@@ -278,7 +279,7 @@ function requireActorAuthority(
|
|
|
278
279
|
snapshot.allocation.objectKind !== 'actor' ||
|
|
279
280
|
snapshot.allocation.stableType !== expected.actorType ||
|
|
280
281
|
snapshot.allocation.descriptor.meshName !== expected.meshName ||
|
|
281
|
-
|
|
282
|
+
!routingIdsEqual(snapshot.allocation.descriptor.rid, expected.actor.nodeRid) ||
|
|
282
283
|
snapshot.allocation.descriptorLifecycleGeneration !== expected.ownerNodeGeneration ||
|
|
283
284
|
snapshot.ownerId !== expected.owner.ownerId ||
|
|
284
285
|
snapshot.ownerLeaseGeneration !== expected.owner.leaseGeneration ||
|
|
@@ -286,7 +287,7 @@ function requireActorAuthority(
|
|
|
286
287
|
actual.actorType !== expected.actorType ||
|
|
287
288
|
actual.actor.actorId !== expected.actor.actorId ||
|
|
288
289
|
actual.actor.objectGeneration !== expected.actor.objectGeneration ||
|
|
289
|
-
|
|
290
|
+
!routingIdsEqual(actual.actor.nodeRid, expected.actor.nodeRid)
|
|
290
291
|
) {
|
|
291
292
|
throw new Error(
|
|
292
293
|
`Actor '${expected.actor.actorId}' authority fence does not match its ActorRef.`
|