@zlink-systems/framework 0.21.0 → 0.22.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 (487) 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/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -103,11 +103,11 @@ function readZLinkMessageDeclaredType(message) {
103
103
  * the runtime type requested by `ZLinkMessage.decode(type)`.
104
104
  */
105
105
  function materializeZLinkMessageValue(value, type) {
106
- if (type === undefined
107
- || type === Object
108
- || value === null
109
- || typeof value !== 'object'
110
- || Array.isArray(value)) {
106
+ if (type === undefined ||
107
+ type === Object ||
108
+ value === null ||
109
+ typeof value !== 'object' ||
110
+ Array.isArray(value)) {
111
111
  return value;
112
112
  }
113
113
  const prototype = type.prototype;
@@ -29,9 +29,7 @@ function normalizeCodecContentType(contentType) {
29
29
  }
30
30
  if (!isTokenCharacter(code))
31
31
  throw invalidContentType();
32
- normalized += code >= 0x41 && code <= 0x5a
33
- ? String.fromCharCode(code + 0x20)
34
- : value[index];
32
+ normalized += code >= 0x41 && code <= 0x5a ? String.fromCharCode(code + 0x20) : value[index];
35
33
  }
36
34
  if (slash === -1)
37
35
  throw invalidContentType();
@@ -58,10 +56,10 @@ function isOuterWhitespace(code) {
58
56
  return code === 0x20 || code === 0x09;
59
57
  }
60
58
  function isTokenCharacter(code) {
61
- return (code >= 0x30 && code <= 0x39)
62
- || (code >= 0x41 && code <= 0x5a)
63
- || (code >= 0x61 && code <= 0x7a)
64
- || mediaTypePunctuation.has(code);
59
+ return ((code >= 0x30 && code <= 0x39) ||
60
+ (code >= 0x41 && code <= 0x5a) ||
61
+ (code >= 0x61 && code <= 0x7a) ||
62
+ mediaTypePunctuation.has(code));
65
63
  }
66
64
  function invalidContentType() {
67
65
  return new ConfigurationException_1.ZLinkConfigurationException('Codec content type must be a parameter-free ASCII type/subtype.');
@@ -3,12 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.requireMessageFlowLogMode = requireMessageFlowLogMode;
4
4
  exports.requireTraceSampleRate = requireTraceSampleRate;
5
5
  const ConfigurationException_1 = require("./ConfigurationException");
6
- const MESSAGE_FLOW_MODES = new Set([
7
- 'off',
8
- 'errors',
9
- 'normal',
10
- 'detailed'
11
- ]);
6
+ const MESSAGE_FLOW_MODES = new Set(['off', 'errors', 'normal', 'detailed']);
12
7
  function requireMessageFlowLogMode(value) {
13
8
  if (typeof value !== 'string' || !MESSAGE_FLOW_MODES.has(value)) {
14
9
  throw new ConfigurationException_1.ZLinkConfigurationException("messageFlow must be one of 'off', 'errors', 'normal', or 'detailed'.");
@@ -79,9 +79,9 @@ function normalizeEndpoint(endpoint) {
79
79
  const { host, port } = splitHostPort(hostPort);
80
80
  const normalizedHost = normalizeHost(host);
81
81
  const normalizedPort = normalizePort(port);
82
- return `${scheme}://${userInfo}${normalizedHost}`
83
- + (normalizedPort.length > 0 ? `:${normalizedPort}` : '')
84
- + normalizeSuffix(suffix);
82
+ return (`${scheme}://${userInfo}${normalizedHost}` +
83
+ (normalizedPort.length > 0 ? `:${normalizedPort}` : '') +
84
+ normalizeSuffix(suffix));
85
85
  }
86
86
  function findAuthorityEnd(rest) {
87
87
  if (rest.startsWith('[')) {
@@ -197,11 +197,7 @@ function buildAdvertisedEndpoint(boundEndpoint, advertiseHost, restrictToScheme)
197
197
  if (match === null)
198
198
  return normalized;
199
199
  const boundHost = unbracketHost(match[2]);
200
- const defaultHost = boundHost === '0.0.0.0'
201
- ? '127.0.0.1'
202
- : boundHost === '::'
203
- ? '::1'
204
- : undefined;
200
+ const defaultHost = boundHost === '0.0.0.0' ? '127.0.0.1' : boundHost === '::' ? '::1' : undefined;
205
201
  if (defaultHost === undefined)
206
202
  return normalized;
207
203
  const host = defaultHost.includes(':') ? `[${defaultHost}]` : defaultHost;
@@ -82,22 +82,22 @@ function normalizeApplicationJobQueue(value) {
82
82
  throw new TypeError('applicationJobQueue.profile must be a supported profile.');
83
83
  }
84
84
  const maxQueuedApplicationJobs = value?.maxQueuedApplicationJobs;
85
- if (maxQueuedApplicationJobs !== undefined
86
- && (typeof maxQueuedApplicationJobs !== 'bigint'
87
- || maxQueuedApplicationJobs < 1n
88
- || maxQueuedApplicationJobs > 2147483647n)) {
85
+ if (maxQueuedApplicationJobs !== undefined &&
86
+ (typeof maxQueuedApplicationJobs !== 'bigint' ||
87
+ maxQueuedApplicationJobs < 1n ||
88
+ maxQueuedApplicationJobs > 2147483647n)) {
89
89
  throw new TypeError('applicationJobQueue.maxQueuedApplicationJobs must be a bigint in the range 1..2147483647.');
90
90
  }
91
91
  const pauseThresholdPercent = value?.pauseThresholdPercent ?? 80;
92
92
  const resumeThresholdPercent = value?.resumeThresholdPercent ?? 60;
93
- if (!Number.isInteger(pauseThresholdPercent)
94
- || pauseThresholdPercent < 1
95
- || pauseThresholdPercent > 100) {
93
+ if (!Number.isInteger(pauseThresholdPercent) ||
94
+ pauseThresholdPercent < 1 ||
95
+ pauseThresholdPercent > 100) {
96
96
  throw new TypeError('applicationJobQueue.pauseThresholdPercent must be an integer in the range 1..100.');
97
97
  }
98
- if (!Number.isInteger(resumeThresholdPercent)
99
- || resumeThresholdPercent < 0
100
- || resumeThresholdPercent > 99) {
98
+ if (!Number.isInteger(resumeThresholdPercent) ||
99
+ resumeThresholdPercent < 0 ||
100
+ resumeThresholdPercent > 99) {
101
101
  throw new TypeError('applicationJobQueue.resumeThresholdPercent must be an integer in the range 0..99.');
102
102
  }
103
103
  if (resumeThresholdPercent >= pauseThresholdPercent) {
@@ -117,7 +117,10 @@ function normalizeCoreHwm(value) {
117
117
  if (profile !== undefined && (!Number.isInteger(profile) || profile < 0 || profile > 3)) {
118
118
  throw new TypeError('coreHwm.profile must be a Core Auto HWM profile value.');
119
119
  }
120
- for (const [name, bytes] of [['memoryLimitBytes', memoryLimitBytes], ['budgetBytes', budgetBytes]]) {
120
+ for (const [name, bytes] of [
121
+ ['memoryLimitBytes', memoryLimitBytes],
122
+ ['budgetBytes', budgetBytes]
123
+ ]) {
121
124
  if (bytes !== undefined && (typeof bytes !== 'bigint' || bytes <= 0n)) {
122
125
  throw new TypeError(`coreHwm.${name} must be a positive bigint.`);
123
126
  }
@@ -74,7 +74,8 @@ class ZLinkFrameworkOptionsBuilder {
74
74
  return this;
75
75
  }
76
76
  setSessionReplacementCallbackTimeout(timeoutMs) {
77
- this.options.sessionReplacementCallbackTimeoutMs = (0, RegistrationBuilderPolicy_1.validateSessionReplacementCallbackTimeout)(timeoutMs);
77
+ this.options.sessionReplacementCallbackTimeoutMs =
78
+ (0, RegistrationBuilderPolicy_1.validateSessionReplacementCallbackTimeout)(timeoutMs);
78
79
  return this;
79
80
  }
80
81
  configureLocations() {
@@ -239,11 +240,16 @@ class DefaultInboundDispatchOptionsBuilder {
239
240
  exports.DefaultInboundDispatchOptionsBuilder = DefaultInboundDispatchOptionsBuilder;
240
241
  function coreHwmProfileValue(value) {
241
242
  switch (value) {
242
- case Dispatch_1.ZLinkCoreHwmProfile.Compact: return zlink_1.AutoHwmProfile.Compact;
243
- case Dispatch_1.ZLinkCoreHwmProfile.LowLatency: return zlink_1.AutoHwmProfile.LowLatency;
244
- case Dispatch_1.ZLinkCoreHwmProfile.Balanced: return zlink_1.AutoHwmProfile.Balanced;
245
- case Dispatch_1.ZLinkCoreHwmProfile.Throughput: return zlink_1.AutoHwmProfile.Throughput;
246
- default: throw new TypeError('coreHwmProfile must be a supported profile.');
243
+ case Dispatch_1.ZLinkCoreHwmProfile.Compact:
244
+ return zlink_1.AutoHwmProfile.Compact;
245
+ case Dispatch_1.ZLinkCoreHwmProfile.LowLatency:
246
+ return zlink_1.AutoHwmProfile.LowLatency;
247
+ case Dispatch_1.ZLinkCoreHwmProfile.Balanced:
248
+ return zlink_1.AutoHwmProfile.Balanced;
249
+ case Dispatch_1.ZLinkCoreHwmProfile.Throughput:
250
+ return zlink_1.AutoHwmProfile.Throughput;
251
+ default:
252
+ throw new TypeError('coreHwmProfile must be a supported profile.');
247
253
  }
248
254
  }
249
255
  class DefaultLocationOptionsBuilder {
@@ -764,7 +770,10 @@ class DefaultMeshNodeBuilder {
764
770
  }
765
771
  addRouteRequestHandler(handlerType) {
766
772
  this.node.routeRequestHandlers ??= [];
767
- this.node.routeRequestHandlers.push({ packetName: handlerPacketName(handlerType), handlerType });
773
+ this.node.routeRequestHandlers.push({
774
+ packetName: handlerPacketName(handlerType),
775
+ handlerType
776
+ });
768
777
  return this;
769
778
  }
770
779
  updateBind() {
@@ -772,9 +781,7 @@ class DefaultMeshNodeBuilder {
772
781
  if (router?.port === undefined)
773
782
  return;
774
783
  const bindHost = router.bindHost ?? '127.0.0.1';
775
- const host = bindHost.includes(':') && !bindHost.startsWith('[')
776
- ? `[${bindHost}]`
777
- : bindHost;
784
+ const host = bindHost.includes(':') && !bindHost.startsWith('[') ? `[${bindHost}]` : bindHost;
778
785
  router.bind = `tcp://${host}:${router.port}`;
779
786
  }
780
787
  }
@@ -885,8 +892,8 @@ class DefaultUserSpotFactoryBuilder extends DefaultFactoryBuilder {
885
892
  relocationCoordinationMode: this.relocationCoordinationModeValue
886
893
  };
887
894
  validateUserSpotFactoryOptions(options);
888
- if (options.executionMode === ObjectRoles_1.ZLinkUserSpotExecutionMode.PerActor
889
- && relocation.kind !== 'recreate') {
895
+ if (options.executionMode === ObjectRoles_1.ZLinkUserSpotExecutionMode.PerActor &&
896
+ relocation.kind !== 'recreate') {
890
897
  throw new ConfigurationException_1.ZLinkConfigurationException('PerActor User Spots require RecreateOnRelocation.');
891
898
  }
892
899
  return { options, relocation };
@@ -1073,7 +1080,10 @@ class DefaultMeshPeerConnections {
1073
1080
  const normalizedEndpoint = (0, EndpointNotation_1.normalizeEndpoint)(endpoint);
1074
1081
  this.router.manualPeerConnections ??= [];
1075
1082
  if (!this.router.manualPeerConnections.some((peer) => peer.endpoint === normalizedEndpoint && peer.peerRid === expectedRoutingIdOrEndpoint)) {
1076
- this.router.manualPeerConnections.push({ peerRid: expectedRoutingIdOrEndpoint, endpoint: normalizedEndpoint });
1083
+ this.router.manualPeerConnections.push({
1084
+ peerRid: expectedRoutingIdOrEndpoint,
1085
+ endpoint: normalizedEndpoint
1086
+ });
1077
1087
  }
1078
1088
  }
1079
1089
  disconnect(endpoint) {
@@ -1137,23 +1147,22 @@ function requireFactoryConfigure(configure) {
1137
1147
  function validateUserSpotFactoryOptions(options) {
1138
1148
  validateStableTypeLimit(options?.stableTypeLimit);
1139
1149
  const executionMode = options?.executionMode;
1140
- if (executionMode !== undefined
1141
- && executionMode !== ObjectRoles_1.ZLinkUserSpotExecutionMode.SpotWide
1142
- && executionMode !== ObjectRoles_1.ZLinkUserSpotExecutionMode.PerActor) {
1150
+ if (executionMode !== undefined &&
1151
+ executionMode !== ObjectRoles_1.ZLinkUserSpotExecutionMode.SpotWide &&
1152
+ executionMode !== ObjectRoles_1.ZLinkUserSpotExecutionMode.PerActor) {
1143
1153
  throw new ConfigurationException_1.ZLinkConfigurationException('User Spot executionMode is invalid.');
1144
1154
  }
1145
- if (options?.relocationCoordinationMode !== ObjectRoles_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
1146
- && options?.relocationCoordinationMode !== ObjectRoles_1.ZLinkSpotRelocationCoordinationMode.ApplicationSignaled) {
1155
+ if (options?.relocationCoordinationMode !== ObjectRoles_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged &&
1156
+ options?.relocationCoordinationMode !== ObjectRoles_1.ZLinkSpotRelocationCoordinationMode.ApplicationSignaled) {
1147
1157
  throw new ConfigurationException_1.ZLinkConfigurationException('User Spot relocationCoordinationMode is invalid.');
1148
1158
  }
1149
- if (options.executionMode === ObjectRoles_1.ZLinkUserSpotExecutionMode.PerActor
1150
- && options.relocationCoordinationMode === ObjectRoles_1.ZLinkSpotRelocationCoordinationMode.ApplicationSignaled) {
1159
+ if (options.executionMode === ObjectRoles_1.ZLinkUserSpotExecutionMode.PerActor &&
1160
+ options.relocationCoordinationMode === ObjectRoles_1.ZLinkSpotRelocationCoordinationMode.ApplicationSignaled) {
1151
1161
  throw new ConfigurationException_1.ZLinkConfigurationException('ApplicationSignaled relocation coordination mode is valid only for SpotWide User Spots.');
1152
1162
  }
1153
1163
  }
1154
1164
  function validateStableTypeLimit(value) {
1155
- if (value !== undefined
1156
- && (!Number.isInteger(value) || value < 0 || value > 2_147_483_647)) {
1165
+ if (value !== undefined && (!Number.isInteger(value) || value < 0 || value > 2_147_483_647)) {
1157
1166
  throw new ConfigurationException_1.ZLinkConfigurationException('stableTypeLimit must be an integer from 0 through 2147483647.');
1158
1167
  }
1159
1168
  }
@@ -1163,9 +1172,7 @@ function rejectDuplicateObjectType(registrations, stableType, meshName) {
1163
1172
  }
1164
1173
  }
1165
1174
  function handlerPacketName(handlerType) {
1166
- return (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType)
1167
- .find((metadata) => metadata.kind === 'packet' && metadata.packetName !== undefined)
1168
- ?.packetName ?? handlerType.name;
1175
+ return ((0, Attributes_1.readZLinkDecoratorMetadata)(handlerType).find((metadata) => metadata.kind === 'packet' && metadata.packetName !== undefined)?.packetName ?? handlerType.name);
1169
1176
  }
1170
1177
  function requireRegistrationName(value, label) {
1171
1178
  if (value.trim().length === 0 || value.trim() !== value) {
@@ -42,32 +42,34 @@ function normalizeNetworkOptions(value) {
42
42
  }
43
43
  function toChannelMap(channels, network) {
44
44
  return new Map(Object.entries(channels ?? {}).map(([name, channel]) => {
45
- const server = channel.server === undefined
46
- ? undefined
47
- : normalizeListener(channel.server, network);
48
- const publisher = channel.publisher === undefined
49
- ? undefined
50
- : normalizeListener(channel.publisher, network);
45
+ const server = channel.server === undefined ? undefined : normalizeListener(channel.server, network);
46
+ const publisher = channel.publisher === undefined ? undefined : normalizeListener(channel.publisher, network);
51
47
  // In-place: channel.client/subscriber.manualConnections can be the same
52
48
  // array a live RuntimeEndpointConnections handle mutates, so this must
53
49
  // not replace the array or the containing client/subscriber object.
54
50
  normalizeEndpointList(channel.client?.manualConnections);
55
51
  normalizeEndpointList(channel.subscriber?.manualConnections);
56
- return [name, {
52
+ return [
53
+ name,
54
+ {
57
55
  ...channel,
58
56
  ...(server === undefined ? {} : { server }),
59
57
  ...(publisher === undefined ? {} : { publisher }),
60
58
  requestTimeoutMs: normalizeOptionalPositiveInteger(channel.requestTimeoutMs, `${name}.requestTimeoutMs`)
61
- }];
59
+ }
60
+ ];
62
61
  }));
63
62
  }
64
63
  function toStreamNodeMap(streamNodes, network) {
65
64
  return new Map(Object.entries(streamNodes ?? {}).map(([name, streamNode]) => {
66
65
  const normalized = normalizeListener(streamNode, network);
67
- return [name, {
66
+ return [
67
+ name,
68
+ {
68
69
  ...normalized,
69
70
  maxMessageSize: streamNode.maxMessageSize ?? InternalDefaults_1.DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE
70
- }];
71
+ }
72
+ ];
71
73
  }));
72
74
  }
73
75
  function toRouteChannelOptions(options) {
@@ -120,14 +122,14 @@ function hasSpotNode(registration) {
120
122
  return registration.spotNodes.size > 0;
121
123
  }
122
124
  function hasActorManager(registration) {
123
- const hasObjectCapability = [...registration.spotNodes.values()].some(node => node.objectRole === 'client'
124
- || node.objectRole === 'server'
125
- || (node.actorFactories instanceof Map
125
+ const hasObjectCapability = [...registration.spotNodes.values()].some((node) => node.objectRole === 'client' ||
126
+ node.objectRole === 'server' ||
127
+ (node.actorFactories instanceof Map
126
128
  ? node.actorFactories.size > 0
127
- : Object.keys(node.actorFactories ?? {}).length > 0)
128
- || Object.keys(node.actorFactoryRegistrations ?? {}).length > 0);
129
- return hasObjectCapability && (registration.locations.useInMemoryStores
130
- || registration.locations.storeInstance !== undefined);
129
+ : Object.keys(node.actorFactories ?? {}).length > 0) ||
130
+ Object.keys(node.actorFactoryRegistrations ?? {}).length > 0);
131
+ return (hasObjectCapability &&
132
+ (registration.locations.useInMemoryStores || registration.locations.storeInstance !== undefined));
131
133
  }
132
134
  function hasSpotPublisherClient(registration) {
133
135
  return registration.spotPublisherClients.size > 0;
@@ -179,9 +181,7 @@ function toSpotNodeMap(value, network) {
179
181
  }));
180
182
  }
181
183
  function normalizeSpotNodeOptions(spotNode, network) {
182
- const router = spotNode.router === undefined
183
- ? undefined
184
- : normalizeListener(spotNode.router, network);
184
+ const router = spotNode.router === undefined ? undefined : normalizeListener(spotNode.router, network);
185
185
  return {
186
186
  ...spotNode,
187
187
  router: router === undefined
@@ -204,8 +204,7 @@ function normalizeSpotNodeOptions(spotNode, network) {
204
204
  function normalizeListener(listener, network) {
205
205
  const usesConfiguredEndpoint = listener.bind !== undefined && listener.port === undefined;
206
206
  const port = listener.port ?? (usesConfiguredEndpoint ? endpointPort(listener.bind) : 0);
207
- const bindHost = listener.bindHost
208
- ?? (usesConfiguredEndpoint ? endpointHost(listener.bind) : network.bindHost);
207
+ const bindHost = listener.bindHost ?? (usesConfiguredEndpoint ? endpointHost(listener.bind) : network.bindHost);
209
208
  const bind = usesConfiguredEndpoint
210
209
  ? (0, EndpointNotation_1.normalizeEndpoint)(listener.bind)
211
210
  : tcpEndpoint(bindHost ?? network.bindHost, port);
@@ -303,10 +302,10 @@ function normalizeStreamCompression(value) {
303
302
  };
304
303
  }
305
304
  function isStreamCompressionCodec(value) {
306
- return typeof value === 'object'
307
- && value !== null
308
- && typeof value.compress === 'function'
309
- && typeof value.decompress === 'function';
305
+ return (typeof value === 'object' &&
306
+ value !== null &&
307
+ typeof value.compress === 'function' &&
308
+ typeof value.decompress === 'function');
310
309
  }
311
310
  function normalizeLocationRegistration(value) {
312
311
  return {
@@ -10,8 +10,7 @@ const SendTimeoutValidation_1 = require("./SendTimeoutValidation");
10
10
  const FanoutTopic_1 = require("./FanoutTopic");
11
11
  function validateFrameworkRegistration(registration, _options = {}) {
12
12
  validateListenerNetworkIdentity('process network', registration.network.bindHost, registration.network.advertiseHost);
13
- const actorCapableSpotNodes = [...registration.spotNodes.values()]
14
- .filter((spotNode) => toActorFactoryCount(spotNode.actorFactories) > 0);
13
+ const actorCapableSpotNodes = [...registration.spotNodes.values()].filter((spotNode) => toActorFactoryCount(spotNode.actorFactories) > 0);
15
14
  if (actorCapableSpotNodes.length > 1) {
16
15
  throw new ConfigurationException_1.ZLinkConfigurationException('Actor factory registration is ambiguous because more than one SpotNode owns actor factories.');
17
16
  }
@@ -26,10 +25,10 @@ function validateFrameworkRegistration(registration, _options = {}) {
26
25
  }
27
26
  function validateChannelTopologyNames(registration) {
28
27
  const declaredChannelNames = new Set([...registration.channels]
29
- .filter(([, channel]) => channel.client !== undefined
30
- || channel.server !== undefined
31
- || channel.publisher !== undefined
32
- || channel.subscriber !== undefined)
28
+ .filter(([, channel]) => channel.client !== undefined ||
29
+ channel.server !== undefined ||
30
+ channel.publisher !== undefined ||
31
+ channel.subscriber !== undefined)
33
32
  .map(([channelName]) => channelName));
34
33
  if (declaredChannelNames.size === 0)
35
34
  return;
@@ -52,8 +51,7 @@ function toActorFactoryCount(value) {
52
51
  return value instanceof Map ? value.size : Object.keys(value).length;
53
52
  }
54
53
  function hasLocationStores(registration) {
55
- return registration.locations.useInMemoryStores
56
- || registration.locations.storeInstance !== undefined;
54
+ return (registration.locations.useInMemoryStores || registration.locations.storeInstance !== undefined);
57
55
  }
58
56
  function validateWorkerOptions(worker) {
59
57
  if (worker === undefined) {
@@ -72,10 +70,10 @@ function validateLocationRegistration(registration) {
72
70
  throw new ConfigurationException_1.ZLinkConfigurationException('In-memory location stores cannot be combined with explicit location store registrations.');
73
71
  }
74
72
  const store = locations.storeInstance;
75
- if (store !== undefined
76
- && (typeof store.read !== 'function'
77
- || typeof store.write !== 'function'
78
- || typeof store.scan !== 'function')) {
73
+ if (store !== undefined &&
74
+ (typeof store.read !== 'function' ||
75
+ typeof store.write !== 'function' ||
76
+ typeof store.scan !== 'function')) {
79
77
  throw new ConfigurationException_1.ZLinkConfigurationException('Location Store must implement read, write, and scan.');
80
78
  }
81
79
  const options = { ...Locations_1.zlinkDefaultLocationOptions, ...locations.options };
@@ -90,8 +88,8 @@ function validateLocationRegistration(registration) {
90
88
  throw new ConfigurationException_1.ZLinkConfigurationException(`${name} must be a finite positive number.`);
91
89
  }
92
90
  }
93
- if (options.ownerLeaseRenewIntervalMs + options.ownerLeaseRenewTimeoutMs
94
- >= options.ownerLeaseTtlMs - options.ownerLeaseFencingMarginMs) {
91
+ if (options.ownerLeaseRenewIntervalMs + options.ownerLeaseRenewTimeoutMs >=
92
+ options.ownerLeaseTtlMs - options.ownerLeaseFencingMarginMs) {
95
93
  throw new ConfigurationException_1.ZLinkConfigurationException('ownerLeaseRenewIntervalMs + ownerLeaseRenewTimeoutMs must be less than ownerLeaseTtlMs - ownerLeaseFencingMarginMs.');
96
94
  }
97
95
  for (const [name, value] of Object.entries({
@@ -121,9 +119,9 @@ function validateLocationRegistration(registration) {
121
119
  throw new ConfigurationException_1.ZLinkConfigurationException(`${name} must be a finite non-negative number.`);
122
120
  }
123
121
  }
124
- if (options.routeCacheMaxAgeMs > 0
125
- && options.messageFollowDurationMs > 0
126
- && options.routeCacheMaxAgeMs > options.messageFollowDurationMs - 5000) {
122
+ if (options.routeCacheMaxAgeMs > 0 &&
123
+ options.messageFollowDurationMs > 0 &&
124
+ options.routeCacheMaxAgeMs > options.messageFollowDurationMs - 5000) {
127
125
  throw new ConfigurationException_1.ZLinkConfigurationException('routeCacheMaxAgeMs must be at least 5000 ms shorter than messageFollowDurationMs.');
128
126
  }
129
127
  }
@@ -183,11 +181,12 @@ function validateChannelCapabilities(channels, peerLocationConfigured) {
183
181
  if (channel.subscriber !== undefined && (channel.publishHandlers ?? []).length === 0) {
184
182
  throw new ConfigurationException_1.ZLinkConfigurationException(`Channel '${channelName}' subscriber must register at least one publish handler.`);
185
183
  }
186
- if (((channel.requestHandlers ?? []).length > 0 || (channel.sendHandlers ?? []).length > 0) && channel.server === undefined) {
184
+ if (((channel.requestHandlers ?? []).length > 0 || (channel.sendHandlers ?? []).length > 0) &&
185
+ channel.server === undefined) {
187
186
  throw new ConfigurationException_1.ZLinkConfigurationException(`Channel '${channelName}' request/send handlers require a server capability.`);
188
187
  }
189
- if (channel.server !== undefined
190
- && (channel.requestHandlers ?? []).length + (channel.sendHandlers ?? []).length === 0) {
188
+ if (channel.server !== undefined &&
189
+ (channel.requestHandlers ?? []).length + (channel.sendHandlers ?? []).length === 0) {
191
190
  throw new ConfigurationException_1.ZLinkConfigurationException(`Channel '${channelName}' server must register at least one request or send handler.`);
192
191
  }
193
192
  validateDuplicatePacketNames(`channel '${channelName}' request handler`, channel.requestHandlers?.map((handler) => handler.packetName));
@@ -219,9 +218,9 @@ function validateSpotNodes(registration) {
219
218
  (0, SendTimeoutValidation_1.requireValidSendTimeoutMs)(`SpotNode '${spotNodeName}' publisher sendTimeoutMs`, spotNode.publisherConfig?.sendTimeoutMs);
220
219
  validateSpotNodeFactories(spotNodeName, spotNode);
221
220
  validateSpotNodeTimers(spotNode);
222
- if (spotNode.objectRole === 'client'
223
- && ((spotNode.routeSendHandlers?.length ?? 0) > 0
224
- || (spotNode.routeRequestHandlers?.length ?? 0) > 0)) {
221
+ if (spotNode.objectRole === 'client' &&
222
+ ((spotNode.routeSendHandlers?.length ?? 0) > 0 ||
223
+ (spotNode.routeRequestHandlers?.length ?? 0) > 0)) {
225
224
  throw new ConfigurationException_1.ZLinkConfigurationException(`Object Client RouteMesh '${spotNodeName}' cannot register Node-direct handlers.`);
226
225
  }
227
226
  if (spotNode.router?.routingId !== undefined &&
@@ -234,8 +233,7 @@ function validateSpotNodes(registration) {
234
233
  function validateMeshChannels(spotNodeName, meshChannels) {
235
234
  for (const [channelName, channel] of Object.entries(meshChannels ?? {})) {
236
235
  requireName(`RouteMesh '${spotNodeName}' channel`, channelName);
237
- const handlerCount = (channel.requestHandlers?.length ?? 0)
238
- + (channel.sendHandlers?.length ?? 0);
236
+ const handlerCount = (channel.requestHandlers?.length ?? 0) + (channel.sendHandlers?.length ?? 0);
239
237
  if (channel.client === true && channel.server === true) {
240
238
  throw new ConfigurationException_1.ZLinkConfigurationException(`RouteMesh '${spotNodeName}' channel '${channelName}' must register exactly one role.`);
241
239
  }
@@ -273,7 +271,9 @@ function validateSpotNodeCapability(capabilityName, capability) {
273
271
  validateManualConnections(capabilityName, capability.manualConnections);
274
272
  validateRouterPeerConnections(capabilityName, 'manualPeerConnections' in capability ? capability.manualPeerConnections : undefined);
275
273
  requireEndpoint(capabilityName, capability.bind);
276
- if (capability.routingId !== undefined && (capability.routingId.trim().length === 0 || capability.routingId.trim() !== capability.routingId)) {
274
+ if (capability.routingId !== undefined &&
275
+ (capability.routingId.trim().length === 0 ||
276
+ capability.routingId.trim() !== capability.routingId)) {
277
277
  throw new ConfigurationException_1.ZLinkConfigurationException(`${capabilityName} routingId must not be empty or padded.`);
278
278
  }
279
279
  }
@@ -289,9 +289,7 @@ function validateListenerNetworkIdentity(capabilityName, configuredBindHost, adv
289
289
  }
290
290
  }
291
291
  function isWildcardHost(host) {
292
- const normalized = host.startsWith('[') && host.endsWith(']')
293
- ? host.slice(1, -1)
294
- : host;
292
+ const normalized = host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
295
293
  return normalized === '0.0.0.0' || normalized === '::';
296
294
  }
297
295
  function validateManualConnections(capabilityName, manualConnections) {
@@ -407,10 +405,10 @@ function isRouteTransportConfigured(routeChannel) {
407
405
  return isRoutePacketCapabilityConfigured(routeChannel);
408
406
  }
409
407
  function isRoutePacketCapabilityConfigured(routeChannel) {
410
- return hasBind(routeChannel.bind)
411
- || (0, RouteChannelInternalState_1.isRouteClientEnabled)(routeChannel)
412
- || (routeChannel.manualConnections ?? []).length > 0
413
- || routeChannelHandlerCount(routeChannel) > 0;
408
+ return (hasBind(routeChannel.bind) ||
409
+ (0, RouteChannelInternalState_1.isRouteClientEnabled)(routeChannel) ||
410
+ (routeChannel.manualConnections ?? []).length > 0 ||
411
+ routeChannelHandlerCount(routeChannel) > 0);
414
412
  }
415
413
  function isAcceptedSpotRouteChannel(registration, routeChannel) {
416
414
  if (!(0, RouteChannelInternalState_1.isRouteTransportDeclared)(routeChannel)) {
@@ -422,11 +420,11 @@ function isAcceptedSpotRouteChannel(registration, routeChannel) {
422
420
  if (routeChannel.routingId !== undefined) {
423
421
  return [...registration.spotNodes.values()].some((spotNode) => spotNode.router?.routingId === routeChannel.routingId);
424
422
  }
425
- return [...registration.spotNodes.values()].filter((spotNode) => spotNode.router !== undefined).length === 1;
423
+ return ([...registration.spotNodes.values()].filter((spotNode) => spotNode.router !== undefined)
424
+ .length === 1);
426
425
  }
427
426
  function validateRouteMeshCapability(capabilityName, routeChannel, peerLocationConfigured = false) {
428
- const clientEnabled = (0, RouteChannelInternalState_1.isRouteClientEnabled)(routeChannel)
429
- || (routeChannel.manualConnections ?? []).length > 0;
427
+ const clientEnabled = (0, RouteChannelInternalState_1.isRouteClientEnabled)(routeChannel) || (routeChannel.manualConnections ?? []).length > 0;
430
428
  if (!hasBind(routeChannel.bind) && !clientEnabled) {
431
429
  throw new ConfigurationException_1.ZLinkConfigurationException(`${capabilityName} must enable server or client capability.`);
432
430
  }
@@ -437,9 +435,9 @@ function validateRouteMeshCapability(capabilityName, routeChannel, peerLocationC
437
435
  requireRouteMeshSocketOptions(capabilityName, routeChannel);
438
436
  }
439
437
  function routeChannelHandlerCount(routeChannel) {
440
- return (routeChannel.handlers ?? []).length +
438
+ return ((routeChannel.handlers ?? []).length +
441
439
  (routeChannel.sendHandlers ?? []).length +
442
- (routeChannel.requestHandlers ?? []).length;
440
+ (routeChannel.requestHandlers ?? []).length);
443
441
  }
444
442
  function hasBind(endpoint) {
445
443
  return endpoint !== undefined && endpoint.trim().length > 0;
@@ -7,10 +7,10 @@ exports.ZLINK_MAX_SEND_TIMEOUT_MS = 2_147_483_647;
7
7
  function requireValidSendTimeoutMs(label, value) {
8
8
  if (value === undefined)
9
9
  return;
10
- if (!Number.isFinite(value)
11
- || !Number.isInteger(value)
12
- || value < 1
13
- || value > exports.ZLINK_MAX_SEND_TIMEOUT_MS) {
10
+ if (!Number.isFinite(value) ||
11
+ !Number.isInteger(value) ||
12
+ value < 1 ||
13
+ value > exports.ZLINK_MAX_SEND_TIMEOUT_MS) {
14
14
  throw new ConfigurationException_1.ZLinkConfigurationException(`${label} must be an integer between 1 and ${exports.ZLINK_MAX_SEND_TIMEOUT_MS} milliseconds.`);
15
15
  }
16
16
  }
@@ -10,15 +10,15 @@ function validateTimerRegistration(name, periodMs, options) {
10
10
  if (!Number.isFinite(periodMs) || periodMs <= 0) {
11
11
  throw new ConfigurationException_1.ZLinkConfigurationException('SPOT timer period must be greater than zero.');
12
12
  }
13
- if (options?.overrunPolicy !== undefined
14
- && !Object.values(Timers_1.ZLinkTimerOverrunPolicy).includes(options.overrunPolicy)) {
13
+ if (options?.overrunPolicy !== undefined &&
14
+ !Object.values(Timers_1.ZLinkTimerOverrunPolicy).includes(options.overrunPolicy)) {
15
15
  throw new ConfigurationException_1.ZLinkConfigurationException('SPOT timer overrun policy is not supported.');
16
16
  }
17
- if (options?.overrunPolicy === Timers_1.ZLinkTimerOverrunPolicy.CatchUpBounded
18
- && (options.maxCatchUpTicks === undefined
19
- || !Number.isInteger(options.maxCatchUpTicks)
20
- || options.maxCatchUpTicks < 1
21
- || options.maxCatchUpTicks > 2_147_483_647)) {
17
+ if (options?.overrunPolicy === Timers_1.ZLinkTimerOverrunPolicy.CatchUpBounded &&
18
+ (options.maxCatchUpTicks === undefined ||
19
+ !Number.isInteger(options.maxCatchUpTicks) ||
20
+ options.maxCatchUpTicks < 1 ||
21
+ options.maxCatchUpTicks > 2_147_483_647)) {
22
22
  throw new ConfigurationException_1.ZLinkConfigurationException('SPOT timer MaxCatchUpTicks must be an integer from 1 through 2,147,483,647.');
23
23
  }
24
24
  }
@@ -53,9 +53,9 @@ function normalizeJsonSchema(schema, parents, depth) {
53
53
  case 'bytes':
54
54
  return Object.freeze({ type: normalizedSchema.type });
55
55
  case 'enum': {
56
- if (!Array.isArray(normalizedSchema.names)
57
- || normalizedSchema.names.length === 0
58
- || normalizedSchema.names.some((name) => typeof name !== 'string' || name.length === 0)) {
56
+ if (!Array.isArray(normalizedSchema.names) ||
57
+ normalizedSchema.names.length === 0 ||
58
+ normalizedSchema.names.some((name) => typeof name !== 'string' || name.length === 0)) {
59
59
  throw new TypeError('ZLink packet enum schema requires non-empty string names.');
60
60
  }
61
61
  if (new Set(normalizedSchema.names).size !== normalizedSchema.names.length) {
@@ -64,21 +64,33 @@ function normalizeJsonSchema(schema, parents, depth) {
64
64
  return Object.freeze({ type: 'enum', names: Object.freeze([...normalizedSchema.names]) });
65
65
  }
66
66
  case 'nullable':
67
- return Object.freeze({ type: 'nullable', value: normalizeJsonSchema(normalizedSchema.value, nextParents, depth + 1) });
67
+ return Object.freeze({
68
+ type: 'nullable',
69
+ value: normalizeJsonSchema(normalizedSchema.value, nextParents, depth + 1)
70
+ });
68
71
  case 'array':
69
- return Object.freeze({ type: 'array', items: normalizeJsonSchema(normalizedSchema.items, nextParents, depth + 1) });
72
+ return Object.freeze({
73
+ type: 'array',
74
+ items: normalizeJsonSchema(normalizedSchema.items, nextParents, depth + 1)
75
+ });
70
76
  case 'record':
71
- return Object.freeze({ type: 'record', values: normalizeJsonSchema(normalizedSchema.values, nextParents, depth + 1) });
77
+ return Object.freeze({
78
+ type: 'record',
79
+ values: normalizeJsonSchema(normalizedSchema.values, nextParents, depth + 1)
80
+ });
72
81
  case 'object': {
73
82
  const runtimeProperties = normalizedSchema.properties;
74
- if (typeof runtimeProperties !== 'object' || runtimeProperties === null || Array.isArray(runtimeProperties)) {
83
+ if (typeof runtimeProperties !== 'object' ||
84
+ runtimeProperties === null ||
85
+ Array.isArray(runtimeProperties)) {
75
86
  throw new TypeError('ZLink packet object schema properties must be an object.');
76
87
  }
77
- if (!Array.isArray(normalizedSchema.required)
78
- || normalizedSchema.required.some((name) => typeof name !== 'string' || name.length === 0)) {
88
+ if (!Array.isArray(normalizedSchema.required) ||
89
+ normalizedSchema.required.some((name) => typeof name !== 'string' || name.length === 0)) {
79
90
  throw new TypeError('ZLink packet object schema required must contain property names.');
80
91
  }
81
- if (normalizedSchema.additionalProperties !== undefined && typeof normalizedSchema.additionalProperties !== 'boolean') {
92
+ if (normalizedSchema.additionalProperties !== undefined &&
93
+ typeof normalizedSchema.additionalProperties !== 'boolean') {
82
94
  throw new TypeError('ZLink packet object schema additionalProperties must be boolean.');
83
95
  }
84
96
  const properties = {};
@@ -131,7 +143,7 @@ function canonicalContract(value) {
131
143
  if (typeof value !== 'object' || value === null)
132
144
  return JSON.stringify(value);
133
145
  return `{${Object.entries(value)
134
- .sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
146
+ .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
135
147
  .map(([key, item]) => `${JSON.stringify(key)}:${canonicalContract(item)}`)
136
148
  .join(',')}}`;
137
149
  }