@zlink-systems/framework 0.10.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 (1121) hide show
  1. package/LICENSE +105 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/contracts/Actors/ZLinkActor.d.ts +7 -0
  4. package/dist/contracts/Actors/ZLinkActor.js +2 -0
  5. package/dist/contracts/Actors/ZLinkActorClient.d.ts +15 -0
  6. package/dist/contracts/Actors/ZLinkActorClient.js +2 -0
  7. package/dist/contracts/Actors/ZLinkActorContext.d.ts +14 -0
  8. package/dist/contracts/Actors/ZLinkActorContext.js +2 -0
  9. package/dist/contracts/Actors/ZLinkActorFactory.d.ts +34 -0
  10. package/dist/contracts/Actors/ZLinkActorFactory.js +2 -0
  11. package/dist/contracts/Actors/ZLinkActorManager.d.ts +34 -0
  12. package/dist/contracts/Actors/ZLinkActorManager.js +2 -0
  13. package/dist/contracts/Actors/index.d.ts +5 -0
  14. package/dist/contracts/Actors/index.js +21 -0
  15. package/dist/contracts/Channels/Calls.d.ts +28 -0
  16. package/dist/contracts/Channels/Calls.js +2 -0
  17. package/dist/contracts/Channels/IZLinkChannelClient.d.ts +5 -0
  18. package/dist/contracts/Channels/IZLinkChannelClient.js +2 -0
  19. package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +11 -0
  20. package/dist/contracts/Channels/IZLinkFanoutClient.js +2 -0
  21. package/dist/contracts/Channels/RouteCalls.d.ts +11 -0
  22. package/dist/contracts/Channels/RouteCalls.js +2 -0
  23. package/dist/contracts/Channels/index.d.ts +4 -0
  24. package/dist/contracts/Channels/index.js +20 -0
  25. package/dist/contracts/Codecs/IZLinkCodecRegistryBuilder.d.ts +14 -0
  26. package/dist/contracts/Codecs/IZLinkCodecRegistryBuilder.js +2 -0
  27. package/dist/contracts/Codecs/ZLinkMessageSerializer.d.ts +5 -0
  28. package/dist/contracts/Codecs/ZLinkMessageSerializer.js +2 -0
  29. package/dist/contracts/Codecs/index.d.ts +2 -0
  30. package/dist/contracts/Codecs/index.js +18 -0
  31. package/dist/contracts/Common/ActorRef.d.ts +7 -0
  32. package/dist/contracts/Common/ActorRef.js +2 -0
  33. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  34. package/dist/contracts/Common/CoreTypes.js +2 -0
  35. package/dist/contracts/Common/Message.d.ts +9 -0
  36. package/dist/contracts/Common/Message.js +2 -0
  37. package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +12 -0
  38. package/dist/contracts/Common/ZLinkEncodedPayload.js +41 -0
  39. package/dist/contracts/Common/ZLinkMessage.d.ts +25 -0
  40. package/dist/contracts/Common/ZLinkMessage.js +127 -0
  41. package/dist/contracts/Common/ZLinkMessageMetadata.d.ts +10 -0
  42. package/dist/contracts/Common/ZLinkMessageMetadata.js +49 -0
  43. package/dist/contracts/Common/ZLinkProviderResolver.d.ts +5 -0
  44. package/dist/contracts/Common/ZLinkProviderResolver.js +2 -0
  45. package/dist/contracts/Common/encoded-payload-storage.d.ts +3 -0
  46. package/dist/contracts/Common/encoded-payload-storage.js +18 -0
  47. package/dist/contracts/Common/index.d.ts +5 -0
  48. package/dist/contracts/Common/index.js +24 -0
  49. package/dist/contracts/Configuration/Builders.d.ts +153 -0
  50. package/dist/contracts/Configuration/Builders.js +2 -0
  51. package/dist/contracts/Configuration/CodecContentType.d.ts +2 -0
  52. package/dist/contracts/Configuration/CodecContentType.js +68 -0
  53. package/dist/contracts/Configuration/CodecSerializerSelection.d.ts +9 -0
  54. package/dist/contracts/Configuration/CodecSerializerSelection.js +15 -0
  55. package/dist/contracts/Configuration/Configs.d.ts +23 -0
  56. package/dist/contracts/Configuration/Configs.js +2 -0
  57. package/dist/contracts/Configuration/ConfigurationException.d.ts +3 -0
  58. package/dist/contracts/Configuration/ConfigurationException.js +10 -0
  59. package/dist/contracts/Configuration/Connections.d.ts +5 -0
  60. package/dist/contracts/Configuration/Connections.js +2 -0
  61. package/dist/contracts/Configuration/DiagnosticsValidation.d.ts +3 -0
  62. package/dist/contracts/Configuration/DiagnosticsValidation.js +23 -0
  63. package/dist/contracts/Configuration/EndpointNotation.d.ts +77 -0
  64. package/dist/contracts/Configuration/EndpointNotation.js +218 -0
  65. package/dist/contracts/Configuration/InternalDefaults.d.ts +7 -0
  66. package/dist/contracts/Configuration/InternalDefaults.js +47 -0
  67. package/dist/contracts/Configuration/ObjectRoles.d.ts +38 -0
  68. package/dist/contracts/Configuration/ObjectRoles.js +13 -0
  69. package/dist/contracts/Configuration/Registration.d.ts +11 -0
  70. package/dist/contracts/Configuration/Registration.js +162 -0
  71. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +14 -0
  72. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +61 -0
  73. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +61 -0
  74. package/dist/contracts/Configuration/RegistrationBuilders.js +1181 -0
  75. package/dist/contracts/Configuration/RegistrationCodecRegistry.d.ts +19 -0
  76. package/dist/contracts/Configuration/RegistrationCodecRegistry.js +79 -0
  77. package/dist/contracts/Configuration/RegistrationNormalizers.d.ts +23 -0
  78. package/dist/contracts/Configuration/RegistrationNormalizers.js +319 -0
  79. package/dist/contracts/Configuration/RegistrationTypes.d.ts +414 -0
  80. package/dist/contracts/Configuration/RegistrationTypes.js +2 -0
  81. package/dist/contracts/Configuration/RegistrationValidators.d.ts +2 -0
  82. package/dist/contracts/Configuration/RegistrationValidators.js +461 -0
  83. package/dist/contracts/Configuration/RouteChannelInternalState.d.ts +10 -0
  84. package/dist/contracts/Configuration/RouteChannelInternalState.js +39 -0
  85. package/dist/contracts/Configuration/RuntimeEndpointConnections.d.ts +9 -0
  86. package/dist/contracts/Configuration/RuntimeEndpointConnections.js +80 -0
  87. package/dist/contracts/Configuration/SendTimeoutValidation.d.ts +2 -0
  88. package/dist/contracts/Configuration/SendTimeoutValidation.js +16 -0
  89. package/dist/contracts/Configuration/TimerRegistrationValidator.d.ts +2 -0
  90. package/dist/contracts/Configuration/TimerRegistrationValidator.js +24 -0
  91. package/dist/contracts/Configuration/index.d.ts +5 -0
  92. package/dist/contracts/Configuration/index.js +18 -0
  93. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +181 -0
  94. package/dist/contracts/Dispatch/ZLinkDispatchOptions.js +89 -0
  95. package/dist/contracts/Dispatch/ZLinkFlowOrigin.d.ts +1 -0
  96. package/dist/contracts/Dispatch/ZLinkFlowOrigin.js +2 -0
  97. package/dist/contracts/Dispatch/index.d.ts +2 -0
  98. package/dist/contracts/Dispatch/index.js +18 -0
  99. package/dist/contracts/Errors/ZLinkFrameworkException.d.ts +20 -0
  100. package/dist/contracts/Errors/ZLinkFrameworkException.js +29 -0
  101. package/dist/contracts/Errors/index.d.ts +1 -0
  102. package/dist/contracts/Errors/index.js +6 -0
  103. package/dist/contracts/Eventing/Metrics.d.ts +29 -0
  104. package/dist/contracts/Eventing/Metrics.js +4 -0
  105. package/dist/contracts/Eventing/index.d.ts +1 -0
  106. package/dist/contracts/Eventing/index.js +17 -0
  107. package/dist/contracts/Handlers/Attributes.d.ts +24 -0
  108. package/dist/contracts/Handlers/Attributes.js +84 -0
  109. package/dist/contracts/Handlers/Contexts.d.ts +18 -0
  110. package/dist/contracts/Handlers/Contexts.js +2 -0
  111. package/dist/contracts/Handlers/IZLinkChannelHandlers.d.ts +43 -0
  112. package/dist/contracts/Handlers/IZLinkChannelHandlers.js +2 -0
  113. package/dist/contracts/Handlers/IZLinkHandlerFilter.d.ts +15 -0
  114. package/dist/contracts/Handlers/IZLinkHandlerFilter.js +11 -0
  115. package/dist/contracts/Handlers/JsonContract.d.ts +46 -0
  116. package/dist/contracts/Handlers/JsonContract.js +137 -0
  117. package/dist/contracts/Handlers/ZLinkHandlerFilterNext.d.ts +1 -0
  118. package/dist/contracts/Handlers/ZLinkHandlerFilterNext.js +2 -0
  119. package/dist/contracts/Handlers/index.d.ts +5 -0
  120. package/dist/contracts/Handlers/index.js +33 -0
  121. package/dist/contracts/Locations/ActorTransfer.d.ts +41 -0
  122. package/dist/contracts/Locations/ActorTransfer.js +2 -0
  123. package/dist/contracts/Locations/Authority.d.ts +296 -0
  124. package/dist/contracts/Locations/Authority.js +17 -0
  125. package/dist/contracts/Locations/Diagnostics.d.ts +42 -0
  126. package/dist/contracts/Locations/Diagnostics.js +12 -0
  127. package/dist/contracts/Locations/Keys.d.ts +86 -0
  128. package/dist/contracts/Locations/Keys.js +2 -0
  129. package/dist/contracts/Locations/Models.d.ts +7 -0
  130. package/dist/contracts/Locations/Models.js +23 -0
  131. package/dist/contracts/Locations/Options.d.ts +23 -0
  132. package/dist/contracts/Locations/Options.js +20 -0
  133. package/dist/contracts/Locations/Readiness.d.ts +5 -0
  134. package/dist/contracts/Locations/Readiness.js +2 -0
  135. package/dist/contracts/Locations/RelocationStore.d.ts +38 -0
  136. package/dist/contracts/Locations/RelocationStore.js +2 -0
  137. package/dist/contracts/Locations/Resolvers.d.ts +4 -0
  138. package/dist/contracts/Locations/Resolvers.js +2 -0
  139. package/dist/contracts/Locations/Rows.d.ts +152 -0
  140. package/dist/contracts/Locations/Rows.js +19 -0
  141. package/dist/contracts/Locations/RuntimeQuery.d.ts +25 -0
  142. package/dist/contracts/Locations/RuntimeQuery.js +2 -0
  143. package/dist/contracts/Locations/Stores.d.ts +88 -0
  144. package/dist/contracts/Locations/Stores.js +2 -0
  145. package/dist/contracts/Locations/Values.d.ts +27 -0
  146. package/dist/contracts/Locations/Values.js +36 -0
  147. package/dist/contracts/Locations/Watch.d.ts +14 -0
  148. package/dist/contracts/Locations/Watch.js +12 -0
  149. package/dist/contracts/Locations/Writes.d.ts +48 -0
  150. package/dist/contracts/Locations/Writes.js +15 -0
  151. package/dist/contracts/Locations/index.d.ts +12 -0
  152. package/dist/contracts/Locations/index.js +30 -0
  153. package/dist/contracts/RouteMesh/Contracts.d.ts +102 -0
  154. package/dist/contracts/RouteMesh/Contracts.js +39 -0
  155. package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +165 -0
  156. package/dist/contracts/RouteMesh/RuntimeTopology.js +38 -0
  157. package/dist/contracts/RouteMesh/index.d.ts +2 -0
  158. package/dist/contracts/RouteMesh/index.js +18 -0
  159. package/dist/contracts/Spots/Builders.d.ts +10 -0
  160. package/dist/contracts/Spots/Builders.js +2 -0
  161. package/dist/contracts/Spots/Contracts.d.ts +110 -0
  162. package/dist/contracts/Spots/Contracts.js +9 -0
  163. package/dist/contracts/Spots/SpotKind.d.ts +8 -0
  164. package/dist/contracts/Spots/SpotKind.js +28 -0
  165. package/dist/contracts/Spots/ZLinkSpot.d.ts +62 -0
  166. package/dist/contracts/Spots/ZLinkSpot.js +15 -0
  167. package/dist/contracts/Spots/index.d.ts +3 -0
  168. package/dist/contracts/Spots/index.js +19 -0
  169. package/dist/contracts/Streams/BoundSessionContracts.d.ts +8 -0
  170. package/dist/contracts/Streams/BoundSessionContracts.js +2 -0
  171. package/dist/contracts/Streams/IZLinkSession.d.ts +44 -0
  172. package/dist/contracts/Streams/IZLinkSession.js +2 -0
  173. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +15 -0
  174. package/dist/contracts/Streams/IZLinkSessionActor.js +2 -0
  175. package/dist/contracts/Streams/IZLinkSessionPacketHandler.d.ts +9 -0
  176. package/dist/contracts/Streams/IZLinkSessionPacketHandler.js +2 -0
  177. package/dist/contracts/Streams/IZLinkStream.d.ts +9 -0
  178. package/dist/contracts/Streams/IZLinkStream.js +2 -0
  179. package/dist/contracts/Streams/ZLinkMessageMetadata.d.ts +1 -0
  180. package/dist/contracts/Streams/ZLinkMessageMetadata.js +2 -0
  181. package/dist/contracts/Streams/ZLinkStreamCompression.d.ts +8 -0
  182. package/dist/contracts/Streams/ZLinkStreamCompression.js +2 -0
  183. package/dist/contracts/Streams/ZLinkStreamError.d.ts +8 -0
  184. package/dist/contracts/Streams/ZLinkStreamError.js +8 -0
  185. package/dist/contracts/Streams/index.d.ts +8 -0
  186. package/dist/contracts/Streams/index.js +24 -0
  187. package/dist/contracts/Timers/IZLinkTimer.d.ts +5 -0
  188. package/dist/contracts/Timers/IZLinkTimer.js +2 -0
  189. package/dist/contracts/Timers/ZLinkTimerOptions.d.ts +10 -0
  190. package/dist/contracts/Timers/ZLinkTimerOptions.js +9 -0
  191. package/dist/contracts/Timers/ZLinkTimerTick.d.ts +12 -0
  192. package/dist/contracts/Timers/ZLinkTimerTick.js +2 -0
  193. package/dist/contracts/Timers/index.d.ts +3 -0
  194. package/dist/contracts/Timers/index.js +19 -0
  195. package/dist/contracts/index.d.ts +25 -0
  196. package/dist/contracts/index.js +45 -0
  197. package/dist/index.d.ts +1 -0
  198. package/dist/index.js +17 -0
  199. package/dist/internal.d.ts +26 -0
  200. package/dist/internal.js +48 -0
  201. package/dist/location-store-integration.d.ts +5 -0
  202. package/dist/location-store-integration.js +31 -0
  203. package/dist/nest-integration.d.ts +49 -0
  204. package/dist/nest-integration.js +143 -0
  205. package/dist/runtime/abort.d.ts +13 -0
  206. package/dist/runtime/abort.js +71 -0
  207. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +33 -0
  208. package/dist/runtime/actors/actor-authority-payload-codec.js +366 -0
  209. package/dist/runtime/actors/actor-authority-publication.d.ts +28 -0
  210. package/dist/runtime/actors/actor-authority-publication.js +207 -0
  211. package/dist/runtime/actors/actor-client.d.ts +36 -0
  212. package/dist/runtime/actors/actor-client.js +612 -0
  213. package/dist/runtime/actors/actor-context.d.ts +26 -0
  214. package/dist/runtime/actors/actor-context.js +433 -0
  215. package/dist/runtime/actors/actor-creation.d.ts +19 -0
  216. package/dist/runtime/actors/actor-creation.js +158 -0
  217. package/dist/runtime/actors/actor-execution-context.d.ts +6 -0
  218. package/dist/runtime/actors/actor-execution-context.js +27 -0
  219. package/dist/runtime/actors/actor-handoff.d.ts +191 -0
  220. package/dist/runtime/actors/actor-handoff.js +1252 -0
  221. package/dist/runtime/actors/actor-join-deferred-scope.d.ts +11 -0
  222. package/dist/runtime/actors/actor-join-deferred-scope.js +144 -0
  223. package/dist/runtime/actors/actor-join-relocation.d.ts +38 -0
  224. package/dist/runtime/actors/actor-join-relocation.js +2 -0
  225. package/dist/runtime/actors/actor-lifecycle-snapshot.d.ts +21 -0
  226. package/dist/runtime/actors/actor-lifecycle-snapshot.js +58 -0
  227. package/dist/runtime/actors/actor-local-native-join.d.ts +27 -0
  228. package/dist/runtime/actors/actor-local-native-join.js +409 -0
  229. package/dist/runtime/actors/actor-mailbox.d.ts +10 -0
  230. package/dist/runtime/actors/actor-mailbox.js +53 -0
  231. package/dist/runtime/actors/actor-message-follow-context.d.ts +46 -0
  232. package/dist/runtime/actors/actor-message-follow-context.js +257 -0
  233. package/dist/runtime/actors/actor-native-lookup.d.ts +4 -0
  234. package/dist/runtime/actors/actor-native-lookup.js +30 -0
  235. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +73 -0
  236. package/dist/runtime/actors/actor-packet-relay-wire.js +144 -0
  237. package/dist/runtime/actors/actor-remote-joiner.d.ts +37 -0
  238. package/dist/runtime/actors/actor-remote-joiner.js +122 -0
  239. package/dist/runtime/actors/actor-remote-wire.d.ts +73 -0
  240. package/dist/runtime/actors/actor-remote-wire.js +84 -0
  241. package/dist/runtime/actors/actor-retry-delay.d.ts +5 -0
  242. package/dist/runtime/actors/actor-retry-delay.js +40 -0
  243. package/dist/runtime/actors/actor-routed-join-transport.d.ts +33 -0
  244. package/dist/runtime/actors/actor-routed-join-transport.js +2 -0
  245. package/dist/runtime/actors/actor-routed-json-request.d.ts +11 -0
  246. package/dist/runtime/actors/actor-routed-json-request.js +39 -0
  247. package/dist/runtime/actors/actor-runtime-contracts.d.ts +63 -0
  248. package/dist/runtime/actors/actor-runtime-contracts.js +2 -0
  249. package/dist/runtime/actors/actor-runtime-state.d.ts +152 -0
  250. package/dist/runtime/actors/actor-runtime-state.js +545 -0
  251. package/dist/runtime/actors/actor-source-transfer.d.ts +27 -0
  252. package/dist/runtime/actors/actor-source-transfer.js +2 -0
  253. package/dist/runtime/actors/actor-transfer-registry.d.ts +18 -0
  254. package/dist/runtime/actors/actor-transfer-registry.js +71 -0
  255. package/dist/runtime/actors/actor-transport-delivery-gate.d.ts +6 -0
  256. package/dist/runtime/actors/actor-transport-delivery-gate.js +4 -0
  257. package/dist/runtime/actors/bound-session-wire.d.ts +81 -0
  258. package/dist/runtime/actors/bound-session-wire.js +184 -0
  259. package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +47 -0
  260. package/dist/runtime/actors/deferred-join-accepted-journal.js +962 -0
  261. package/dist/runtime/actors/index.d.ts +79 -0
  262. package/dist/runtime/actors/index.js +639 -0
  263. package/dist/runtime/actors/post-commit-actor-binder.d.ts +18 -0
  264. package/dist/runtime/actors/post-commit-actor-binder.js +68 -0
  265. package/dist/runtime/actors/post-commit-actor-location.d.ts +19 -0
  266. package/dist/runtime/actors/post-commit-actor-location.js +72 -0
  267. package/dist/runtime/actors/spot-actor-dispatch.d.ts +59 -0
  268. package/dist/runtime/actors/spot-actor-dispatch.js +179 -0
  269. package/dist/runtime/actors/transferred-actor-rollback.d.ts +16 -0
  270. package/dist/runtime/actors/transferred-actor-rollback.js +91 -0
  271. package/dist/runtime/admission.d.ts +20 -0
  272. package/dist/runtime/admission.js +166 -0
  273. package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +57 -0
  274. package/dist/runtime/application-jobs/application-ingress-record-owner.js +185 -0
  275. package/dist/runtime/application-jobs/application-job-queue-handler-start-gate.d.ts +8 -0
  276. package/dist/runtime/application-jobs/application-job-queue-handler-start-gate.js +8 -0
  277. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +17 -0
  278. package/dist/runtime/application-jobs/application-job-queue-scope.js +57 -0
  279. package/dist/runtime/application-jobs/contracts.d.ts +19 -0
  280. package/dist/runtime/application-jobs/contracts.js +2 -0
  281. package/dist/runtime/application-jobs/receive-flow-controller.d.ts +32 -0
  282. package/dist/runtime/application-jobs/receive-flow-controller.js +165 -0
  283. package/dist/runtime/backend/contracts/index.d.ts +487 -0
  284. package/dist/runtime/backend/contracts/index.js +29 -0
  285. package/dist/runtime/backend/index.d.ts +9 -0
  286. package/dist/runtime/backend/index.js +25 -0
  287. package/dist/runtime/backend/mesh-actor-session-node-adapter.d.ts +3 -0
  288. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +51 -0
  289. package/dist/runtime/backend/mesh-completion-table.d.ts +34 -0
  290. package/dist/runtime/backend/mesh-completion-table.js +124 -0
  291. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +48 -0
  292. package/dist/runtime/backend/mesh-dispatch-pump.js +322 -0
  293. package/dist/runtime/backend/mesh-record-dispatcher.d.ts +19 -0
  294. package/dist/runtime/backend/mesh-record-dispatcher.js +53 -0
  295. package/dist/runtime/backend/node/index.d.ts +4 -0
  296. package/dist/runtime/backend/node/index.js +22 -0
  297. package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +12 -0
  298. package/dist/runtime/backend/node/node-backend-adapter-factory.js +161 -0
  299. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +52 -0
  300. package/dist/runtime/backend/node/node-backend-adapter-support.js +203 -0
  301. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +13 -0
  302. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +52 -0
  303. package/dist/runtime/backend/node/node-mesh-backend-adapter.d.ts +11 -0
  304. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +23 -0
  305. package/dist/runtime/backend/node/node-monitor-backend-adapter.d.ts +6 -0
  306. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +38 -0
  307. package/dist/runtime/backend/node/node-raw-binding-port.d.ts +8 -0
  308. package/dist/runtime/backend/node/node-raw-binding-port.js +411 -0
  309. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +266 -0
  310. package/dist/runtime/backend/node/node-raw-mesh-backend.js +1707 -0
  311. package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +9 -0
  312. package/dist/runtime/backend/node/node-socket-backend-adapter.js +286 -0
  313. package/dist/runtime/backend/node-backend-adapter.d.ts +9 -0
  314. package/dist/runtime/backend/node-backend-adapter.js +12 -0
  315. package/dist/runtime/backend/raw-binding-port.d.ts +58 -0
  316. package/dist/runtime/backend/raw-binding-port.js +2 -0
  317. package/dist/runtime/backend/runtime-message.d.ts +14 -0
  318. package/dist/runtime/backend/runtime-message.js +44 -0
  319. package/dist/runtime/backend/runtime-values.d.ts +78 -0
  320. package/dist/runtime/backend/runtime-values.js +66 -0
  321. package/dist/runtime/channels/channel-autoconnect.d.ts +14 -0
  322. package/dist/runtime/channels/channel-autoconnect.js +23 -0
  323. package/dist/runtime/channels/channel-clients.d.ts +50 -0
  324. package/dist/runtime/channels/channel-clients.js +329 -0
  325. package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +76 -0
  326. package/dist/runtime/channels/channel-dispatch-pipeline.js +237 -0
  327. package/dist/runtime/channels/channel-dispatch-services.d.ts +52 -0
  328. package/dist/runtime/channels/channel-dispatch-services.js +132 -0
  329. package/dist/runtime/channels/channel-dispatchers.d.ts +125 -0
  330. package/dist/runtime/channels/channel-dispatchers.js +575 -0
  331. package/dist/runtime/channels/channel-envelope-inspection.d.ts +25 -0
  332. package/dist/runtime/channels/channel-envelope-inspection.js +96 -0
  333. package/dist/runtime/channels/channel-envelope.d.ts +73 -0
  334. package/dist/runtime/channels/channel-envelope.js +546 -0
  335. package/dist/runtime/channels/channel-framework-packets.d.ts +2 -0
  336. package/dist/runtime/channels/channel-framework-packets.js +6 -0
  337. package/dist/runtime/channels/channel-multipart.d.ts +16 -0
  338. package/dist/runtime/channels/channel-multipart.js +31 -0
  339. package/dist/runtime/channels/channel-outbound-operations.d.ts +33 -0
  340. package/dist/runtime/channels/channel-outbound-operations.js +343 -0
  341. package/dist/runtime/channels/channel-receive-loops.d.ts +151 -0
  342. package/dist/runtime/channels/channel-receive-loops.js +728 -0
  343. package/dist/runtime/channels/channel-receive-task-tracker.d.ts +14 -0
  344. package/dist/runtime/channels/channel-receive-task-tracker.js +37 -0
  345. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +77 -0
  346. package/dist/runtime/channels/channel-runtime-lifecycle.js +630 -0
  347. package/dist/runtime/channels/channel-runtime-manager.d.ts +84 -0
  348. package/dist/runtime/channels/channel-runtime-manager.js +193 -0
  349. package/dist/runtime/channels/channel-socket-options.d.ts +18 -0
  350. package/dist/runtime/channels/channel-socket-options.js +119 -0
  351. package/dist/runtime/channels/channel-socket-registry.d.ts +157 -0
  352. package/dist/runtime/channels/channel-socket-registry.js +1428 -0
  353. package/dist/runtime/channels/channel-transports.d.ts +126 -0
  354. package/dist/runtime/channels/channel-transports.js +448 -0
  355. package/dist/runtime/channels/client-server-location-runtime.d.ts +41 -0
  356. package/dist/runtime/channels/client-server-location-runtime.js +465 -0
  357. package/dist/runtime/channels/client-server-service-wire.d.ts +48 -0
  358. package/dist/runtime/channels/client-server-service-wire.js +306 -0
  359. package/dist/runtime/channels/dispatch-error-reporter.d.ts +22 -0
  360. package/dist/runtime/channels/dispatch-error-reporter.js +133 -0
  361. package/dist/runtime/channels/fanout-location-runtime.d.ts +38 -0
  362. package/dist/runtime/channels/fanout-location-runtime.js +356 -0
  363. package/dist/runtime/channels/fanout-service-wire.d.ts +12 -0
  364. package/dist/runtime/channels/fanout-service-wire.js +29 -0
  365. package/dist/runtime/channels/handler-filter-scope.d.ts +8 -0
  366. package/dist/runtime/channels/handler-filter-scope.js +11 -0
  367. package/dist/runtime/channels/index.d.ts +9 -0
  368. package/dist/runtime/channels/index.js +30 -0
  369. package/dist/runtime/channels/local-spot-route-transport.d.ts +9 -0
  370. package/dist/runtime/channels/local-spot-route-transport.js +40 -0
  371. package/dist/runtime/channels/route-disconnected-error.d.ts +3 -0
  372. package/dist/runtime/channels/route-disconnected-error.js +10 -0
  373. package/dist/runtime/channels/route-member-snapshot.d.ts +10 -0
  374. package/dist/runtime/channels/route-member-snapshot.js +55 -0
  375. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +12 -0
  376. package/dist/runtime/channels/router-socket-spot-route-transport.js +43 -0
  377. package/dist/runtime/channels/source-spot-router.d.ts +10 -0
  378. package/dist/runtime/channels/source-spot-router.js +46 -0
  379. package/dist/runtime/channels/spot-direct-envelope.d.ts +5 -0
  380. package/dist/runtime/channels/spot-direct-envelope.js +29 -0
  381. package/dist/runtime/channels/spot-node-route-transport.d.ts +13 -0
  382. package/dist/runtime/channels/spot-node-route-transport.js +60 -0
  383. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +14 -0
  384. package/dist/runtime/channels/spot-route-bridge-transport.js +58 -0
  385. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +50 -0
  386. package/dist/runtime/channels/spot-route-dispatch-strategy.js +128 -0
  387. package/dist/runtime/channels/spot-route-target-resolver.d.ts +16 -0
  388. package/dist/runtime/channels/spot-route-target-resolver.js +92 -0
  389. package/dist/runtime/codecs/index.d.ts +14 -0
  390. package/dist/runtime/codecs/index.js +44 -0
  391. package/dist/runtime/configuration/index.d.ts +1 -0
  392. package/dist/runtime/configuration/index.js +17 -0
  393. package/dist/runtime/diagnostics/dispatch-error-port.d.ts +8 -0
  394. package/dist/runtime/diagnostics/dispatch-error-port.js +2 -0
  395. package/dist/runtime/diagnostics/flow-context.d.ts +21 -0
  396. package/dist/runtime/diagnostics/flow-context.js +68 -0
  397. package/dist/runtime/diagnostics/index.d.ts +82 -0
  398. package/dist/runtime/diagnostics/index.js +335 -0
  399. package/dist/runtime/diagnostics/internal-event-contracts.d.ts +139 -0
  400. package/dist/runtime/diagnostics/internal-event-contracts.js +68 -0
  401. package/dist/runtime/diagnostics/message-flow.d.ts +55 -0
  402. package/dist/runtime/diagnostics/message-flow.js +420 -0
  403. package/dist/runtime/diagnostics/runtime-metrics.d.ts +123 -0
  404. package/dist/runtime/diagnostics/runtime-metrics.js +454 -0
  405. package/dist/runtime/diagnostics/runtime-observation-queue.d.ts +58 -0
  406. package/dist/runtime/diagnostics/runtime-observation-queue.js +324 -0
  407. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +33 -0
  408. package/dist/runtime/diagnostics/topology-runtime-projections.js +255 -0
  409. package/dist/runtime/execution/index.d.ts +114 -0
  410. package/dist/runtime/execution/index.js +363 -0
  411. package/dist/runtime/execution/serial-execution-queue.d.ts +94 -0
  412. package/dist/runtime/execution/serial-execution-queue.js +411 -0
  413. package/dist/runtime/execution/serial-work-size.d.ts +4 -0
  414. package/dist/runtime/execution/serial-work-size.js +28 -0
  415. package/dist/runtime/execution/state-lane.d.ts +28 -0
  416. package/dist/runtime/execution/state-lane.js +105 -0
  417. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +72 -0
  418. package/dist/runtime/foundation/actor-join-recovery-codec.js +333 -0
  419. package/dist/runtime/foundation/event-loop-resources.d.ts +37 -0
  420. package/dist/runtime/foundation/event-loop-resources.js +163 -0
  421. package/dist/runtime/foundation/index.d.ts +18 -0
  422. package/dist/runtime/foundation/index.js +34 -0
  423. package/dist/runtime/foundation/message-follow-suppression-registry.d.ts +38 -0
  424. package/dist/runtime/foundation/message-follow-suppression-registry.js +89 -0
  425. package/dist/runtime/foundation/operation-identity.d.ts +12 -0
  426. package/dist/runtime/foundation/operation-identity.js +33 -0
  427. package/dist/runtime/foundation/operation-registry.d.ts +42 -0
  428. package/dist/runtime/foundation/operation-registry.js +146 -0
  429. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +143 -0
  430. package/dist/runtime/foundation/raw-service-mesh-runtime.js +1349 -0
  431. package/dist/runtime/foundation/route-mesh-connection-policy.d.ts +3 -0
  432. package/dist/runtime/foundation/route-mesh-connection-policy.js +13 -0
  433. package/dist/runtime/foundation/runtime-state-projections.d.ts +13 -0
  434. package/dist/runtime/foundation/runtime-state-projections.js +44 -0
  435. package/dist/runtime/foundation/service-authority-payload-codec.d.ts +56 -0
  436. package/dist/runtime/foundation/service-authority-payload-codec.js +411 -0
  437. package/dist/runtime/foundation/service-discovery-registry.d.ts +42 -0
  438. package/dist/runtime/foundation/service-discovery-registry.js +175 -0
  439. package/dist/runtime/foundation/service-instance-activation-recovery-codec.d.ts +19 -0
  440. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +287 -0
  441. package/dist/runtime/foundation/service-liveness-registry.d.ts +28 -0
  442. package/dist/runtime/foundation/service-liveness-registry.js +109 -0
  443. package/dist/runtime/foundation/service-mailbox.d.ts +60 -0
  444. package/dist/runtime/foundation/service-mailbox.js +283 -0
  445. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +45 -0
  446. package/dist/runtime/foundation/service-maintenance-runtime.js +198 -0
  447. package/dist/runtime/foundation/service-metadata-codec.d.ts +2 -0
  448. package/dist/runtime/foundation/service-metadata-codec.js +69 -0
  449. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +35 -0
  450. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +139 -0
  451. package/dist/runtime/foundation/service-relocation-coordinator.d.ts +19 -0
  452. package/dist/runtime/foundation/service-relocation-coordinator.js +16 -0
  453. package/dist/runtime/foundation/service-relocation-object-owner.d.ts +71 -0
  454. package/dist/runtime/foundation/service-relocation-object-owner.js +242 -0
  455. package/dist/runtime/foundation/service-relocation-runtime.d.ts +143 -0
  456. package/dist/runtime/foundation/service-relocation-runtime.js +1080 -0
  457. package/dist/runtime/foundation/service-runtime-contracts.d.ts +332 -0
  458. package/dist/runtime/foundation/service-runtime-contracts.js +66 -0
  459. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +23 -0
  460. package/dist/runtime/foundation/service-session-binding-ingress-port.js +11 -0
  461. package/dist/runtime/foundation/service-stateful-registry.d.ts +142 -0
  462. package/dist/runtime/foundation/service-stateful-registry.js +465 -0
  463. package/dist/runtime/foundation/service-stateful-runtime.d.ts +393 -0
  464. package/dist/runtime/foundation/service-stateful-runtime.js +3898 -0
  465. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +597 -0
  466. package/dist/runtime/foundation/service-stateful-wire-codec.js +2006 -0
  467. package/dist/runtime/foundation/service-topology-registry.d.ts +68 -0
  468. package/dist/runtime/foundation/service-topology-registry.js +393 -0
  469. package/dist/runtime/foundation/service-weighted-selection.d.ts +14 -0
  470. package/dist/runtime/foundation/service-weighted-selection.js +128 -0
  471. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +10 -0
  472. package/dist/runtime/foundation/service-wire-binary-primitives.js +53 -0
  473. package/dist/runtime/foundation/service-wire-codec.d.ts +22 -0
  474. package/dist/runtime/foundation/service-wire-codec.js +67 -0
  475. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +110 -0
  476. package/dist/runtime/foundation/service-wire-constants.generated.js +132 -0
  477. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +102 -0
  478. package/dist/runtime/foundation/service-wire-m6a-codec.js +568 -0
  479. package/dist/runtime/framework-errors-internal.d.ts +95 -0
  480. package/dist/runtime/framework-errors-internal.js +301 -0
  481. package/dist/runtime/handlers/handler-instance-scope.d.ts +11 -0
  482. package/dist/runtime/handlers/handler-instance-scope.js +284 -0
  483. package/dist/runtime/handlers/index.d.ts +13 -0
  484. package/dist/runtime/handlers/index.js +57 -0
  485. package/dist/runtime/host/actor-packet-relay.d.ts +60 -0
  486. package/dist/runtime/host/actor-packet-relay.js +664 -0
  487. package/dist/runtime/host/actor-placement-coordinator.d.ts +32 -0
  488. package/dist/runtime/host/actor-placement-coordinator.js +386 -0
  489. package/dist/runtime/host/actor-runtime-options-factory.d.ts +65 -0
  490. package/dist/runtime/host/actor-runtime-options-factory.js +160 -0
  491. package/dist/runtime/host/actor-transfer-authority-runtime.d.ts +26 -0
  492. package/dist/runtime/host/actor-transfer-authority-runtime.js +138 -0
  493. package/dist/runtime/host/actor-transfer-runtime.d.ts +149 -0
  494. package/dist/runtime/host/actor-transfer-runtime.js +1245 -0
  495. package/dist/runtime/host/application-job-queue.d.ts +99 -0
  496. package/dist/runtime/host/application-job-queue.js +409 -0
  497. package/dist/runtime/host/bound-session-relay.d.ts +41 -0
  498. package/dist/runtime/host/bound-session-relay.js +52 -0
  499. package/dist/runtime/host/bounded-replay-map.d.ts +12 -0
  500. package/dist/runtime/host/bounded-replay-map.js +42 -0
  501. package/dist/runtime/host/channel-runtime-options-factory.d.ts +22 -0
  502. package/dist/runtime/host/channel-runtime-options-factory.js +76 -0
  503. package/dist/runtime/host/entry-actor-runtime.d.ts +30 -0
  504. package/dist/runtime/host/entry-actor-runtime.js +80 -0
  505. package/dist/runtime/host/host-capacity-status.d.ts +11 -0
  506. package/dist/runtime/host/host-capacity-status.js +85 -0
  507. package/dist/runtime/host/index.d.ts +188 -0
  508. package/dist/runtime/host/index.js +2552 -0
  509. package/dist/runtime/host/instance-activation-authority.d.ts +33 -0
  510. package/dist/runtime/host/instance-activation-authority.js +496 -0
  511. package/dist/runtime/host/location-runtime-owner.d.ts +48 -0
  512. package/dist/runtime/host/location-runtime-owner.js +227 -0
  513. package/dist/runtime/host/mesh-router-resolver.d.ts +16 -0
  514. package/dist/runtime/host/mesh-router-resolver.js +108 -0
  515. package/dist/runtime/host/relocation-direct-transfer.d.ts +81 -0
  516. package/dist/runtime/host/relocation-direct-transfer.js +240 -0
  517. package/dist/runtime/host/relocation-integrity-fault-gate.d.ts +6 -0
  518. package/dist/runtime/host/relocation-integrity-fault-gate.js +5 -0
  519. package/dist/runtime/host/relocation-state-adapter.d.ts +8 -0
  520. package/dist/runtime/host/relocation-state-adapter.js +13 -0
  521. package/dist/runtime/host/remote-actor-join-receiver.d.ts +47 -0
  522. package/dist/runtime/host/remote-actor-join-receiver.js +161 -0
  523. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +29 -0
  524. package/dist/runtime/host/remote-actor-packet-target-store.js +185 -0
  525. package/dist/runtime/host/remote-bound-session-relay.d.ts +58 -0
  526. package/dist/runtime/host/remote-bound-session-relay.js +540 -0
  527. package/dist/runtime/host/route-mesh-runtime-options.d.ts +9 -0
  528. package/dist/runtime/host/route-mesh-runtime-options.js +41 -0
  529. package/dist/runtime/host/route-mesh-runtime.d.ts +76 -0
  530. package/dist/runtime/host/route-mesh-runtime.js +746 -0
  531. package/dist/runtime/host/runtime-shutdown.d.ts +33 -0
  532. package/dist/runtime/host/runtime-shutdown.js +68 -0
  533. package/dist/runtime/host/service-relocation-control.d.ts +7 -0
  534. package/dist/runtime/host/service-relocation-control.js +24 -0
  535. package/dist/runtime/host/service-relocation-host-runtime.d.ts +241 -0
  536. package/dist/runtime/host/service-relocation-host-runtime.js +4113 -0
  537. package/dist/runtime/host/spot-address-transport.d.ts +47 -0
  538. package/dist/runtime/host/spot-address-transport.js +601 -0
  539. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +38 -0
  540. package/dist/runtime/host/spot-node-runtime-options-factory.js +36 -0
  541. package/dist/runtime/host/spot-runtime-options-factory.d.ts +48 -0
  542. package/dist/runtime/host/spot-runtime-options-factory.js +169 -0
  543. package/dist/runtime/host/stateful-authority-route-runtime.d.ts +34 -0
  544. package/dist/runtime/host/stateful-authority-route-runtime.js +440 -0
  545. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +69 -0
  546. package/dist/runtime/host/user-spot-creation-coordinator.js +759 -0
  547. package/dist/runtime/locations/actor-location-claims.d.ts +43 -0
  548. package/dist/runtime/locations/actor-location-claims.js +319 -0
  549. package/dist/runtime/locations/actor-session-route-claims.d.ts +10 -0
  550. package/dist/runtime/locations/actor-session-route-claims.js +51 -0
  551. package/dist/runtime/locations/aggregate-inventory-store.d.ts +18 -0
  552. package/dist/runtime/locations/aggregate-inventory-store.js +399 -0
  553. package/dist/runtime/locations/authority-key-codec.d.ts +6 -0
  554. package/dist/runtime/locations/authority-key-codec.js +78 -0
  555. package/dist/runtime/locations/auto-connect-loop.d.ts +37 -0
  556. package/dist/runtime/locations/auto-connect-loop.js +112 -0
  557. package/dist/runtime/locations/auto-connect-planner.d.ts +9 -0
  558. package/dist/runtime/locations/auto-connect-planner.js +137 -0
  559. package/dist/runtime/locations/auto-connect-reconciler.d.ts +57 -0
  560. package/dist/runtime/locations/auto-connect-reconciler.js +358 -0
  561. package/dist/runtime/locations/auto-connect-types.d.ts +42 -0
  562. package/dist/runtime/locations/auto-connect-types.js +2 -0
  563. package/dist/runtime/locations/auto-connect.d.ts +4 -0
  564. package/dist/runtime/locations/auto-connect.js +20 -0
  565. package/dist/runtime/locations/canonical-codec.d.ts +7 -0
  566. package/dist/runtime/locations/canonical-codec.js +48 -0
  567. package/dist/runtime/locations/domain-store-contract.d.ts +34 -0
  568. package/dist/runtime/locations/domain-store-contract.js +2 -0
  569. package/dist/runtime/locations/in-memory-authority-store.d.ts +51 -0
  570. package/dist/runtime/locations/in-memory-authority-store.js +895 -0
  571. package/dist/runtime/locations/in-memory-location-store.d.ts +78 -0
  572. package/dist/runtime/locations/in-memory-location-store.js +1008 -0
  573. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +19 -0
  574. package/dist/runtime/locations/in-memory-provider-location-store.js +183 -0
  575. package/dist/runtime/locations/index.d.ts +11 -0
  576. package/dist/runtime/locations/index.js +27 -0
  577. package/dist/runtime/locations/internal-location-contracts.d.ts +7 -0
  578. package/dist/runtime/locations/internal-location-contracts.js +21 -0
  579. package/dist/runtime/locations/internal-store-contracts.d.ts +35 -0
  580. package/dist/runtime/locations/internal-store-contracts.js +2 -0
  581. package/dist/runtime/locations/key-codec.d.ts +13 -0
  582. package/dist/runtime/locations/key-codec.js +41 -0
  583. package/dist/runtime/locations/lease-tracker.d.ts +36 -0
  584. package/dist/runtime/locations/lease-tracker.js +155 -0
  585. package/dist/runtime/locations/lifecycle-runtime.d.ts +19 -0
  586. package/dist/runtime/locations/lifecycle-runtime.js +2 -0
  587. package/dist/runtime/locations/lifecycle.d.ts +40 -0
  588. package/dist/runtime/locations/lifecycle.js +120 -0
  589. package/dist/runtime/locations/location-store-repository.d.ts +72 -0
  590. package/dist/runtime/locations/location-store-repository.js +3198 -0
  591. package/dist/runtime/locations/relocation-blob.d.ts +7 -0
  592. package/dist/runtime/locations/relocation-blob.js +24 -0
  593. package/dist/runtime/locations/resolvers.d.ts +145 -0
  594. package/dist/runtime/locations/resolvers.js +693 -0
  595. package/dist/runtime/locations/runtime.d.ts +144 -0
  596. package/dist/runtime/locations/runtime.js +792 -0
  597. package/dist/runtime/locations/spot-location-claims.d.ts +36 -0
  598. package/dist/runtime/locations/spot-location-claims.js +305 -0
  599. package/dist/runtime/messaging/creation-payload-codec.d.ts +4 -0
  600. package/dist/runtime/messaging/creation-payload-codec.js +40 -0
  601. package/dist/runtime/messaging/framework-json-v1.d.ts +7 -0
  602. package/dist/runtime/messaging/framework-json-v1.js +296 -0
  603. package/dist/runtime/messaging/index.d.ts +1 -0
  604. package/dist/runtime/messaging/index.js +2 -0
  605. package/dist/runtime/messaging/packet-name.d.ts +4 -0
  606. package/dist/runtime/messaging/packet-name.js +79 -0
  607. package/dist/runtime/messaging/payload-codec.d.ts +25 -0
  608. package/dist/runtime/messaging/payload-codec.js +255 -0
  609. package/dist/runtime/messaging/submission-result.d.ts +15 -0
  610. package/dist/runtime/messaging/submission-result.js +37 -0
  611. package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +395 -0
  612. package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +645 -0
  613. package/dist/runtime/routing-id.d.ts +8 -0
  614. package/dist/runtime/routing-id.js +112 -0
  615. package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +124 -0
  616. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +269 -0
  617. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +33 -0
  618. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +94 -0
  619. package/dist/runtime/spots/index.d.ts +247 -0
  620. package/dist/runtime/spots/index.js +2090 -0
  621. package/dist/runtime/spots/spot-activation-registry.d.ts +47 -0
  622. package/dist/runtime/spots/spot-activation-registry.js +272 -0
  623. package/dist/runtime/spots/spot-activation-state.d.ts +104 -0
  624. package/dist/runtime/spots/spot-activation-state.js +288 -0
  625. package/dist/runtime/spots/spot-activation.d.ts +89 -0
  626. package/dist/runtime/spots/spot-activation.js +601 -0
  627. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +20 -0
  628. package/dist/runtime/spots/spot-actor-admission-coordinator.js +194 -0
  629. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +83 -0
  630. package/dist/runtime/spots/spot-actor-join-dispatch.js +185 -0
  631. package/dist/runtime/spots/spot-actor-lifecycle-drain.d.ts +22 -0
  632. package/dist/runtime/spots/spot-actor-lifecycle-drain.js +51 -0
  633. package/dist/runtime/spots/spot-actor-membership.d.ts +39 -0
  634. package/dist/runtime/spots/spot-actor-membership.js +179 -0
  635. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +91 -0
  636. package/dist/runtime/spots/spot-actor-packet-dispatch.js +315 -0
  637. package/dist/runtime/spots/spot-actor-packet-drain.d.ts +40 -0
  638. package/dist/runtime/spots/spot-actor-packet-drain.js +235 -0
  639. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +18 -0
  640. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +110 -0
  641. package/dist/runtime/spots/spot-closing.d.ts +2 -0
  642. package/dist/runtime/spots/spot-closing.js +30 -0
  643. package/dist/runtime/spots/spot-context.d.ts +46 -0
  644. package/dist/runtime/spots/spot-context.js +113 -0
  645. package/dist/runtime/spots/spot-entry-activation.d.ts +107 -0
  646. package/dist/runtime/spots/spot-entry-activation.js +342 -0
  647. package/dist/runtime/spots/spot-handle.d.ts +28 -0
  648. package/dist/runtime/spots/spot-handle.js +38 -0
  649. package/dist/runtime/spots/spot-handler-registry.d.ts +52 -0
  650. package/dist/runtime/spots/spot-handler-registry.js +155 -0
  651. package/dist/runtime/spots/spot-lifecycle-metrics.d.ts +8 -0
  652. package/dist/runtime/spots/spot-lifecycle-metrics.js +16 -0
  653. package/dist/runtime/spots/spot-location-claim.d.ts +25 -0
  654. package/dist/runtime/spots/spot-location-claim.js +55 -0
  655. package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +10 -0
  656. package/dist/runtime/spots/spot-manager-internal-contracts.js +2 -0
  657. package/dist/runtime/spots/spot-manager-public.d.ts +32 -0
  658. package/dist/runtime/spots/spot-manager-public.js +219 -0
  659. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +26 -0
  660. package/dist/runtime/spots/spot-native-actor-join-admission.js +105 -0
  661. package/dist/runtime/spots/spot-native-flags.d.ts +2 -0
  662. package/dist/runtime/spots/spot-native-flags.js +5 -0
  663. package/dist/runtime/spots/spot-node-autoconnect.d.ts +23 -0
  664. package/dist/runtime/spots/spot-node-autoconnect.js +246 -0
  665. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +137 -0
  666. package/dist/runtime/spots/spot-node-runtime-manager.js +1111 -0
  667. package/dist/runtime/spots/spot-outbound.d.ts +78 -0
  668. package/dist/runtime/spots/spot-outbound.js +460 -0
  669. package/dist/runtime/spots/spot-provider.d.ts +4 -0
  670. package/dist/runtime/spots/spot-provider.js +28 -0
  671. package/dist/runtime/spots/spot-publisher-transport.d.ts +14 -0
  672. package/dist/runtime/spots/spot-publisher-transport.js +28 -0
  673. package/dist/runtime/spots/spot-remote-codec.d.ts +50 -0
  674. package/dist/runtime/spots/spot-remote-codec.js +190 -0
  675. package/dist/runtime/spots/spot-remote-route-codec.d.ts +47 -0
  676. package/dist/runtime/spots/spot-remote-route-codec.js +168 -0
  677. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +25 -0
  678. package/dist/runtime/spots/spot-route-packet-dispatch.js +238 -0
  679. package/dist/runtime/spots/spot-route-replies.d.ts +17 -0
  680. package/dist/runtime/spots/spot-route-replies.js +76 -0
  681. package/dist/runtime/spots/spot-route-reply-wire.d.ts +10 -0
  682. package/dist/runtime/spots/spot-route-reply-wire.js +6 -0
  683. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +36 -0
  684. package/dist/runtime/spots/spot-routed-actor-admission.js +240 -0
  685. package/dist/runtime/spots/spot-routed-bound-session-dispatch.d.ts +19 -0
  686. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +46 -0
  687. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +54 -0
  688. package/dist/runtime/spots/spot-routed-frame-dispatch.js +162 -0
  689. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +43 -0
  690. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +152 -0
  691. package/dist/runtime/spots/spot-routing-internal.d.ts +28 -0
  692. package/dist/runtime/spots/spot-routing-internal.js +2 -0
  693. package/dist/runtime/spots/spot-runtime-ports.d.ts +64 -0
  694. package/dist/runtime/spots/spot-runtime-ports.js +2 -0
  695. package/dist/runtime/spots/spot-serial-executor.d.ts +38 -0
  696. package/dist/runtime/spots/spot-serial-executor.js +133 -0
  697. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +54 -0
  698. package/dist/runtime/spots/spot-serial-turn-executor.js +219 -0
  699. package/dist/runtime/spots/spot-subscription-dispatch.d.ts +32 -0
  700. package/dist/runtime/spots/spot-subscription-dispatch.js +194 -0
  701. package/dist/runtime/spots/spot-timer.d.ts +110 -0
  702. package/dist/runtime/spots/spot-timer.js +419 -0
  703. package/dist/runtime/streams/actor-session-binding-registry.d.ts +193 -0
  704. package/dist/runtime/streams/actor-session-binding-registry.js +1127 -0
  705. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +20 -0
  706. package/dist/runtime/streams/actor-session-binding-runtime-owner.js +19 -0
  707. package/dist/runtime/streams/actor-session-lifecycle-coordinator.d.ts +4 -0
  708. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +24 -0
  709. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +29 -0
  710. package/dist/runtime/streams/bound-actor-relay-sender.js +181 -0
  711. package/dist/runtime/streams/bound-session-response-target.d.ts +25 -0
  712. package/dist/runtime/streams/bound-session-response-target.js +54 -0
  713. package/dist/runtime/streams/bound-session-service.d.ts +48 -0
  714. package/dist/runtime/streams/bound-session-service.js +201 -0
  715. package/dist/runtime/streams/index.d.ts +152 -0
  716. package/dist/runtime/streams/index.js +338 -0
  717. package/dist/runtime/streams/managed-stream.d.ts +53 -0
  718. package/dist/runtime/streams/managed-stream.js +329 -0
  719. package/dist/runtime/streams/native-fallback-bound-session.d.ts +24 -0
  720. package/dist/runtime/streams/native-fallback-bound-session.js +201 -0
  721. package/dist/runtime/streams/protocol.d.ts +67 -0
  722. package/dist/runtime/streams/protocol.js +244 -0
  723. package/dist/runtime/streams/session-actor-coordinator.d.ts +56 -0
  724. package/dist/runtime/streams/session-actor-coordinator.js +371 -0
  725. package/dist/runtime/streams/session-calls.d.ts +59 -0
  726. package/dist/runtime/streams/session-calls.js +123 -0
  727. package/dist/runtime/streams/session-context.d.ts +108 -0
  728. package/dist/runtime/streams/session-context.js +377 -0
  729. package/dist/runtime/streams/session-local-actors.d.ts +10 -0
  730. package/dist/runtime/streams/session-local-actors.js +26 -0
  731. package/dist/runtime/streams/session-provider.d.ts +4 -0
  732. package/dist/runtime/streams/session-provider.js +30 -0
  733. package/dist/runtime/streams/session-requests.d.ts +25 -0
  734. package/dist/runtime/streams/session-requests.js +100 -0
  735. package/dist/runtime/streams/session-serial-executor.d.ts +12 -0
  736. package/dist/runtime/streams/session-serial-executor.js +58 -0
  737. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +62 -0
  738. package/dist/runtime/streams/stream-binding-runtime-ports.js +2 -0
  739. package/dist/runtime/streams/stream-frame-factory.d.ts +44 -0
  740. package/dist/runtime/streams/stream-frame-factory.js +149 -0
  741. package/dist/runtime/streams/stream-message-utils.d.ts +5 -0
  742. package/dist/runtime/streams/stream-message-utils.js +74 -0
  743. package/dist/runtime/streams/stream-session-runtime.d.ts +166 -0
  744. package/dist/runtime/streams/stream-session-runtime.js +1144 -0
  745. package/dist/runtime/workers/index.d.ts +38 -0
  746. package/dist/runtime/workers/index.js +474 -0
  747. package/package.json +19 -0
  748. package/src/contracts/Actors/ZLinkActor.ts +8 -0
  749. package/src/contracts/Actors/ZLinkActorClient.ts +18 -0
  750. package/src/contracts/Actors/ZLinkActorContext.ts +15 -0
  751. package/src/contracts/Actors/ZLinkActorFactory.ts +41 -0
  752. package/src/contracts/Actors/ZLinkActorManager.ts +31 -0
  753. package/src/contracts/Actors/index.ts +5 -0
  754. package/src/contracts/Channels/Calls.ts +33 -0
  755. package/src/contracts/Channels/IZLinkChannelClient.ts +6 -0
  756. package/src/contracts/Channels/IZLinkFanoutClient.ts +13 -0
  757. package/src/contracts/Channels/RouteCalls.ts +13 -0
  758. package/src/contracts/Channels/index.ts +4 -0
  759. package/src/contracts/Codecs/IZLinkCodecRegistryBuilder.ts +22 -0
  760. package/src/contracts/Codecs/ZLinkMessageSerializer.ts +6 -0
  761. package/src/contracts/Codecs/index.ts +2 -0
  762. package/src/contracts/Common/ActorRef.ts +8 -0
  763. package/src/contracts/Common/CoreTypes.ts +6 -0
  764. package/src/contracts/Common/Message.ts +9 -0
  765. package/src/contracts/Common/ZLinkEncodedPayload.ts +47 -0
  766. package/src/contracts/Common/ZLinkMessage.ts +135 -0
  767. package/src/contracts/Common/ZLinkMessageMetadata.ts +77 -0
  768. package/src/contracts/Common/ZLinkProviderResolver.ts +6 -0
  769. package/src/contracts/Common/encoded-payload-storage.ts +16 -0
  770. package/src/contracts/Common/index.ts +5 -0
  771. package/src/contracts/Configuration/Builders.ts +200 -0
  772. package/src/contracts/Configuration/CodecContentType.ts +68 -0
  773. package/src/contracts/Configuration/CodecSerializerSelection.ts +28 -0
  774. package/src/contracts/Configuration/Configs.ts +27 -0
  775. package/src/contracts/Configuration/ConfigurationException.ts +6 -0
  776. package/src/contracts/Configuration/Connections.ts +5 -0
  777. package/src/contracts/Configuration/DiagnosticsValidation.ts +25 -0
  778. package/src/contracts/Configuration/EndpointNotation.ts +232 -0
  779. package/src/contracts/Configuration/InternalDefaults.ts +13 -0
  780. package/src/contracts/Configuration/ObjectRoles.ts +47 -0
  781. package/src/contracts/Configuration/Registration.ts +191 -0
  782. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +76 -0
  783. package/src/contracts/Configuration/RegistrationBuilders.ts +1705 -0
  784. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +118 -0
  785. package/src/contracts/Configuration/RegistrationNormalizers.ts +404 -0
  786. package/src/contracts/Configuration/RegistrationTypes.ts +499 -0
  787. package/src/contracts/Configuration/RegistrationValidators.ts +698 -0
  788. package/src/contracts/Configuration/RouteChannelInternalState.ts +50 -0
  789. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +91 -0
  790. package/src/contracts/Configuration/SendTimeoutValidation.ts +15 -0
  791. package/src/contracts/Configuration/TimerRegistrationValidator.ts +37 -0
  792. package/src/contracts/Configuration/index.ts +35 -0
  793. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +222 -0
  794. package/src/contracts/Dispatch/ZLinkFlowOrigin.ts +1 -0
  795. package/src/contracts/Dispatch/index.ts +2 -0
  796. package/src/contracts/Errors/ZLinkFrameworkException.ts +27 -0
  797. package/src/contracts/Errors/index.ts +4 -0
  798. package/src/contracts/Eventing/Metrics.ts +27 -0
  799. package/src/contracts/Eventing/index.ts +1 -0
  800. package/src/contracts/Handlers/Attributes.ts +111 -0
  801. package/src/contracts/Handlers/Contexts.ts +21 -0
  802. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +69 -0
  803. package/src/contracts/Handlers/IZLinkHandlerFilter.ts +22 -0
  804. package/src/contracts/Handlers/JsonContract.ts +172 -0
  805. package/src/contracts/Handlers/ZLinkHandlerFilterNext.ts +1 -0
  806. package/src/contracts/Handlers/index.ts +17 -0
  807. package/src/contracts/Locations/ActorTransfer.ts +84 -0
  808. package/src/contracts/Locations/Authority.ts +308 -0
  809. package/src/contracts/Locations/Diagnostics.ts +48 -0
  810. package/src/contracts/Locations/Keys.ts +93 -0
  811. package/src/contracts/Locations/Models.ts +7 -0
  812. package/src/contracts/Locations/Options.ts +42 -0
  813. package/src/contracts/Locations/Readiness.ts +11 -0
  814. package/src/contracts/Locations/RelocationStore.ts +51 -0
  815. package/src/contracts/Locations/Resolvers.ts +8 -0
  816. package/src/contracts/Locations/Rows.ts +164 -0
  817. package/src/contracts/Locations/RuntimeQuery.ts +56 -0
  818. package/src/contracts/Locations/Stores.ts +92 -0
  819. package/src/contracts/Locations/Values.ts +32 -0
  820. package/src/contracts/Locations/Watch.ts +16 -0
  821. package/src/contracts/Locations/Writes.ts +56 -0
  822. package/src/contracts/Locations/index.ts +48 -0
  823. package/src/contracts/RouteMesh/Contracts.ts +145 -0
  824. package/src/contracts/RouteMesh/RuntimeTopology.ts +201 -0
  825. package/src/contracts/RouteMesh/index.ts +2 -0
  826. package/src/contracts/Spots/Builders.ts +11 -0
  827. package/src/contracts/Spots/Contracts.ts +150 -0
  828. package/src/contracts/Spots/SpotKind.ts +24 -0
  829. package/src/contracts/Spots/ZLinkSpot.ts +88 -0
  830. package/src/contracts/Spots/index.ts +3 -0
  831. package/src/contracts/Streams/BoundSessionContracts.ts +9 -0
  832. package/src/contracts/Streams/IZLinkSession.ts +52 -0
  833. package/src/contracts/Streams/IZLinkSessionActor.ts +17 -0
  834. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +11 -0
  835. package/src/contracts/Streams/IZLinkStream.ts +10 -0
  836. package/src/contracts/Streams/ZLinkMessageMetadata.ts +1 -0
  837. package/src/contracts/Streams/ZLinkStreamCompression.ts +9 -0
  838. package/src/contracts/Streams/ZLinkStreamError.ts +9 -0
  839. package/src/contracts/Streams/index.ts +8 -0
  840. package/src/contracts/Timers/IZLinkTimer.ts +5 -0
  841. package/src/contracts/Timers/ZLinkTimerOptions.ts +11 -0
  842. package/src/contracts/Timers/ZLinkTimerTick.ts +12 -0
  843. package/src/contracts/Timers/index.ts +3 -0
  844. package/src/contracts/index.ts +71 -0
  845. package/src/index.ts +1 -0
  846. package/src/internal.ts +29 -0
  847. package/src/location-store-integration.ts +51 -0
  848. package/src/nest-integration.ts +251 -0
  849. package/src/runtime/abort.ts +70 -0
  850. package/src/runtime/actors/actor-authority-payload-codec.ts +454 -0
  851. package/src/runtime/actors/actor-authority-publication.ts +277 -0
  852. package/src/runtime/actors/actor-client.ts +1018 -0
  853. package/src/runtime/actors/actor-context.ts +583 -0
  854. package/src/runtime/actors/actor-creation.ts +254 -0
  855. package/src/runtime/actors/actor-execution-context.ts +38 -0
  856. package/src/runtime/actors/actor-handoff.ts +1911 -0
  857. package/src/runtime/actors/actor-join-deferred-scope.ts +183 -0
  858. package/src/runtime/actors/actor-join-relocation.ts +39 -0
  859. package/src/runtime/actors/actor-lifecycle-snapshot.ts +90 -0
  860. package/src/runtime/actors/actor-local-native-join.ts +725 -0
  861. package/src/runtime/actors/actor-mailbox.ts +92 -0
  862. package/src/runtime/actors/actor-message-follow-context.ts +347 -0
  863. package/src/runtime/actors/actor-native-lookup.ts +38 -0
  864. package/src/runtime/actors/actor-packet-relay-wire.ts +223 -0
  865. package/src/runtime/actors/actor-remote-joiner.ts +238 -0
  866. package/src/runtime/actors/actor-remote-wire.ts +169 -0
  867. package/src/runtime/actors/actor-retry-delay.ts +37 -0
  868. package/src/runtime/actors/actor-routed-join-transport.ts +58 -0
  869. package/src/runtime/actors/actor-routed-json-request.ts +44 -0
  870. package/src/runtime/actors/actor-runtime-contracts.ts +126 -0
  871. package/src/runtime/actors/actor-runtime-state.ts +805 -0
  872. package/src/runtime/actors/actor-source-transfer.ts +62 -0
  873. package/src/runtime/actors/actor-transfer-registry.ts +112 -0
  874. package/src/runtime/actors/actor-transport-delivery-gate.ts +17 -0
  875. package/src/runtime/actors/bound-session-wire.ts +257 -0
  876. package/src/runtime/actors/deferred-join-accepted-journal.ts +1319 -0
  877. package/src/runtime/actors/index.ts +972 -0
  878. package/src/runtime/actors/post-commit-actor-binder.ts +70 -0
  879. package/src/runtime/actors/post-commit-actor-location.ts +114 -0
  880. package/src/runtime/actors/spot-actor-dispatch.ts +362 -0
  881. package/src/runtime/actors/transferred-actor-rollback.ts +123 -0
  882. package/src/runtime/admission.ts +192 -0
  883. package/src/runtime/application-jobs/application-ingress-record-owner.ts +216 -0
  884. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +10 -0
  885. package/src/runtime/application-jobs/application-job-queue-scope.ts +64 -0
  886. package/src/runtime/application-jobs/contracts.ts +26 -0
  887. package/src/runtime/application-jobs/receive-flow-controller.ts +188 -0
  888. package/src/runtime/backend/contracts/index.ts +765 -0
  889. package/src/runtime/backend/index.ts +9 -0
  890. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +73 -0
  891. package/src/runtime/backend/mesh-completion-table.ts +165 -0
  892. package/src/runtime/backend/mesh-dispatch-pump.ts +363 -0
  893. package/src/runtime/backend/mesh-record-dispatcher.ts +65 -0
  894. package/src/runtime/backend/node/index.ts +4 -0
  895. package/src/runtime/backend/node/node-backend-adapter-factory.ts +204 -0
  896. package/src/runtime/backend/node/node-backend-adapter-support.ts +257 -0
  897. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +133 -0
  898. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +44 -0
  899. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +39 -0
  900. package/src/runtime/backend/node/node-raw-binding-port.contract.ts +21 -0
  901. package/src/runtime/backend/node/node-raw-binding-port.ts +518 -0
  902. package/src/runtime/backend/node/node-raw-mesh-backend.ts +2669 -0
  903. package/src/runtime/backend/node/node-socket-backend-adapter.ts +372 -0
  904. package/src/runtime/backend/node-backend-adapter.ts +19 -0
  905. package/src/runtime/backend/raw-binding-port.ts +69 -0
  906. package/src/runtime/backend/runtime-message.ts +51 -0
  907. package/src/runtime/backend/runtime-values.ts +107 -0
  908. package/src/runtime/channels/channel-autoconnect.ts +46 -0
  909. package/src/runtime/channels/channel-clients.ts +527 -0
  910. package/src/runtime/channels/channel-dispatch-pipeline.ts +408 -0
  911. package/src/runtime/channels/channel-dispatch-services.ts +234 -0
  912. package/src/runtime/channels/channel-dispatchers.ts +790 -0
  913. package/src/runtime/channels/channel-envelope-inspection.ts +125 -0
  914. package/src/runtime/channels/channel-envelope.ts +743 -0
  915. package/src/runtime/channels/channel-framework-packets.ts +8 -0
  916. package/src/runtime/channels/channel-multipart.ts +61 -0
  917. package/src/runtime/channels/channel-outbound-operations.ts +584 -0
  918. package/src/runtime/channels/channel-receive-loops.ts +901 -0
  919. package/src/runtime/channels/channel-receive-task-tracker.ts +39 -0
  920. package/src/runtime/channels/channel-runtime-lifecycle.ts +969 -0
  921. package/src/runtime/channels/channel-runtime-manager.ts +444 -0
  922. package/src/runtime/channels/channel-socket-options.ts +153 -0
  923. package/src/runtime/channels/channel-socket-registry.ts +1837 -0
  924. package/src/runtime/channels/channel-transports.ts +1154 -0
  925. package/src/runtime/channels/client-server-location-runtime.ts +576 -0
  926. package/src/runtime/channels/client-server-service-wire.ts +390 -0
  927. package/src/runtime/channels/dispatch-error-reporter.ts +165 -0
  928. package/src/runtime/channels/fanout-location-runtime.ts +459 -0
  929. package/src/runtime/channels/fanout-service-wire.ts +43 -0
  930. package/src/runtime/channels/handler-filter-scope.ts +29 -0
  931. package/src/runtime/channels/index.ts +45 -0
  932. package/src/runtime/channels/local-spot-route-transport.ts +59 -0
  933. package/src/runtime/channels/route-disconnected-error.ts +6 -0
  934. package/src/runtime/channels/route-member-snapshot.ts +55 -0
  935. package/src/runtime/channels/router-socket-spot-route-transport.ts +77 -0
  936. package/src/runtime/channels/source-spot-router.ts +89 -0
  937. package/src/runtime/channels/spot-direct-envelope.ts +44 -0
  938. package/src/runtime/channels/spot-node-route-transport.ts +92 -0
  939. package/src/runtime/channels/spot-route-bridge-transport.ts +75 -0
  940. package/src/runtime/channels/spot-route-dispatch-strategy.ts +329 -0
  941. package/src/runtime/channels/spot-route-target-resolver.ts +101 -0
  942. package/src/runtime/codecs/index.ts +69 -0
  943. package/src/runtime/configuration/index.ts +1 -0
  944. package/src/runtime/diagnostics/dispatch-error-port.ts +8 -0
  945. package/src/runtime/diagnostics/flow-context.ts +84 -0
  946. package/src/runtime/diagnostics/index.ts +441 -0
  947. package/src/runtime/diagnostics/internal-event-contracts.ts +135 -0
  948. package/src/runtime/diagnostics/message-flow.ts +560 -0
  949. package/src/runtime/diagnostics/runtime-metrics.ts +601 -0
  950. package/src/runtime/diagnostics/runtime-observation-queue.ts +362 -0
  951. package/src/runtime/diagnostics/topology-runtime-projections.ts +298 -0
  952. package/src/runtime/execution/index.ts +466 -0
  953. package/src/runtime/execution/serial-execution-queue.ts +534 -0
  954. package/src/runtime/execution/serial-work-size.ts +31 -0
  955. package/src/runtime/execution/state-lane.ts +116 -0
  956. package/src/runtime/foundation/actor-join-recovery-codec.ts +465 -0
  957. package/src/runtime/foundation/event-loop-resources.ts +162 -0
  958. package/src/runtime/foundation/index.ts +18 -0
  959. package/src/runtime/foundation/message-follow-suppression-registry.ts +130 -0
  960. package/src/runtime/foundation/operation-identity.ts +49 -0
  961. package/src/runtime/foundation/operation-registry.ts +162 -0
  962. package/src/runtime/foundation/raw-service-mesh-runtime.ts +1771 -0
  963. package/src/runtime/foundation/route-mesh-connection-policy.ts +28 -0
  964. package/src/runtime/foundation/runtime-state-projections.ts +68 -0
  965. package/src/runtime/foundation/service-authority-payload-codec.ts +566 -0
  966. package/src/runtime/foundation/service-discovery-registry.ts +263 -0
  967. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +329 -0
  968. package/src/runtime/foundation/service-liveness-registry.ts +144 -0
  969. package/src/runtime/foundation/service-mailbox.ts +369 -0
  970. package/src/runtime/foundation/service-maintenance-runtime.ts +242 -0
  971. package/src/runtime/foundation/service-metadata-codec.ts +75 -0
  972. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +218 -0
  973. package/src/runtime/foundation/service-relocation-coordinator.ts +37 -0
  974. package/src/runtime/foundation/service-relocation-object-owner.ts +428 -0
  975. package/src/runtime/foundation/service-relocation-runtime.ts +1407 -0
  976. package/src/runtime/foundation/service-runtime-contracts.ts +423 -0
  977. package/src/runtime/foundation/service-session-binding-ingress-port.ts +45 -0
  978. package/src/runtime/foundation/service-stateful-registry.ts +664 -0
  979. package/src/runtime/foundation/service-stateful-runtime.ts +5753 -0
  980. package/src/runtime/foundation/service-stateful-wire-codec.ts +3008 -0
  981. package/src/runtime/foundation/service-topology-registry.ts +599 -0
  982. package/src/runtime/foundation/service-weighted-selection.ts +166 -0
  983. package/src/runtime/foundation/service-wire-binary-primitives.ts +80 -0
  984. package/src/runtime/foundation/service-wire-codec.ts +91 -0
  985. package/src/runtime/foundation/service-wire-constants.generated.ts +131 -0
  986. package/src/runtime/foundation/service-wire-m6a-codec.ts +647 -0
  987. package/src/runtime/framework-errors-internal.ts +338 -0
  988. package/src/runtime/handlers/handler-instance-scope.ts +372 -0
  989. package/src/runtime/handlers/index.ts +93 -0
  990. package/src/runtime/host/actor-packet-relay.ts +1070 -0
  991. package/src/runtime/host/actor-placement-coordinator.ts +573 -0
  992. package/src/runtime/host/actor-runtime-options-factory.ts +282 -0
  993. package/src/runtime/host/actor-transfer-authority-runtime.ts +225 -0
  994. package/src/runtime/host/actor-transfer-runtime.ts +1958 -0
  995. package/src/runtime/host/application-job-queue.ts +518 -0
  996. package/src/runtime/host/bound-session-relay.ts +94 -0
  997. package/src/runtime/host/bounded-replay-map.ts +42 -0
  998. package/src/runtime/host/channel-runtime-options-factory.ts +104 -0
  999. package/src/runtime/host/entry-actor-runtime.ts +115 -0
  1000. package/src/runtime/host/host-capacity-status.ts +103 -0
  1001. package/src/runtime/host/index.ts +3492 -0
  1002. package/src/runtime/host/instance-activation-authority.ts +658 -0
  1003. package/src/runtime/host/location-runtime-owner.ts +313 -0
  1004. package/src/runtime/host/mesh-router-resolver.ts +114 -0
  1005. package/src/runtime/host/relocation-direct-transfer.ts +273 -0
  1006. package/src/runtime/host/relocation-integrity-fault-gate.ts +8 -0
  1007. package/src/runtime/host/relocation-state-adapter.ts +24 -0
  1008. package/src/runtime/host/remote-actor-join-receiver.ts +264 -0
  1009. package/src/runtime/host/remote-actor-packet-target-store.ts +244 -0
  1010. package/src/runtime/host/remote-bound-session-relay.ts +900 -0
  1011. package/src/runtime/host/route-mesh-runtime-options.ts +46 -0
  1012. package/src/runtime/host/route-mesh-runtime.ts +891 -0
  1013. package/src/runtime/host/runtime-shutdown.ts +101 -0
  1014. package/src/runtime/host/service-relocation-control.ts +28 -0
  1015. package/src/runtime/host/service-relocation-host-runtime.ts +5817 -0
  1016. package/src/runtime/host/spot-address-transport.ts +997 -0
  1017. package/src/runtime/host/spot-node-runtime-options-factory.ts +82 -0
  1018. package/src/runtime/host/spot-runtime-options-factory.ts +286 -0
  1019. package/src/runtime/host/stateful-authority-route-runtime.ts +662 -0
  1020. package/src/runtime/host/user-spot-creation-coordinator.ts +1176 -0
  1021. package/src/runtime/locations/actor-location-claims.ts +426 -0
  1022. package/src/runtime/locations/actor-session-route-claims.ts +64 -0
  1023. package/src/runtime/locations/aggregate-inventory-store.ts +581 -0
  1024. package/src/runtime/locations/authority-key-codec.ts +80 -0
  1025. package/src/runtime/locations/auto-connect-loop.ts +131 -0
  1026. package/src/runtime/locations/auto-connect-planner.ts +178 -0
  1027. package/src/runtime/locations/auto-connect-reconciler.ts +425 -0
  1028. package/src/runtime/locations/auto-connect-types.ts +62 -0
  1029. package/src/runtime/locations/auto-connect.ts +4 -0
  1030. package/src/runtime/locations/canonical-codec.ts +54 -0
  1031. package/src/runtime/locations/domain-store-contract.ts +149 -0
  1032. package/src/runtime/locations/in-memory-authority-store.ts +1172 -0
  1033. package/src/runtime/locations/in-memory-location-store.ts +1467 -0
  1034. package/src/runtime/locations/in-memory-provider-location-store.ts +213 -0
  1035. package/src/runtime/locations/index.ts +11 -0
  1036. package/src/runtime/locations/internal-location-contracts.ts +22 -0
  1037. package/src/runtime/locations/internal-store-contracts.ts +90 -0
  1038. package/src/runtime/locations/key-codec.ts +61 -0
  1039. package/src/runtime/locations/lease-tracker.ts +221 -0
  1040. package/src/runtime/locations/lifecycle-runtime.ts +44 -0
  1041. package/src/runtime/locations/lifecycle.ts +272 -0
  1042. package/src/runtime/locations/location-store-repository.ts +4211 -0
  1043. package/src/runtime/locations/relocation-blob.ts +36 -0
  1044. package/src/runtime/locations/resolvers.ts +1054 -0
  1045. package/src/runtime/locations/runtime.ts +1126 -0
  1046. package/src/runtime/locations/spot-location-claims.ts +435 -0
  1047. package/src/runtime/messaging/creation-payload-codec.ts +59 -0
  1048. package/src/runtime/messaging/framework-json-v1.ts +307 -0
  1049. package/src/runtime/messaging/index.ts +1 -0
  1050. package/src/runtime/messaging/packet-name.ts +94 -0
  1051. package/src/runtime/messaging/payload-codec.ts +418 -0
  1052. package/src/runtime/messaging/submission-result.ts +61 -0
  1053. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +189 -0
  1054. package/src/runtime/routing-id.ts +125 -0
  1055. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +418 -0
  1056. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +147 -0
  1057. package/src/runtime/spots/index.ts +3303 -0
  1058. package/src/runtime/spots/spot-activation-registry.ts +335 -0
  1059. package/src/runtime/spots/spot-activation-state.ts +414 -0
  1060. package/src/runtime/spots/spot-activation.ts +1027 -0
  1061. package/src/runtime/spots/spot-actor-admission-coordinator.ts +354 -0
  1062. package/src/runtime/spots/spot-actor-join-dispatch.ts +303 -0
  1063. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +79 -0
  1064. package/src/runtime/spots/spot-actor-membership.ts +266 -0
  1065. package/src/runtime/spots/spot-actor-packet-dispatch.ts +593 -0
  1066. package/src/runtime/spots/spot-actor-packet-drain.ts +328 -0
  1067. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +162 -0
  1068. package/src/runtime/spots/spot-closing.ts +34 -0
  1069. package/src/runtime/spots/spot-context.ts +259 -0
  1070. package/src/runtime/spots/spot-entry-activation.ts +551 -0
  1071. package/src/runtime/spots/spot-handle.ts +101 -0
  1072. package/src/runtime/spots/spot-handler-registry.ts +273 -0
  1073. package/src/runtime/spots/spot-lifecycle-metrics.ts +15 -0
  1074. package/src/runtime/spots/spot-location-claim.ts +86 -0
  1075. package/src/runtime/spots/spot-manager-internal-contracts.ts +11 -0
  1076. package/src/runtime/spots/spot-manager-public.ts +361 -0
  1077. package/src/runtime/spots/spot-native-actor-join-admission.ts +151 -0
  1078. package/src/runtime/spots/spot-native-flags.ts +4 -0
  1079. package/src/runtime/spots/spot-node-autoconnect.ts +325 -0
  1080. package/src/runtime/spots/spot-node-runtime-manager.ts +1573 -0
  1081. package/src/runtime/spots/spot-outbound.ts +761 -0
  1082. package/src/runtime/spots/spot-provider.ts +36 -0
  1083. package/src/runtime/spots/spot-publisher-transport.ts +69 -0
  1084. package/src/runtime/spots/spot-remote-codec.ts +308 -0
  1085. package/src/runtime/spots/spot-remote-route-codec.ts +284 -0
  1086. package/src/runtime/spots/spot-route-packet-dispatch.ts +359 -0
  1087. package/src/runtime/spots/spot-route-replies.ts +126 -0
  1088. package/src/runtime/spots/spot-route-reply-wire.ts +15 -0
  1089. package/src/runtime/spots/spot-routed-actor-admission.ts +351 -0
  1090. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +132 -0
  1091. package/src/runtime/spots/spot-routed-frame-dispatch.ts +250 -0
  1092. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +254 -0
  1093. package/src/runtime/spots/spot-routing-internal.ts +33 -0
  1094. package/src/runtime/spots/spot-runtime-ports.ts +196 -0
  1095. package/src/runtime/spots/spot-serial-executor.ts +170 -0
  1096. package/src/runtime/spots/spot-serial-turn-executor.ts +319 -0
  1097. package/src/runtime/spots/spot-subscription-dispatch.ts +252 -0
  1098. package/src/runtime/spots/spot-timer.ts +609 -0
  1099. package/src/runtime/streams/actor-session-binding-registry.ts +1691 -0
  1100. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +78 -0
  1101. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +20 -0
  1102. package/src/runtime/streams/bound-actor-relay-sender.ts +275 -0
  1103. package/src/runtime/streams/bound-session-response-target.ts +91 -0
  1104. package/src/runtime/streams/bound-session-service.ts +500 -0
  1105. package/src/runtime/streams/index.ts +706 -0
  1106. package/src/runtime/streams/managed-stream.ts +509 -0
  1107. package/src/runtime/streams/native-fallback-bound-session.ts +321 -0
  1108. package/src/runtime/streams/protocol.ts +291 -0
  1109. package/src/runtime/streams/session-actor-coordinator.ts +605 -0
  1110. package/src/runtime/streams/session-calls.ts +221 -0
  1111. package/src/runtime/streams/session-context.ts +609 -0
  1112. package/src/runtime/streams/session-local-actors.ts +30 -0
  1113. package/src/runtime/streams/session-provider.ts +50 -0
  1114. package/src/runtime/streams/session-requests.ts +109 -0
  1115. package/src/runtime/streams/session-serial-executor.ts +97 -0
  1116. package/src/runtime/streams/stream-binding-runtime-ports.ts +106 -0
  1117. package/src/runtime/streams/stream-frame-factory.ts +255 -0
  1118. package/src/runtime/streams/stream-message-utils.ts +89 -0
  1119. package/src/runtime/streams/stream-session-runtime.ts +1420 -0
  1120. package/src/runtime/workers/index.ts +580 -0
  1121. package/tsconfig.json +17 -0
@@ -0,0 +1,1705 @@
1
+ import type {
2
+ RoutingId,
3
+ Type,
4
+ ZLinkActor,
5
+ ZLinkActorFactory,
6
+ ZLinkEntrySpot,
7
+ ZLinkFanoutChannelBuilder,
8
+ ZLinkFrameworkOptions,
9
+ ZLinkMeshChannelBuilder,
10
+ ZLinkMeshChannelClientBuilder,
11
+ ZLinkMeshChannelServerBuilder,
12
+ ZLinkMeshNodeBuilder,
13
+ ZLinkMeshObjectClientBuilder,
14
+ ZLinkMeshObjectRoleBuilder,
15
+ ZLinkMeshObjectServerBuilder,
16
+ ZLinkMeshNodeSocketConfig,
17
+ ZLinkNetworkOptions,
18
+ ZLinkMeshPeerConnection,
19
+ ZLinkMeshPeerConnections,
20
+ ZLinkLocationOptionValues,
21
+ ZLinkSpotPublisherConfig,
22
+ ZLinkHandlerFilter,
23
+ ZLinkInstanceSpot,
24
+ ZLinkSpot,
25
+ ZLinkClientServerChannelClientBuilder,
26
+ ZLinkClientServerChannelRoleBuilder,
27
+ ZLinkClientServerChannelServerBuilder,
28
+ ZLinkStreamCompressionBuilder,
29
+ ZLinkStreamCompressionCodec,
30
+ ZLinkStreamSocketConfig,
31
+ ZLinkStreamNodeBuilder,
32
+ ZLinkSession,
33
+ ZLinkSessionFactory
34
+ } from '../../contracts';
35
+ import type {
36
+ ZLinkActorFactoryBuilder,
37
+ ZLinkActorRelocationAdapter,
38
+ ZLinkInstanceSpotFactoryBuilder,
39
+ ZLinkSpotRelocationAdapter,
40
+ ZLinkUserSpotFactoryBuilder
41
+ } from './ObjectRoles';
42
+ import {
43
+ ZLinkSpotRelocationCoordinationMode,
44
+ ZLinkUserSpotExecutionMode
45
+ } from './ObjectRoles';
46
+ import type { ZLinkSpotNodeBuilder } from '../Spots/Builders';
47
+ import { readZLinkDecoratorMetadata } from '../Handlers/Attributes';
48
+ import type { ZLinkCodecRegistryBuilder } from '../Codecs';
49
+ import type {
50
+ ZLinkDispatchOptions,
51
+ ZLinkDispatchOptionsBuilder,
52
+ ZLinkInboundDispatchOptions,
53
+ ZLinkMessageFlowLogMode
54
+ } from '../Dispatch';
55
+ import {
56
+ ZLinkApplicationJobQueueProfile,
57
+ ZLinkCoreHwmProfile,
58
+ ZLinkUnhandledDispatchAction
59
+ } from '../Dispatch';
60
+ import { AutoHwmProfile } from '@zlink-systems/zlink';
61
+ import { endpointConnections } from './RuntimeEndpointConnections';
62
+ import type { ZLinkEndpointConnections } from './Connections';
63
+ import type {
64
+ ZLinkLocationOptions,
65
+ ZLinkLocationStore,
66
+ ZLinkRelocationStore
67
+ } from '../Locations';
68
+ import { ZLinkConfigurationException } from './ConfigurationException';
69
+ import {
70
+ RegistrationCodecRegistryBuilder,
71
+ type MutableCodecRegistryOptions
72
+ } from './RegistrationCodecRegistry';
73
+ import {
74
+ isStreamCompressionCodec,
75
+ normalizeOptionalPositiveInteger,
76
+ typeMapToRecord
77
+ } from './RegistrationNormalizers';
78
+ import { normalizeEndpoint } from './EndpointNotation';
79
+ import { DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE } from './InternalDefaults';
80
+ import type {
81
+ ZLinkChannelPublishHandlerRegistration,
82
+ ZLinkActorFactoryConfiguration,
83
+ ZLinkApplicationJobQueueOptions,
84
+ ZLinkFrameworkRegistrationOptions,
85
+ ZLinkCoreHwmOptions,
86
+ ZLinkInstanceSpotFactoryConfiguration,
87
+ ZLinkRelocationConfiguration,
88
+ ZLinkSpotRouterPeerConnectionOptions,
89
+ ZLinkStreamTlsServerOptions,
90
+ ZLinkUserSpotFactoryConfiguration,
91
+ ZLinkWorkerOptions
92
+ } from './RegistrationTypes';
93
+ import {
94
+ validateRoutingIdPrefix,
95
+ registerActorFactory,
96
+ registerEntrySpot,
97
+ registerSpotFactory,
98
+ validateActorTransferTimeout,
99
+ validateMessageFollowDuration,
100
+ validateSessionReplacementCallbackTimeout
101
+ } from './RegistrationBuilderPolicy';
102
+ import { requireMessageFlowLogMode, requireTraceSampleRate } from './DiagnosticsValidation';
103
+
104
+ export function createFrameworkOptions(
105
+ configure: (options: ZLinkFrameworkOptions) => void
106
+ ): ZLinkFrameworkRegistrationOptions {
107
+ const builder = new ZLinkFrameworkOptionsBuilder();
108
+ configure(builder);
109
+ return builder.build();
110
+ }
111
+
112
+ class ZLinkFrameworkOptionsBuilder implements ZLinkFrameworkOptions {
113
+ private readonly spotMeshes = new Set<string>();
114
+ private readonly options: MutableFrameworkRegistrationOptions = {
115
+ network: { bindHost: '127.0.0.1' },
116
+ channels: {},
117
+ streamNodes: {},
118
+ spotNodes: {},
119
+ spotFactories: []
120
+ };
121
+
122
+ codecs(): ZLinkCodecRegistryBuilder {
123
+ this.options.codecs ??= { serializers: [], streamCodecs: [] };
124
+ return new RegistrationCodecRegistryBuilder(this.options.codecs);
125
+ }
126
+
127
+ configureNetwork(): ZLinkNetworkOptions {
128
+ return this.options.network;
129
+ }
130
+
131
+ configureWorker(options: ZLinkWorkerOptions): this {
132
+ this.options.worker = { ...this.options.worker, ...options };
133
+ return this;
134
+ }
135
+
136
+ configureDispatch(): ZLinkDispatchOptionsBuilder {
137
+ this.options.dispatch ??= defaultDispatchOptions();
138
+ return new DefaultDispatchOptionsBuilder(this.options.dispatch);
139
+ }
140
+
141
+ configureInboundDispatch(): ZLinkInboundDispatchOptions {
142
+ return new DefaultInboundDispatchOptionsBuilder(this.options);
143
+ }
144
+
145
+ addLocationStore(store: ZLinkLocationStore): this {
146
+ this.options.locations ??= { options: {} };
147
+ this.options.locations.storeInstance = store;
148
+ return this;
149
+ }
150
+
151
+ addRelocationStore(store: ZLinkRelocationStore): this {
152
+ this.options.locations ??= { options: {} };
153
+ this.options.locations.relocationStoreInstance = store;
154
+ return this;
155
+ }
156
+
157
+ setApplicationVersion(version: bigint): this {
158
+ this.options.applicationVersion = version;
159
+ return this;
160
+ }
161
+
162
+ setMaintenanceWave(waveId: string): this {
163
+ this.options.maintenanceWave = waveId;
164
+ return this;
165
+ }
166
+
167
+ setActorTransferTimeout(timeoutMs: number): this {
168
+ this.options.actorTransferTimeoutMs = validateActorTransferTimeout(timeoutMs);
169
+ return this;
170
+ }
171
+
172
+ setMessageFollowDuration(timeoutMs: number): this {
173
+ this.options.messageFollowDurationMs = validateMessageFollowDuration(timeoutMs);
174
+ return this;
175
+ }
176
+
177
+ setSessionReplacementCallbackTimeout(timeoutMs: number): this {
178
+ this.options.sessionReplacementCallbackTimeoutMs = validateSessionReplacementCallbackTimeout(timeoutMs);
179
+ return this;
180
+ }
181
+
182
+ configureLocations(): ZLinkLocationOptions {
183
+ this.options.locations ??= { options: {} };
184
+ this.options.locations.options ??= {};
185
+ return new DefaultLocationOptionsBuilder(this.options.locations.options);
186
+ }
187
+
188
+ configureStreamCompression(): ZLinkStreamCompressionBuilder {
189
+ this.options.streamCompression ??= {};
190
+ return new DefaultStreamCompressionBuilder(this.options.streamCompression);
191
+ }
192
+
193
+ addRouteMesh(meshName: string): ZLinkMeshNodeBuilder {
194
+ requireRegistrationName(meshName, 'RouteMesh');
195
+ if (this.spotMeshes.has(meshName)) {
196
+ throw new ZLinkConfigurationException(`Duplicate RouteMesh '${meshName}'.`);
197
+ }
198
+ this.spotMeshes.add(meshName);
199
+ const node = this.spotNodeOptions(meshName);
200
+ node.router ??= { port: 0 };
201
+ return new DefaultMeshNodeBuilder(
202
+ meshName,
203
+ node
204
+ );
205
+ }
206
+
207
+ addFanoutChannel(name: string): ZLinkFanoutChannelBuilder {
208
+ return new DefaultFanoutChannelBuilder(name, this.channel(name));
209
+ }
210
+
211
+ addClientServerChannel(name: string): ZLinkClientServerChannelRoleBuilder {
212
+ return new DefaultClientServerChannelRoleBuilder(name, this.clientServerChannel(name));
213
+ }
214
+
215
+ addStreamNode(name: string): ZLinkStreamNodeBuilder {
216
+ if (name.trim().length === 0 || name.trim() !== name) {
217
+ throw new ZLinkConfigurationException('STREAM node name must not be empty or padded.');
218
+ }
219
+ if (Object.prototype.hasOwnProperty.call(this.options.streamNodes, name)) {
220
+ throw new ZLinkConfigurationException(`Duplicate STREAM node '${name}'.`);
221
+ }
222
+ const streamNode: MutableStreamNodeOptions = {
223
+ maxMessageSize: DEFAULT_STREAM_NODE_MAX_MESSAGE_SIZE
224
+ };
225
+ this.options.streamNodes[name] = streamNode;
226
+ return new DefaultStreamNodeBuilder(streamNode);
227
+ }
228
+
229
+ build(): ZLinkFrameworkRegistrationOptions {
230
+ return {
231
+ network: { ...this.options.network },
232
+ codecs: this.options.codecs,
233
+ applicationVersion: this.options.applicationVersion,
234
+ maintenanceWave: this.options.maintenanceWave,
235
+ channels: this.options.channels,
236
+ requestTimeoutMs: this.options.requestTimeoutMs,
237
+ streamNodes: this.options.streamNodes,
238
+ streamCompression: this.options.streamCompression,
239
+ spotNodes: this.options.spotNodes,
240
+ spotFactories: this.options.spotFactories,
241
+ actorTransferTimeoutMs: this.options.actorTransferTimeoutMs,
242
+ messageFollowDurationMs: this.options.messageFollowDurationMs,
243
+ sessionReplacementCallbackTimeoutMs: this.options.sessionReplacementCallbackTimeoutMs,
244
+ dispatch: this.options.dispatch,
245
+ worker: this.options.worker,
246
+ coreHwm: this.options.coreHwm,
247
+ applicationJobQueue: this.options.applicationJobQueue,
248
+ locations: this.options.locations
249
+ };
250
+ }
251
+
252
+ private channel(name: string): MutableChannelOptions {
253
+ if (name.trim().length === 0 || name.trim() !== name) {
254
+ throw new ZLinkConfigurationException('Channel name must not be empty or padded.');
255
+ }
256
+ if (Object.prototype.hasOwnProperty.call(this.options.channels, name)) {
257
+ throw new ZLinkConfigurationException(`Duplicate channel '${name}'.`);
258
+ }
259
+ const channel: MutableChannelOptions = {};
260
+ this.options.channels[name] = channel;
261
+ return channel;
262
+ }
263
+
264
+ private clientServerChannel(name: string): MutableChannelOptions {
265
+ if (name.trim().length === 0 || name.trim() !== name) {
266
+ throw new ZLinkConfigurationException('Channel name must not be empty or padded.');
267
+ }
268
+ if (!Object.prototype.hasOwnProperty.call(this.options.channels, name)) {
269
+ const channel: MutableChannelOptions = {};
270
+ this.options.channels[name] = channel;
271
+ return channel;
272
+ }
273
+ const current = this.options.channels[name];
274
+ if (current.publisher !== undefined || current.subscriber !== undefined) {
275
+ throw new ZLinkConfigurationException(`Duplicate channel '${name}'.`);
276
+ }
277
+ return current;
278
+ }
279
+
280
+ private spotNodeOptions(name: string): MutableSpotNodeOptions {
281
+ this.options.spotNodes[name] ??= {};
282
+ return this.options.spotNodes[name];
283
+ }
284
+ }
285
+
286
+ export class DefaultDispatchOptionsBuilder implements ZLinkDispatchOptionsBuilder {
287
+ constructor(private readonly dispatch: ZLinkDispatchOptions) {}
288
+
289
+ messageFlow(mode: ZLinkMessageFlowLogMode): this {
290
+ this.dispatch.diagnostics.messageFlow = requireMessageFlowLogMode(mode);
291
+ return this;
292
+ }
293
+
294
+ traceSampleRate(rate: number): this {
295
+ this.dispatch.diagnostics.sampleRate = requireTraceSampleRate(rate);
296
+ return this;
297
+ }
298
+
299
+ includeMessageSizes(include: boolean): this {
300
+ this.dispatch.diagnostics.includeMessageSizes = include;
301
+ return this;
302
+ }
303
+
304
+ }
305
+
306
+ interface MutableInboundDispatchRegistrationOptions {
307
+ coreHwm?: ZLinkCoreHwmOptions;
308
+ applicationJobQueue?: ZLinkApplicationJobQueueOptions;
309
+ }
310
+
311
+ export class DefaultInboundDispatchOptionsBuilder implements ZLinkInboundDispatchOptions {
312
+ constructor(private readonly options: MutableInboundDispatchRegistrationOptions) {}
313
+
314
+ coreHwmMemoryLimitBytes(value: bigint | undefined): this {
315
+ this.options.coreHwm = { ...this.options.coreHwm, memoryLimitBytes: value };
316
+ return this;
317
+ }
318
+
319
+ coreHwmBudgetBytes(value: bigint | undefined): this {
320
+ this.options.coreHwm = { ...this.options.coreHwm, budgetBytes: value };
321
+ return this;
322
+ }
323
+
324
+ coreHwmProfile(value: ZLinkCoreHwmProfile): this {
325
+ this.options.coreHwm = {
326
+ ...this.options.coreHwm,
327
+ profile: coreHwmProfileValue(value)
328
+ };
329
+ return this;
330
+ }
331
+
332
+ applicationJobQueueProfile(value: ZLinkApplicationJobQueueProfile): this {
333
+ this.options.applicationJobQueue = {
334
+ ...this.options.applicationJobQueue,
335
+ profile: value
336
+ };
337
+ return this;
338
+ }
339
+
340
+ maxQueuedApplicationJobs(value: bigint | undefined): this {
341
+ this.options.applicationJobQueue = {
342
+ ...this.options.applicationJobQueue,
343
+ maxQueuedApplicationJobs: value
344
+ };
345
+ return this;
346
+ }
347
+
348
+ applicationJobQueuePauseThresholdPercent(value: number): this {
349
+ this.options.applicationJobQueue = {
350
+ ...this.options.applicationJobQueue,
351
+ pauseThresholdPercent: value
352
+ };
353
+ return this;
354
+ }
355
+
356
+ applicationJobQueueResumeThresholdPercent(value: number): this {
357
+ this.options.applicationJobQueue = {
358
+ ...this.options.applicationJobQueue,
359
+ resumeThresholdPercent: value
360
+ };
361
+ return this;
362
+ }
363
+ }
364
+
365
+ function coreHwmProfileValue(value: ZLinkCoreHwmProfile): (typeof AutoHwmProfile)[keyof typeof AutoHwmProfile] {
366
+ switch (value) {
367
+ case ZLinkCoreHwmProfile.Compact: return AutoHwmProfile.Compact;
368
+ case ZLinkCoreHwmProfile.LowLatency: return AutoHwmProfile.LowLatency;
369
+ case ZLinkCoreHwmProfile.Balanced: return AutoHwmProfile.Balanced;
370
+ case ZLinkCoreHwmProfile.Throughput: return AutoHwmProfile.Throughput;
371
+ default: throw new TypeError('coreHwmProfile must be a supported profile.');
372
+ }
373
+ }
374
+
375
+ export class DefaultLocationOptionsBuilder implements ZLinkLocationOptions {
376
+ constructor(private readonly options: MutableLocationOptionValues) {}
377
+
378
+ ownerLeaseRenewIntervalMs(value: number): this {
379
+ this.options.ownerLeaseRenewIntervalMs = value;
380
+ return this;
381
+ }
382
+
383
+ ownerLeaseTtlMs(value: number): this {
384
+ this.options.ownerLeaseTtlMs = value;
385
+ return this;
386
+ }
387
+
388
+ pollingIntervalMs(value: number): this {
389
+ this.options.pollingIntervalMs = value;
390
+ return this;
391
+ }
392
+
393
+ storeFailureGraceMs(value: number): this {
394
+ this.options.storeFailureGraceMs = value;
395
+ return this;
396
+ }
397
+
398
+ ownerLeaseFencingMarginMs(value: number): this {
399
+ this.options.ownerLeaseFencingMarginMs = value;
400
+ return this;
401
+ }
402
+
403
+ ownerLeaseRenewTimeoutMs(value: number): this {
404
+ this.options.ownerLeaseRenewTimeoutMs = value;
405
+ return this;
406
+ }
407
+
408
+ routeCacheMaxAgeMs(value: number): this {
409
+ this.options.routeCacheMaxAgeMs = value;
410
+ return this;
411
+ }
412
+
413
+ messageFollowDurationMs(value: number): this {
414
+ this.options.messageFollowDurationMs = value;
415
+ return this;
416
+ }
417
+
418
+ sessionRelocationSealTimeoutMs(value: number): this {
419
+ this.options.sessionRelocationSealTimeoutMs = value;
420
+ return this;
421
+ }
422
+
423
+ relocationCutoverWaitTimeoutMs(value: number): this {
424
+ this.options.relocationCutoverWaitTimeoutMs = value;
425
+ return this;
426
+ }
427
+
428
+ relocationPayloadChunkLimitBytes(value: number): this {
429
+ this.options.relocationPayloadChunkLimitBytes = value;
430
+ return this;
431
+ }
432
+
433
+ relocationInFlightPayloadBudgetBytes(value: number): this {
434
+ this.options.relocationInFlightPayloadBudgetBytes = value;
435
+ return this;
436
+ }
437
+
438
+ relocationNodeInFlightPayloadBudgetBytes(value: number): this {
439
+ this.options.relocationNodeInFlightPayloadBudgetBytes = value;
440
+ return this;
441
+ }
442
+ }
443
+
444
+ function defaultDispatchOptions(): ZLinkDispatchOptions {
445
+ return {
446
+ unhandled: {
447
+ request: ZLinkUnhandledDispatchAction.ReplyError,
448
+ send: ZLinkUnhandledDispatchAction.LogAndDrop,
449
+ publish: ZLinkUnhandledDispatchAction.LogAndDrop
450
+ },
451
+ diagnostics: {
452
+ messageFlow: 'errors',
453
+ sampleRate: 1,
454
+ includeMessageSizes: false
455
+ }
456
+ };
457
+ }
458
+
459
+ class DefaultFanoutChannelBuilder implements ZLinkFanoutChannelBuilder {
460
+ private subscriberMode?: 'automatic' | 'manual';
461
+
462
+ constructor(
463
+ private readonly name: string,
464
+ private readonly channel: MutableChannelOptions
465
+ ) {}
466
+
467
+ enablePublisher(endpointOrPort: string | number = 0): this {
468
+ this.channel.publisher ??= {};
469
+ if (typeof endpointOrPort === 'string') {
470
+ requireRegistrationName(endpointOrPort, `Fanout channel '${this.name}' publisher endpoint`);
471
+ this.channel.publisher.bind = endpointOrPort;
472
+ this.channel.publisher.port = undefined;
473
+ return this;
474
+ }
475
+ this.channel.publisher.port = requireListenerPort(
476
+ endpointOrPort,
477
+ `Fanout channel '${this.name}' publisher port`
478
+ );
479
+ this.updateBind();
480
+ return this;
481
+ }
482
+
483
+ setBindHost(bindHost: string): this {
484
+ requireRegistrationName(bindHost, `Fanout channel '${this.name}' bind host`);
485
+ this.channel.publisher ??= {};
486
+ this.channel.publisher.bindHost = bindHost;
487
+ if (this.channel.publisher.port !== undefined) this.updateBind();
488
+ return this;
489
+ }
490
+
491
+ setAdvertiseHost(advertiseHost: string): this {
492
+ requireRegistrationName(advertiseHost, `Fanout channel '${this.name}' advertise host`);
493
+ this.channel.publisher ??= {};
494
+ this.channel.publisher.advertiseHost = advertiseHost;
495
+ return this;
496
+ }
497
+
498
+ routingId(routingId: string): this {
499
+ rejectGeneratedRoutingId(this.channel.routingIdPrefix, this.name);
500
+ this.channel.routingId = routingId;
501
+ return this;
502
+ }
503
+
504
+ setRoutingIdPrefix(prefix: string): this {
505
+ rejectFixedRoutingId(this.channel.routingId, this.name);
506
+ this.channel.routingIdPrefix = validateRoutingIdPrefix(prefix);
507
+ return this;
508
+ }
509
+
510
+ enableSubscriber(endpoint?: string): this {
511
+ this.selectSubscriberMode(endpoint === undefined ? 'automatic' : 'manual');
512
+ this.channel.subscriber ??= { manualConnections: [] };
513
+ if (endpoint !== undefined) {
514
+ this.channel.subscriber.manualConnections ??= [];
515
+ if (!this.channel.subscriber.manualConnections.includes(endpoint)) {
516
+ this.channel.subscriber.manualConnections.push(endpoint);
517
+ }
518
+ }
519
+ return this;
520
+ }
521
+
522
+ connect(endpoint: string): this {
523
+ requireRegistrationName(endpoint, `Fanout channel '${this.name}' subscriber endpoint`);
524
+ this.selectSubscriberMode('manual');
525
+ this.channel.subscriber ??= { manualConnections: [] };
526
+ this.channel.subscriber.manualConnections ??= [];
527
+ if (!this.channel.subscriber.manualConnections.includes(endpoint)) {
528
+ this.channel.subscriber.manualConnections.push(endpoint);
529
+ }
530
+ return this;
531
+ }
532
+
533
+ subscriberConnections(): ZLinkEndpointConnections {
534
+ this.selectSubscriberMode('manual');
535
+ this.channel.subscriber ??= { manualConnections: [] };
536
+ this.channel.subscriber.manualConnections ??= [];
537
+ return endpointConnections(this.channel.subscriber, this.channel.subscriber.manualConnections);
538
+ }
539
+
540
+ private selectSubscriberMode(mode: 'automatic' | 'manual'): void {
541
+ if (this.subscriberMode !== undefined && this.subscriberMode !== mode) {
542
+ throw new ZLinkConfigurationException(
543
+ `Fanout channel '${this.name}' cannot combine automatic and manual subscriber sources.`
544
+ );
545
+ }
546
+ this.subscriberMode = mode;
547
+ }
548
+
549
+ private updateBind(): void {
550
+ const publisher = this.channel.publisher;
551
+ if (publisher?.port === undefined) return;
552
+ publisher.bind = tcpEndpoint(publisher.bindHost ?? '127.0.0.1', publisher.port);
553
+ }
554
+ }
555
+
556
+ class DefaultClientServerChannelRoleBuilder implements ZLinkClientServerChannelRoleBuilder {
557
+ constructor(
558
+ private readonly name: string,
559
+ private readonly channel: MutableChannelOptions
560
+ ) {}
561
+
562
+ client(): ZLinkClientServerChannelClientBuilder {
563
+ if (this.channel.client !== undefined) {
564
+ throw this.duplicate('Client');
565
+ }
566
+ this.channel.client = { manualConnections: [] };
567
+ return new DefaultClientServerChannelClientBuilder(this.name, this.channel.client);
568
+ }
569
+
570
+ server(): ZLinkClientServerChannelServerBuilder {
571
+ if (this.channel.server !== undefined) {
572
+ throw this.duplicate('Server');
573
+ }
574
+ this.channel.server = {};
575
+ return new DefaultClientServerChannelServerBuilder(this.name, this.channel);
576
+ }
577
+
578
+ private duplicate(role: 'Client' | 'Server'): ZLinkConfigurationException {
579
+ return new ZLinkConfigurationException(
580
+ `ClientServer channel '${this.name}' ${role} role is already registered.`
581
+ );
582
+ }
583
+ }
584
+
585
+ class DefaultClientServerChannelClientBuilder implements ZLinkClientServerChannelClientBuilder {
586
+ constructor(
587
+ private readonly name: string,
588
+ private readonly client: MutableClientCapabilityOptions
589
+ ) {}
590
+
591
+ connect(endpoint: string): this {
592
+ requireRegistrationName(endpoint, `ClientServer channel '${this.name}' endpoint`);
593
+ this.client.manualConnections ??= [];
594
+ if (!this.client.manualConnections.includes(endpoint)) {
595
+ this.client.manualConnections.push(endpoint);
596
+ }
597
+ return this;
598
+ }
599
+ }
600
+
601
+ class DefaultClientServerChannelServerBuilder implements ZLinkClientServerChannelServerBuilder {
602
+ constructor(
603
+ private readonly name: string,
604
+ private readonly channel: MutableChannelOptions
605
+ ) {}
606
+
607
+ listen(port = 0): this {
608
+ if (!Number.isInteger(port) || port < 0 || port > 65_535) {
609
+ throw new ZLinkConfigurationException(
610
+ `ClientServer channel '${this.name}' port must be between 0 and 65535.`
611
+ );
612
+ }
613
+ this.server.port = port;
614
+ this.updateBind();
615
+ return this;
616
+ }
617
+
618
+ setBindHost(bindHost: string): this {
619
+ requireRegistrationName(bindHost, `ClientServer channel '${this.name}' bind host`);
620
+ this.server.bindHost = bindHost;
621
+ if (this.server.port !== undefined) this.updateBind();
622
+ return this;
623
+ }
624
+
625
+ setAdvertiseHost(advertiseHost: string): this {
626
+ requireRegistrationName(advertiseHost, `ClientServer channel '${this.name}' advertise host`);
627
+ this.server.advertiseHost = advertiseHost;
628
+ return this;
629
+ }
630
+
631
+ setWeight(weight: number): this {
632
+ this.server.weight = requirePublicWeight(
633
+ weight,
634
+ `ClientServer channel '${this.name}' weight`
635
+ );
636
+ return this;
637
+ }
638
+
639
+ addHandlerGroup(groupName: string): this {
640
+ requireRegistrationName(groupName, `ClientServer channel '${this.name}' handler group`);
641
+ this.channel.handlerGroups ??= [];
642
+ if (!this.channel.handlerGroups.includes(groupName)) this.channel.handlerGroups.push(groupName);
643
+ return this;
644
+ }
645
+
646
+ addSendHandler<TMessage>(handlerType: Type<import('../Handlers').ZLinkSendHandler<TMessage>>): this {
647
+ this.channel.sendHandlers ??= [];
648
+ this.channel.sendHandlers.push({ packetName: handlerPacketName(handlerType), handlerType });
649
+ return this;
650
+ }
651
+
652
+ addRequestHandler<TRequest, TReply>(
653
+ handlerType: Type<import('../Handlers').ZLinkRequestHandler<TRequest, TReply>>
654
+ ): this {
655
+ this.channel.requestHandlers ??= [];
656
+ this.channel.requestHandlers.push({ packetName: handlerPacketName(handlerType), handlerType });
657
+ return this;
658
+ }
659
+
660
+ private get server(): MutableServerCapabilityOptions {
661
+ return this.channel.server!;
662
+ }
663
+
664
+ private updateBind(): void {
665
+ const host = this.server.bindHost ?? '127.0.0.1';
666
+ const endpointHost = host.includes(':') && !host.startsWith('[') ? `[${host}]` : host;
667
+ this.server.bind = `tcp://${endpointHost}:${this.server.port ?? 0}`;
668
+ }
669
+ }
670
+
671
+ class DefaultStreamNodeBuilder implements ZLinkStreamNodeBuilder {
672
+ constructor(private readonly streamNode: MutableStreamNodeOptions) {}
673
+
674
+ bind(endpointOrPort: string | number = 0): this {
675
+ if (typeof endpointOrPort === 'string') {
676
+ requireRegistrationName(endpointOrPort, 'STREAM bind endpoint');
677
+ this.streamNode.bind = endpointOrPort;
678
+ this.streamNode.port = undefined;
679
+ return this;
680
+ }
681
+ this.streamNode.port = requireListenerPort(endpointOrPort, 'STREAM bind port');
682
+ this.updateBind();
683
+ return this;
684
+ }
685
+
686
+ setBindHost(bindHost: string): this {
687
+ requireRegistrationName(bindHost, 'STREAM bind host');
688
+ this.streamNode.bindHost = bindHost;
689
+ if (this.streamNode.port !== undefined) this.updateBind();
690
+ return this;
691
+ }
692
+
693
+ setAdvertiseHost(advertiseHost: string): this {
694
+ requireRegistrationName(advertiseHost, 'STREAM advertise host');
695
+ this.streamNode.advertiseHost = advertiseHost;
696
+ return this;
697
+ }
698
+
699
+ configureSocket(): ZLinkStreamSocketConfig {
700
+ return this.streamNode;
701
+ }
702
+
703
+ enableActorDispatch(): this {
704
+ if (this.streamNode.actorDispatchEnabled === true) {
705
+ throw new ZLinkConfigurationException('STREAM node actor dispatch is already enabled.');
706
+ }
707
+ this.streamNode.actorDispatchEnabled = true;
708
+ return this;
709
+ }
710
+
711
+ setTlsServer(certificatePath: string, keyPath: string, requireClientCertificate: boolean = false): this {
712
+ this.streamNode.tlsServer = {
713
+ certificatePath,
714
+ keyPath,
715
+ requireClientCertificate
716
+ };
717
+ return this;
718
+ }
719
+
720
+ registerSession<TSession extends ZLinkSession>(sessionType: Type<TSession> | Type<ZLinkSessionFactory<TSession>>): this {
721
+ if (this.streamNode.session !== undefined) {
722
+ throw new ZLinkConfigurationException('STREAM node cannot register more than one header stream session.');
723
+ }
724
+ this.streamNode.session = sessionType;
725
+ return this;
726
+ }
727
+
728
+ private updateBind(): void {
729
+ if (this.streamNode.port === undefined) return;
730
+ this.streamNode.bind = tcpEndpoint(
731
+ this.streamNode.bindHost ?? '127.0.0.1',
732
+ this.streamNode.port
733
+ );
734
+ }
735
+ }
736
+
737
+ export class DefaultStreamCompressionBuilder implements ZLinkStreamCompressionBuilder {
738
+ constructor(private readonly options: MutableStreamCompressionOptions) {}
739
+
740
+ useDefault(): this {
741
+ this.options.disabled = false;
742
+ this.options.codec = undefined;
743
+ return this;
744
+ }
745
+
746
+ useLz4(): this {
747
+ return this.useDefault();
748
+ }
749
+
750
+ use(codec: ZLinkStreamCompressionCodec): this {
751
+ if (!isStreamCompressionCodec(codec)) {
752
+ throw new ZLinkConfigurationException('STREAM compression codec must provide compress and decompress functions.');
753
+ }
754
+ this.options.disabled = false;
755
+ this.options.codec = codec;
756
+ return this;
757
+ }
758
+
759
+ disable(): this {
760
+ this.options.disabled = true;
761
+ this.options.codec = undefined;
762
+ return this;
763
+ }
764
+ }
765
+
766
+ class DefaultSpotNodeBuilder implements ZLinkSpotNodeBuilder {
767
+ constructor(
768
+ private readonly name: string,
769
+ private readonly spotNode: MutableSpotNodeOptions
770
+ ) {}
771
+
772
+ routingId(routingId: RoutingId): this {
773
+ rejectGeneratedRoutingId(this.spotNode.routingIdPrefix, this.name);
774
+ this.spotNode.routingId = routingId;
775
+ if (this.spotNode.router !== undefined) {
776
+ this.spotNode.router.routingId = routingId;
777
+ }
778
+ if (this.spotNode.pubSub !== undefined) {
779
+ this.spotNode.pubSub.routingId = routingId;
780
+ }
781
+ return this;
782
+ }
783
+
784
+ setRoutingIdPrefix(prefix: string): this {
785
+ rejectFixedRoutingId(this.spotNode.routingId, this.name);
786
+ this.spotNode.routingIdPrefix = validateRoutingIdPrefix(prefix);
787
+ return this;
788
+ }
789
+
790
+ enableRouter(endpoint: string, routingId?: RoutingId, connect?: string | readonly string[]): this {
791
+ this.spotNode.router = {
792
+ ...(this.spotNode.router ?? {}),
793
+ bind: endpoint,
794
+ routingId: routingId ?? this.spotNode.routingId,
795
+ manualConnections: connect === undefined ? this.spotNode.router?.manualConnections : endpointList(connect)
796
+ };
797
+ return this;
798
+ }
799
+
800
+ connectRouter(endpoint: string): this;
801
+ connectRouter(peerRid: RoutingId, endpoint: string): this;
802
+ connectRouter(peerRidOrEndpoint: RoutingId | string, endpoint?: string): this {
803
+ this.spotNode.router ??= { manualConnections: [] };
804
+ if (endpoint === undefined) {
805
+ this.spotNode.router.manualConnections ??= [];
806
+ this.spotNode.router.manualConnections.push(peerRidOrEndpoint as string);
807
+ return this;
808
+ }
809
+ this.spotNode.router.manualPeerConnections ??= [];
810
+ this.spotNode.router.manualPeerConnections.push({
811
+ peerRid: peerRidOrEndpoint,
812
+ endpoint
813
+ });
814
+ return this;
815
+ }
816
+
817
+ enablePubSub(endpoint: string, routingId?: RoutingId, connect?: string | readonly string[]): this {
818
+ this.spotNode.pubSub = {
819
+ ...(this.spotNode.pubSub ?? {}),
820
+ bind: endpoint,
821
+ routingId: routingId ?? this.spotNode.routingId,
822
+ manualConnections: connect === undefined ? this.spotNode.pubSub?.manualConnections : endpointList(connect)
823
+ };
824
+ return this;
825
+ }
826
+
827
+ connectPeerPub(endpoint: string): this {
828
+ this.spotNode.pubSub ??= { manualConnections: [] };
829
+ this.spotNode.pubSub.manualConnections ??= [];
830
+ this.spotNode.pubSub.manualConnections.push(endpoint);
831
+ return this;
832
+ }
833
+
834
+ }
835
+
836
+ class DefaultMeshNodeBuilder implements ZLinkMeshNodeBuilder {
837
+ private readonly spot: DefaultSpotNodeBuilder;
838
+
839
+ constructor(
840
+ private readonly name: string,
841
+ private readonly node: MutableSpotNodeOptions
842
+ ) {
843
+ this.spot = new DefaultSpotNodeBuilder(name, node);
844
+ }
845
+
846
+ channel(channelName: string): ZLinkMeshChannelBuilder {
847
+ requireRegistrationName(channelName, 'Mesh channel');
848
+ this.node.meshChannels ??= {};
849
+ if (Object.prototype.hasOwnProperty.call(this.node.meshChannels, channelName)) {
850
+ throw new ZLinkConfigurationException(
851
+ `Duplicate channel '${channelName}' in RouteMesh '${this.name}'.`
852
+ );
853
+ }
854
+ const channel: MutableMeshChannelOptions = {};
855
+ this.node.meshChannels[channelName] = channel;
856
+ return new DefaultMeshChannelBuilder(channel);
857
+ }
858
+
859
+ listen(endpointOrPort: string | number = 0): this {
860
+ this.node.router ??= {};
861
+ if (typeof endpointOrPort === 'string') {
862
+ requireRegistrationName(endpointOrPort, 'RouteMesh listen endpoint');
863
+ this.node.router.bind = endpointOrPort;
864
+ this.node.router.port = undefined;
865
+ return this;
866
+ }
867
+ if (!Number.isInteger(endpointOrPort) || endpointOrPort < 0 || endpointOrPort > 65_535) {
868
+ throw new ZLinkConfigurationException(
869
+ `RouteMesh '${this.name}' port must be between 0 and 65535.`
870
+ );
871
+ }
872
+ this.node.router.port = endpointOrPort;
873
+ this.updateBind();
874
+ return this;
875
+ }
876
+
877
+ setBindHost(bindHost: string): this {
878
+ requireRegistrationName(bindHost, `RouteMesh '${this.name}' bind host`);
879
+ this.node.router ??= {};
880
+ this.node.router.bindHost = bindHost;
881
+ if (this.node.router.port !== undefined) this.updateBind();
882
+ return this;
883
+ }
884
+
885
+ setAdvertiseHost(advertiseHost: string): this {
886
+ requireRegistrationName(advertiseHost, `RouteMesh '${this.name}' advertise host`);
887
+ this.node.router ??= {};
888
+ this.node.router.advertiseHost = advertiseHost;
889
+ return this;
890
+ }
891
+
892
+ routingId(routingId: RoutingId): this {
893
+ this.spot.routingId(routingId);
894
+ return this;
895
+ }
896
+
897
+ setRoutingIdPrefix(prefix: string): this {
898
+ this.spot.setRoutingIdPrefix(prefix);
899
+ return this;
900
+ }
901
+
902
+ setPlacementWeight(weight: number): this {
903
+ this.node.placementWeight = requirePublicWeight(weight, 'Placement weight');
904
+ return this;
905
+ }
906
+
907
+ setActorLimit(limit: number): this {
908
+ this.node.actorLimit = requireCapacity(limit, 'Actor limit');
909
+ return this;
910
+ }
911
+
912
+ setSpotLimit(limit: number): this {
913
+ this.node.spotLimit = requireCapacity(limit, 'Spot limit');
914
+ return this;
915
+ }
916
+
917
+ setActivationConcurrency(limit: number): this {
918
+ this.node.activationConcurrencyLimit = requirePositiveCapacity(
919
+ limit,
920
+ 'Activation concurrency limit'
921
+ );
922
+ return this;
923
+ }
924
+
925
+ setInstanceSpotIdleTimeout(timeoutMs: number): this {
926
+ this.node.instanceSpotIdleTimeoutMs = requireNonNegativeSafeInteger(
927
+ timeoutMs,
928
+ 'Instance Spot idle timeout'
929
+ );
930
+ return this;
931
+ }
932
+
933
+ configureRouterSocket(): ZLinkMeshNodeSocketConfig {
934
+ this.node.router ??= {};
935
+ return this.node.router as ZLinkMeshNodeSocketConfig;
936
+ }
937
+
938
+ configureSpotPublisher(): ZLinkSpotPublisherConfig {
939
+ this.node.publisherConfig ??= {};
940
+ return this.node.publisherConfig as ZLinkSpotPublisherConfig;
941
+ }
942
+
943
+ peerConnections(): ZLinkMeshPeerConnections {
944
+ this.node.router ??= {};
945
+ return new DefaultMeshPeerConnections(this.node.router);
946
+ }
947
+
948
+ setDefaultRequestTimeout(timeoutMs: number): this {
949
+ this.node.requestTimeoutMs = normalizeOptionalPositiveInteger(
950
+ timeoutMs,
951
+ `RouteMesh '${this.name}' default request timeout`
952
+ );
953
+ return this;
954
+ }
955
+
956
+ objects(): ZLinkMeshObjectRoleBuilder {
957
+ return new DefaultMeshObjectRoleBuilder(this.name, this.node);
958
+ }
959
+
960
+ addRouteSendHandler<TMessage>(handlerType: Type<import('../Handlers').ZLinkRouteSendHandler<TMessage>>): this {
961
+ this.node.routeSendHandlers ??= [];
962
+ this.node.routeSendHandlers.push({ packetName: handlerPacketName(handlerType), handlerType });
963
+ return this;
964
+ }
965
+
966
+ addRouteRequestHandler<TRequest, TReply>(
967
+ handlerType: Type<import('../Handlers').ZLinkRouteRequestHandler<TRequest, TReply>>
968
+ ): this {
969
+ this.node.routeRequestHandlers ??= [];
970
+ this.node.routeRequestHandlers.push({ packetName: handlerPacketName(handlerType), handlerType });
971
+ return this;
972
+ }
973
+
974
+ private updateBind(): void {
975
+ const router = this.node.router;
976
+ if (router?.port === undefined) return;
977
+ const bindHost = router.bindHost ?? '127.0.0.1';
978
+ const host = bindHost.includes(':') && !bindHost.startsWith('[')
979
+ ? `[${bindHost}]`
980
+ : bindHost;
981
+ router.bind = `tcp://${host}:${router.port}`;
982
+ }
983
+ }
984
+
985
+ class DefaultMeshObjectRoleBuilder implements ZLinkMeshObjectRoleBuilder {
986
+ constructor(
987
+ private readonly meshName: string,
988
+ private readonly node: MutableSpotNodeOptions
989
+ ) {}
990
+
991
+ client(): ZLinkMeshObjectClientBuilder {
992
+ this.node.objectRole = 'client';
993
+ return {};
994
+ }
995
+
996
+ server(): ZLinkMeshObjectServerBuilder {
997
+ this.node.objectRole = 'server';
998
+ return new DefaultMeshObjectServerBuilder(this.meshName, this.node);
999
+ }
1000
+ }
1001
+
1002
+ abstract class DefaultFactoryBuilder<TInstance> {
1003
+ private relocation: ZLinkRelocationConfiguration<TInstance> | undefined;
1004
+ private sealed = false;
1005
+
1006
+ protected disable(): void {
1007
+ this.select({ kind: 'disabled' });
1008
+ }
1009
+
1010
+ protected recreate(): void {
1011
+ this.select({ kind: 'recreate' });
1012
+ }
1013
+
1014
+ protected preserve(adapterType: Type): void {
1015
+ if (typeof adapterType !== 'function') {
1016
+ throw new ZLinkConfigurationException(
1017
+ 'PreserveStateWith relocation requires an adapter type.'
1018
+ );
1019
+ }
1020
+ this.select({ kind: 'snapshot', adapterType });
1021
+ }
1022
+
1023
+ protected relocationConfiguration(): ZLinkRelocationConfiguration<TInstance> {
1024
+ if (this.relocation === undefined) {
1025
+ throw new ZLinkConfigurationException(
1026
+ 'Factory configure callback must select exactly one relocation policy.'
1027
+ );
1028
+ }
1029
+ return this.relocation;
1030
+ }
1031
+
1032
+ seal(): void {
1033
+ this.sealed = true;
1034
+ }
1035
+
1036
+ protected assertMutable(): void {
1037
+ if (this.sealed) {
1038
+ throw new ZLinkConfigurationException(
1039
+ 'Factory builder cannot be changed after the configure callback returns.'
1040
+ );
1041
+ }
1042
+ }
1043
+
1044
+ private select(relocation: ZLinkRelocationConfiguration<TInstance>): void {
1045
+ this.assertMutable();
1046
+ if (this.relocation !== undefined) {
1047
+ throw new ZLinkConfigurationException(
1048
+ 'Factory configure callback must select exactly one relocation policy.'
1049
+ );
1050
+ }
1051
+ this.relocation = relocation;
1052
+ }
1053
+ }
1054
+
1055
+ class DefaultActorFactoryBuilder<TActor extends ZLinkActor>
1056
+ extends DefaultFactoryBuilder<TActor>
1057
+ implements ZLinkActorFactoryBuilder<TActor> {
1058
+ disableRelocation(): void {
1059
+ this.disable();
1060
+ }
1061
+
1062
+ recreateOnRelocation(): void {
1063
+ this.recreate();
1064
+ }
1065
+
1066
+ preserveStateWith(
1067
+ adapterType: Type<ZLinkActorRelocationAdapter<TActor>>
1068
+ ): void {
1069
+ this.preserve(adapterType);
1070
+ }
1071
+
1072
+ build(): {
1073
+ readonly options: ZLinkActorFactoryConfiguration;
1074
+ readonly relocation: ZLinkRelocationConfiguration<TActor>;
1075
+ } {
1076
+ return {
1077
+ options: {},
1078
+ relocation: this.relocationConfiguration()
1079
+ };
1080
+ }
1081
+ }
1082
+
1083
+ class DefaultUserSpotFactoryBuilder<TSpot extends ZLinkSpot>
1084
+ extends DefaultFactoryBuilder<TSpot>
1085
+ implements ZLinkUserSpotFactoryBuilder<TSpot> {
1086
+ private stableTypeLimitValue: number | undefined;
1087
+ private executionModeValue = ZLinkUserSpotExecutionMode.SpotWide;
1088
+ private relocationCoordinationModeValue = ZLinkSpotRelocationCoordinationMode.FrameworkManaged;
1089
+
1090
+ stableTypeLimit(limit: number): this {
1091
+ this.assertMutable();
1092
+ validateStableTypeLimit(limit);
1093
+ this.stableTypeLimitValue = limit;
1094
+ return this;
1095
+ }
1096
+
1097
+ executionMode(mode: ZLinkUserSpotExecutionMode): this {
1098
+ this.assertMutable();
1099
+ this.executionModeValue = mode;
1100
+ return this;
1101
+ }
1102
+
1103
+ relocationCoordinationMode(mode: ZLinkSpotRelocationCoordinationMode): this {
1104
+ this.assertMutable();
1105
+ this.relocationCoordinationModeValue = mode;
1106
+ return this;
1107
+ }
1108
+
1109
+ disableRelocation(): void {
1110
+ this.disable();
1111
+ }
1112
+
1113
+ recreateOnRelocation(): void {
1114
+ this.recreate();
1115
+ }
1116
+
1117
+ preserveStateWith(
1118
+ adapterType: Type<ZLinkSpotRelocationAdapter<TSpot>>
1119
+ ): void {
1120
+ this.preserve(adapterType);
1121
+ }
1122
+
1123
+ build(): {
1124
+ readonly options: ZLinkUserSpotFactoryConfiguration;
1125
+ readonly relocation: ZLinkRelocationConfiguration<TSpot>;
1126
+ } {
1127
+ const relocation = this.relocationConfiguration();
1128
+ const options = {
1129
+ stableTypeLimit: this.stableTypeLimitValue,
1130
+ executionMode: this.executionModeValue,
1131
+ relocationCoordinationMode: this.relocationCoordinationModeValue
1132
+ };
1133
+ validateUserSpotFactoryOptions(options);
1134
+ if (
1135
+ options.executionMode === ZLinkUserSpotExecutionMode.PerActor
1136
+ && relocation.kind !== 'recreate'
1137
+ ) {
1138
+ throw new ZLinkConfigurationException(
1139
+ 'PerActor User Spots require RecreateOnRelocation.'
1140
+ );
1141
+ }
1142
+ return { options, relocation };
1143
+ }
1144
+ }
1145
+
1146
+ class DefaultInstanceSpotFactoryBuilder<TSpot extends ZLinkInstanceSpot>
1147
+ extends DefaultFactoryBuilder<TSpot>
1148
+ implements ZLinkInstanceSpotFactoryBuilder<TSpot> {
1149
+ private stableTypeLimitValue: number | undefined;
1150
+
1151
+ stableTypeLimit(limit: number): this {
1152
+ this.assertMutable();
1153
+ validateStableTypeLimit(limit);
1154
+ this.stableTypeLimitValue = limit;
1155
+ return this;
1156
+ }
1157
+
1158
+ disableRelocation(): void {
1159
+ this.disable();
1160
+ }
1161
+
1162
+ recreateOnRelocation(): void {
1163
+ this.recreate();
1164
+ }
1165
+
1166
+ preserveStateWith(
1167
+ adapterType: Type<ZLinkSpotRelocationAdapter<TSpot>>
1168
+ ): void {
1169
+ this.preserve(adapterType);
1170
+ }
1171
+
1172
+ build(): {
1173
+ readonly options: ZLinkInstanceSpotFactoryConfiguration;
1174
+ readonly relocation: ZLinkRelocationConfiguration<TSpot>;
1175
+ } {
1176
+ return {
1177
+ options: { stableTypeLimit: this.stableTypeLimitValue },
1178
+ relocation: this.relocationConfiguration()
1179
+ };
1180
+ }
1181
+ }
1182
+
1183
+ class DefaultMeshObjectServerBuilder implements ZLinkMeshObjectServerBuilder {
1184
+ constructor(
1185
+ private readonly meshName: string,
1186
+ private readonly node: MutableSpotNodeOptions
1187
+ ) {}
1188
+
1189
+ addEntrySpot<TEntrySpot extends ZLinkEntrySpot>(entrySpotType: Type<TEntrySpot>): this {
1190
+ registerEntrySpot(this.node, entrySpotType);
1191
+ return this;
1192
+ }
1193
+
1194
+ addSpotFactory<TSpot extends ZLinkSpot>(
1195
+ spotType: string,
1196
+ implementation: Type<TSpot>,
1197
+ configure: (builder: ZLinkUserSpotFactoryBuilder<TSpot>) => void
1198
+ ): this {
1199
+ const stableType = requireStableObjectType(spotType, 'User Spot type');
1200
+ requireFactoryConfigure(configure);
1201
+ const factory = new DefaultUserSpotFactoryBuilder<TSpot>();
1202
+ let built: ReturnType<typeof factory.build>;
1203
+ try {
1204
+ configure(factory);
1205
+ built = factory.build();
1206
+ } finally {
1207
+ factory.seal();
1208
+ }
1209
+ const { options, relocation } = built;
1210
+ validateUserSpotFactoryOptions(options);
1211
+ this.node.spotFactoryRegistrations ??= {};
1212
+ rejectDuplicateObjectType(this.node.spotFactoryRegistrations, stableType, this.meshName);
1213
+ this.node.spotFactoryRegistrations[stableType] = {
1214
+ implementation,
1215
+ options: {
1216
+ ...options,
1217
+ executionMode: options.executionMode
1218
+ },
1219
+ relocation
1220
+ };
1221
+ registerSpotFactory(this.node, implementation);
1222
+ return this;
1223
+ }
1224
+
1225
+ addInstanceSpotFactory<TSpot extends ZLinkInstanceSpot>(
1226
+ instanceSpotType: string,
1227
+ implementation: Type<TSpot>,
1228
+ configure: (builder: ZLinkInstanceSpotFactoryBuilder<TSpot>) => void
1229
+ ): this {
1230
+ const stableType = requireStableObjectType(instanceSpotType, 'Instance Spot type');
1231
+ requireFactoryConfigure(configure);
1232
+ const factory = new DefaultInstanceSpotFactoryBuilder<TSpot>();
1233
+ let built: ReturnType<typeof factory.build>;
1234
+ try {
1235
+ configure(factory);
1236
+ built = factory.build();
1237
+ } finally {
1238
+ factory.seal();
1239
+ }
1240
+ const { options, relocation } = built;
1241
+ validateStableTypeLimit(options.stableTypeLimit);
1242
+ this.node.instanceSpotFactories ??= {};
1243
+ if (Object.hasOwn(this.node.instanceSpotFactories, stableType)) {
1244
+ throw new ZLinkConfigurationException(
1245
+ `Duplicate Instance Spot factory '${stableType}' on RouteMesh '${this.meshName}'.`
1246
+ );
1247
+ }
1248
+ this.node.instanceSpotFactories[stableType] = implementation;
1249
+ this.node.instanceSpotFactoryRegistrations ??= {};
1250
+ this.node.instanceSpotFactoryRegistrations[stableType] = {
1251
+ implementation,
1252
+ options,
1253
+ relocation
1254
+ };
1255
+ return this;
1256
+ }
1257
+
1258
+ addActorFactory<TActor extends ZLinkActor>(
1259
+ actorType: string,
1260
+ implementation: Type<ZLinkActorFactory<TActor>>,
1261
+ configure: (builder: ZLinkActorFactoryBuilder<TActor>) => void
1262
+ ): this {
1263
+ const stableType = requireStableObjectType(actorType, 'Actor type');
1264
+ requireFactoryConfigure(configure);
1265
+ const factory = new DefaultActorFactoryBuilder<TActor>();
1266
+ let built: ReturnType<typeof factory.build>;
1267
+ try {
1268
+ configure(factory);
1269
+ built = factory.build();
1270
+ } finally {
1271
+ factory.seal();
1272
+ }
1273
+ const { options, relocation } = built;
1274
+ this.node.actorFactories = typeMapToRecord(this.node.actorFactories);
1275
+ registerActorFactory(this.node, stableType, implementation);
1276
+ this.node.actorFactoryRegistrations ??= {};
1277
+ this.node.actorFactoryRegistrations[stableType] = {
1278
+ implementation,
1279
+ options,
1280
+ relocation
1281
+ };
1282
+ return this;
1283
+ }
1284
+ }
1285
+
1286
+ class DefaultMeshChannelBuilder implements ZLinkMeshChannelBuilder {
1287
+ constructor(private readonly channel: MutableMeshChannelOptions) {}
1288
+
1289
+ client(): ZLinkMeshChannelClientBuilder {
1290
+ if (this.channel.client === true || this.channel.server === true) {
1291
+ throw new ZLinkConfigurationException(
1292
+ 'RouteMesh channel must register exactly one role; client() and server() cannot both be used or called twice.'
1293
+ );
1294
+ }
1295
+ this.channel.client = true;
1296
+ return new DefaultMeshChannelClientBuilder();
1297
+ }
1298
+
1299
+ server(): ZLinkMeshChannelServerBuilder {
1300
+ if (this.channel.client === true || this.channel.server === true) {
1301
+ throw new ZLinkConfigurationException(
1302
+ 'RouteMesh channel must register exactly one role; client() and server() cannot both be used or called twice.'
1303
+ );
1304
+ }
1305
+ this.channel.server = true;
1306
+ return new DefaultMeshChannelServerBuilder(this.channel);
1307
+ }
1308
+ }
1309
+
1310
+ class DefaultMeshChannelClientBuilder implements ZLinkMeshChannelClientBuilder {}
1311
+
1312
+ class DefaultMeshChannelServerBuilder implements ZLinkMeshChannelServerBuilder {
1313
+ constructor(private readonly channel: MutableMeshChannelOptions) {}
1314
+
1315
+ setWeight(weight: number): this {
1316
+ this.channel.weight = requirePublicWeight(weight, 'Mesh channel weight');
1317
+ return this;
1318
+ }
1319
+
1320
+ addHandlerGroup(groupName: string): this {
1321
+ requireRegistrationName(groupName, 'Mesh channel handler group');
1322
+ this.channel.handlerGroups ??= [];
1323
+ if (!this.channel.handlerGroups.includes(groupName)) this.channel.handlerGroups.push(groupName);
1324
+ return this;
1325
+ }
1326
+
1327
+ addSendHandler<TMessage>(handlerType: Type<import('../Handlers').ZLinkSendHandler<TMessage>>): this {
1328
+ this.channel.sendHandlers ??= [];
1329
+ this.channel.sendHandlers.push({ packetName: handlerPacketName(handlerType), handlerType });
1330
+ return this;
1331
+ }
1332
+
1333
+ addRequestHandler<TRequest, TReply>(
1334
+ handlerType: Type<import('../Handlers').ZLinkRequestHandler<TRequest, TReply>>
1335
+ ): this {
1336
+ this.channel.requestHandlers ??= [];
1337
+ this.channel.requestHandlers.push({ packetName: handlerPacketName(handlerType), handlerType });
1338
+ return this;
1339
+ }
1340
+ }
1341
+
1342
+ class DefaultMeshPeerConnections implements ZLinkMeshPeerConnections {
1343
+ constructor(private readonly router: MutableSpotRouterCapabilityOptions) {}
1344
+
1345
+ connect(endpoint: string): void;
1346
+ connect(expectedRoutingId: RoutingId, endpoint: string): void;
1347
+ connect(expectedRoutingIdOrEndpoint: RoutingId | string, endpoint?: string): void {
1348
+ if (endpoint === undefined) {
1349
+ requireRegistrationName(expectedRoutingIdOrEndpoint, 'Mesh peer endpoint');
1350
+ const normalizedEndpoint = normalizeEndpoint(expectedRoutingIdOrEndpoint);
1351
+ this.router.manualConnections ??= [];
1352
+ if (!this.router.manualConnections.includes(normalizedEndpoint)) {
1353
+ this.router.manualConnections.push(normalizedEndpoint);
1354
+ }
1355
+ return;
1356
+ }
1357
+ requireRegistrationName(endpoint, 'Mesh peer endpoint');
1358
+ const normalizedEndpoint = normalizeEndpoint(endpoint);
1359
+ this.router.manualPeerConnections ??= [];
1360
+ if (!this.router.manualPeerConnections.some(
1361
+ (peer) => peer.endpoint === normalizedEndpoint && peer.peerRid === expectedRoutingIdOrEndpoint
1362
+ )) {
1363
+ this.router.manualPeerConnections.push({ peerRid: expectedRoutingIdOrEndpoint, endpoint: normalizedEndpoint });
1364
+ }
1365
+ }
1366
+
1367
+ disconnect(endpoint: string): void {
1368
+ // The public connect/disconnect-by-endpoint API accepts any equivalent
1369
+ // notation for an endpoint already connected under its canonical form
1370
+ // (see connect() above); without normalizing here, disconnect() with a
1371
+ // differently-cased or -formatted endpoint would silently no-op.
1372
+ const normalizedEndpoint = normalizeEndpoint(endpoint);
1373
+ this.router.manualConnections = this.router.manualConnections?.filter((value) => value !== normalizedEndpoint);
1374
+ this.router.manualPeerConnections = this.router.manualPeerConnections?.filter(
1375
+ (value) => value.endpoint !== normalizedEndpoint
1376
+ );
1377
+ }
1378
+
1379
+ listConnections(): readonly ZLinkMeshPeerConnection[] {
1380
+ return [
1381
+ ...(this.router.manualConnections ?? []).map((endpoint) => ({ endpoint })),
1382
+ ...(this.router.manualPeerConnections ?? []).map((peer) => ({
1383
+ endpoint: peer.endpoint,
1384
+ expectedRoutingId: peer.peerRid
1385
+ }))
1386
+ ];
1387
+ }
1388
+ }
1389
+
1390
+ function endpointList(endpoint: string | readonly string[]): string[] {
1391
+ return typeof endpoint === 'string' ? [endpoint] : [...endpoint];
1392
+ }
1393
+
1394
+ function requireStableObjectType(value: string, label: string): string {
1395
+ const byteLength = Buffer.byteLength(value, 'utf8');
1396
+ if (byteLength < 1 || byteLength > 255 || value.includes('\0')) {
1397
+ throw new ZLinkConfigurationException(
1398
+ `${label} must contain 1..255 UTF-8 bytes and no NUL.`
1399
+ );
1400
+ }
1401
+ return value;
1402
+ }
1403
+
1404
+ function requirePositiveCapacity(value: number, label: string): number {
1405
+ if (!Number.isSafeInteger(value) || value <= 0 || value > 0x7fff_ffff) {
1406
+ throw new ZLinkConfigurationException(`${label} must be an integer in 1..2147483647.`);
1407
+ }
1408
+ return value;
1409
+ }
1410
+
1411
+ function requireCapacity(value: number, label: string): number {
1412
+ if (!Number.isSafeInteger(value) || value < 0 || value > 0x7fff_ffff) {
1413
+ throw new ZLinkConfigurationException(`${label} must be an integer in 0..2147483647.`);
1414
+ }
1415
+ return value;
1416
+ }
1417
+
1418
+ function requireNonNegativeSafeInteger(value: number, label: string): number {
1419
+ if (!Number.isSafeInteger(value) || value < 0) {
1420
+ throw new ZLinkConfigurationException(
1421
+ `${label} must be a non-negative safe integer.`
1422
+ );
1423
+ }
1424
+ return value;
1425
+ }
1426
+
1427
+ function requirePublicWeight(value: number, label: string): number {
1428
+ if (!Number.isInteger(value) || value < 0 || value > 10_000) {
1429
+ throw new ZLinkConfigurationException(`${label} must be an integer in 0..10000.`);
1430
+ }
1431
+ return value;
1432
+ }
1433
+
1434
+ function requireFactoryConfigure(
1435
+ configure: unknown
1436
+ ): asserts configure is (builder: unknown) => void {
1437
+ if (typeof configure !== 'function') {
1438
+ throw new ZLinkConfigurationException(
1439
+ 'Object factory requires a configure callback.'
1440
+ );
1441
+ }
1442
+ }
1443
+
1444
+ function validateUserSpotFactoryOptions(
1445
+ options: ZLinkUserSpotFactoryConfiguration | undefined
1446
+ ): void {
1447
+ validateStableTypeLimit(options?.stableTypeLimit);
1448
+ const executionMode: unknown = options?.executionMode;
1449
+ if (
1450
+ executionMode !== undefined
1451
+ && executionMode !== ZLinkUserSpotExecutionMode.SpotWide
1452
+ && executionMode !== ZLinkUserSpotExecutionMode.PerActor
1453
+ ) {
1454
+ throw new ZLinkConfigurationException('User Spot executionMode is invalid.');
1455
+ }
1456
+ if (
1457
+ options?.relocationCoordinationMode !== ZLinkSpotRelocationCoordinationMode.FrameworkManaged
1458
+ && options?.relocationCoordinationMode !== ZLinkSpotRelocationCoordinationMode.ApplicationSignaled
1459
+ ) {
1460
+ throw new ZLinkConfigurationException('User Spot relocationCoordinationMode is invalid.');
1461
+ }
1462
+ if (
1463
+ options.executionMode === ZLinkUserSpotExecutionMode.PerActor
1464
+ && options.relocationCoordinationMode === ZLinkSpotRelocationCoordinationMode.ApplicationSignaled
1465
+ ) {
1466
+ throw new ZLinkConfigurationException(
1467
+ 'ApplicationSignaled relocation coordination mode is valid only for SpotWide User Spots.'
1468
+ );
1469
+ }
1470
+ }
1471
+
1472
+ function validateStableTypeLimit(value: number | undefined): void {
1473
+ if (
1474
+ value !== undefined
1475
+ && (!Number.isInteger(value) || value < 0 || value > 2_147_483_647)
1476
+ ) {
1477
+ throw new ZLinkConfigurationException(
1478
+ 'stableTypeLimit must be an integer from 0 through 2147483647.'
1479
+ );
1480
+ }
1481
+ }
1482
+
1483
+ function rejectDuplicateObjectType(
1484
+ registrations: Readonly<Record<string, unknown>>,
1485
+ stableType: string,
1486
+ meshName: string
1487
+ ): void {
1488
+ if (Object.hasOwn(registrations, stableType)) {
1489
+ throw new ZLinkConfigurationException(
1490
+ `Duplicate object factory '${stableType}' on RouteMesh '${meshName}'.`
1491
+ );
1492
+ }
1493
+ }
1494
+
1495
+ interface MutableFrameworkRegistrationOptions {
1496
+ network: ZLinkNetworkOptions;
1497
+ applicationVersion?: bigint;
1498
+ maintenanceWave?: string;
1499
+ actorTransferTimeoutMs?: number;
1500
+ messageFollowDurationMs?: number;
1501
+ sessionReplacementCallbackTimeoutMs?: number;
1502
+ codecs?: MutableCodecRegistryOptions;
1503
+ channels: Record<string, MutableChannelOptions>;
1504
+ streamNodes: Record<string, MutableStreamNodeOptions>;
1505
+ streamCompression?: MutableStreamCompressionOptions;
1506
+ spotNodes: Record<string, MutableSpotNodeOptions>;
1507
+ spotFactories: Type<ZLinkSpot>[];
1508
+ filters?: Type<ZLinkHandlerFilter>[];
1509
+ worker?: ZLinkWorkerOptions;
1510
+ coreHwm?: ZLinkCoreHwmOptions;
1511
+ applicationJobQueue?: ZLinkApplicationJobQueueOptions;
1512
+ dispatch?: ZLinkDispatchOptions;
1513
+ requestTimeoutMs?: number;
1514
+ locations?: MutableLocationRegistrationOptions;
1515
+ }
1516
+
1517
+ interface MutableLocationRegistrationOptions {
1518
+ useInMemoryStores?: boolean;
1519
+ storeInstance?: ZLinkLocationStore;
1520
+ relocationStoreInstance?: ZLinkRelocationStore;
1521
+ options?: MutableLocationOptionValues;
1522
+ }
1523
+
1524
+ type MutableLocationOptionValues = {
1525
+ -readonly [Key in keyof ZLinkLocationOptionValues]?: ZLinkLocationOptionValues[Key];
1526
+ };
1527
+
1528
+ interface MutableChannelOptions {
1529
+ routingId?: string;
1530
+ routingIdPrefix?: string;
1531
+ publisher?: MutablePublisherCapabilityOptions;
1532
+ publishHandlers?: ZLinkChannelPublishHandlerRegistration[];
1533
+ subscriber?: MutableClientCapabilityOptions;
1534
+ client?: MutableClientCapabilityOptions;
1535
+ server?: MutableServerCapabilityOptions;
1536
+ handlerGroups?: string[];
1537
+ requestHandlers?: Array<{ packetName: string; handlerType: Type }>;
1538
+ sendHandlers?: Array<{ packetName: string; handlerType: Type }>;
1539
+ }
1540
+
1541
+ interface MutableServerCapabilityOptions {
1542
+ bind?: string;
1543
+ bindHost?: string;
1544
+ advertiseHost?: string;
1545
+ port?: number;
1546
+ routingId?: string;
1547
+ weight?: number;
1548
+ sendHighWaterMark?: number;
1549
+ receiveHighWaterMark?: number;
1550
+ sendTimeoutMs?: number;
1551
+ maxMessageSize?: number;
1552
+ }
1553
+
1554
+ interface MutableClientCapabilityOptions {
1555
+ manualConnections?: string[];
1556
+ sendHighWaterMark?: number;
1557
+ receiveHighWaterMark?: number;
1558
+ sendTimeoutMs?: number;
1559
+ maxMessageSize?: number;
1560
+ }
1561
+
1562
+ interface MutablePublisherCapabilityOptions {
1563
+ bind?: string;
1564
+ bindHost?: string;
1565
+ advertiseHost?: string;
1566
+ port?: number;
1567
+ }
1568
+
1569
+ interface MutableStreamNodeOptions {
1570
+ bind?: string;
1571
+ bindHost?: string;
1572
+ advertiseHost?: string;
1573
+ port?: number;
1574
+ maxMessageSize: number;
1575
+ actorDispatchEnabled?: boolean;
1576
+ tlsServer?: ZLinkStreamTlsServerOptions;
1577
+ session?: Type;
1578
+ }
1579
+
1580
+ export interface MutableStreamCompressionOptions {
1581
+ disabled?: boolean;
1582
+ codec?: ZLinkStreamCompressionCodec;
1583
+ }
1584
+
1585
+ interface MutableSpotNodeOptions {
1586
+ objectRole?: 'client' | 'server';
1587
+ placementWeight?: number;
1588
+ actorLimit?: number;
1589
+ spotLimit?: number;
1590
+ activationConcurrencyLimit?: number;
1591
+ instanceSpotIdleTimeoutMs?: number;
1592
+ routingId?: string;
1593
+ routingIdPrefix?: string;
1594
+ router?: MutableSpotRouterCapabilityOptions;
1595
+ pubSub?: MutableSpotPubSubCapabilityOptions;
1596
+ entrySpotType?: Type<ZLinkEntrySpot>;
1597
+ spotFactories?: Type<ZLinkSpot>[];
1598
+ spotFactoryRegistrations?: Record<string, MutableObjectFactoryRegistration<
1599
+ ZLinkSpot,
1600
+ ZLinkSpot,
1601
+ ZLinkUserSpotFactoryConfiguration
1602
+ >>;
1603
+ instanceSpotFactories?: Record<string, Type<ZLinkInstanceSpot>>;
1604
+ instanceSpotFactoryRegistrations?: Record<
1605
+ string,
1606
+ MutableObjectFactoryRegistration<
1607
+ ZLinkInstanceSpot,
1608
+ ZLinkInstanceSpot,
1609
+ ZLinkInstanceSpotFactoryConfiguration
1610
+ >
1611
+ >;
1612
+ actorFactories?: Record<string, Type>;
1613
+ actorFactoryRegistrations?: Record<
1614
+ string,
1615
+ MutableObjectFactoryRegistration<
1616
+ ZLinkActor,
1617
+ ZLinkActorFactory,
1618
+ ZLinkActorFactoryConfiguration
1619
+ >
1620
+ >;
1621
+ meshChannels?: Record<string, MutableMeshChannelOptions>;
1622
+ routeSendHandlers?: Array<{ packetName: string; handlerType: Type }>;
1623
+ routeRequestHandlers?: Array<{ packetName: string; handlerType: Type }>;
1624
+ requestTimeoutMs?: number;
1625
+ publisherConfig?: {
1626
+ sendHighWaterMark?: number;
1627
+ sendTimeoutMs?: number;
1628
+ lingerMs?: number;
1629
+ };
1630
+ }
1631
+
1632
+ interface MutableObjectFactoryRegistration<T, TImplementation = T, TOptions = unknown> {
1633
+ readonly implementation: Type<TImplementation>;
1634
+ readonly options?: TOptions;
1635
+ readonly relocation: ZLinkRelocationConfiguration<T>;
1636
+ }
1637
+
1638
+ interface MutableMeshChannelOptions {
1639
+ client?: boolean;
1640
+ server?: boolean;
1641
+ weight?: number;
1642
+ handlerGroups?: string[];
1643
+ sendHandlers?: Array<{ packetName: string; handlerType: Type }>;
1644
+ requestHandlers?: Array<{ packetName: string; handlerType: Type }>;
1645
+ }
1646
+
1647
+ interface MutableSpotRouterCapabilityOptions {
1648
+ bind?: string;
1649
+ bindHost?: string;
1650
+ advertiseHost?: string;
1651
+ port?: number;
1652
+ manualConnections?: string[];
1653
+ manualPeerConnections?: ZLinkSpotRouterPeerConnectionOptions[];
1654
+ routingId?: string;
1655
+ sendHighWaterMark?: number;
1656
+ receiveHighWaterMark?: number;
1657
+ receiveTimeoutMs?: number;
1658
+ sendTimeoutMs?: number;
1659
+ }
1660
+
1661
+ interface MutableSpotPubSubCapabilityOptions {
1662
+ bind?: string;
1663
+ manualConnections?: string[];
1664
+ routingId?: string;
1665
+ }
1666
+
1667
+ function handlerPacketName(handlerType: Type): string {
1668
+ return readZLinkDecoratorMetadata(handlerType)
1669
+ .find((metadata) => metadata.kind === 'packet' && metadata.packetName !== undefined)
1670
+ ?.packetName ?? handlerType.name;
1671
+ }
1672
+
1673
+ function requireRegistrationName(value: string, label: string): void {
1674
+ if (value.trim().length === 0 || value.trim() !== value) {
1675
+ throw new ZLinkConfigurationException(`${label} must not be empty or padded.`);
1676
+ }
1677
+ }
1678
+
1679
+ function requireListenerPort(value: number, label: string): number {
1680
+ if (!Number.isInteger(value) || value < 0 || value > 65_535) {
1681
+ throw new ZLinkConfigurationException(`${label} must be between 0 and 65535.`);
1682
+ }
1683
+ return value;
1684
+ }
1685
+
1686
+ function tcpEndpoint(host: string, port: number): string {
1687
+ const endpointHost = host.includes(':') && !host.startsWith('[') ? `[${host}]` : host;
1688
+ return `tcp://${endpointHost}:${port}`;
1689
+ }
1690
+
1691
+ function rejectFixedRoutingId(routingId: string | undefined, memberName: string): void {
1692
+ if (routingId !== undefined) {
1693
+ throw new ZLinkConfigurationException(
1694
+ `Mesh member '${memberName}' cannot combine a fixed routing id with a generated prefix.`
1695
+ );
1696
+ }
1697
+ }
1698
+
1699
+ function rejectGeneratedRoutingId(prefix: string | undefined, memberName: string): void {
1700
+ if (prefix !== undefined) {
1701
+ throw new ZLinkConfigurationException(
1702
+ `Mesh member '${memberName}' cannot combine a generated routing-id prefix with a fixed id.`
1703
+ );
1704
+ }
1705
+ }