@zlink-systems/framework 0.21.0 → 0.23.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.
Files changed (516) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
  13. package/dist/contracts/Handlers/JsonContract.js +23 -11
  14. package/dist/contracts/Spots/SpotKind.js +16 -8
  15. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
  16. package/dist/location-store-integration.js +16 -16
  17. package/dist/nest-integration.js +17 -11
  18. package/dist/runtime/abort.js +9 -5
  19. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  20. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  21. package/dist/runtime/actors/actor-client.js +83 -63
  22. package/dist/runtime/actors/actor-context.js +28 -22
  23. package/dist/runtime/actors/actor-creation.js +4 -3
  24. package/dist/runtime/actors/actor-handoff.js +89 -92
  25. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
  26. package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
  27. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  28. package/dist/runtime/actors/actor-mailbox.js +1 -1
  29. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  30. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  31. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  32. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  33. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  34. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  35. package/dist/runtime/actors/bound-session-wire.js +14 -9
  36. package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
  37. package/dist/runtime/actors/index.js +2 -5
  38. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  39. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  40. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  41. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  42. package/dist/runtime/admission.js +2 -6
  43. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  44. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  45. package/dist/runtime/backend/contracts/index.d.ts +1 -0
  46. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  47. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  48. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  49. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  50. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  51. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  52. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
  53. package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
  54. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  55. package/dist/runtime/backend/runtime-message.js +3 -3
  56. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  57. package/dist/runtime/backend/runtime-values.js +4 -5
  58. package/dist/runtime/channels/channel-clients.js +27 -24
  59. package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
  60. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  61. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  62. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  63. package/dist/runtime/channels/channel-envelope.js +83 -47
  64. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  65. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  66. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  67. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  68. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  69. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  70. package/dist/runtime/channels/channel-transports.js +46 -42
  71. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  72. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  73. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
  74. package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
  75. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  76. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  77. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  78. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  79. package/dist/runtime/channels/source-spot-router.js +6 -2
  80. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  81. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  82. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  83. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
  84. package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
  85. package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
  86. package/dist/runtime/diagnostics/flow-context.js +2 -2
  87. package/dist/runtime/diagnostics/index.js +38 -10
  88. package/dist/runtime/diagnostics/message-flow.js +58 -42
  89. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  90. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  91. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  92. package/dist/runtime/execution/index.js +7 -6
  93. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  94. package/dist/runtime/execution/state-lane.js +2 -2
  95. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
  96. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  97. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  98. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
  99. package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
  100. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  101. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  102. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  103. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  104. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  105. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  106. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  107. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  108. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  109. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  110. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  111. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
  112. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  113. package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
  114. package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
  115. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  116. package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
  117. package/dist/runtime/foundation/service-topology-registry.js +105 -96
  118. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  119. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  120. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  121. package/dist/runtime/framework-errors-internal.js +7 -10
  122. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  123. package/dist/runtime/handlers/index.js +3 -1
  124. package/dist/runtime/host/actor-packet-relay.js +74 -70
  125. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  126. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  127. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  128. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  129. package/dist/runtime/host/application-job-queue.js +18 -22
  130. package/dist/runtime/host/bound-session-relay.js +3 -1
  131. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  132. package/dist/runtime/host/host-capacity-status.js +8 -4
  133. package/dist/runtime/host/index.js +245 -228
  134. package/dist/runtime/host/instance-activation-authority.js +93 -96
  135. package/dist/runtime/host/location-runtime-owner.js +16 -14
  136. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  137. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  138. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  139. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  140. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  141. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  142. package/dist/runtime/host/runtime-shutdown.js +1 -2
  143. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  144. package/dist/runtime/host/spot-address-transport.js +69 -71
  145. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  146. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  147. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  148. package/dist/runtime/locations/actor-location-claims.js +26 -20
  149. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  150. package/dist/runtime/locations/authority-key-codec.js +7 -7
  151. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  152. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  153. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  154. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  155. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  156. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  157. package/dist/runtime/locations/key-codec.js +1 -1
  158. package/dist/runtime/locations/lease-tracker.js +23 -21
  159. package/dist/runtime/locations/lifecycle.js +4 -5
  160. package/dist/runtime/locations/location-store-repository.js +368 -324
  161. package/dist/runtime/locations/opaque-record-key.js +2 -2
  162. package/dist/runtime/locations/resolvers.js +73 -82
  163. package/dist/runtime/locations/runtime.js +68 -63
  164. package/dist/runtime/locations/spot-location-claims.js +39 -35
  165. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  166. package/dist/runtime/messaging/packet-name.js +7 -6
  167. package/dist/runtime/messaging/payload-codec.js +21 -18
  168. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  169. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  170. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
  171. package/dist/runtime/routing-id.js +3 -5
  172. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  173. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  174. package/dist/runtime/spots/index.js +209 -220
  175. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  176. package/dist/runtime/spots/spot-activation-state.js +17 -15
  177. package/dist/runtime/spots/spot-activation.js +33 -16
  178. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  179. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  180. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
  181. package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
  182. package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
  183. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  184. package/dist/runtime/spots/spot-closing.js +3 -7
  185. package/dist/runtime/spots/spot-context.js +2 -2
  186. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  187. package/dist/runtime/spots/spot-handle.js +6 -3
  188. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  189. package/dist/runtime/spots/spot-manager-public.js +5 -6
  190. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  191. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  192. package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
  193. package/dist/runtime/spots/spot-outbound.js +10 -14
  194. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  195. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  196. package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
  197. package/dist/runtime/spots/spot-route-replies.js +4 -6
  198. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  199. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
  200. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  201. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  202. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  203. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  204. package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
  205. package/dist/runtime/spots/spot-timer.js +26 -30
  206. package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
  207. package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
  208. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
  209. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  210. package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
  211. package/dist/runtime/streams/bound-session-response-target.js +8 -1
  212. package/dist/runtime/streams/bound-session-service.d.ts +1 -0
  213. package/dist/runtime/streams/bound-session-service.js +14 -12
  214. package/dist/runtime/streams/index.js +28 -20
  215. package/dist/runtime/streams/managed-stream.d.ts +3 -0
  216. package/dist/runtime/streams/managed-stream.js +52 -31
  217. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  218. package/dist/runtime/streams/protocol.d.ts +5 -1
  219. package/dist/runtime/streams/protocol.js +68 -20
  220. package/dist/runtime/streams/session-actor-coordinator.js +37 -41
  221. package/dist/runtime/streams/session-context.d.ts +9 -2
  222. package/dist/runtime/streams/session-context.js +50 -32
  223. package/dist/runtime/streams/session-local-actors.d.ts +3 -1
  224. package/dist/runtime/streams/session-local-actors.js +17 -2
  225. package/dist/runtime/streams/session-provider.js +2 -2
  226. package/dist/runtime/streams/session-serial-executor.js +1 -2
  227. package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
  228. package/dist/runtime/streams/stream-frame-factory.js +14 -7
  229. package/dist/runtime/streams/stream-session-runtime.js +112 -78
  230. package/dist/runtime/workers/index.js +15 -4
  231. package/package.json +3 -3
  232. package/src/contracts/Channels/RouteCalls.ts +6 -1
  233. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  234. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  235. package/src/contracts/Configuration/Builders.ts +14 -14
  236. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  237. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  238. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  239. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  240. package/src/contracts/Configuration/Registration.ts +46 -17
  241. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  242. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  243. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  244. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  245. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  246. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  247. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  248. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  249. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  250. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  251. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
  252. package/src/contracts/Errors/index.ts +1 -4
  253. package/src/contracts/Handlers/Attributes.ts +15 -9
  254. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  255. package/src/contracts/Handlers/JsonContract.ts +53 -19
  256. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  257. package/src/contracts/Locations/Authority.ts +4 -11
  258. package/src/contracts/Locations/Keys.ts +6 -1
  259. package/src/contracts/Locations/Options.ts +3 -2
  260. package/src/contracts/Locations/RelocationStore.ts +1 -4
  261. package/src/contracts/Locations/Resolvers.ts +5 -5
  262. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  263. package/src/contracts/Locations/Stores.ts +1 -2
  264. package/src/contracts/Locations/index.ts +2 -8
  265. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  266. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  267. package/src/contracts/Spots/Contracts.ts +2 -8
  268. package/src/contracts/Spots/SpotKind.ts +16 -8
  269. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  270. package/src/contracts/Streams/IZLinkSession.ts +2 -2
  271. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  272. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  273. package/src/internal.ts +5 -4
  274. package/src/location-store-integration.ts +24 -16
  275. package/src/nest-integration.ts +40 -25
  276. package/src/runtime/abort.ts +10 -4
  277. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  278. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  279. package/src/runtime/actors/actor-client.ts +162 -133
  280. package/src/runtime/actors/actor-context.ts +142 -134
  281. package/src/runtime/actors/actor-creation.ts +47 -44
  282. package/src/runtime/actors/actor-execution-context.ts +6 -4
  283. package/src/runtime/actors/actor-handoff.ts +269 -293
  284. package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
  285. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  286. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  287. package/src/runtime/actors/actor-mailbox.ts +16 -19
  288. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  289. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  290. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  291. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  292. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  293. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  294. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  295. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  296. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  297. package/src/runtime/actors/bound-session-wire.ts +37 -17
  298. package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
  299. package/src/runtime/actors/index.ts +43 -86
  300. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  301. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  302. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  303. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  304. package/src/runtime/admission.ts +9 -9
  305. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  306. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  307. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  308. package/src/runtime/backend/contracts/index.ts +77 -52
  309. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  310. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  311. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  312. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  313. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  314. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  315. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  316. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  317. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  318. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  319. package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
  320. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  321. package/src/runtime/backend/runtime-message.ts +5 -3
  322. package/src/runtime/backend/runtime-values.ts +10 -7
  323. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  324. package/src/runtime/channels/channel-clients.ts +93 -73
  325. package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
  326. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  327. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  328. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  329. package/src/runtime/channels/channel-envelope.ts +256 -150
  330. package/src/runtime/channels/channel-multipart.ts +13 -5
  331. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  332. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  333. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  334. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  335. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  336. package/src/runtime/channels/channel-socket-options.ts +3 -10
  337. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  338. package/src/runtime/channels/channel-transports.ts +218 -206
  339. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  340. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  341. package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
  342. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  343. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  344. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  345. package/src/runtime/channels/index.ts +1 -4
  346. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  347. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  348. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  349. package/src/runtime/channels/source-spot-router.ts +26 -22
  350. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  351. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  352. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  353. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  354. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  355. package/src/runtime/codecs/index.ts +3 -2
  356. package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
  357. package/src/runtime/diagnostics/flow-context.ts +18 -7
  358. package/src/runtime/diagnostics/index.ts +96 -61
  359. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  360. package/src/runtime/diagnostics/message-flow.ts +107 -79
  361. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  362. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  363. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  364. package/src/runtime/execution/index.ts +18 -26
  365. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  366. package/src/runtime/execution/state-lane.ts +2 -2
  367. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
  368. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  369. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  370. package/src/runtime/foundation/operation-identity.ts +1 -2
  371. package/src/runtime/foundation/operation-registry.ts +8 -2
  372. package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
  373. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  374. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  375. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  376. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  377. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  378. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  379. package/src/runtime/foundation/service-mailbox.ts +14 -14
  380. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  381. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  382. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  383. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  384. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  385. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  386. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  387. package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
  388. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  389. package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
  390. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  391. package/src/runtime/foundation/service-topology-registry.ts +170 -159
  392. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  393. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  394. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  395. package/src/runtime/framework-errors-internal.ts +31 -30
  396. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  397. package/src/runtime/handlers/index.ts +18 -8
  398. package/src/runtime/host/actor-packet-relay.ts +290 -261
  399. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  400. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  401. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  402. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  403. package/src/runtime/host/application-job-queue.ts +32 -48
  404. package/src/runtime/host/bound-session-relay.ts +7 -9
  405. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  406. package/src/runtime/host/host-capacity-status.ts +10 -9
  407. package/src/runtime/host/index.ts +861 -789
  408. package/src/runtime/host/instance-activation-authority.ts +125 -143
  409. package/src/runtime/host/location-runtime-owner.ts +38 -26
  410. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  411. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  412. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  413. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  414. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  415. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  416. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  417. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  418. package/src/runtime/host/runtime-shutdown.ts +4 -3
  419. package/src/runtime/host/service-relocation-control.ts +14 -5
  420. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  421. package/src/runtime/host/spot-address-transport.ts +284 -237
  422. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  423. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  424. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  425. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  426. package/src/runtime/locations/actor-location-claims.ts +61 -49
  427. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  428. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  429. package/src/runtime/locations/authority-key-codec.ts +13 -10
  430. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  431. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  432. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  433. package/src/runtime/locations/canonical-codec.ts +3 -1
  434. package/src/runtime/locations/creation-operation-id.ts +4 -3
  435. package/src/runtime/locations/domain-store-contract.ts +13 -7
  436. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  437. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  438. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  439. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  440. package/src/runtime/locations/key-codec.ts +3 -4
  441. package/src/runtime/locations/lease-tracker.ts +36 -27
  442. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  443. package/src/runtime/locations/lifecycle.ts +33 -28
  444. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  445. package/src/runtime/locations/opaque-record-key.ts +4 -9
  446. package/src/runtime/locations/resolvers.ts +201 -178
  447. package/src/runtime/locations/runtime.ts +251 -159
  448. package/src/runtime/locations/spot-location-claims.ts +110 -112
  449. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  450. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  451. package/src/runtime/messaging/packet-name.ts +8 -6
  452. package/src/runtime/messaging/payload-codec.ts +70 -50
  453. package/src/runtime/messaging/submission-result.ts +6 -9
  454. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  455. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
  456. package/src/runtime/routing-id.ts +10 -7
  457. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  458. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  459. package/src/runtime/spots/index.ts +595 -564
  460. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  461. package/src/runtime/spots/spot-activation-state.ts +43 -51
  462. package/src/runtime/spots/spot-activation.ts +179 -116
  463. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  464. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  465. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  466. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  467. package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
  468. package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
  469. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  470. package/src/runtime/spots/spot-closing.ts +11 -12
  471. package/src/runtime/spots/spot-context.ts +46 -26
  472. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  473. package/src/runtime/spots/spot-handle.ts +17 -15
  474. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  475. package/src/runtime/spots/spot-location-claim.ts +5 -4
  476. package/src/runtime/spots/spot-manager-public.ts +62 -82
  477. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  478. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  479. package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
  480. package/src/runtime/spots/spot-outbound.ts +47 -59
  481. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  482. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  483. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  484. package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
  485. package/src/runtime/spots/spot-route-replies.ts +23 -24
  486. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  487. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  488. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
  489. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  490. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  491. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  492. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  493. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  494. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  495. package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
  496. package/src/runtime/spots/spot-timer.ts +103 -91
  497. package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
  498. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
  499. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  500. package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
  501. package/src/runtime/streams/bound-session-response-target.ts +39 -9
  502. package/src/runtime/streams/bound-session-service.ts +52 -42
  503. package/src/runtime/streams/index.ts +183 -100
  504. package/src/runtime/streams/managed-stream.ts +123 -90
  505. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  506. package/src/runtime/streams/protocol.ts +115 -46
  507. package/src/runtime/streams/session-actor-coordinator.ts +109 -93
  508. package/src/runtime/streams/session-calls.ts +2 -8
  509. package/src/runtime/streams/session-context.ts +96 -51
  510. package/src/runtime/streams/session-local-actors.ts +19 -3
  511. package/src/runtime/streams/session-provider.ts +5 -7
  512. package/src/runtime/streams/session-serial-executor.ts +7 -6
  513. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  514. package/src/runtime/streams/stream-frame-factory.ts +59 -40
  515. package/src/runtime/streams/stream-session-runtime.ts +317 -214
  516. package/src/runtime/workers/index.ts +68 -29
@@ -25,9 +25,9 @@ class ServiceTopologyRegistry {
25
25
  }
26
26
  publishLocal(descriptor) {
27
27
  validateDescriptor(descriptor);
28
- if (descriptor.meshName !== this.local.meshName
29
- || descriptor.nodeRoutingId !== this.local.nodeRoutingId
30
- || descriptor.lifecycleGeneration !== this.local.lifecycleGeneration) {
28
+ if (descriptor.meshName !== this.local.meshName ||
29
+ descriptor.nodeRoutingId !== this.local.nodeRoutingId ||
30
+ descriptor.lifecycleGeneration !== this.local.lifecycleGeneration) {
31
31
  throw new TypeError('Published descriptor changes the local node identity.');
32
32
  }
33
33
  if (descriptor.descriptorRevision <= this.local.descriptorRevision) {
@@ -54,12 +54,11 @@ class ServiceTopologyRegistry {
54
54
  return 'meshMismatch';
55
55
  if (descriptor.nodeRoutingId === this.local.nodeRoutingId)
56
56
  return 'invalidDescriptor';
57
- if ((expected?.endpoint !== undefined
58
- && descriptor.advertisedEndpoint !== expected.endpoint)
59
- || (expected?.securityIdentity !== undefined
60
- && descriptor.securityIdentity !== expected.securityIdentity)
61
- || (expected?.lifecycleGeneration !== undefined
62
- && descriptor.lifecycleGeneration !== expected.lifecycleGeneration)) {
57
+ if ((expected?.endpoint !== undefined && descriptor.advertisedEndpoint !== expected.endpoint) ||
58
+ (expected?.securityIdentity !== undefined &&
59
+ descriptor.securityIdentity !== expected.securityIdentity) ||
60
+ (expected?.lifecycleGeneration !== undefined &&
61
+ descriptor.lifecycleGeneration !== expected.lifecycleGeneration)) {
63
62
  return 'invalidDescriptor';
64
63
  }
65
64
  if ((0, route_mesh_connection_policy_1.descriptorConnectionNotRequired)(this.local, descriptor)) {
@@ -71,30 +70,29 @@ class ServiceTopologyRegistry {
71
70
  }
72
71
  this.notRequiredByRid.delete(descriptor.nodeRoutingId);
73
72
  const current = this.peersByRid.get(descriptor.nodeRoutingId);
74
- if (current !== undefined
75
- && current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration
76
- && descriptor.descriptorRevision > current.descriptor.descriptorRevision
77
- && !sameImmutableDescriptor(current.descriptor, descriptor)) {
73
+ if (current !== undefined &&
74
+ current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration &&
75
+ descriptor.descriptorRevision > current.descriptor.descriptorRevision &&
76
+ !sameImmutableDescriptor(current.descriptor, descriptor)) {
78
77
  return 'invalidDescriptor';
79
78
  }
80
- if (current !== undefined
81
- && current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration
82
- && (current.descriptor.descriptorRevision > descriptor.descriptorRevision
83
- || (current.descriptor.descriptorRevision === descriptor.descriptorRevision
84
- && !sameServiceNodeDescriptor(current.descriptor, descriptor)))) {
79
+ if (current !== undefined &&
80
+ current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration &&
81
+ (current.descriptor.descriptorRevision > descriptor.descriptorRevision ||
82
+ (current.descriptor.descriptorRevision === descriptor.descriptorRevision &&
83
+ !sameServiceNodeDescriptor(current.descriptor, descriptor)))) {
85
84
  return 'staleDescriptor';
86
85
  }
87
- if (current !== undefined
88
- && current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration
89
- && current.descriptor.descriptorRevision === descriptor.descriptorRevision
90
- && sameServiceNodeDescriptor(current.descriptor, descriptor)
91
- && current.connectionId !== connectionId
86
+ if (current !== undefined &&
87
+ current.descriptor.lifecycleGeneration === descriptor.lifecycleGeneration &&
88
+ current.descriptor.descriptorRevision === descriptor.descriptorRevision &&
89
+ sameServiceNodeDescriptor(current.descriptor, descriptor) &&
90
+ current.connectionId !== connectionId &&
92
91
  // A fallback candidate is only a logical placeholder. Once the
93
92
  // monitor reports the physical connection, its evidence supersedes
94
93
  // candidate ordering so the request path uses the native route.
95
- && !(isUnmonitoredConnectionId(current.connectionId)
96
- && !isUnmonitoredConnectionId(connectionId))
97
- && compareConnectionCandidate(current.connectionDiscriminator, current.connectionId, connectionDiscriminator, connectionId) <= 0) {
94
+ !(isUnmonitoredConnectionId(current.connectionId) && !isUnmonitoredConnectionId(connectionId)) &&
95
+ compareConnectionCandidate(current.connectionDiscriminator, current.connectionId, connectionDiscriminator, connectionId) <= 0) {
98
96
  // Both manual directions can reach admission. The same comparison on
99
97
  // every retry keeps one physical candidate instead of replacing it in
100
98
  // arrival order.
@@ -138,9 +136,9 @@ class ServiceTopologyRegistry {
138
136
  const next = new Map();
139
137
  for (const descriptor of descriptors) {
140
138
  validateDescriptor(descriptor);
141
- if (descriptor.meshName === this.local.meshName
142
- && descriptor.nodeRoutingId !== this.local.nodeRoutingId
143
- && (0, route_mesh_connection_policy_1.descriptorConnectionNotRequired)(this.local, descriptor)) {
139
+ if (descriptor.meshName === this.local.meshName &&
140
+ descriptor.nodeRoutingId !== this.local.nodeRoutingId &&
141
+ (0, route_mesh_connection_policy_1.descriptorConnectionNotRequired)(this.local, descriptor)) {
144
142
  next.set(descriptor.nodeRoutingId, cloneDescriptor(descriptor));
145
143
  }
146
144
  }
@@ -153,9 +151,9 @@ class ServiceTopologyRegistry {
153
151
  }
154
152
  markNotRequired(descriptor) {
155
153
  validateDescriptor(descriptor);
156
- if (descriptor.meshName !== this.local.meshName
157
- || descriptor.nodeRoutingId === this.local.nodeRoutingId
158
- || !(0, route_mesh_connection_policy_1.descriptorConnectionNotRequired)(this.local, descriptor)) {
154
+ if (descriptor.meshName !== this.local.meshName ||
155
+ descriptor.nodeRoutingId === this.local.nodeRoutingId ||
156
+ !(0, route_mesh_connection_policy_1.descriptorConnectionNotRequired)(this.local, descriptor)) {
159
157
  return;
160
158
  }
161
159
  this.peersByRid.delete(descriptor.nodeRoutingId);
@@ -169,17 +167,19 @@ class ServiceTopologyRegistry {
169
167
  }
170
168
  knownDescriptor(nodeRoutingId) {
171
169
  const admitted = this.peersByRid.get(nodeRoutingId)?.descriptor;
172
- const descriptor = admitted
173
- ?? this.notRequiredByRid.get(nodeRoutingId)
174
- ?? this.knownByRid.get(nodeRoutingId);
170
+ const descriptor = admitted ?? this.notRequiredByRid.get(nodeRoutingId) ?? this.knownByRid.get(nodeRoutingId);
175
171
  return descriptor === undefined ? undefined : cloneDescriptor(descriptor);
176
172
  }
173
+ hasKnownChannelTarget(channelName) {
174
+ requireText(channelName, 'channelName');
175
+ return [this.local, ...this.knownByRid.values()].some((descriptor) => selectableChannel(descriptor, channelName) !== undefined);
176
+ }
177
177
  remember(descriptor) {
178
178
  const current = this.knownByRid.get(descriptor.nodeRoutingId);
179
- if (current === undefined
180
- || descriptor.lifecycleGeneration !== current.lifecycleGeneration
181
- || (descriptor.lifecycleGeneration === current.lifecycleGeneration
182
- && descriptor.descriptorRevision >= current.descriptorRevision)) {
179
+ if (current === undefined ||
180
+ descriptor.lifecycleGeneration !== current.lifecycleGeneration ||
181
+ (descriptor.lifecycleGeneration === current.lifecycleGeneration &&
182
+ descriptor.descriptorRevision >= current.descriptorRevision)) {
183
183
  this.knownByRid.set(descriptor.nodeRoutingId, cloneDescriptor(descriptor));
184
184
  }
185
185
  }
@@ -191,73 +191,77 @@ class ServiceTopologyRegistry {
191
191
  connectionId: 'local',
192
192
  connectionDiscriminator: 'local'
193
193
  };
194
- return [local, ...this.peersByRid.values()].map(peer => ({
194
+ return [local, ...this.peersByRid.values()]
195
+ .map((peer) => ({
195
196
  peer: clonePeer(peer),
196
- channel: findChannel(peer.descriptor, channelName)
197
- })).filter((value) => value.channel !== undefined
198
- && value.peer.descriptor.state === 'serving'
199
- && value.channel.weight > 0);
200
- }, value => value.channel.weight, value => value.peer.descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.peer.descriptor.nodeRoutingId, right.peer.descriptor.nodeRoutingId), value => isReady(value.peer))?.peer;
197
+ channel: selectableChannel(peer.descriptor, channelName)
198
+ }))
199
+ .filter((value) => value.channel !== undefined);
200
+ }, (value) => value.channel.weight, (value) => value.peer.descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.peer.descriptor.nodeRoutingId, right.peer.descriptor.nodeRoutingId), (value) => isReady(value.peer))?.peer;
201
201
  }
202
202
  selectPlacement(isReady = () => true) {
203
- return this.selectWeightedCycle('placement', () => [...this.peersByRid.values()].filter(peer => {
203
+ return this.selectWeightedCycle('placement', () => [...this.peersByRid.values()]
204
+ .filter((peer) => {
204
205
  const descriptor = peer.descriptor;
205
- return descriptor.state === 'serving'
206
- && descriptor.objectRole === 'server'
207
- && descriptor.placementWeight > 0
208
- && descriptor.activeCapacityUsed < descriptor.activeCapacityLimit
209
- && descriptor.pendingCapacityUsed < descriptor.pendingCapacityLimit;
210
- }).map(clonePeer), peer => peer.descriptor.placementWeight, peer => peer.descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.descriptor.nodeRoutingId, right.descriptor.nodeRoutingId), isReady);
206
+ return (descriptor.state === 'serving' &&
207
+ descriptor.objectRole === 'server' &&
208
+ descriptor.placementWeight > 0 &&
209
+ descriptor.activeCapacityUsed < descriptor.activeCapacityLimit &&
210
+ descriptor.pendingCapacityUsed < descriptor.pendingCapacityLimit);
211
+ })
212
+ .map(clonePeer), (peer) => peer.descriptor.placementWeight, (peer) => peer.descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.descriptor.nodeRoutingId, right.descriptor.nodeRoutingId), isReady);
211
213
  }
212
214
  selectObjectPlacement(stableType, isReady = () => true) {
213
215
  requireText(stableType, 'stableType');
214
216
  return this.selectWeightedCycle(`object:${stableType}`, () => {
215
217
  const capability = `object-type:${stableType}`;
216
- return [this.local, ...this.peersByRid.values()].map(value => 'descriptor' in value ? value.descriptor : value).filter(descriptor => descriptor.state === 'serving'
217
- && descriptor.objectRole === 'server'
218
- && descriptor.placementWeight > 0
219
- && descriptor.activeCapacityUsed < descriptor.activeCapacityLimit
220
- && descriptor.pendingCapacityUsed < descriptor.pendingCapacityLimit
221
- && descriptor.protocolCapabilities.includes(capability)).map(cloneDescriptor);
222
- }, descriptor => descriptor.placementWeight, descriptor => descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.nodeRoutingId, right.nodeRoutingId), isReady);
218
+ return [this.local, ...this.peersByRid.values()]
219
+ .map((value) => ('descriptor' in value ? value.descriptor : value))
220
+ .filter((descriptor) => descriptor.state === 'serving' &&
221
+ descriptor.objectRole === 'server' &&
222
+ descriptor.placementWeight > 0 &&
223
+ descriptor.activeCapacityUsed < descriptor.activeCapacityLimit &&
224
+ descriptor.pendingCapacityUsed < descriptor.pendingCapacityLimit &&
225
+ descriptor.protocolCapabilities.includes(capability))
226
+ .map(cloneDescriptor);
227
+ }, (descriptor) => descriptor.placementWeight, (descriptor) => descriptor.nodeRoutingId, (left, right) => compareOrdinal(left.nodeRoutingId, right.nodeRoutingId), isReady);
223
228
  }
224
229
  objectPlacementStatus(stableType, isReady = () => true) {
225
230
  requireText(stableType, 'stableType');
226
231
  const capability = `object-type:${stableType}`;
227
- const supported = [this.local, ...[...this.peersByRid.values()].map(peer => peer.descriptor)]
228
- .filter(descriptor => descriptor.state === 'serving'
229
- && descriptor.objectRole === 'server'
230
- && descriptor.protocolCapabilities.includes(capability));
232
+ const supported = [
233
+ this.local,
234
+ ...[...this.peersByRid.values()].map((peer) => peer.descriptor)
235
+ ].filter((descriptor) => descriptor.state === 'serving' &&
236
+ descriptor.objectRole === 'server' &&
237
+ descriptor.protocolCapabilities.includes(capability));
231
238
  if (supported.length === 0)
232
239
  return 'unsupported';
233
- const withCapacity = supported.filter(descriptor => descriptor.activeCapacityUsed < descriptor.activeCapacityLimit
234
- && descriptor.pendingCapacityUsed < descriptor.pendingCapacityLimit);
240
+ const withCapacity = supported.filter((descriptor) => descriptor.activeCapacityUsed < descriptor.activeCapacityLimit &&
241
+ descriptor.pendingCapacityUsed < descriptor.pendingCapacityLimit);
235
242
  if (withCapacity.length === 0)
236
243
  return 'capacity';
237
- const weighted = withCapacity.filter(descriptor => descriptor.placementWeight > 0);
244
+ const weighted = withCapacity.filter((descriptor) => descriptor.placementWeight > 0);
238
245
  if (weighted.length === 0)
239
246
  return 'unsupported';
240
247
  return weighted.some(isReady) ? 'available' : 'unavailable';
241
248
  }
242
249
  instanceSpotPlacementTypes() {
243
250
  const prefix = 'instance-spot-type:';
244
- return [...new Set([
245
- this.local,
246
- ...this.peersCore().map(peer => peer.descriptor)
247
- ]
248
- .filter(descriptor => descriptor.state === 'serving'
249
- && descriptor.objectRole === 'server')
250
- .flatMap(descriptor => descriptor.protocolCapabilities)
251
- .filter(capability => capability.startsWith(prefix))
252
- .map(capability => capability.slice(prefix.length))
253
- .filter(stableType => stableType.length > 0))]
254
- .sort();
251
+ return [
252
+ ...new Set([this.local, ...this.peersCore().map((peer) => peer.descriptor)]
253
+ .filter((descriptor) => descriptor.state === 'serving' && descriptor.objectRole === 'server')
254
+ .flatMap((descriptor) => descriptor.protocolCapabilities)
255
+ .filter((capability) => capability.startsWith(prefix))
256
+ .map((capability) => capability.slice(prefix.length))
257
+ .filter((stableType) => stableType.length > 0))
258
+ ].sort();
255
259
  }
256
260
  selectWeightedCycle(key, eligible, weight, identity, compare, accept = () => true) {
257
261
  let entry = this.selections.get(key);
258
262
  if (entry === undefined) {
259
263
  const selection = new service_weighted_selection_1.SmoothWeightedSelection(() => eligible()
260
- .map(value => ({
264
+ .map((value) => ({
261
265
  value,
262
266
  id: identity(value),
263
267
  weight: weight(value)
@@ -266,7 +270,7 @@ class ServiceTopologyRegistry {
266
270
  entry = { selection };
267
271
  this.selections.set(key, entry);
268
272
  }
269
- return entry.selection.select(value => accept(value));
273
+ return entry.selection.select((value) => accept(value));
270
274
  }
271
275
  rebuildSelections() {
272
276
  for (const entry of this.selections.values())
@@ -296,16 +300,16 @@ function validateDescriptor(descriptor) {
296
300
  validateCapacity(descriptor.pendingCapacityLimit, true, 'pendingCapacityLimit');
297
301
  validateCapacity(descriptor.activeCapacityUsed, true, 'activeCapacityUsed');
298
302
  validateCapacity(descriptor.pendingCapacityUsed, true, 'pendingCapacityUsed');
299
- if (descriptor.activeCapacityUsed > descriptor.activeCapacityLimit
300
- || descriptor.pendingCapacityUsed > descriptor.pendingCapacityLimit) {
303
+ if (descriptor.activeCapacityUsed > descriptor.activeCapacityLimit ||
304
+ descriptor.pendingCapacityUsed > descriptor.pendingCapacityLimit) {
301
305
  throw new RangeError('Descriptor capacity use exceeds its limit.');
302
306
  }
303
- validateSortedUnique(descriptor.channels, channel => {
307
+ validateSortedUnique(descriptor.channels, (channel) => {
304
308
  requireText(channel.name, 'channel.name');
305
309
  validatePublicWeight(channel.weight, 'channel.weight');
306
310
  return channel.name;
307
311
  }, 'channels');
308
- validateSortedUnique(descriptor.protocolCapabilities, capability => {
312
+ validateSortedUnique(descriptor.protocolCapabilities, (capability) => {
309
313
  requireText(capability, 'protocol capability');
310
314
  return capability;
311
315
  }, 'protocolCapabilities');
@@ -334,7 +338,13 @@ function validateSortedUnique(values, key, field) {
334
338
  }
335
339
  }
336
340
  function findChannel(descriptor, channelName) {
337
- return descriptor.channels.find(channel => channel.name === channelName);
341
+ return descriptor.channels.find((channel) => channel.name === channelName);
342
+ }
343
+ function selectableChannel(descriptor, channelName) {
344
+ if (descriptor.state !== 'serving')
345
+ return undefined;
346
+ const channel = findChannel(descriptor, channelName);
347
+ return channel !== undefined && channel.weight > 0 ? channel : undefined;
338
348
  }
339
349
  function requireText(value, field) {
340
350
  if (value.length === 0 || value.includes('\0')) {
@@ -344,7 +354,7 @@ function requireText(value, field) {
344
354
  function cloneDescriptor(descriptor) {
345
355
  return {
346
356
  ...descriptor,
347
- channels: descriptor.channels.map(channel => ({ ...channel })),
357
+ channels: descriptor.channels.map((channel) => ({ ...channel })),
348
358
  protocolCapabilities: [...descriptor.protocolCapabilities]
349
359
  };
350
360
  }
@@ -359,19 +369,18 @@ function sameServiceNodeDescriptor(left, right) {
359
369
  return JSON.stringify(toComparable(left)) === JSON.stringify(toComparable(right));
360
370
  }
361
371
  function sameImmutableDescriptor(left, right) {
362
- return left.advertisedEndpoint === right.advertisedEndpoint
363
- && left.securityIdentity === right.securityIdentity
364
- && left.applicationVersion === right.applicationVersion
365
- && arraysEqual(left.protocolCapabilities, right.protocolCapabilities)
366
- && left.objectRole === right.objectRole
367
- && left.activeCapacityLimit === right.activeCapacityLimit
368
- && left.pendingCapacityLimit === right.pendingCapacityLimit
369
- && left.channels.length === right.channels.length
370
- && left.channels.every((channel, index) => channel.name === right.channels[index]?.name);
372
+ return (left.advertisedEndpoint === right.advertisedEndpoint &&
373
+ left.securityIdentity === right.securityIdentity &&
374
+ left.applicationVersion === right.applicationVersion &&
375
+ arraysEqual(left.protocolCapabilities, right.protocolCapabilities) &&
376
+ left.objectRole === right.objectRole &&
377
+ left.activeCapacityLimit === right.activeCapacityLimit &&
378
+ left.pendingCapacityLimit === right.pendingCapacityLimit &&
379
+ left.channels.length === right.channels.length &&
380
+ left.channels.every((channel, index) => channel.name === right.channels[index]?.name));
371
381
  }
372
382
  function arraysEqual(left, right) {
373
- return left.length === right.length
374
- && left.every((value, index) => value === right[index]);
383
+ return left.length === right.length && left.every((value, index) => value === right[index]);
375
384
  }
376
385
  function isUnmonitoredConnectionId(connectionId) {
377
386
  return connectionId.startsWith('unmonitored:');
@@ -33,9 +33,7 @@ class SmoothWeightedSelection {
33
33
  for (let attempts = 0; attempts < this.plan.values.length; attempts += 1) {
34
34
  const cursor = this.plan.cursor;
35
35
  const selected = this.plan.values[cursor];
36
- const nextCursor = cursor + 1 < this.plan.values.length
37
- ? cursor + 1
38
- : this.plan.cycleStart;
36
+ const nextCursor = cursor + 1 < this.plan.values.length ? cursor + 1 : this.plan.cycleStart;
39
37
  this.plan.cursor = nextCursor;
40
38
  if (accept(selected))
41
39
  return selected;
@@ -45,15 +43,12 @@ class SmoothWeightedSelection {
45
43
  }
46
44
  exports.SmoothWeightedSelection = SmoothWeightedSelection;
47
45
  function buildSelectionPlan(eligible, current) {
48
- const candidates = eligible.map(candidate => ({
46
+ const candidates = eligible.map((candidate) => ({
49
47
  ...candidate,
50
48
  weight: BigInt(candidate.weight)
51
49
  }));
52
50
  const total = candidates.reduce((sum, candidate) => sum + candidate.weight, 0n);
53
- replaceState(current, new Map(candidates.map(candidate => [
54
- candidate.id,
55
- current.get(candidate.id) ?? 0n
56
- ])));
51
+ replaceState(current, new Map(candidates.map((candidate) => [candidate.id, current.get(candidate.id) ?? 0n])));
57
52
  if (total === 0n)
58
53
  return emptyCycle();
59
54
  const values = [];
@@ -62,12 +57,12 @@ function buildSelectionPlan(eligible, current) {
62
57
  const working = new Map(current);
63
58
  const startedAt = performance.now();
64
59
  for (;;) {
65
- if (values.length >= MAX_CYCLE_SEARCH_STEPS
66
- || performance.now() - startedAt >= MAX_CYCLE_SEARCH_MS) {
60
+ if (values.length >= MAX_CYCLE_SEARCH_STEPS ||
61
+ performance.now() - startedAt >= MAX_CYCLE_SEARCH_MS) {
67
62
  return { kind: 'direct', candidates };
68
63
  }
69
64
  const stateKey = candidates
70
- .map(candidate => `${candidate.id}\u0000${working.get(candidate.id) ?? 0n}`)
65
+ .map((candidate) => `${candidate.id}\u0000${working.get(candidate.id) ?? 0n}`)
71
66
  .join('\u0001');
72
67
  const cycleStart = seen.get(stateKey);
73
68
  if (cycleStart !== undefined) {
@@ -8,10 +8,10 @@ const routing_id_1 = require("../routing-id");
8
8
  /** Encodes text without silently replacing an unpaired UTF-16 surrogate. */
9
9
  function encodeCanonicalServiceWireText(value, field, maximumBytes, invalid) {
10
10
  const bytes = Buffer.from(value, 'utf8');
11
- if (bytes.byteLength < 1
12
- || bytes.byteLength > maximumBytes
13
- || value.includes('\0')
14
- || bytes.toString('utf8') !== value) {
11
+ if (bytes.byteLength < 1 ||
12
+ bytes.byteLength > maximumBytes ||
13
+ value.includes('\0') ||
14
+ bytes.toString('utf8') !== value) {
15
15
  invalid(`${field} must be 1..${maximumBytes} canonical UTF-8 bytes without NUL.`);
16
16
  }
17
17
  return bytes;
@@ -20,8 +20,7 @@ function encodeCanonicalServiceWireText(value, field, maximumBytes, invalid) {
20
20
  function decodeCanonicalServiceWireText(bytes, field, invalid) {
21
21
  const encoded = Buffer.from(bytes);
22
22
  const value = encoded.toString('utf8');
23
- if (value.includes('\0')
24
- || !Buffer.from(value, 'utf8').equals(encoded)) {
23
+ if (value.includes('\0') || !Buffer.from(value, 'utf8').equals(encoded)) {
25
24
  invalid(`${field} is not canonical UTF-8 without NUL.`);
26
25
  }
27
26
  return value;
@@ -46,7 +46,9 @@ function encodeNodeRequestHeader(correlation) {
46
46
  }
47
47
  function decodeNodeRequestHeader(frame) {
48
48
  const header = decodeHeader(frame);
49
- if (header.command !== exports.M6aServiceWireCommand.nodeRequest || header.flags !== 0 || frame.byteLength !== 13) {
49
+ if (header.command !== exports.M6aServiceWireCommand.nodeRequest ||
50
+ header.flags !== 0 ||
51
+ frame.byteLength !== 13) {
50
52
  fail('Invalid nodeRequest header.');
51
53
  }
52
54
  return readNonZeroU64(asBuffer(frame), PREFIX_SIZE, 'correlation');
@@ -96,7 +98,9 @@ function encodeReplyHeader(correlation, terminalResult = 0, failureCode = 0, tai
96
98
  }
97
99
  function decodeReplyHeader(frame) {
98
100
  const header = decodeHeader(frame);
99
- if (header.command !== exports.M6aServiceWireCommand.reply || header.flags !== 0 || frame.byteLength < 21) {
101
+ if (header.command !== exports.M6aServiceWireCommand.reply ||
102
+ header.flags !== 0 ||
103
+ frame.byteLength < 21) {
100
104
  fail('Invalid reply header.');
101
105
  }
102
106
  const bytes = asBuffer(frame);
@@ -117,10 +121,7 @@ function encodeApplicationPayload(payload) {
117
121
  const contentType = encodeText8(payload.contentType, 'contentType');
118
122
  if (payload.payload.byteLength > MAX_U32)
119
123
  fail('Application payload exceeds u32.');
120
- const bodyLength = packetName.byteLength
121
- + contentType.byteLength
122
- + 4
123
- + payload.payload.byteLength;
124
+ const bodyLength = packetName.byteLength + contentType.byteLength + 4 + payload.payload.byteLength;
124
125
  if (bodyLength > MAX_U32)
125
126
  fail('Application payload body exceeds u32.');
126
127
  const result = Buffer.alloc(5 + bodyLength);
@@ -154,10 +155,7 @@ function encodeMultipartApplicationPayload(parts, packetName, contentType) {
154
155
  if (multipartLength > MAX_U32)
155
156
  fail('Multipart payload exceeds u32.');
156
157
  }
157
- const bodyLength = packetNameBytes.byteLength
158
- + contentTypeBytes.byteLength
159
- + 4
160
- + multipartLength;
158
+ const bodyLength = packetNameBytes.byteLength + contentTypeBytes.byteLength + 4 + multipartLength;
161
159
  if (bodyLength > MAX_U32)
162
160
  fail('Application payload body exceeds u32.');
163
161
  const result = Buffer.alloc(5 + bodyLength);
@@ -239,7 +237,7 @@ function encodeRouteMeshAdmission(command, descriptor) {
239
237
  for (const channel of descriptor.channels) {
240
238
  routeParts.push(encodeText8(channel.name, 'channelName'), encodeU32(channel.weight));
241
239
  }
242
- const extension = concat(tlv(1, Buffer.of(stateToWire(descriptor.state))), tlv(2, encodeU64(descriptor.applicationVersion)), tlv(6, concat(encodeU16(descriptor.protocolCapabilities.length), ...descriptor.protocolCapabilities.map(value => encodeText8(value, 'protocolCapability')))), tlv(7, Buffer.of(roleToWire(descriptor.objectRole))), tlv(8, encodeU32(descriptor.placementWeight)), tlv(9, encodeU32(descriptor.activeCapacityLimit)), tlv(10, encodeU32(descriptor.pendingCapacityLimit)), tlv(11, encodeU32(descriptor.activeCapacityUsed)), tlv(12, encodeU32(descriptor.pendingCapacityUsed)), ...(descriptor.maintenanceWave === undefined
240
+ const extension = concat(tlv(1, Buffer.of(stateToWire(descriptor.state))), tlv(2, encodeU64(descriptor.applicationVersion)), tlv(6, concat(encodeU16(descriptor.protocolCapabilities.length), ...descriptor.protocolCapabilities.map((value) => encodeText8(value, 'protocolCapability')))), tlv(7, Buffer.of(roleToWire(descriptor.objectRole))), tlv(8, encodeU32(descriptor.placementWeight)), tlv(9, encodeU32(descriptor.activeCapacityLimit)), tlv(10, encodeU32(descriptor.pendingCapacityLimit)), tlv(11, encodeU32(descriptor.activeCapacityUsed)), tlv(12, encodeU32(descriptor.pendingCapacityUsed)), ...(descriptor.maintenanceWave === undefined
243
241
  ? []
244
242
  : [tlv(13, encodeText8(descriptor.maintenanceWave, 'maintenanceWave'))]));
245
243
  const route = concat(...routeParts, encodeU32(extension.byteLength), extension);
@@ -319,11 +317,11 @@ function decodeRouteMeshAdmission(frame, expectedCommand, sourceRoutingId) {
319
317
  value.end();
320
318
  }
321
319
  reader.end();
322
- if (state === undefined
323
- || applicationVersion === undefined
324
- || protocolCapabilities === undefined
325
- || objectRole === undefined
326
- || ![8, 9, 10, 11, 12].every(id => capacities.has(id))) {
320
+ if (state === undefined ||
321
+ applicationVersion === undefined ||
322
+ protocolCapabilities === undefined ||
323
+ objectRole === undefined ||
324
+ ![8, 9, 10, 11, 12].every((id) => capacities.has(id))) {
327
325
  fail('Descriptor extension omits a required field.');
328
326
  }
329
327
  const descriptor = {
@@ -355,7 +353,9 @@ function encodeReject(reason) {
355
353
  }
356
354
  function decodeReject(frame) {
357
355
  const header = decodeHeader(frame);
358
- if (header.command !== exports.M6aServiceWireCommand.reject || header.flags !== 0 || frame.byteLength !== 9) {
356
+ if (header.command !== exports.M6aServiceWireCommand.reject ||
357
+ header.flags !== 0 ||
358
+ frame.byteLength !== 9) {
359
359
  fail('Invalid reject record.');
360
360
  }
361
361
  const reason = asBuffer(frame).readUInt32BE(PREFIX_SIZE);
@@ -420,7 +420,7 @@ function tlv(id, value) {
420
420
  return concat(Buffer.of(id), encodeU32(value.byteLength), value);
421
421
  }
422
422
  function concat(...parts) {
423
- return Buffer.concat(parts.map(part => Buffer.from(part)));
423
+ return Buffer.concat(parts.map((part) => Buffer.from(part)));
424
424
  }
425
425
  function readNonZeroU64(bytes, offset, field) {
426
426
  const result = bytes.readBigUInt64BE(offset);
@@ -432,9 +432,9 @@ function asBuffer(value) {
432
432
  return Buffer.from(value.buffer, value.byteOffset, value.byteLength);
433
433
  }
434
434
  function validateAdmissionCommand(command) {
435
- if (command !== exports.M6aServiceWireCommand.hello
436
- && command !== exports.M6aServiceWireCommand.admit
437
- && command !== exports.M6aServiceWireCommand.update) {
435
+ if (command !== exports.M6aServiceWireCommand.hello &&
436
+ command !== exports.M6aServiceWireCommand.admit &&
437
+ command !== exports.M6aServiceWireCommand.update) {
438
438
  fail('Command is not an admission record.');
439
439
  }
440
440
  }
@@ -445,9 +445,9 @@ function validateReplyFields(correlation, terminal, failure) {
445
445
  // an unknown or mismatched pair is a protocol error before dispatch. The
446
446
  // generated predicate replaces the old broad-category check, which
447
447
  // accepted any typed pairing and wrongly rejected defined codes 33/34.
448
- if (correlation <= 0n
449
- || correlation > MAX_U64
450
- || !(0, service_wire_constants_generated_1.isValidServiceWireTerminalFailure)(terminal, failure)) {
448
+ if (correlation <= 0n ||
449
+ correlation > MAX_U64 ||
450
+ !(0, service_wire_constants_generated_1.isValidServiceWireTerminalFailure)(terminal, failure)) {
451
451
  fail('Invalid reply terminal fields.');
452
452
  }
453
453
  }
@@ -456,22 +456,33 @@ function stateToWire(value) {
456
456
  // is a host-internal transition and has the same remote admission meaning
457
457
  // as `draining`; the service wire does not expose a separate retiring value.
458
458
  switch (value) {
459
- case 'preparing': return 0;
460
- case 'serving': return 1;
459
+ case 'preparing':
460
+ return 0;
461
+ case 'serving':
462
+ return 1;
461
463
  case 'retiring':
462
- case 'draining': return 2;
463
- case 'stopped': return 3;
464
- case 'error': return 4;
464
+ case 'draining':
465
+ return 2;
466
+ case 'stopped':
467
+ return 3;
468
+ case 'error':
469
+ return 4;
465
470
  }
466
471
  }
467
472
  function stateFromWire(value) {
468
473
  switch (value) {
469
- case 0: return 'preparing';
470
- case 1: return 'serving';
471
- case 2: return 'draining';
472
- case 3: return 'stopped';
473
- case 4: return 'error';
474
- default: fail('Invalid runtime state.');
474
+ case 0:
475
+ return 'preparing';
476
+ case 1:
477
+ return 'serving';
478
+ case 2:
479
+ return 'draining';
480
+ case 3:
481
+ return 'stopped';
482
+ case 4:
483
+ return 'error';
484
+ default:
485
+ fail('Invalid runtime state.');
475
486
  }
476
487
  }
477
488
  function roleToWire(value) {
@@ -149,18 +149,17 @@ exports.ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES = Object.freeze({
149
149
  [ZLinkFrameworkInternalErrorKind.ActorRouteUnavailable]: 41
150
150
  });
151
151
  const INTERNAL_KIND_BY_WIRE_FAILURE_CODE = new Map([
152
- ...Object.entries(exports.ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES)
153
- .map(([kind, code]) => [code + 1, kind]),
152
+ ...Object.entries(exports.ZLINK_FRAMEWORK_INTERNAL_ERROR_KIND_VALUES).map(([kind, code]) => [code + 1, kind]),
154
153
  // Spec 32-framework-error-model:99-103 — a workerQueueFull(18) received in a
155
154
  // remote reply is the target's queue state and maps to Unavailable.
156
155
  [18, ZLinkFrameworkInternalErrorKind.RouteNotConnected]
157
156
  ]);
158
157
  const WIRE_TERMINAL_RESULT_BY_FAILURE_CODE = new Map([
159
- ...[1, 6, 8, 9, 10, 11, 14].map(code => [code, 102]),
160
- ...[2, 5, 13, 17, 19, 20, 35, 42].map(code => [code, 105]),
161
- ...[3, 4, 7, 21, 33, 34].map(code => [code, 107]),
162
- ...[12, 16].map(code => [code, 104]),
163
- ...[15, 18, 22].map(code => [code, 106])
158
+ ...[1, 6, 8, 9, 10, 11, 14].map((code) => [code, 102]),
159
+ ...[2, 5, 13, 17, 19, 20, 35, 42].map((code) => [code, 105]),
160
+ ...[3, 4, 7, 21, 33, 34].map((code) => [code, 107]),
161
+ ...[12, 16].map((code) => [code, 104]),
162
+ ...[15, 18, 22].map((code) => [code, 106])
164
163
  ]);
165
164
  const INTERNAL_KIND = new WeakMap();
166
165
  function createInternalFrameworkException(kind, message, causeOrRetry, cause) {
@@ -286,9 +285,7 @@ function internalFrameworkErrorKindFromWireReply(terminalResult, failureCode) {
286
285
  const expectedTerminalResult = WIRE_TERMINAL_RESULT_BY_FAILURE_CODE.get(failureCode);
287
286
  return expectedTerminalResult === terminalResult ? kind : undefined;
288
287
  }
289
- const BOUNDARY_WIRE_TERMINAL_RESULTS = new Set([
290
- 101, 103, 108, 109, 110, 111, 112, 113
291
- ]);
288
+ const BOUNDARY_WIRE_TERMINAL_RESULTS = new Set([101, 103, 108, 109, 110, 111, 112, 113]);
292
289
  /** Checks the terminal and failure-code pair before a transport maps it. */
293
290
  function isCanonicalWireReplyTerminal(terminalResult, failureCode) {
294
291
  if (terminalResult === 0)
@@ -73,9 +73,9 @@ function createHandlerInstanceScope(providerResolver, context) {
73
73
  return new DefaultHandlerInstanceScope(providerResolver);
74
74
  }
75
75
  function isHandlerInstanceScopeFactory(value) {
76
- return typeof value === 'object'
77
- && value !== null
78
- && typeof value.create === 'function';
76
+ return (typeof value === 'object' &&
77
+ value !== null &&
78
+ typeof value.create === 'function');
79
79
  }
80
80
  class DefaultHandlerInstanceScope {
81
81
  providerResolver;
@@ -133,8 +133,7 @@ class DefaultHandlerInstanceScope {
133
133
  async activate(type, activation) {
134
134
  let instance;
135
135
  try {
136
- instance = await this.providerResolver?.create?.(type)
137
- ?? new type();
136
+ instance = (await this.providerResolver?.create?.(type)) ?? new type();
138
137
  }
139
138
  catch (error) {
140
139
  activation.reject(error);
@@ -20,7 +20,9 @@ function exposeZLinkHandlers(handlerTypes, policy) {
20
20
  if (groups.size === 0) {
21
21
  return false;
22
22
  }
23
- return (0, Attributes_1.readZLinkDecoratorMetadata)(descriptor.handlerType).some((metadata) => metadata.kind === 'handlerGroup' && metadata.groupName !== undefined && groups.has(metadata.groupName));
23
+ return (0, Attributes_1.readZLinkDecoratorMetadata)(descriptor.handlerType).some((metadata) => metadata.kind === 'handlerGroup' &&
24
+ metadata.groupName !== undefined &&
25
+ groups.has(metadata.groupName));
24
26
  });
25
27
  }
26
28
  async function invokeZLinkHandlerFilters(filters, context, terminal, signal) {