@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,1407 @@
1
+ import { createHash } from 'node:crypto';
2
+ import type { ZLinkPlacementObjectKind, ZLinkAuthorityKey } from '../locations/internal-location-contracts';
3
+ import { decodeAuthorityKey } from '../locations/authority-key-codec';
4
+ import {
5
+ decodeRelocationEnvelopeV1 as decodeGeneratedRelocationEnvelopeV1,
6
+ encodeRelocationEnvelopeV1 as encodeGeneratedRelocationEnvelopeV1,
7
+ type RelocationEnvelopeV1 as GeneratedRelocationEnvelopeV1,
8
+ type RelocationObjectIdentity as GeneratedRelocationObjectIdentity
9
+ } from '../protocol/service_wire_pilot_codec.generated';
10
+
11
+ export interface ServiceRelocationParticipant {
12
+ /** Wire-local participant ordinal; identity is projected from Location Store. */
13
+ readonly participantId?: bigint;
14
+ /** Root projection carried by relocation-envelope-v1, never a participant identity vector. */
15
+ readonly rootSpotId?: string;
16
+ readonly rootSpotGeneration?: bigint;
17
+ readonly rootOwnerGeneration?: bigint;
18
+ readonly rootObjectKind?: ZLinkPlacementObjectKind;
19
+ readonly rootStableType?: string;
20
+ readonly key: string;
21
+ readonly objectKind: ZLinkPlacementObjectKind;
22
+ readonly stableType: string;
23
+ readonly objectGeneration: bigint;
24
+ readonly authorityOwnerGeneration: bigint;
25
+ /** Preserves relocation-envelope-v1's absent-state projection on decode. */
26
+ readonly applicationStatePresent?: boolean;
27
+ readonly applicationState: Uint8Array;
28
+ readonly boundSessionState: Uint8Array;
29
+ readonly queuedMessages: readonly ServiceRelocationQueuedMessage[];
30
+ readonly timers: readonly ServiceRelocationTimer[];
31
+ }
32
+
33
+ export interface ServiceRelocationQueuedMessage {
34
+ readonly sequence: bigint;
35
+ readonly payload: Uint8Array;
36
+ }
37
+
38
+ export interface ServiceRelocationTimer {
39
+ readonly timerId: string;
40
+ readonly handlerType: string;
41
+ readonly startedAtUnixMs: number;
42
+ readonly dueAtUnixMs: number;
43
+ readonly intervalMs: number;
44
+ readonly deliveryIndex: bigint;
45
+ readonly lastScheduledIndex: bigint;
46
+ readonly overrunPolicy: string;
47
+ readonly maxCatchUpTicks: number;
48
+ readonly stopOnUnhandledException: boolean;
49
+ readonly pendingTicks: readonly ServiceRelocationPendingTimerTick[];
50
+ }
51
+
52
+ export interface ServiceRelocationPendingTimerTick {
53
+ /** Wire order retained on decode; local capture assigns it when omitted. */
54
+ readonly order?: bigint;
55
+ readonly deliveryIndex: bigint;
56
+ readonly scheduledIndex: bigint;
57
+ readonly scheduledAtUnixMs: number;
58
+ readonly skippedTicks: bigint;
59
+ }
60
+
61
+ export interface ServiceRelocationMembership {
62
+ readonly actorKey: string;
63
+ readonly spotKey: string;
64
+ readonly spotObjectGeneration: bigint;
65
+ readonly membershipEpoch: bigint;
66
+ }
67
+
68
+ export interface ServiceRelocationEnvelope {
69
+ readonly aggregateId: string;
70
+ readonly aggregateGeneration: bigint;
71
+ /** Deployment ordinal carried by relocation-envelope-v1, distinct from staging identity. */
72
+ readonly applicationVersion?: bigint;
73
+ readonly participants: readonly ServiceRelocationParticipant[];
74
+ readonly memberships: readonly ServiceRelocationMembership[];
75
+ }
76
+
77
+ export interface ServiceRelocationPublication {
78
+ readonly reference: string;
79
+ readonly checksumCrc32c: number;
80
+ readonly aggregateId: string;
81
+ readonly aggregateGeneration: bigint;
82
+ readonly inventoryDigest: string;
83
+ readonly targetOwnerId: string;
84
+ readonly targetOwnerLeaseGeneration: bigint;
85
+ /** Canonical authority-slot fields retained when a publication is replaced. */
86
+ readonly targetAttemptGeneration?: bigint;
87
+ readonly sourceNodeRid?: string;
88
+ readonly sourceNodeGeneration?: bigint;
89
+ readonly sourceOwnerId?: string;
90
+ readonly sourceOwnerLeaseGeneration?: bigint;
91
+ readonly targetNodeRid?: string;
92
+ readonly targetNodeGeneration?: bigint;
93
+ readonly coordinatorOwnerId?: string;
94
+ readonly coordinatorLeaseGeneration?: bigint;
95
+ readonly coordinatorNodeRid?: string;
96
+ readonly coordinatorNodeGeneration?: bigint;
97
+ readonly coordinatorExpectedStoreVersion?: string;
98
+ readonly canonicalPhase?: number;
99
+ readonly canonicalSourceCleanupState?: number;
100
+ /** True when the publication lives in the canonical ZLAU relocation slot. */
101
+ readonly canonical?: boolean;
102
+ readonly applicationVersion?: bigint;
103
+ }
104
+
105
+ export interface ServiceRelocationAuthorityCodec {
106
+ publish(
107
+ currentPayload: Uint8Array,
108
+ publication: ServiceRelocationPublication
109
+ ): Uint8Array;
110
+ read(payload: Uint8Array): ServiceRelocationPublication | undefined;
111
+ clear(currentPayload: Uint8Array, expectedReference: string): Uint8Array;
112
+ }
113
+
114
+ interface ServiceRelocationAuthorityEnvelope {
115
+ readonly base: Buffer;
116
+ readonly publication: ServiceRelocationPublication;
117
+ }
118
+
119
+ interface CanonicalAuthorityLayout {
120
+ readonly flags: number;
121
+ readonly body: Buffer;
122
+ readonly slotStart: number;
123
+ readonly slotEnd: number;
124
+ readonly slot: Buffer;
125
+ readonly ownerId: string;
126
+ readonly ownerLeaseGeneration: bigint;
127
+ readonly nodeRid: string;
128
+ readonly nodeGeneration: bigint;
129
+ }
130
+
131
+ export interface CanonicalRelocationSlot {
132
+ readonly aggregateId: string;
133
+ readonly aggregateGeneration: bigint;
134
+ readonly targetAttemptGeneration: bigint;
135
+ readonly reference: string;
136
+ readonly checksumCrc32c: number;
137
+ readonly sourceNodeRid: string;
138
+ readonly sourceNodeGeneration: bigint;
139
+ readonly sourceOwnerId: string;
140
+ readonly sourceOwnerLeaseGeneration: bigint;
141
+ readonly targetNodeRid: string;
142
+ readonly targetNodeGeneration: bigint;
143
+ readonly applicationVersion: bigint;
144
+ readonly targetOwnerId: string;
145
+ readonly targetOwnerLeaseGeneration: bigint;
146
+ readonly coordinatorOwnerId: string;
147
+ readonly coordinatorLeaseGeneration: bigint;
148
+ readonly coordinatorNodeRid: string;
149
+ readonly coordinatorNodeGeneration: bigint;
150
+ readonly coordinatorExpectedStoreVersion: string;
151
+ readonly phase: number;
152
+ readonly sourceCleanupState: number;
153
+ }
154
+
155
+ /** Deterministic Location authority wrapper for one immutable relocation root. */
156
+ export class ServiceRelocationAuthorityPayloadCodec
157
+ implements ServiceRelocationAuthorityCodec {
158
+ publish(
159
+ currentPayload: Uint8Array,
160
+ publication: ServiceRelocationPublication
161
+ ): Uint8Array {
162
+ if (this.read(currentPayload) !== undefined) {
163
+ throw new TypeError('Location authority already contains a relocation publication.');
164
+ }
165
+ const canonical = decodeCanonicalAuthorityLayout(currentPayload);
166
+ if (canonical !== undefined) {
167
+ return replaceCanonicalRelocationSlot(
168
+ canonical,
169
+ encodeCanonicalRelocationPublicationSlot(canonical, publication)
170
+ );
171
+ }
172
+ return encodeAuthorityEnvelope(Buffer.from(currentPayload), publication);
173
+ }
174
+
175
+ read(payload: Uint8Array): ServiceRelocationPublication | undefined {
176
+ return decodeCanonicalAuthorityPublication(payload)
177
+ ?? decodeAuthorityEnvelope(payload)?.publication;
178
+ }
179
+
180
+ clear(currentPayload: Uint8Array, expectedReference: string): Uint8Array {
181
+ const canonical = decodeCanonicalAuthorityLayout(currentPayload);
182
+ const canonicalPublication = canonical === undefined
183
+ ? undefined
184
+ : decodeCanonicalRelocationSlot(canonical.slot);
185
+ if (canonical !== undefined && canonicalPublication?.reference !== undefined) {
186
+ if (canonicalPublication.reference !== requireText(
187
+ expectedReference,
188
+ 'relocation reference'
189
+ )) {
190
+ throw new TypeError('Location authority relocation reference changed.');
191
+ }
192
+ return replaceCanonicalRelocationSlot(canonical, Buffer.alloc(0));
193
+ }
194
+ const current = decodeAuthorityEnvelope(currentPayload);
195
+ if (
196
+ current === undefined
197
+ || current.publication.reference !== requireText(
198
+ expectedReference,
199
+ 'relocation reference'
200
+ )
201
+ ) {
202
+ throw new TypeError('Location authority relocation reference changed.');
203
+ }
204
+ return Buffer.from(current.base);
205
+ }
206
+ }
207
+
208
+ /** Returns the application authority payload hidden by relocation metadata. */
209
+ export function serviceRelocationAuthorityApplicationPayload(
210
+ payload: Uint8Array
211
+ ): Buffer {
212
+ const canonical = decodeCanonicalAuthorityLayout(payload);
213
+ if (canonical !== undefined && canonical.slot.byteLength !== 0) {
214
+ if (decodeCanonicalRelocationSlot(canonical.slot) === undefined) {
215
+ throw new TypeError('Canonical authority relocation slot is invalid.');
216
+ }
217
+ return replaceCanonicalRelocationSlot(canonical, Buffer.alloc(0));
218
+ }
219
+ return Buffer.from(decodeAuthorityEnvelope(payload)?.base ?? payload);
220
+ }
221
+
222
+ /** Reads the canonical relocation identity even before its root pointer exists. */
223
+ export function serviceRelocationAuthoritySlotIdentity(
224
+ payload: Uint8Array
225
+ ): Pick<
226
+ ServiceRelocationPublication,
227
+ 'aggregateId' | 'aggregateGeneration' | 'applicationVersion'
228
+ > | undefined {
229
+ const layout = decodeCanonicalAuthorityLayout(payload);
230
+ const slot = layout === undefined || layout.slot.byteLength === 0
231
+ ? undefined
232
+ : decodeCanonicalRelocationSlot(layout.slot);
233
+ return slot === undefined
234
+ ? undefined
235
+ : {
236
+ aggregateId: slot.aggregateId,
237
+ aggregateGeneration: slot.aggregateGeneration,
238
+ applicationVersion: slot.applicationVersion
239
+ };
240
+ }
241
+
242
+ /** Replaces the application payload without changing relocation metadata. */
243
+ export function replaceServiceRelocationAuthorityApplicationPayload(
244
+ payload: Uint8Array,
245
+ applicationPayload: Uint8Array
246
+ ): Buffer {
247
+ const canonical = decodeCanonicalAuthorityLayout(payload);
248
+ if (canonical !== undefined && canonical.slot.byteLength !== 0) {
249
+ const replacement = decodeCanonicalAuthorityLayout(applicationPayload);
250
+ if (replacement === undefined || replacement.slot.byteLength !== 0) {
251
+ throw new TypeError('Canonical authority application replacement is not steady ZLAU.');
252
+ }
253
+ return replaceCanonicalRelocationSlot(replacement, canonical.slot);
254
+ }
255
+ const current = decodeAuthorityEnvelope(payload);
256
+ return current === undefined
257
+ ? Buffer.from(applicationPayload)
258
+ : encodeAuthorityEnvelope(Buffer.from(applicationPayload), current.publication);
259
+ }
260
+
261
+ /** Projects an embedded canonical relocation slot to the exact target-ready fence. */
262
+ export function projectServiceRelocationAuthorityTargetReady(
263
+ payload: Uint8Array,
264
+ target: {
265
+ readonly targetAttemptGeneration: bigint;
266
+ readonly nodeRid: string;
267
+ readonly nodeGeneration: bigint;
268
+ readonly ownerId: string;
269
+ readonly ownerLeaseGeneration: bigint;
270
+ readonly coordinatorExpectedStoreVersion: string;
271
+ }
272
+ ): Buffer {
273
+ const layout = decodeCanonicalAuthorityLayout(payload);
274
+ if (layout === undefined || layout.slot.byteLength === 0) {
275
+ throw new TypeError('Canonical authority relocation slot is missing.');
276
+ }
277
+ const current = decodeCanonicalRelocationSlot(layout.slot);
278
+ if (current === undefined) {
279
+ throw new TypeError('Canonical authority relocation slot is invalid.');
280
+ }
281
+ const slot = encodeCanonicalRelocationSlot({
282
+ ...current,
283
+ targetAttemptGeneration: target.targetAttemptGeneration,
284
+ targetNodeRid: target.nodeRid,
285
+ targetNodeGeneration: target.nodeGeneration,
286
+ targetOwnerId: target.ownerId,
287
+ targetOwnerLeaseGeneration: target.ownerLeaseGeneration,
288
+ coordinatorOwnerId: target.ownerId,
289
+ coordinatorLeaseGeneration: target.ownerLeaseGeneration,
290
+ coordinatorNodeRid: target.nodeRid,
291
+ coordinatorNodeGeneration: target.nodeGeneration,
292
+ coordinatorExpectedStoreVersion: target.coordinatorExpectedStoreVersion,
293
+ phase: 5,
294
+ sourceCleanupState: 0
295
+ });
296
+ return replaceCanonicalRelocationSlot(layout, slot);
297
+ }
298
+
299
+ function decodeCanonicalAuthorityPublication(
300
+ payload: Uint8Array
301
+ ): ServiceRelocationPublication | undefined {
302
+ const layout = decodeCanonicalAuthorityLayout(payload);
303
+ if (layout === undefined || layout.slot.byteLength === 0) return undefined;
304
+ const slot = decodeCanonicalRelocationSlot(layout.slot);
305
+ if (slot === undefined) return undefined;
306
+ return {
307
+ reference: slot.reference,
308
+ checksumCrc32c: slot.checksumCrc32c,
309
+ aggregateId: slot.aggregateId,
310
+ aggregateGeneration: slot.aggregateGeneration,
311
+ inventoryDigest: '0'.repeat(64),
312
+ targetOwnerId: slot.targetOwnerId,
313
+ targetOwnerLeaseGeneration: slot.targetOwnerLeaseGeneration,
314
+ targetAttemptGeneration: slot.targetAttemptGeneration,
315
+ sourceNodeRid: slot.sourceNodeRid,
316
+ sourceNodeGeneration: slot.sourceNodeGeneration,
317
+ sourceOwnerId: slot.sourceOwnerId,
318
+ sourceOwnerLeaseGeneration: slot.sourceOwnerLeaseGeneration,
319
+ targetNodeRid: slot.targetNodeRid,
320
+ targetNodeGeneration: slot.targetNodeGeneration,
321
+ coordinatorOwnerId: slot.coordinatorOwnerId,
322
+ coordinatorLeaseGeneration: slot.coordinatorLeaseGeneration,
323
+ coordinatorNodeRid: slot.coordinatorNodeRid,
324
+ coordinatorNodeGeneration: slot.coordinatorNodeGeneration,
325
+ coordinatorExpectedStoreVersion: slot.coordinatorExpectedStoreVersion,
326
+ canonicalPhase: slot.phase,
327
+ canonicalSourceCleanupState: slot.sourceCleanupState,
328
+ canonical: true,
329
+ applicationVersion: slot.applicationVersion
330
+ };
331
+ }
332
+
333
+ function decodeCanonicalAuthorityLayout(
334
+ payload: Uint8Array
335
+ ): CanonicalAuthorityLayout | undefined {
336
+ try {
337
+ const bytes = Buffer.from(payload);
338
+ if (bytes.byteLength < 20 || bytes.byteLength > 1024 * 1024) return undefined;
339
+ const reader = new CanonicalReader(bytes);
340
+ reader.expect(Buffer.from('ZLAU'));
341
+ if (reader.u8() !== 1) return undefined;
342
+ const flags = reader.u16();
343
+ const body = reader.take(reader.u32());
344
+ const checksumOffset = reader.offset;
345
+ if (reader.u32() !== crc32c(bytes.subarray(0, checksumOffset)) || !reader.done) {
346
+ return undefined;
347
+ }
348
+ const bodyReader = new CanonicalReader(body);
349
+ bodyReader.u8();
350
+ bodyReader.u8();
351
+ bodyReader.take(bodyReader.u16());
352
+ const ownerId = bodyReader.text8(false);
353
+ const ownerLeaseGeneration = bodyReader.u64();
354
+ bodyReader.text8(false);
355
+ const nodeRid = bodyReader.text8(false);
356
+ const nodeGeneration = bodyReader.u64();
357
+ const slotStart = bodyReader.offset;
358
+ const presence = bodyReader.u8();
359
+ if (presence > 1) return undefined;
360
+ const slot = bodyReader.take(bodyReader.u32());
361
+ const slotEnd = bodyReader.offset;
362
+ if ((presence === 0) !== (slot.byteLength === 0)) return undefined;
363
+ return {
364
+ flags,
365
+ body: Buffer.from(body),
366
+ slotStart,
367
+ slotEnd,
368
+ slot: Buffer.from(slot),
369
+ ownerId,
370
+ ownerLeaseGeneration,
371
+ nodeRid,
372
+ nodeGeneration
373
+ };
374
+ } catch {
375
+ return undefined;
376
+ }
377
+ }
378
+
379
+ export function decodeCanonicalRelocationSlot(
380
+ payload: Uint8Array,
381
+ rootAggregateGeneration?: bigint
382
+ ): CanonicalRelocationSlot | undefined {
383
+ try {
384
+ const reader = new CanonicalReader(payload);
385
+ const aggregateId = uuid(reader.u64(), reader.u64());
386
+ if (aggregateId === undefined) return undefined;
387
+ const aggregateGeneration = reader.u64();
388
+ const targetAttemptGeneration = reader.u64();
389
+ const reference = reader.text16();
390
+ const checksumCrc32c = reader.u32();
391
+ const sourceNodeRid = reader.text8(false);
392
+ const sourceNodeGeneration = reader.u64();
393
+ const sourceOwnerId = reader.text8(false);
394
+ const sourceOwnerLeaseGeneration = reader.u64();
395
+ const targetNodeRid = reader.text8(true);
396
+ const targetNodeGeneration = reader.u64();
397
+ const targetOwnerId = reader.text8(true);
398
+ const targetOwnerLeaseGeneration = reader.u64();
399
+ const coordinatorOwnerId = reader.text8(false);
400
+ const coordinatorLeaseGeneration = reader.u64();
401
+ const coordinatorNodeRid = reader.text8(false);
402
+ const coordinatorNodeGeneration = reader.u64();
403
+ const coordinatorExpectedStoreVersion = reader.text8(true);
404
+ const phase = reader.u8();
405
+ const applicationVersion = reader.i64();
406
+ const sourceCleanupState = reader.u8();
407
+ if (!reader.done
408
+ || aggregateGeneration > 0x7fff_ffff_ffff_fffen
409
+ || (aggregateGeneration === 0n && phase !== 1)
410
+ || (rootAggregateGeneration !== undefined
411
+ && aggregateGeneration !== rootAggregateGeneration)
412
+ || targetAttemptGeneration > 0x7fff_ffff_ffff_ffffn
413
+ || sourceNodeGeneration === 0n
414
+ || sourceNodeGeneration > 0x7fff_ffff_ffff_ffffn
415
+ || sourceOwnerLeaseGeneration === 0n
416
+ || sourceOwnerLeaseGeneration > 0x7fff_ffff_ffff_ffffn
417
+ || targetNodeGeneration > 0x7fff_ffff_ffff_ffffn
418
+ || targetOwnerLeaseGeneration > 0x7fff_ffff_ffff_ffffn
419
+ || coordinatorLeaseGeneration === 0n
420
+ || coordinatorLeaseGeneration > 0x7fff_ffff_ffff_ffffn
421
+ || coordinatorNodeGeneration === 0n
422
+ || coordinatorNodeGeneration > 0x7fff_ffff_ffff_ffffn
423
+ || phase < 1 || phase > 9
424
+ || applicationVersion < 0n
425
+ || sourceCleanupState > 2) return undefined;
426
+ return {
427
+ aggregateId,
428
+ aggregateGeneration,
429
+ targetAttemptGeneration,
430
+ reference,
431
+ checksumCrc32c,
432
+ sourceNodeRid,
433
+ sourceNodeGeneration,
434
+ sourceOwnerId,
435
+ sourceOwnerLeaseGeneration,
436
+ targetNodeRid,
437
+ targetNodeGeneration,
438
+ applicationVersion,
439
+ targetOwnerId,
440
+ targetOwnerLeaseGeneration,
441
+ coordinatorOwnerId,
442
+ coordinatorLeaseGeneration,
443
+ coordinatorNodeRid,
444
+ coordinatorNodeGeneration,
445
+ coordinatorExpectedStoreVersion,
446
+ phase,
447
+ sourceCleanupState
448
+ };
449
+ } catch {
450
+ return undefined;
451
+ }
452
+ }
453
+
454
+ export function encodeCanonicalRelocationSlot(value: CanonicalRelocationSlot): Buffer {
455
+ const id = relocationId(canonicalUuid(value.aggregateId, 'aggregate id'));
456
+ const aggregateGeneration = nonNegativeBigInt(
457
+ value.aggregateGeneration,
458
+ 'aggregate generation'
459
+ );
460
+ const targetAttemptGeneration = nonNegativeBigInt(
461
+ value.targetAttemptGeneration,
462
+ 'target attempt generation'
463
+ );
464
+ if (aggregateGeneration > 0x7fff_ffff_ffff_fffen) {
465
+ throw new TypeError('Aggregate generation exceeds the issued range.');
466
+ }
467
+ if (aggregateGeneration === 0n && value.phase !== 1) {
468
+ throw new TypeError('Zero aggregate generation is only valid while preparing.');
469
+ }
470
+ if (targetAttemptGeneration > 0x7fff_ffff_ffff_ffffn) {
471
+ throw new TypeError('Target attempt generation exceeds the ordinal range.');
472
+ }
473
+ const sourceNodeGeneration = canonicalNonZeroOrdinal(
474
+ value.sourceNodeGeneration,
475
+ 'source node generation'
476
+ );
477
+ const sourceOwnerLeaseGeneration = canonicalNonZeroOrdinal(
478
+ value.sourceOwnerLeaseGeneration,
479
+ 'source owner lease generation'
480
+ );
481
+ const targetNodeGeneration = canonicalOrdinal(
482
+ value.targetNodeGeneration,
483
+ 'target node generation'
484
+ );
485
+ const targetOwnerLeaseGeneration = canonicalOrdinal(
486
+ value.targetOwnerLeaseGeneration,
487
+ 'target owner lease generation'
488
+ );
489
+ const coordinatorLeaseGeneration = canonicalNonZeroOrdinal(
490
+ value.coordinatorLeaseGeneration,
491
+ 'coordinator lease generation'
492
+ );
493
+ const coordinatorNodeGeneration = canonicalNonZeroOrdinal(
494
+ value.coordinatorNodeGeneration,
495
+ 'coordinator node generation'
496
+ );
497
+ if (!Number.isInteger(value.phase) || value.phase < 1 || value.phase > 9) {
498
+ throw new TypeError('Canonical relocation phase is invalid.');
499
+ }
500
+ if (!Number.isInteger(value.sourceCleanupState)
501
+ || value.sourceCleanupState < 0
502
+ || value.sourceCleanupState > 2) {
503
+ throw new TypeError('Canonical source cleanup state is invalid.');
504
+ }
505
+ return Buffer.concat([
506
+ canonicalU64(id.high), canonicalU64(id.low),
507
+ canonicalU64(aggregateGeneration), canonicalU64(targetAttemptGeneration),
508
+ canonicalText16(value.reference), canonicalU32(value.checksumCrc32c),
509
+ canonicalText8(value.sourceNodeRid), canonicalU64(sourceNodeGeneration),
510
+ canonicalText8(value.sourceOwnerId), canonicalU64(sourceOwnerLeaseGeneration),
511
+ canonicalOptionalText8(value.targetNodeRid), canonicalU64(targetNodeGeneration),
512
+ canonicalOptionalText8(value.targetOwnerId), canonicalU64(targetOwnerLeaseGeneration),
513
+ canonicalText8(value.coordinatorOwnerId), canonicalU64(coordinatorLeaseGeneration),
514
+ canonicalText8(value.coordinatorNodeRid), canonicalU64(coordinatorNodeGeneration),
515
+ canonicalOptionalText8(value.coordinatorExpectedStoreVersion),
516
+ Buffer.of(value.phase), canonicalI64(value.applicationVersion),
517
+ Buffer.of(value.sourceCleanupState)
518
+ ]);
519
+ }
520
+
521
+ function encodeCanonicalRelocationPublicationSlot(
522
+ layout: CanonicalAuthorityLayout,
523
+ publication: ServiceRelocationPublication
524
+ ): Buffer {
525
+ validatePublication(publication);
526
+ if (layout.slot.byteLength !== 0) {
527
+ throw new TypeError('Canonical authority relocation slot is already published.');
528
+ }
529
+ const nodeRid = requireText(layout.nodeRid, 'canonical authority node rid');
530
+ const ownerId = requireText(layout.ownerId, 'canonical authority owner id');
531
+ const applicationVersion = nonNegativeBigInt(
532
+ publication.applicationVersion ?? 0n,
533
+ 'application version'
534
+ );
535
+ return encodeCanonicalRelocationSlot({
536
+ aggregateId: publication.aggregateId,
537
+ aggregateGeneration: publication.aggregateGeneration,
538
+ targetAttemptGeneration: publication.targetAttemptGeneration ?? 0n,
539
+ reference: publication.reference,
540
+ checksumCrc32c: publication.checksumCrc32c,
541
+ sourceNodeRid: publication.sourceNodeRid ?? nodeRid,
542
+ sourceNodeGeneration: publication.sourceNodeGeneration ?? layout.nodeGeneration,
543
+ sourceOwnerId: publication.sourceOwnerId ?? ownerId,
544
+ sourceOwnerLeaseGeneration:
545
+ publication.sourceOwnerLeaseGeneration ?? layout.ownerLeaseGeneration,
546
+ targetNodeRid: publication.targetNodeRid ?? nodeRid,
547
+ targetNodeGeneration: publication.targetNodeGeneration ?? layout.nodeGeneration,
548
+ targetOwnerId: publication.targetOwnerId,
549
+ targetOwnerLeaseGeneration: publication.targetOwnerLeaseGeneration,
550
+ coordinatorOwnerId: publication.coordinatorOwnerId ?? ownerId,
551
+ coordinatorLeaseGeneration:
552
+ publication.coordinatorLeaseGeneration ?? layout.ownerLeaseGeneration,
553
+ coordinatorNodeRid: publication.coordinatorNodeRid ?? nodeRid,
554
+ coordinatorNodeGeneration:
555
+ publication.coordinatorNodeGeneration ?? layout.nodeGeneration,
556
+ coordinatorExpectedStoreVersion:
557
+ publication.coordinatorExpectedStoreVersion ?? '',
558
+ phase: publication.canonicalPhase ?? 8,
559
+ applicationVersion,
560
+ sourceCleanupState: publication.canonicalSourceCleanupState ?? 0
561
+ });
562
+ }
563
+
564
+ function replaceCanonicalRelocationSlot(
565
+ layout: CanonicalAuthorityLayout,
566
+ slot: Uint8Array
567
+ ): Buffer {
568
+ const encodedSlot = Buffer.from(slot);
569
+ const body = Buffer.concat([
570
+ layout.body.subarray(0, layout.slotStart),
571
+ Buffer.of(encodedSlot.byteLength === 0 ? 0 : 1),
572
+ canonicalU32(encodedSlot.byteLength),
573
+ encodedSlot,
574
+ layout.body.subarray(layout.slotEnd)
575
+ ]);
576
+ const envelope = Buffer.concat([
577
+ Buffer.from('ZLAU'), Buffer.of(1), canonicalU16(layout.flags),
578
+ canonicalU32(body.byteLength), body
579
+ ]);
580
+ const result = Buffer.concat([envelope, canonicalU32(crc32c(envelope))]);
581
+ if (result.byteLength > 1024 * 1024) {
582
+ throw new TypeError('Canonical authority payload exceeds 1 MiB.');
583
+ }
584
+ return result;
585
+ }
586
+
587
+ function validatePublication(publication: ServiceRelocationPublication): void {
588
+ requireText(publication.reference, 'relocation reference');
589
+ canonicalUuid(publication.aggregateId, 'aggregate id');
590
+ const checksum = safeInteger(publication.checksumCrc32c, 'relocation checksum');
591
+ if (checksum < 0 || checksum > 0xffff_ffff) {
592
+ throw new TypeError('Relocation checksum must be an unsigned 32-bit integer.');
593
+ }
594
+ positiveBigInt(publication.aggregateGeneration, 'aggregate generation');
595
+ requireText(publication.targetOwnerId, 'target owner id');
596
+ positiveBigInt(publication.targetOwnerLeaseGeneration, 'target owner lease generation');
597
+ }
598
+
599
+ export function encodeServiceRelocationEnvelope(
600
+ envelope: ServiceRelocationEnvelope,
601
+ applicationVersion: bigint
602
+ ): Buffer {
603
+ const aggregate = relocationId(canonicalUuid(envelope.aggregateId, 'aggregate id'));
604
+ const encodedApplicationVersion = nonNegativeBigInt(
605
+ applicationVersion,
606
+ 'application version'
607
+ );
608
+ const participants = canonicalParticipants(envelope.participants);
609
+ const root = participants.find(value => value.rootSpotId !== undefined)
610
+ ?? participants.find(value => value.objectKind !== 'actor')
611
+ ?? participants[0]!;
612
+ const rootObjectKind = root.rootObjectKind ?? root.objectKind;
613
+ if (rootObjectKind === 'actor' && participants.length !== 1) {
614
+ throw new TypeError('Standalone Actor relocation requires one participant.');
615
+ }
616
+ const applicationStates = participants.map((participant, index) => {
617
+ const hasState = participant.applicationStatePresent !== false;
618
+ if (!hasState && participant.applicationState.byteLength !== 0) {
619
+ throw new TypeError('Absent relocation application state must have an empty payload.');
620
+ }
621
+ return {
622
+ participantId: BigInt(index + 1),
623
+ hasState,
624
+ payload: Buffer.from(participant.applicationState)
625
+ };
626
+ });
627
+ const saved = participants.flatMap((participant, index) => participant.queuedMessages.map(message => ({
628
+ participantId: BigInt(index + 1),
629
+ order: positiveBigInt(message.sequence, 'queue sequence'),
630
+ frozenRecord: Buffer.from(message.payload)
631
+ }))).sort(compareParticipantOrder);
632
+ if (saved.some((value, index) => index > 0
633
+ && compareParticipantOrder(saved[index - 1]!, value) === 0)) {
634
+ throw new TypeError('Relocation queue sequences must be unique per participant.');
635
+ }
636
+ const timers = participants.flatMap((participant, index) => participant.timers.map(timer => ({
637
+ participantId: BigInt(index + 1), timer
638
+ }))).sort((a, b) => a.participantId === b.participantId
639
+ ? Buffer.compare(Buffer.from(a.timer.timerId), Buffer.from(b.timer.timerId))
640
+ : a.participantId < b.participantId ? -1 : 1);
641
+ if (timers.some((value, index) => index > 0
642
+ && timers[index - 1]!.participantId === value.participantId
643
+ && timers[index - 1]!.timer.timerId === value.timer.timerId)) {
644
+ throw new TypeError('Relocation timer ids must be unique per participant.');
645
+ }
646
+ const nextOrder = new Map<bigint, bigint>();
647
+ for (const value of saved) {
648
+ const current = nextOrder.get(value.participantId) ?? 0n;
649
+ if (value.order > current) nextOrder.set(value.participantId, value.order);
650
+ }
651
+ const pending = timers.flatMap(({ participantId, timer }) => timer.pendingTicks.map(tick => {
652
+ const current = nextOrder.get(participantId) ?? 0n;
653
+ const order = tick.order === undefined
654
+ ? current + 1n
655
+ : positiveBigInt(tick.order, 'pending timer order');
656
+ if (order > current) nextOrder.set(participantId, order);
657
+ return { participantId, order, timerName: timer.timerId, tick };
658
+ })).sort(compareParticipantOrder);
659
+ return Buffer.from(encodeGeneratedRelocationEnvelopeV1({
660
+ relocationHigh: aggregate.high,
661
+ relocationLow: aggregate.low,
662
+ object: toGeneratedRelocationObject(root, rootObjectKind),
663
+ applicationVersion: encodedApplicationVersion,
664
+ applicationStates,
665
+ savedWork: saved,
666
+ timerRegistrations: timers.map(({ participantId, timer }) => ({
667
+ participantId,
668
+ name: timer.timerId,
669
+ handlerType: timer.handlerType,
670
+ periodMilliseconds: BigInt(positiveInteger(timer.intervalMs, 'timer interval')),
671
+ overrunPolicy: timerPolicy(timer.overrunPolicy),
672
+ maxCatchUpTicks: BigInt(positiveInteger(timer.maxCatchUpTicks, 'timer catch-up limit')),
673
+ stopOnUnhandledException: requireBoolean(timer.stopOnUnhandledException, 'timer stop-on-error flag'),
674
+ lastCompletedDeliveryIndex: nonNegativeBigInt(timer.deliveryIndex, 'timer delivery index'),
675
+ lastCompletedScheduledIndex: nonNegativeBigInt(timer.lastScheduledIndex, 'timer scheduled index'),
676
+ nextScheduledAtUnixMilliseconds: nonNegativeUnixMilliseconds(timer.dueAtUnixMs, 'timer due time')
677
+ })),
678
+ pendingTimerTicks: pending.map(value => ({
679
+ participantId: value.participantId,
680
+ order: value.order,
681
+ timerName: value.timerName,
682
+ deliveryIndex: nonNegativeBigInt(value.tick.deliveryIndex, 'pending timer delivery index'),
683
+ scheduledIndex: nonNegativeBigInt(value.tick.scheduledIndex, 'pending timer scheduled index'),
684
+ scheduledAtUnixMilliseconds: nonNegativeUnixMilliseconds(value.tick.scheduledAtUnixMs, 'pending timer scheduled time'),
685
+ skippedTicks: nonNegativeBigInt(value.tick.skippedTicks, 'pending timer skipped ticks')
686
+ }))
687
+ }));
688
+ }
689
+
690
+ export function decodeServiceRelocationEnvelope(
691
+ payload: Uint8Array,
692
+ aggregateGeneration: bigint
693
+ ): ServiceRelocationEnvelope {
694
+ let generated: GeneratedRelocationEnvelopeV1;
695
+ try {
696
+ generated = decodeGeneratedRelocationEnvelopeV1([payload]);
697
+ } catch (cause) {
698
+ const message = cause instanceof Error ? cause.message : '';
699
+ if (message === 'object kind') {
700
+ throw new TypeError('relocation-envelope-v1 root object kind is invalid.', { cause });
701
+ }
702
+ if (message === 'relocation envelope trailing') {
703
+ throw new TypeError('Trailing relocation envelope bytes.', { cause });
704
+ }
705
+ throw new TypeError('Invalid relocation envelope.', { cause });
706
+ }
707
+ const aggregateId = uuid(generated.relocationHigh, generated.relocationLow);
708
+ if (aggregateId === undefined) throw new TypeError('Invalid relocation identity.');
709
+ positiveBigInt(aggregateGeneration, 'aggregate generation');
710
+ const participants = generated.applicationStates.map((state, index) => {
711
+ if (state.participantId !== BigInt(index + 1)) {
712
+ throw new TypeError('Application state participant order is invalid.');
713
+ }
714
+ return wireParticipant(state.participantId, state.hasState, Buffer.from(state.payload));
715
+ });
716
+ const byId = new Map(participants.map(value => [value.participantId!, value]));
717
+ for (const work of generated.savedWork) {
718
+ byId.get(work.participantId)!.queuedMessages.push({
719
+ sequence: work.order,
720
+ payload: Buffer.from(work.frozenRecord)
721
+ });
722
+ }
723
+ for (const timer of generated.timerRegistrations) {
724
+ byId.get(timer.participantId)!.timers.push({
725
+ timerId: timer.name,
726
+ handlerType: timer.handlerType,
727
+ startedAtUnixMs: 0,
728
+ dueAtUnixMs: unixMilliseconds(timer.nextScheduledAtUnixMilliseconds),
729
+ intervalMs: unixMilliseconds(timer.periodMilliseconds),
730
+ overrunPolicy: timerPolicyName(timer.overrunPolicy),
731
+ maxCatchUpTicks: unixMilliseconds(timer.maxCatchUpTicks),
732
+ stopOnUnhandledException: timer.stopOnUnhandledException,
733
+ deliveryIndex: timer.lastCompletedDeliveryIndex,
734
+ lastScheduledIndex: timer.lastCompletedScheduledIndex,
735
+ pendingTicks: []
736
+ });
737
+ }
738
+ for (const tick of generated.pendingTimerTicks) {
739
+ const timer = byId.get(tick.participantId)!.timers.find(value => value.timerId === tick.timerName)!;
740
+ (timer.pendingTicks as ServiceRelocationPendingTimerTick[]).push({
741
+ order: tick.order,
742
+ deliveryIndex: tick.deliveryIndex,
743
+ scheduledIndex: tick.scheduledIndex,
744
+ scheduledAtUnixMs: unixMilliseconds(tick.scheduledAtUnixMilliseconds),
745
+ skippedTicks: tick.skippedTicks
746
+ });
747
+ }
748
+ const rootParticipant = participants[0]!;
749
+ const rootProjection = fromGeneratedRelocationObject(generated.object);
750
+ return {
751
+ aggregateId,
752
+ aggregateGeneration,
753
+ applicationVersion: generated.applicationVersion,
754
+ participants: participants.map(value => value === rootParticipant
755
+ ? { ...value, ...rootProjection }
756
+ : value),
757
+ memberships: []
758
+ };
759
+ }
760
+
761
+ function toGeneratedRelocationObject(
762
+ root: ServiceRelocationParticipant,
763
+ objectKind: ZLinkPlacementObjectKind
764
+ ): GeneratedRelocationObjectIdentity {
765
+ const objectId = root.rootSpotId ?? authorityGlobalId(root.key);
766
+ const objectGeneration = root.rootSpotGeneration ?? root.objectGeneration;
767
+ if (objectKind === 'actor') {
768
+ return {
769
+ objectKind: 'actor',
770
+ actorId: objectId,
771
+ objectGeneration,
772
+ expectedAuthorityOwnerGeneration:
773
+ root.rootOwnerGeneration ?? root.authorityOwnerGeneration
774
+ };
775
+ }
776
+ if (objectKind === 'user_spot') {
777
+ return {
778
+ objectKind: 'userSpot',
779
+ spotId: objectId,
780
+ objectGeneration,
781
+ expectedAuthorityOwnerGeneration:
782
+ root.rootOwnerGeneration ?? root.authorityOwnerGeneration
783
+ };
784
+ }
785
+ return {
786
+ objectKind: 'instanceSpot',
787
+ instanceType: root.rootStableType ?? root.stableType,
788
+ spotId: objectId,
789
+ objectGeneration
790
+ };
791
+ }
792
+
793
+ function fromGeneratedRelocationObject(
794
+ object: GeneratedRelocationObjectIdentity
795
+ ): Pick<
796
+ ServiceRelocationParticipant,
797
+ 'rootSpotId' | 'rootSpotGeneration' | 'rootOwnerGeneration'
798
+ | 'rootObjectKind' | 'rootStableType'
799
+ > {
800
+ if (object.objectKind === 'actor') {
801
+ return {
802
+ rootSpotId: object.actorId,
803
+ rootSpotGeneration: object.objectGeneration,
804
+ rootOwnerGeneration: object.expectedAuthorityOwnerGeneration,
805
+ rootObjectKind: 'actor'
806
+ };
807
+ }
808
+ if (object.objectKind === 'userSpot') {
809
+ return {
810
+ rootSpotId: object.spotId,
811
+ rootSpotGeneration: object.objectGeneration,
812
+ rootOwnerGeneration: object.expectedAuthorityOwnerGeneration,
813
+ rootObjectKind: 'user_spot'
814
+ };
815
+ }
816
+ return {
817
+ rootSpotId: object.spotId,
818
+ rootSpotGeneration: object.objectGeneration,
819
+ rootObjectKind: 'instance_spot',
820
+ rootStableType: object.instanceType
821
+ };
822
+ }
823
+
824
+ function canonicalParticipants(values: readonly ServiceRelocationParticipant[]): readonly ServiceRelocationParticipant[] {
825
+ if (values.length === 0) throw new TypeError('Relocation participant count is outside its bound.');
826
+ const participants = [...values].sort((a, b) => Buffer.compare(Buffer.from(a.key), Buffer.from(b.key)));
827
+ if (new Set(participants.map(value => value.key)).size !== participants.length) {
828
+ throw new TypeError('Relocation participants must have unique keys.');
829
+ }
830
+ return participants;
831
+ }
832
+
833
+ function authorityGlobalId(key: string): string {
834
+ try {
835
+ return decodeAuthorityKey({ value: key } as ZLinkAuthorityKey).globalId;
836
+ } catch {
837
+ const marker = key.indexOf(':');
838
+ return marker < 0 ? requireText(key, 'participant key') : requireText(key.slice(marker + 1), 'participant key');
839
+ }
840
+ }
841
+
842
+ function relocationId(value: string): { readonly high: bigint; readonly low: bigint } {
843
+ const hex = value.replaceAll('-', '');
844
+ return { high: BigInt(`0x${hex.slice(0, 16)}`), low: BigInt(`0x${hex.slice(16)}`) };
845
+ }
846
+
847
+ function uuid(high: bigint, low: bigint): string | undefined {
848
+ if (high === 0n && low === 0n) return undefined;
849
+ const hex = high.toString(16).padStart(16, '0') + low.toString(16).padStart(16, '0');
850
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
851
+ }
852
+
853
+ function compareParticipantOrder<T extends { readonly participantId: bigint; readonly order: bigint }>(a: T, b: T): number {
854
+ return a.participantId === b.participantId
855
+ ? a.order < b.order ? -1 : a.order > b.order ? 1 : 0
856
+ : a.participantId < b.participantId ? -1 : 1;
857
+ }
858
+
859
+ function timerPolicy(value: string): 1 | 2 | 3 {
860
+ if (value === 'skipLateTicks') return 1;
861
+ if (value === 'catchUpBounded') return 2;
862
+ if (value === 'delayNextTick') return 3;
863
+ throw new TypeError('Timer overrun policy is invalid.');
864
+ }
865
+
866
+ function timerPolicyName(value: number): string {
867
+ if (value === 1) return 'skipLateTicks';
868
+ if (value === 2) return 'catchUpBounded';
869
+ if (value === 3) return 'delayNextTick';
870
+ throw new TypeError('Timer overrun policy is invalid.');
871
+ }
872
+
873
+ function nonNegativeUnixMilliseconds(value: number, label: string): bigint {
874
+ const parsed = safeInteger(value, label);
875
+ if (parsed < 0) throw new TypeError(`${label} must not be negative.`);
876
+ return BigInt(parsed);
877
+ }
878
+
879
+ function unixMilliseconds(value: bigint): number {
880
+ if (value > BigInt(Number.MAX_SAFE_INTEGER)) throw new TypeError('Unix milliseconds exceed Node safe integer range.');
881
+ return Number(value);
882
+ }
883
+
884
+ function wireParticipant(participantId: bigint, applicationStatePresent: boolean, applicationState: Buffer): ServiceRelocationParticipant & {
885
+ queuedMessages: ServiceRelocationQueuedMessage[];
886
+ timers: ServiceRelocationTimer[];
887
+ } {
888
+ return {
889
+ participantId,
890
+ key: `wire:${participantId}`,
891
+ objectKind: 'actor',
892
+ stableType: 'wire',
893
+ objectGeneration: 1n,
894
+ authorityOwnerGeneration: 1n,
895
+ applicationStatePresent,
896
+ applicationState,
897
+ boundSessionState: Buffer.alloc(0),
898
+ queuedMessages: [],
899
+ timers: []
900
+ };
901
+ }
902
+
903
+ function objectKind(value: unknown): ZLinkPlacementObjectKind {
904
+ if (value !== 'actor' && value !== 'user_spot' && value !== 'instance_spot') {
905
+ throw new TypeError('Relocation object kind is invalid.');
906
+ }
907
+ return value;
908
+ }
909
+
910
+ export function inventoryDigest(
911
+ participants: readonly ServiceRelocationParticipant[],
912
+ memberships: readonly ServiceRelocationMembership[] = []
913
+ ): string {
914
+ const identities = participants.map(participant => ({
915
+ key: requireText(participant.key, 'participant key'),
916
+ objectKind: objectKind(participant.objectKind),
917
+ stableType: requireText(participant.stableType, 'participant stable type'),
918
+ objectGeneration: positiveBigInt(
919
+ participant.objectGeneration,
920
+ 'object generation'
921
+ ).toString(),
922
+ authorityOwnerGeneration: positiveBigInt(
923
+ participant.authorityOwnerGeneration,
924
+ 'authority owner generation'
925
+ ).toString()
926
+ })).sort((left, right) => left.key.localeCompare(right.key));
927
+ if (new Set(identities.map(({ key }) => key)).size !== identities.length) {
928
+ throw new TypeError('Relocation participants must have unique keys.');
929
+ }
930
+ const canonicalMemberships = encodeMemberships(memberships, participants);
931
+ return createHash('sha256').update(JSON.stringify({
932
+ participants: identities,
933
+ memberships: canonicalMemberships
934
+ }), 'utf8').digest('hex');
935
+ }
936
+
937
+ function encodeAuthorityEnvelope(
938
+ base: Uint8Array,
939
+ publication: ServiceRelocationPublication
940
+ ): Buffer {
941
+ const checksum = safeInteger(publication.checksumCrc32c, 'relocation checksum');
942
+ if (checksum < 0 || checksum > 0xffff_ffff) {
943
+ throw new TypeError('Relocation checksum must be an unsigned 32-bit integer.');
944
+ }
945
+ if (!/^[a-f0-9]{64}$/u.test(publication.inventoryDigest)) {
946
+ throw new TypeError('Relocation inventory digest must be lowercase SHA-256.');
947
+ }
948
+ const aggregateGeneration = positiveBigInt(
949
+ publication.aggregateGeneration,
950
+ 'aggregate generation'
951
+ );
952
+ const targetOwnerLeaseGeneration = positiveBigInt(
953
+ publication.targetOwnerLeaseGeneration,
954
+ 'target owner lease generation'
955
+ );
956
+ if (
957
+ aggregateGeneration > 0x7fff_ffff_ffff_ffffn
958
+ || targetOwnerLeaseGeneration > 0x7fff_ffff_ffff_ffffn
959
+ ) {
960
+ throw new TypeError('Relocation publication generations must fit signed 64-bit storage.');
961
+ }
962
+ const payload = Buffer.concat([
963
+ // BinaryWriter.Write(0x5a4c4152u) is little-endian in the .NET reference codec.
964
+ Buffer.from([0x52, 0x41, 0x4c, 0x5a]),
965
+ u16le(1),
966
+ text16le(requireText(publication.reference, 'relocation reference')),
967
+ u32le(checksum),
968
+ dotnetGuidBytes(canonicalUuid(publication.aggregateId, 'aggregate id')),
969
+ u64le(aggregateGeneration),
970
+ bytes32le(Buffer.from(publication.inventoryDigest, 'hex')),
971
+ text16le(requireText(publication.targetOwnerId, 'target owner id')),
972
+ i64le(targetOwnerLeaseGeneration),
973
+ bytes32le(base)
974
+ ]);
975
+ if (payload.byteLength > 1024 * 1024) {
976
+ throw new TypeError('Location authority relocation payload exceeds 1 MiB.');
977
+ }
978
+ return payload;
979
+ }
980
+
981
+ function decodeAuthorityEnvelope(
982
+ payload: Uint8Array
983
+ ): ServiceRelocationAuthorityEnvelope | undefined {
984
+ try {
985
+ const reader = new DotnetBinaryReader(payload);
986
+ reader.expect(Buffer.from([0x52, 0x41, 0x4c, 0x5a]));
987
+ if (reader.u16() !== 1) return undefined;
988
+ const reference = requireText(reader.text16(), 'relocation reference');
989
+ const checksumCrc32c = reader.u32();
990
+ const aggregateId = canonicalUuid(
991
+ canonicalUuidFromDotnetBytes(reader.take(16)),
992
+ 'aggregate id'
993
+ );
994
+ const aggregateGeneration = reader.u64();
995
+ const inventoryDigestBytes = reader.bytes32();
996
+ const targetOwnerId = requireText(reader.text16(), 'target owner id');
997
+ const targetOwnerLeaseGeneration = reader.i64();
998
+ const base = reader.bytes32();
999
+ if (
1000
+ !reader.done
1001
+ || aggregateGeneration === 0n
1002
+ || aggregateGeneration > 0x7fff_ffff_ffff_ffffn
1003
+ || inventoryDigestBytes.byteLength !== 32
1004
+ || targetOwnerLeaseGeneration <= 0n
1005
+ ) {
1006
+ return undefined;
1007
+ }
1008
+ return {
1009
+ base,
1010
+ publication: {
1011
+ reference,
1012
+ checksumCrc32c,
1013
+ aggregateId,
1014
+ aggregateGeneration,
1015
+ inventoryDigest: inventoryDigestBytes.toString('hex'),
1016
+ targetOwnerId,
1017
+ targetOwnerLeaseGeneration
1018
+ }
1019
+ };
1020
+ } catch {
1021
+ return undefined;
1022
+ }
1023
+ }
1024
+
1025
+ function encodeMemberships(
1026
+ memberships: readonly ServiceRelocationMembership[],
1027
+ participants: readonly ServiceRelocationParticipant[]
1028
+ ) {
1029
+ validateMemberships(memberships, participants);
1030
+ return memberships.map(membership => ({
1031
+ actorKey: requireText(membership.actorKey, 'membership actor key'),
1032
+ spotKey: requireText(membership.spotKey, 'membership spot key'),
1033
+ spotObjectGeneration: positiveBigInt(
1034
+ membership.spotObjectGeneration,
1035
+ 'membership Spot generation'
1036
+ ).toString(),
1037
+ membershipEpoch: positiveBigInt(
1038
+ membership.membershipEpoch,
1039
+ 'membership epoch'
1040
+ ).toString()
1041
+ })).sort((left, right) => left.actorKey.localeCompare(right.actorKey));
1042
+ }
1043
+
1044
+ function validateMemberships(
1045
+ memberships: readonly ServiceRelocationMembership[],
1046
+ participants: readonly ServiceRelocationParticipant[]
1047
+ ): void {
1048
+ const byKey = new Map(participants.map(participant => [participant.key, participant]));
1049
+ const actorKeys = new Set<string>();
1050
+ for (const membership of memberships) {
1051
+ const actorKey = requireText(membership.actorKey, 'membership actor key');
1052
+ if (actorKeys.has(actorKey)) {
1053
+ throw new TypeError('Relocation membership Actor keys must be unique.');
1054
+ }
1055
+ actorKeys.add(actorKey);
1056
+ const actor = byKey.get(actorKey);
1057
+ if (actor?.objectKind !== 'actor') {
1058
+ throw new TypeError('Relocation membership must reference an Actor participant.');
1059
+ }
1060
+ const spot = byKey.get(requireText(membership.spotKey, 'membership spot key'));
1061
+ if (
1062
+ spot !== undefined
1063
+ && (
1064
+ spot.objectKind !== 'user_spot'
1065
+ || spot.objectGeneration !== positiveBigInt(
1066
+ membership.spotObjectGeneration,
1067
+ 'membership Spot generation'
1068
+ )
1069
+ )
1070
+ ) {
1071
+ throw new TypeError('Relocation membership Spot fence does not match its participant.');
1072
+ }
1073
+ positiveBigInt(membership.membershipEpoch, 'membership epoch');
1074
+ }
1075
+ }
1076
+
1077
+
1078
+ const CRC32C_TABLE = Uint32Array.from({ length: 256 }, (_, value) => {
1079
+ let crc = value;
1080
+ for (let bit = 0; bit < 8; bit++) {
1081
+ crc = (crc >>> 1) ^ ((crc & 1) === 0 ? 0 : 0x82f6_3b78);
1082
+ }
1083
+ return crc >>> 0;
1084
+ });
1085
+
1086
+ export function crc32c(payload: Uint8Array): number {
1087
+ let crc = 0xffff_ffff;
1088
+ for (const byte of payload) {
1089
+ crc = CRC32C_TABLE[(crc ^ byte) & 0xff]! ^ (crc >>> 8);
1090
+ }
1091
+ return (crc ^ 0xffff_ffff) >>> 0;
1092
+ }
1093
+
1094
+ function requireText(value: unknown, label: string): string {
1095
+ if (typeof value !== 'string' || value.length === 0 || value.includes('\0')) {
1096
+ throw new TypeError(`${label} must be non-empty text without NUL.`);
1097
+ }
1098
+ return value;
1099
+ }
1100
+
1101
+ function canonicalUuid(value: unknown, label: string): string {
1102
+ const text = requireText(value, label);
1103
+ if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u.test(text)
1104
+ || /^0{8}-0{4}-0{4}-0{4}-0{12}$/u.test(text)) {
1105
+ throw new TypeError(`${label} must be a lowercase non-zero 128-bit identity.`);
1106
+ }
1107
+ return text;
1108
+ }
1109
+
1110
+ function text16le(value: string): Buffer {
1111
+ const bytes = Buffer.from(value, 'utf8');
1112
+ if (bytes.byteLength < 1 || bytes.byteLength > 0xffff) {
1113
+ throw new TypeError('Relocation text must contain 1..65535 UTF-8 bytes.');
1114
+ }
1115
+ return Buffer.concat([u16le(bytes.byteLength), bytes]);
1116
+ }
1117
+
1118
+ function bytes32le(value: Uint8Array): Buffer {
1119
+ const bytes = Buffer.from(value);
1120
+ if (bytes.byteLength > 1024 * 1024) {
1121
+ throw new TypeError('Relocation byte field exceeds 1 MiB.');
1122
+ }
1123
+ const length = Buffer.alloc(4);
1124
+ length.writeInt32LE(bytes.byteLength);
1125
+ return Buffer.concat([length, bytes]);
1126
+ }
1127
+
1128
+ function u16le(value: number): Buffer {
1129
+ const result = Buffer.alloc(2);
1130
+ result.writeUInt16LE(value);
1131
+ return result;
1132
+ }
1133
+
1134
+ function u32le(value: number): Buffer {
1135
+ const result = Buffer.alloc(4);
1136
+ result.writeUInt32LE(value);
1137
+ return result;
1138
+ }
1139
+
1140
+ function u64le(value: bigint): Buffer {
1141
+ const result = Buffer.alloc(8);
1142
+ result.writeBigUInt64LE(value);
1143
+ return result;
1144
+ }
1145
+
1146
+ function i64le(value: bigint): Buffer {
1147
+ const result = Buffer.alloc(8);
1148
+ result.writeBigInt64LE(value);
1149
+ return result;
1150
+ }
1151
+
1152
+ function dotnetGuidBytes(value: string): Buffer {
1153
+ const canonical = Buffer.from(value.replaceAll('-', ''), 'hex');
1154
+ return Buffer.from([
1155
+ canonical[3]!, canonical[2]!, canonical[1]!, canonical[0]!,
1156
+ canonical[5]!, canonical[4]!,
1157
+ canonical[7]!, canonical[6]!,
1158
+ ...canonical.subarray(8)
1159
+ ]);
1160
+ }
1161
+
1162
+ function canonicalUuidFromDotnetBytes(value: Uint8Array): string {
1163
+ const bytes = Buffer.from(value);
1164
+ if (bytes.byteLength !== 16) throw new TypeError('Relocation aggregate id is invalid.');
1165
+ const canonical = Buffer.from([
1166
+ bytes[3]!, bytes[2]!, bytes[1]!, bytes[0]!,
1167
+ bytes[5]!, bytes[4]!,
1168
+ bytes[7]!, bytes[6]!,
1169
+ ...bytes.subarray(8)
1170
+ ]).toString('hex');
1171
+ return `${canonical.slice(0, 8)}-${canonical.slice(8, 12)}-${canonical.slice(12, 16)}`
1172
+ + `-${canonical.slice(16, 20)}-${canonical.slice(20)}`;
1173
+ }
1174
+
1175
+ class CanonicalReader {
1176
+ readonly bytes: Buffer;
1177
+ offset = 0;
1178
+
1179
+ constructor(payload: Uint8Array) {
1180
+ this.bytes = Buffer.from(payload);
1181
+ }
1182
+
1183
+ get done(): boolean {
1184
+ return this.offset === this.bytes.byteLength;
1185
+ }
1186
+
1187
+ expect(expected: Uint8Array): void {
1188
+ if (!this.take(expected.byteLength).equals(Buffer.from(expected))) {
1189
+ throw new TypeError('Canonical authority magic is invalid.');
1190
+ }
1191
+ }
1192
+
1193
+ u8(): number {
1194
+ return this.take(1)[0]!;
1195
+ }
1196
+
1197
+ u16(): number {
1198
+ return this.take(2).readUInt16BE(0);
1199
+ }
1200
+
1201
+ u32(): number {
1202
+ return this.take(4).readUInt32BE(0);
1203
+ }
1204
+
1205
+ u64(): bigint {
1206
+ return this.take(8).readBigUInt64BE(0);
1207
+ }
1208
+
1209
+ i64(): bigint {
1210
+ return this.take(8).readBigInt64BE(0);
1211
+ }
1212
+
1213
+ text8(optional: boolean): string {
1214
+ const length = this.u8();
1215
+ if (length === 0) {
1216
+ if (optional) return '';
1217
+ throw new TypeError('Canonical authority text is empty.');
1218
+ }
1219
+ return canonicalText(this.take(length));
1220
+ }
1221
+
1222
+ text16(): string {
1223
+ const length = this.u16();
1224
+ if (length === 0) throw new TypeError('Canonical authority text is empty.');
1225
+ return canonicalText(this.take(length));
1226
+ }
1227
+
1228
+ take(length: number): Buffer {
1229
+ if (length < 0 || this.offset + length > this.bytes.byteLength) {
1230
+ throw new TypeError('Canonical authority payload is truncated.');
1231
+ }
1232
+ const result = this.bytes.subarray(this.offset, this.offset + length);
1233
+ this.offset += length;
1234
+ return result;
1235
+ }
1236
+ }
1237
+
1238
+ function canonicalText(value: Uint8Array): string {
1239
+ const bytes = Buffer.from(value);
1240
+ if (bytes.includes(0)) throw new TypeError('Canonical authority text contains NUL.');
1241
+ return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
1242
+ }
1243
+
1244
+ function canonicalText8(value: string): Buffer {
1245
+ const bytes = Buffer.from(requireText(value, 'canonical authority text'), 'utf8');
1246
+ if (bytes.byteLength > 0xff) throw new TypeError('Canonical authority text8 is too long.');
1247
+ return Buffer.concat([Buffer.of(bytes.byteLength), bytes]);
1248
+ }
1249
+
1250
+ function canonicalOptionalText8(value: string): Buffer {
1251
+ if (value.length === 0) return Buffer.of(0);
1252
+ return canonicalText8(value);
1253
+ }
1254
+
1255
+ function canonicalText16(value: string): Buffer {
1256
+ const bytes = Buffer.from(requireText(value, 'canonical authority text'), 'utf8');
1257
+ if (bytes.byteLength > 4096) throw new TypeError('Canonical authority text16 is too long.');
1258
+ return Buffer.concat([canonicalU16(bytes.byteLength), bytes]);
1259
+ }
1260
+
1261
+ function canonicalU16(value: number): Buffer {
1262
+ const result = Buffer.alloc(2);
1263
+ result.writeUInt16BE(value);
1264
+ return result;
1265
+ }
1266
+
1267
+ function canonicalU32(value: number): Buffer {
1268
+ if (!Number.isInteger(value) || value < 0 || value > 0xffff_ffff) {
1269
+ throw new TypeError('Canonical authority u32 is invalid.');
1270
+ }
1271
+ const result = Buffer.alloc(4);
1272
+ result.writeUInt32BE(value);
1273
+ return result;
1274
+ }
1275
+
1276
+ function canonicalU64(value: bigint): Buffer {
1277
+ if (value < 0n || value > 0xffff_ffff_ffff_ffffn) {
1278
+ throw new TypeError('Canonical authority u64 is invalid.');
1279
+ }
1280
+ const result = Buffer.alloc(8);
1281
+ result.writeBigUInt64BE(value);
1282
+ return result;
1283
+ }
1284
+
1285
+ function canonicalOrdinal(value: bigint, name: string): bigint {
1286
+ const ordinal = nonNegativeBigInt(value, name);
1287
+ if (ordinal > 0x7fff_ffff_ffff_ffffn) {
1288
+ throw new TypeError(`${name} exceeds the ordinal range.`);
1289
+ }
1290
+ return ordinal;
1291
+ }
1292
+
1293
+ function canonicalNonZeroOrdinal(value: bigint, name: string): bigint {
1294
+ const ordinal = canonicalOrdinal(value, name);
1295
+ if (ordinal === 0n) throw new TypeError(`${name} must be positive.`);
1296
+ return ordinal;
1297
+ }
1298
+
1299
+ function canonicalI64(value: bigint): Buffer {
1300
+ if (value < 0n || value > 0x7fff_ffff_ffff_ffffn) {
1301
+ throw new TypeError('Canonical authority i64 is invalid.');
1302
+ }
1303
+ const result = Buffer.alloc(8);
1304
+ result.writeBigInt64BE(value);
1305
+ return result;
1306
+ }
1307
+
1308
+ class DotnetBinaryReader {
1309
+ readonly bytes: Buffer;
1310
+ offset = 0;
1311
+
1312
+ constructor(payload: Uint8Array) {
1313
+ this.bytes = Buffer.from(payload);
1314
+ if (this.bytes.byteLength > 1024 * 1024) {
1315
+ throw new TypeError('Location authority relocation payload exceeds 1 MiB.');
1316
+ }
1317
+ }
1318
+
1319
+ get done(): boolean {
1320
+ return this.offset === this.bytes.byteLength;
1321
+ }
1322
+
1323
+ expect(expected: Uint8Array): void {
1324
+ if (!this.take(expected.byteLength).equals(Buffer.from(expected))) {
1325
+ throw new TypeError('Location authority relocation magic is invalid.');
1326
+ }
1327
+ }
1328
+
1329
+ u16(): number {
1330
+ return this.take(2).readUInt16LE(0);
1331
+ }
1332
+
1333
+ u32(): number {
1334
+ return this.take(4).readUInt32LE(0);
1335
+ }
1336
+
1337
+ u64(): bigint {
1338
+ return this.take(8).readBigUInt64LE(0);
1339
+ }
1340
+
1341
+ i64(): bigint {
1342
+ return this.take(8).readBigInt64LE(0);
1343
+ }
1344
+
1345
+ text16(): string {
1346
+ const length = this.u16();
1347
+ if (length === 0) throw new TypeError('Location authority relocation text is empty.');
1348
+ return this.take(length).toString('utf8');
1349
+ }
1350
+
1351
+ bytes32(): Buffer {
1352
+ const length = this.take(4).readInt32LE(0);
1353
+ if (length < 0 || length > 1024 * 1024) {
1354
+ throw new TypeError('Location authority relocation byte field is invalid.');
1355
+ }
1356
+ return Buffer.from(this.take(length));
1357
+ }
1358
+
1359
+ take(length: number): Buffer {
1360
+ if (length < 0 || this.offset + length > this.bytes.byteLength) {
1361
+ throw new TypeError('Location authority relocation payload is truncated.');
1362
+ }
1363
+ const result = this.bytes.subarray(this.offset, this.offset + length);
1364
+ this.offset += length;
1365
+ return result;
1366
+ }
1367
+ }
1368
+
1369
+ function positiveBigInt(value: unknown, label: string): bigint {
1370
+ let parsed: bigint;
1371
+ try {
1372
+ parsed = typeof value === 'bigint' ? value : BigInt(requireText(value, label));
1373
+ } catch {
1374
+ throw new TypeError(`${label} must be a positive integer.`);
1375
+ }
1376
+ if (parsed <= 0n) throw new TypeError(`${label} must be a positive integer.`);
1377
+ return parsed;
1378
+ }
1379
+
1380
+ function nonNegativeBigInt(value: unknown, label: string): bigint {
1381
+ let parsed: bigint;
1382
+ try {
1383
+ parsed = typeof value === 'bigint' ? value : BigInt(requireText(value, label));
1384
+ } catch {
1385
+ throw new TypeError(`${label} must be a non-negative integer.`);
1386
+ }
1387
+ if (parsed < 0n) throw new TypeError(`${label} must be a non-negative integer.`);
1388
+ return parsed;
1389
+ }
1390
+
1391
+ function safeInteger(value: unknown, label: string): number {
1392
+ if (typeof value !== 'number' || !Number.isSafeInteger(value)) {
1393
+ throw new TypeError(`${label} must be a safe integer.`);
1394
+ }
1395
+ return value;
1396
+ }
1397
+
1398
+ function positiveInteger(value: unknown, label: string): number {
1399
+ const parsed = safeInteger(value, label);
1400
+ if (parsed <= 0) throw new TypeError(`${label} must be positive.`);
1401
+ return parsed;
1402
+ }
1403
+
1404
+ function requireBoolean(value: unknown, label: string): boolean {
1405
+ if (typeof value !== 'boolean') throw new TypeError(`${label} must be boolean.`);
1406
+ return value;
1407
+ }