@zlink-systems/framework 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Common/ZLinkMessage.js +5 -5
  3. package/dist/contracts/Configuration/CodecContentType.js +5 -7
  4. package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
  5. package/dist/contracts/Configuration/EndpointNotation.js +4 -8
  6. package/dist/contracts/Configuration/Registration.js +14 -11
  7. package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
  8. package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
  9. package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
  10. package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
  11. package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
  12. package/dist/contracts/Handlers/JsonContract.js +23 -11
  13. package/dist/contracts/Spots/SpotKind.js +16 -8
  14. package/dist/location-store-integration.js +16 -16
  15. package/dist/nest-integration.js +17 -11
  16. package/dist/runtime/abort.js +9 -5
  17. package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
  18. package/dist/runtime/actors/actor-authority-publication.js +18 -17
  19. package/dist/runtime/actors/actor-client.js +83 -63
  20. package/dist/runtime/actors/actor-context.js +24 -18
  21. package/dist/runtime/actors/actor-creation.js +4 -3
  22. package/dist/runtime/actors/actor-handoff.js +89 -92
  23. package/dist/runtime/actors/actor-local-native-join.js +18 -19
  24. package/dist/runtime/actors/actor-mailbox.js +1 -1
  25. package/dist/runtime/actors/actor-message-follow-context.js +24 -21
  26. package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
  27. package/dist/runtime/actors/actor-remote-joiner.js +20 -17
  28. package/dist/runtime/actors/actor-remote-wire.js +6 -7
  29. package/dist/runtime/actors/actor-runtime-state.js +87 -81
  30. package/dist/runtime/actors/actor-transfer-registry.js +3 -5
  31. package/dist/runtime/actors/bound-session-wire.js +14 -9
  32. package/dist/runtime/actors/deferred-join-accepted-journal.js +158 -124
  33. package/dist/runtime/actors/index.js +2 -5
  34. package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
  35. package/dist/runtime/actors/post-commit-actor-location.js +1 -1
  36. package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
  37. package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
  38. package/dist/runtime/admission.js +2 -6
  39. package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
  40. package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
  41. package/dist/runtime/backend/mesh-completion-table.js +1 -3
  42. package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
  43. package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
  44. package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
  45. package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
  46. package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
  47. package/dist/runtime/backend/node/node-raw-mesh-backend.js +116 -113
  48. package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
  49. package/dist/runtime/backend/runtime-message.js +3 -3
  50. package/dist/runtime/backend/runtime-values.d.ts +2 -2
  51. package/dist/runtime/backend/runtime-values.js +4 -5
  52. package/dist/runtime/channels/channel-clients.js +27 -24
  53. package/dist/runtime/channels/channel-dispatch-pipeline.js +10 -18
  54. package/dist/runtime/channels/channel-dispatch-services.js +7 -4
  55. package/dist/runtime/channels/channel-dispatchers.js +9 -9
  56. package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
  57. package/dist/runtime/channels/channel-envelope.js +83 -47
  58. package/dist/runtime/channels/channel-outbound-operations.js +8 -8
  59. package/dist/runtime/channels/channel-receive-loops.js +20 -22
  60. package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
  61. package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
  62. package/dist/runtime/channels/channel-runtime-manager.js +18 -9
  63. package/dist/runtime/channels/channel-socket-registry.js +126 -123
  64. package/dist/runtime/channels/channel-transports.js +43 -33
  65. package/dist/runtime/channels/client-server-location-runtime.js +32 -40
  66. package/dist/runtime/channels/client-server-service-wire.js +29 -22
  67. package/dist/runtime/channels/dispatch-error-reporter.js +9 -7
  68. package/dist/runtime/channels/fanout-location-runtime.js +34 -47
  69. package/dist/runtime/channels/fanout-service-wire.js +3 -5
  70. package/dist/runtime/channels/local-spot-route-transport.js +7 -1
  71. package/dist/runtime/channels/route-member-snapshot.js +3 -3
  72. package/dist/runtime/channels/source-spot-router.js +6 -2
  73. package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
  74. package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
  75. package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
  76. package/dist/runtime/diagnostics/index.js +38 -10
  77. package/dist/runtime/diagnostics/message-flow.js +47 -39
  78. package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
  79. package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
  80. package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
  81. package/dist/runtime/execution/index.js +7 -6
  82. package/dist/runtime/execution/serial-execution-queue.js +12 -18
  83. package/dist/runtime/execution/state-lane.js +2 -2
  84. package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -23
  85. package/dist/runtime/foundation/event-loop-resources.js +4 -4
  86. package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
  87. package/dist/runtime/foundation/raw-service-mesh-runtime.js +136 -136
  88. package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
  89. package/dist/runtime/foundation/runtime-state-projections.js +22 -11
  90. package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
  91. package/dist/runtime/foundation/service-discovery-registry.js +35 -33
  92. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
  93. package/dist/runtime/foundation/service-liveness-registry.js +16 -12
  94. package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
  95. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
  96. package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
  97. package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
  98. package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
  99. package/dist/runtime/foundation/service-stateful-registry.js +24 -23
  100. package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
  101. package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
  102. package/dist/runtime/foundation/service-topology-registry.js +96 -95
  103. package/dist/runtime/foundation/service-weighted-selection.js +6 -11
  104. package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
  105. package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
  106. package/dist/runtime/framework-errors-internal.js +7 -10
  107. package/dist/runtime/handlers/handler-instance-scope.js +4 -5
  108. package/dist/runtime/handlers/index.js +3 -1
  109. package/dist/runtime/host/actor-packet-relay.js +74 -70
  110. package/dist/runtime/host/actor-placement-coordinator.js +29 -31
  111. package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
  112. package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
  113. package/dist/runtime/host/actor-transfer-runtime.js +176 -153
  114. package/dist/runtime/host/application-job-queue.js +18 -22
  115. package/dist/runtime/host/bound-session-relay.js +3 -1
  116. package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
  117. package/dist/runtime/host/host-capacity-status.js +8 -4
  118. package/dist/runtime/host/index.js +244 -227
  119. package/dist/runtime/host/instance-activation-authority.js +93 -96
  120. package/dist/runtime/host/location-runtime-owner.js +16 -14
  121. package/dist/runtime/host/mesh-router-resolver.js +11 -13
  122. package/dist/runtime/host/relocation-direct-transfer.js +10 -9
  123. package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
  124. package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
  125. package/dist/runtime/host/remote-bound-session-relay.js +97 -73
  126. package/dist/runtime/host/route-mesh-runtime.js +64 -69
  127. package/dist/runtime/host/runtime-shutdown.js +1 -2
  128. package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
  129. package/dist/runtime/host/spot-address-transport.js +69 -71
  130. package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
  131. package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
  132. package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
  133. package/dist/runtime/locations/actor-location-claims.js +26 -20
  134. package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
  135. package/dist/runtime/locations/authority-key-codec.js +7 -7
  136. package/dist/runtime/locations/auto-connect-loop.js +3 -3
  137. package/dist/runtime/locations/auto-connect-planner.js +25 -19
  138. package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
  139. package/dist/runtime/locations/in-memory-authority-store.js +128 -118
  140. package/dist/runtime/locations/in-memory-location-store.js +195 -168
  141. package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
  142. package/dist/runtime/locations/key-codec.js +1 -1
  143. package/dist/runtime/locations/lease-tracker.js +23 -21
  144. package/dist/runtime/locations/lifecycle.js +4 -5
  145. package/dist/runtime/locations/location-store-repository.js +368 -324
  146. package/dist/runtime/locations/opaque-record-key.js +2 -2
  147. package/dist/runtime/locations/resolvers.js +73 -82
  148. package/dist/runtime/locations/runtime.js +68 -63
  149. package/dist/runtime/locations/spot-location-claims.js +39 -35
  150. package/dist/runtime/messaging/framework-json-v1.js +7 -7
  151. package/dist/runtime/messaging/packet-name.js +7 -6
  152. package/dist/runtime/messaging/payload-codec.js +21 -18
  153. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
  154. package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
  155. package/dist/runtime/routing-id.js +3 -5
  156. package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
  157. package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
  158. package/dist/runtime/spots/index.js +208 -219
  159. package/dist/runtime/spots/spot-activation-registry.js +15 -14
  160. package/dist/runtime/spots/spot-activation-state.js +17 -15
  161. package/dist/runtime/spots/spot-activation.js +33 -16
  162. package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
  163. package/dist/runtime/spots/spot-actor-membership.js +1 -3
  164. package/dist/runtime/spots/spot-actor-packet-dispatch.js +23 -20
  165. package/dist/runtime/spots/spot-actor-packet-drain.js +12 -10
  166. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
  167. package/dist/runtime/spots/spot-closing.js +3 -7
  168. package/dist/runtime/spots/spot-context.js +2 -2
  169. package/dist/runtime/spots/spot-entry-activation.js +13 -14
  170. package/dist/runtime/spots/spot-handle.js +6 -3
  171. package/dist/runtime/spots/spot-handler-registry.js +12 -12
  172. package/dist/runtime/spots/spot-manager-public.js +5 -6
  173. package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
  174. package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
  175. package/dist/runtime/spots/spot-node-runtime-manager.js +74 -85
  176. package/dist/runtime/spots/spot-outbound.js +10 -14
  177. package/dist/runtime/spots/spot-remote-codec.js +22 -26
  178. package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
  179. package/dist/runtime/spots/spot-route-packet-dispatch.js +16 -14
  180. package/dist/runtime/spots/spot-route-replies.js +4 -6
  181. package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
  182. package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +1 -2
  183. package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
  184. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
  185. package/dist/runtime/spots/spot-serial-executor.js +5 -8
  186. package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
  187. package/dist/runtime/spots/spot-subscription-dispatch.js +5 -5
  188. package/dist/runtime/spots/spot-timer.js +25 -29
  189. package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
  190. package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
  191. package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
  192. package/dist/runtime/streams/bound-session-service.js +8 -9
  193. package/dist/runtime/streams/index.js +20 -19
  194. package/dist/runtime/streams/managed-stream.js +32 -30
  195. package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
  196. package/dist/runtime/streams/protocol.js +29 -18
  197. package/dist/runtime/streams/session-actor-coordinator.js +34 -37
  198. package/dist/runtime/streams/session-context.js +30 -28
  199. package/dist/runtime/streams/session-provider.js +2 -2
  200. package/dist/runtime/streams/session-serial-executor.js +1 -2
  201. package/dist/runtime/streams/stream-frame-factory.js +11 -5
  202. package/dist/runtime/streams/stream-session-runtime.js +70 -66
  203. package/dist/runtime/workers/index.js +15 -4
  204. package/package.json +2 -2
  205. package/src/contracts/Channels/RouteCalls.ts +6 -1
  206. package/src/contracts/Common/ZLinkMessage.ts +5 -5
  207. package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
  208. package/src/contracts/Configuration/Builders.ts +14 -14
  209. package/src/contracts/Configuration/CodecContentType.ts +8 -10
  210. package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
  211. package/src/contracts/Configuration/EndpointNotation.ts +11 -11
  212. package/src/contracts/Configuration/ObjectRoles.ts +1 -3
  213. package/src/contracts/Configuration/Registration.ts +46 -17
  214. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
  215. package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
  216. package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
  217. package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
  218. package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
  219. package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
  220. package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
  221. package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
  222. package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
  223. package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
  224. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -6
  225. package/src/contracts/Errors/index.ts +1 -4
  226. package/src/contracts/Handlers/Attributes.ts +15 -9
  227. package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
  228. package/src/contracts/Handlers/JsonContract.ts +53 -19
  229. package/src/contracts/Locations/ActorTransfer.ts +1 -5
  230. package/src/contracts/Locations/Authority.ts +4 -11
  231. package/src/contracts/Locations/Keys.ts +6 -1
  232. package/src/contracts/Locations/Options.ts +3 -2
  233. package/src/contracts/Locations/RelocationStore.ts +1 -4
  234. package/src/contracts/Locations/Resolvers.ts +5 -5
  235. package/src/contracts/Locations/RuntimeQuery.ts +6 -2
  236. package/src/contracts/Locations/Stores.ts +1 -2
  237. package/src/contracts/Locations/index.ts +2 -8
  238. package/src/contracts/RouteMesh/Contracts.ts +1 -7
  239. package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
  240. package/src/contracts/Spots/Contracts.ts +2 -8
  241. package/src/contracts/Spots/SpotKind.ts +16 -8
  242. package/src/contracts/Spots/ZLinkSpot.ts +8 -11
  243. package/src/contracts/Streams/IZLinkSession.ts +0 -1
  244. package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
  245. package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
  246. package/src/internal.ts +5 -4
  247. package/src/location-store-integration.ts +24 -16
  248. package/src/nest-integration.ts +40 -25
  249. package/src/runtime/abort.ts +10 -4
  250. package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
  251. package/src/runtime/actors/actor-authority-publication.ts +92 -77
  252. package/src/runtime/actors/actor-client.ts +162 -133
  253. package/src/runtime/actors/actor-context.ts +138 -130
  254. package/src/runtime/actors/actor-creation.ts +47 -44
  255. package/src/runtime/actors/actor-execution-context.ts +6 -4
  256. package/src/runtime/actors/actor-handoff.ts +269 -293
  257. package/src/runtime/actors/actor-join-deferred-scope.ts +5 -4
  258. package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
  259. package/src/runtime/actors/actor-local-native-join.ts +131 -159
  260. package/src/runtime/actors/actor-mailbox.ts +16 -19
  261. package/src/runtime/actors/actor-message-follow-context.ts +46 -36
  262. package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
  263. package/src/runtime/actors/actor-remote-joiner.ts +50 -54
  264. package/src/runtime/actors/actor-remote-wire.ts +9 -13
  265. package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
  266. package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
  267. package/src/runtime/actors/actor-runtime-state.ts +127 -124
  268. package/src/runtime/actors/actor-transfer-registry.ts +9 -14
  269. package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
  270. package/src/runtime/actors/bound-session-wire.ts +37 -17
  271. package/src/runtime/actors/deferred-join-accepted-journal.ts +351 -320
  272. package/src/runtime/actors/index.ts +43 -86
  273. package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
  274. package/src/runtime/actors/post-commit-actor-location.ts +30 -23
  275. package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
  276. package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
  277. package/src/runtime/admission.ts +9 -9
  278. package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
  279. package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
  280. package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
  281. package/src/runtime/backend/contracts/index.ts +73 -52
  282. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
  283. package/src/runtime/backend/mesh-completion-table.ts +6 -9
  284. package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
  285. package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
  286. package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
  287. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
  288. package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
  289. package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
  290. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
  291. package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
  292. package/src/runtime/backend/node/node-raw-mesh-backend.ts +335 -383
  293. package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
  294. package/src/runtime/backend/runtime-message.ts +5 -3
  295. package/src/runtime/backend/runtime-values.ts +10 -7
  296. package/src/runtime/channels/channel-autoconnect.ts +1 -4
  297. package/src/runtime/channels/channel-clients.ts +93 -73
  298. package/src/runtime/channels/channel-dispatch-pipeline.ts +40 -42
  299. package/src/runtime/channels/channel-dispatch-services.ts +51 -49
  300. package/src/runtime/channels/channel-dispatchers.ts +152 -96
  301. package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
  302. package/src/runtime/channels/channel-envelope.ts +256 -150
  303. package/src/runtime/channels/channel-multipart.ts +13 -5
  304. package/src/runtime/channels/channel-outbound-operations.ts +37 -41
  305. package/src/runtime/channels/channel-receive-loops.ts +102 -98
  306. package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
  307. package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
  308. package/src/runtime/channels/channel-runtime-manager.ts +63 -37
  309. package/src/runtime/channels/channel-socket-options.ts +3 -10
  310. package/src/runtime/channels/channel-socket-registry.ts +331 -273
  311. package/src/runtime/channels/channel-transports.ts +215 -197
  312. package/src/runtime/channels/client-server-location-runtime.ts +116 -100
  313. package/src/runtime/channels/client-server-service-wire.ts +37 -36
  314. package/src/runtime/channels/dispatch-error-reporter.ts +11 -8
  315. package/src/runtime/channels/fanout-location-runtime.ts +91 -94
  316. package/src/runtime/channels/fanout-service-wire.ts +5 -12
  317. package/src/runtime/channels/handler-filter-scope.ts +1 -4
  318. package/src/runtime/channels/index.ts +1 -4
  319. package/src/runtime/channels/local-spot-route-transport.ts +20 -5
  320. package/src/runtime/channels/route-member-snapshot.ts +11 -5
  321. package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
  322. package/src/runtime/channels/source-spot-router.ts +26 -22
  323. package/src/runtime/channels/spot-direct-envelope.ts +10 -8
  324. package/src/runtime/channels/spot-node-route-transport.ts +13 -16
  325. package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
  326. package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
  327. package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
  328. package/src/runtime/codecs/index.ts +3 -2
  329. package/src/runtime/diagnostics/flow-context.ts +12 -3
  330. package/src/runtime/diagnostics/index.ts +96 -61
  331. package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
  332. package/src/runtime/diagnostics/message-flow.ts +95 -76
  333. package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
  334. package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
  335. package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
  336. package/src/runtime/execution/index.ts +18 -26
  337. package/src/runtime/execution/serial-execution-queue.ts +31 -40
  338. package/src/runtime/execution/state-lane.ts +2 -2
  339. package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -51
  340. package/src/runtime/foundation/event-loop-resources.ts +8 -4
  341. package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
  342. package/src/runtime/foundation/operation-identity.ts +1 -2
  343. package/src/runtime/foundation/operation-registry.ts +8 -2
  344. package/src/runtime/foundation/raw-service-mesh-runtime.ts +312 -385
  345. package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
  346. package/src/runtime/foundation/runtime-state-projections.ts +24 -23
  347. package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
  348. package/src/runtime/foundation/service-discovery-registry.ts +67 -59
  349. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
  350. package/src/runtime/foundation/service-liveness-registry.ts +18 -13
  351. package/src/runtime/foundation/service-mailbox.ts +14 -14
  352. package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
  353. package/src/runtime/foundation/service-metadata-codec.ts +2 -9
  354. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
  355. package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
  356. package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
  357. package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
  358. package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
  359. package/src/runtime/foundation/service-session-binding-ingress-port.ts +1 -4
  360. package/src/runtime/foundation/service-stateful-registry.ts +69 -59
  361. package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
  362. package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
  363. package/src/runtime/foundation/service-topology-registry.ts +157 -159
  364. package/src/runtime/foundation/service-weighted-selection.ts +9 -15
  365. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
  366. package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
  367. package/src/runtime/framework-errors-internal.ts +31 -30
  368. package/src/runtime/handlers/handler-instance-scope.ts +18 -29
  369. package/src/runtime/handlers/index.ts +18 -8
  370. package/src/runtime/host/actor-packet-relay.ts +290 -261
  371. package/src/runtime/host/actor-placement-coordinator.ts +165 -150
  372. package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
  373. package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
  374. package/src/runtime/host/actor-transfer-runtime.ts +391 -395
  375. package/src/runtime/host/application-job-queue.ts +32 -48
  376. package/src/runtime/host/bound-session-relay.ts +7 -9
  377. package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
  378. package/src/runtime/host/host-capacity-status.ts +10 -9
  379. package/src/runtime/host/index.ts +861 -789
  380. package/src/runtime/host/instance-activation-authority.ts +125 -143
  381. package/src/runtime/host/location-runtime-owner.ts +38 -26
  382. package/src/runtime/host/mesh-router-resolver.ts +30 -23
  383. package/src/runtime/host/relocation-direct-transfer.ts +15 -15
  384. package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
  385. package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
  386. package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
  387. package/src/runtime/host/remote-bound-session-relay.ts +274 -247
  388. package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
  389. package/src/runtime/host/route-mesh-runtime.ts +227 -181
  390. package/src/runtime/host/runtime-shutdown.ts +4 -3
  391. package/src/runtime/host/service-relocation-control.ts +14 -5
  392. package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
  393. package/src/runtime/host/spot-address-transport.ts +284 -237
  394. package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
  395. package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
  396. package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
  397. package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
  398. package/src/runtime/locations/actor-location-claims.ts +61 -49
  399. package/src/runtime/locations/actor-session-route-claims.ts +1 -4
  400. package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
  401. package/src/runtime/locations/authority-key-codec.ts +13 -10
  402. package/src/runtime/locations/auto-connect-loop.ts +14 -11
  403. package/src/runtime/locations/auto-connect-planner.ts +42 -31
  404. package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
  405. package/src/runtime/locations/canonical-codec.ts +3 -1
  406. package/src/runtime/locations/creation-operation-id.ts +4 -3
  407. package/src/runtime/locations/domain-store-contract.ts +13 -7
  408. package/src/runtime/locations/in-memory-authority-store.ts +232 -199
  409. package/src/runtime/locations/in-memory-location-store.ts +432 -250
  410. package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
  411. package/src/runtime/locations/internal-store-contracts.ts +95 -38
  412. package/src/runtime/locations/key-codec.ts +3 -4
  413. package/src/runtime/locations/lease-tracker.ts +36 -27
  414. package/src/runtime/locations/lifecycle-runtime.ts +15 -3
  415. package/src/runtime/locations/lifecycle.ts +33 -28
  416. package/src/runtime/locations/location-store-repository.ts +1329 -1185
  417. package/src/runtime/locations/opaque-record-key.ts +4 -9
  418. package/src/runtime/locations/resolvers.ts +201 -178
  419. package/src/runtime/locations/runtime.ts +251 -159
  420. package/src/runtime/locations/spot-location-claims.ts +110 -112
  421. package/src/runtime/messaging/creation-payload-codec.ts +4 -1
  422. package/src/runtime/messaging/framework-json-v1.ts +34 -15
  423. package/src/runtime/messaging/packet-name.ts +8 -6
  424. package/src/runtime/messaging/payload-codec.ts +70 -50
  425. package/src/runtime/messaging/submission-result.ts +6 -9
  426. package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
  427. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  428. package/src/runtime/routing-id.ts +10 -7
  429. package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
  430. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
  431. package/src/runtime/spots/index.ts +593 -563
  432. package/src/runtime/spots/spot-activation-registry.ts +38 -34
  433. package/src/runtime/spots/spot-activation-state.ts +43 -51
  434. package/src/runtime/spots/spot-activation.ts +179 -116
  435. package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
  436. package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
  437. package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
  438. package/src/runtime/spots/spot-actor-membership.ts +25 -27
  439. package/src/runtime/spots/spot-actor-packet-dispatch.ts +184 -153
  440. package/src/runtime/spots/spot-actor-packet-drain.ts +54 -42
  441. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
  442. package/src/runtime/spots/spot-closing.ts +11 -12
  443. package/src/runtime/spots/spot-context.ts +46 -26
  444. package/src/runtime/spots/spot-entry-activation.ts +84 -65
  445. package/src/runtime/spots/spot-handle.ts +17 -15
  446. package/src/runtime/spots/spot-handler-registry.ts +44 -31
  447. package/src/runtime/spots/spot-location-claim.ts +5 -4
  448. package/src/runtime/spots/spot-manager-public.ts +62 -82
  449. package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
  450. package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
  451. package/src/runtime/spots/spot-node-runtime-manager.ts +230 -221
  452. package/src/runtime/spots/spot-outbound.ts +47 -59
  453. package/src/runtime/spots/spot-publisher-transport.ts +5 -4
  454. package/src/runtime/spots/spot-remote-codec.ts +66 -65
  455. package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
  456. package/src/runtime/spots/spot-route-packet-dispatch.ts +128 -95
  457. package/src/runtime/spots/spot-route-replies.ts +23 -24
  458. package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
  459. package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
  460. package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +11 -17
  461. package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
  462. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
  463. package/src/runtime/spots/spot-routing-internal.ts +1 -4
  464. package/src/runtime/spots/spot-runtime-ports.ts +5 -5
  465. package/src/runtime/spots/spot-serial-executor.ts +5 -9
  466. package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
  467. package/src/runtime/spots/spot-subscription-dispatch.ts +56 -46
  468. package/src/runtime/spots/spot-timer.ts +98 -91
  469. package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
  470. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
  471. package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
  472. package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
  473. package/src/runtime/streams/bound-session-response-target.ts +29 -8
  474. package/src/runtime/streams/bound-session-service.ts +39 -39
  475. package/src/runtime/streams/index.ts +176 -100
  476. package/src/runtime/streams/managed-stream.ts +98 -87
  477. package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
  478. package/src/runtime/streams/protocol.ts +73 -43
  479. package/src/runtime/streams/session-actor-coordinator.ts +97 -89
  480. package/src/runtime/streams/session-calls.ts +2 -8
  481. package/src/runtime/streams/session-context.ts +66 -48
  482. package/src/runtime/streams/session-provider.ts +5 -7
  483. package/src/runtime/streams/session-serial-executor.ts +7 -6
  484. package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
  485. package/src/runtime/streams/stream-frame-factory.ts +55 -38
  486. package/src/runtime/streams/stream-session-runtime.ts +268 -210
  487. package/src/runtime/workers/index.ts +68 -29
@@ -27,15 +27,15 @@ class ZLinkInMemoryLocationStore {
27
27
  isTargetLive: (key, lifecycleGeneration, owner) => {
28
28
  const descriptor = this.meshNodes.rows.get(meshNodeKey(key.meshName, key.rid));
29
29
  const lease = this.leases.get(owner.ownerId);
30
- return descriptor !== undefined
31
- && descriptor.lifecycleGeneration === lifecycleGeneration
32
- && descriptor.ownerId === owner.ownerId
33
- && descriptor.leaseGeneration === owner.leaseGeneration
34
- && descriptor.objectRole === internal_location_contracts_1.ZLinkObjectRole.Server
35
- && descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Serving
36
- && lease !== undefined
37
- && lease.token.leaseGeneration === owner.leaseGeneration
38
- && lease.leaseExpiresAt.getTime() > this.now().getTime();
30
+ return (descriptor !== undefined &&
31
+ descriptor.lifecycleGeneration === lifecycleGeneration &&
32
+ descriptor.ownerId === owner.ownerId &&
33
+ descriptor.leaseGeneration === owner.leaseGeneration &&
34
+ descriptor.objectRole === internal_location_contracts_1.ZLinkObjectRole.Server &&
35
+ descriptor.state === internal_location_contracts_1.ZLinkFrameworkRuntimeState.Serving &&
36
+ lease !== undefined &&
37
+ lease.token.leaseGeneration === owner.leaseGeneration &&
38
+ lease.leaseExpiresAt.getTime() > this.now().getTime());
39
39
  },
40
40
  placementCapacityAvailable: (key, requested, reserved, active) => {
41
41
  const descriptor = this.meshNodes.rows.get(meshNodeKey(key.meshName, key.rid));
@@ -44,18 +44,19 @@ class ZLinkInMemoryLocationStore {
44
44
  const spotType = requested.spotType;
45
45
  const typeCapacity = spotType === undefined
46
46
  ? undefined
47
- : descriptor.populationCapacity.spotTypes.find(candidate => candidate.objectKind === spotType.objectKind
48
- && candidate.stableType === spotType.stableType);
49
- return active.actors + reserved.actors + requested.actors
50
- <= descriptor.populationCapacity.actors.limit
51
- && active.spots + reserved.spots + requested.spots
52
- <= descriptor.populationCapacity.spots.limit
53
- && (spotType === undefined
54
- || typeCapacity !== undefined
55
- && (typeCapacity.limit === 0
56
- || (active.spotType?.count ?? 0)
57
- + (reserved.spotType?.count ?? 0)
58
- + spotType.count <= typeCapacity.limit));
47
+ : descriptor.populationCapacity.spotTypes.find((candidate) => candidate.objectKind === spotType.objectKind &&
48
+ candidate.stableType === spotType.stableType);
49
+ return (active.actors + reserved.actors + requested.actors <=
50
+ descriptor.populationCapacity.actors.limit &&
51
+ active.spots + reserved.spots + requested.spots <=
52
+ descriptor.populationCapacity.spots.limit &&
53
+ (spotType === undefined ||
54
+ (typeCapacity !== undefined &&
55
+ (typeCapacity.limit === 0 ||
56
+ (active.spotType?.count ?? 0) +
57
+ (reserved.spotType?.count ?? 0) +
58
+ spotType.count <=
59
+ typeCapacity.limit))));
59
60
  },
60
61
  identityClaimed: (authorityKey) => this.entrySpotClaims.has(authorityKey)
61
62
  }, now);
@@ -99,14 +100,14 @@ class ZLinkInMemoryLocationStore {
99
100
  const current = this.meshNodes.rows.get(key);
100
101
  const lease = this.leases.get(descriptor.ownerId);
101
102
  const updatedAt = this.now();
102
- if (lease === undefined
103
- || lease.token.leaseGeneration !== descriptor.leaseGeneration
104
- || lease.leaseExpiresAt.getTime() <= updatedAt.getTime()) {
103
+ if (lease === undefined ||
104
+ lease.token.leaseGeneration !== descriptor.leaseGeneration ||
105
+ lease.leaseExpiresAt.getTime() <= updatedAt.getTime()) {
105
106
  return rejectedConflict();
106
107
  }
107
108
  if (current === undefined) {
108
- if (intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim
109
- && intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover)
109
+ if (intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim &&
110
+ intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover)
110
111
  return ignoredStale();
111
112
  if (!this.claimEntrySpotIdentity(descriptor, key))
112
113
  return rejectedConflict();
@@ -126,18 +127,18 @@ class ZLinkInMemoryLocationStore {
126
127
  this.bump(internal_location_contracts_1.ZLinkLocationKind.Peer, descriptor.meshName);
127
128
  return stored(next, updatedAt);
128
129
  }
129
- if (current.ownerId === descriptor.ownerId
130
- && current.leaseGeneration === descriptor.leaseGeneration
131
- && current.lifecycleGeneration === descriptor.lifecycleGeneration
132
- && descriptor.descriptorRevision === current.descriptorRevision
133
- && meshNodeDescriptorFingerprint(current) === meshNodeDescriptorFingerprint(descriptor)) {
130
+ if (current.ownerId === descriptor.ownerId &&
131
+ current.leaseGeneration === descriptor.leaseGeneration &&
132
+ current.lifecycleGeneration === descriptor.lifecycleGeneration &&
133
+ descriptor.descriptorRevision === current.descriptorRevision &&
134
+ meshNodeDescriptorFingerprint(current) === meshNodeDescriptorFingerprint(descriptor)) {
134
135
  return stored(this.meshNodes.generations.get(key) ?? 1n, current.updatedAt);
135
136
  }
136
- if (current.ownerId !== descriptor.ownerId
137
- || current.leaseGeneration !== descriptor.leaseGeneration
138
- || current.lifecycleGeneration !== descriptor.lifecycleGeneration
139
- || descriptor.descriptorRevision <= current.descriptorRevision
140
- || meshNodeImmutableFingerprint(current) !== meshNodeImmutableFingerprint(descriptor)) {
137
+ if (current.ownerId !== descriptor.ownerId ||
138
+ current.leaseGeneration !== descriptor.leaseGeneration ||
139
+ current.lifecycleGeneration !== descriptor.lifecycleGeneration ||
140
+ descriptor.descriptorRevision <= current.descriptorRevision ||
141
+ meshNodeImmutableFingerprint(current) !== meshNodeImmutableFingerprint(descriptor)) {
141
142
  return ignoredStale();
142
143
  }
143
144
  this.meshNodes.rows.set(key, { ...descriptor, updatedAt });
@@ -147,9 +148,9 @@ class ZLinkInMemoryLocationStore {
147
148
  async removeMeshNode(key, owner) {
148
149
  const encoded = meshNodeKey(key.meshName, key.rid);
149
150
  const current = this.meshNodes.rows.get(encoded);
150
- if (current === undefined
151
- || current.ownerId !== owner.ownerId
152
- || current.leaseGeneration !== owner.leaseGeneration) {
151
+ if (current === undefined ||
152
+ current.ownerId !== owner.ownerId ||
153
+ current.leaseGeneration !== owner.leaseGeneration) {
153
154
  return internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale;
154
155
  }
155
156
  this.meshNodes.rows.delete(encoded);
@@ -166,7 +167,7 @@ class ZLinkInMemoryLocationStore {
166
167
  const objectCapabilities = row.objectCapabilities.map((capability) => {
167
168
  return { ...capability };
168
169
  });
169
- const spotTypes = row.populationCapacity.spotTypes.map(capacity => {
170
+ const spotTypes = row.populationCapacity.spotTypes.map((capacity) => {
170
171
  const usage = this.authority.capacityUsage(descriptor, row.lifecycleGeneration, capacity.objectKind, capacity.stableType);
171
172
  return { ...capacity, ...usage };
172
173
  });
@@ -182,7 +183,7 @@ class ZLinkInMemoryLocationStore {
182
183
  }
183
184
  };
184
185
  });
185
- return pageValues(rows, page ?? {}, row => meshNodeKey(row.meshName, row.rid));
186
+ return pageValues(rows, page ?? {}, (row) => meshNodeKey(row.meshName, row.rid));
186
187
  }
187
188
  async updateClientServer(descriptor, intent, signal) {
188
189
  signal?.throwIfAborted();
@@ -191,14 +192,14 @@ class ZLinkInMemoryLocationStore {
191
192
  const current = this.clientServers.rows.get(key);
192
193
  const lease = this.leases.get(descriptor.ownerId);
193
194
  const updatedAt = this.now();
194
- if (lease === undefined
195
- || lease.token.leaseGeneration !== descriptor.leaseGeneration
196
- || lease.leaseExpiresAt.getTime() <= updatedAt.getTime()) {
195
+ if (lease === undefined ||
196
+ lease.token.leaseGeneration !== descriptor.leaseGeneration ||
197
+ lease.leaseExpiresAt.getTime() <= updatedAt.getTime()) {
197
198
  return rejectedConflict();
198
199
  }
199
200
  if (current === undefined) {
200
- if (intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim
201
- && intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover)
201
+ if (intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim &&
202
+ intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover)
202
203
  return ignoredStale();
203
204
  const generation = (this.clientServers.generations.get(key) ?? 0n) + 1n;
204
205
  this.clientServers.rows.set(key, { ...descriptor, updatedAt });
@@ -217,11 +218,11 @@ class ZLinkInMemoryLocationStore {
217
218
  if (clientServerDescriptorFingerprint(current) === clientServerDescriptorFingerprint(descriptor)) {
218
219
  return stored(this.clientServers.generations.get(key) ?? 1n, current.updatedAt);
219
220
  }
220
- if (current.ownerId !== descriptor.ownerId
221
- || current.leaseGeneration !== descriptor.leaseGeneration
222
- || current.lifecycleGeneration !== descriptor.lifecycleGeneration
223
- || descriptor.descriptorRevision <= current.descriptorRevision
224
- || clientServerImmutableFingerprint(current) !== clientServerImmutableFingerprint(descriptor)) {
221
+ if (current.ownerId !== descriptor.ownerId ||
222
+ current.leaseGeneration !== descriptor.leaseGeneration ||
223
+ current.lifecycleGeneration !== descriptor.lifecycleGeneration ||
224
+ descriptor.descriptorRevision <= current.descriptorRevision ||
225
+ clientServerImmutableFingerprint(current) !== clientServerImmutableFingerprint(descriptor)) {
225
226
  return ignoredStale();
226
227
  }
227
228
  this.clientServers.rows.set(key, { ...descriptor, updatedAt });
@@ -232,9 +233,9 @@ class ZLinkInMemoryLocationStore {
232
233
  signal?.throwIfAborted();
233
234
  const encoded = clientServerKey(key.channelName, key.serverRid);
234
235
  const current = this.clientServers.rows.get(encoded);
235
- if (current === undefined
236
- || current.ownerId !== owner.ownerId
237
- || current.leaseGeneration !== owner.leaseGeneration) {
236
+ if (current === undefined ||
237
+ current.ownerId !== owner.ownerId ||
238
+ current.leaseGeneration !== owner.leaseGeneration) {
238
239
  return internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale;
239
240
  }
240
241
  this.clientServers.rows.delete(encoded);
@@ -252,14 +253,14 @@ class ZLinkInMemoryLocationStore {
252
253
  const current = this.fanoutPublishers.rows.get(key);
253
254
  const lease = this.leases.get(descriptor.ownerId);
254
255
  const updatedAt = this.now();
255
- if (lease === undefined
256
- || lease.token.leaseGeneration !== descriptor.leaseGeneration
257
- || lease.leaseExpiresAt.getTime() <= updatedAt.getTime()) {
256
+ if (lease === undefined ||
257
+ lease.token.leaseGeneration !== descriptor.leaseGeneration ||
258
+ lease.leaseExpiresAt.getTime() <= updatedAt.getTime()) {
258
259
  return rejectedConflict();
259
260
  }
260
261
  if (current === undefined) {
261
- if (intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim
262
- && intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover)
262
+ if (intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim &&
263
+ intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover)
263
264
  return ignoredStale();
264
265
  const generation = (this.fanoutPublishers.generations.get(key) ?? 0n) + 1n;
265
266
  this.fanoutPublishers.rows.set(key, { ...descriptor, updatedAt });
@@ -273,16 +274,16 @@ class ZLinkInMemoryLocationStore {
273
274
  this.fanoutPublishers.generations.set(key, generation);
274
275
  return stored(generation, updatedAt);
275
276
  }
276
- if (fanoutPublisherDescriptorFingerprint(current)
277
- === fanoutPublisherDescriptorFingerprint(descriptor)) {
277
+ if (fanoutPublisherDescriptorFingerprint(current) ===
278
+ fanoutPublisherDescriptorFingerprint(descriptor)) {
278
279
  return stored(this.fanoutPublishers.generations.get(key) ?? 1n, current.updatedAt);
279
280
  }
280
- if (current.ownerId !== descriptor.ownerId
281
- || current.leaseGeneration !== descriptor.leaseGeneration
282
- || current.lifecycleGeneration !== descriptor.lifecycleGeneration
283
- || descriptor.descriptorRevision <= current.descriptorRevision
284
- || fanoutPublisherImmutableFingerprint(current)
285
- !== fanoutPublisherImmutableFingerprint(descriptor)) {
281
+ if (current.ownerId !== descriptor.ownerId ||
282
+ current.leaseGeneration !== descriptor.leaseGeneration ||
283
+ current.lifecycleGeneration !== descriptor.lifecycleGeneration ||
284
+ descriptor.descriptorRevision <= current.descriptorRevision ||
285
+ fanoutPublisherImmutableFingerprint(current) !==
286
+ fanoutPublisherImmutableFingerprint(descriptor)) {
286
287
  return ignoredStale();
287
288
  }
288
289
  this.fanoutPublishers.rows.set(key, { ...descriptor, updatedAt });
@@ -292,9 +293,9 @@ class ZLinkInMemoryLocationStore {
292
293
  signal?.throwIfAborted();
293
294
  const encoded = fanoutPublisherKey(key.channelName, key.publisherRid);
294
295
  const current = this.fanoutPublishers.rows.get(encoded);
295
- if (current === undefined
296
- || current.ownerId !== owner.ownerId
297
- || current.leaseGeneration !== owner.leaseGeneration) {
296
+ if (current === undefined ||
297
+ current.ownerId !== owner.ownerId ||
298
+ current.leaseGeneration !== owner.leaseGeneration) {
298
299
  return internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale;
299
300
  }
300
301
  this.fanoutPublishers.rows.delete(encoded);
@@ -321,25 +322,28 @@ class ZLinkInMemoryLocationStore {
321
322
  return [...this.peers.rows.values()].filter((row) => (0, location_store_integration_1.matchesPeerLocation)(row, filter));
322
323
  }
323
324
  async updateSpot(spot, intent) {
324
- const key = key_codec_1.ZLinkLocationKeyCodec.encodeSpotKey({ meshName: spot.meshName, spotId: spot.spotId });
325
+ const key = key_codec_1.ZLinkLocationKeyCodec.encodeSpotKey({
326
+ meshName: spot.meshName,
327
+ spotId: spot.spotId
328
+ });
325
329
  const updatedAt = this.now();
326
330
  const current = this.spots.rows.get(key);
327
- if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim
328
- && current !== undefined
329
- && this.isOwnerLive(current.ownerId, updatedAt)) {
331
+ if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim &&
332
+ current !== undefined &&
333
+ this.isOwnerLive(current.ownerId, updatedAt)) {
330
334
  return rejectedConflict();
331
335
  }
332
336
  if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.Renew) {
333
- if (current === undefined
334
- || current.ownerId !== spot.ownerId
335
- || current.leaseGeneration !== spot.leaseGeneration)
337
+ if (current === undefined ||
338
+ current.ownerId !== spot.ownerId ||
339
+ current.leaseGeneration !== spot.leaseGeneration)
336
340
  return ignoredStale();
337
341
  this.spots.rows.set(key, { ...spot, updatedAt });
338
342
  this.bump(internal_location_contracts_1.ZLinkLocationKind.Spot, spot.meshName);
339
343
  return stored(this.spots.generations.get(key) ?? 0n, updatedAt);
340
344
  }
341
- if (current !== undefined
342
- && !canTakeOver(current.ownerId, current.leaseGeneration, this.leases.get(current.ownerId), spot.ownerId, spot.leaseGeneration, intent, updatedAt))
345
+ if (current !== undefined &&
346
+ !canTakeOver(current.ownerId, current.leaseGeneration, this.leases.get(current.ownerId), spot.ownerId, spot.leaseGeneration, intent, updatedAt))
343
347
  return rejectedConflict();
344
348
  const generation = (this.spots.generations.get(key) ?? 0n) + 1n;
345
349
  this.spots.generations.set(key, generation);
@@ -351,9 +355,9 @@ class ZLinkInMemoryLocationStore {
351
355
  const encoded = key_codec_1.ZLinkLocationKeyCodec.encodeSpotKey(key);
352
356
  const current = this.spots.rows.get(encoded);
353
357
  const leaseGeneration = current?.leaseGeneration ?? this.spots.generations.get(encoded);
354
- if (current === undefined
355
- || current.ownerId !== owner.ownerId
356
- || leaseGeneration !== owner.leaseGeneration) {
358
+ if (current === undefined ||
359
+ current.ownerId !== owner.ownerId ||
360
+ leaseGeneration !== owner.leaseGeneration) {
357
361
  return internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale;
358
362
  }
359
363
  this.spots.rows.delete(encoded);
@@ -367,25 +371,28 @@ class ZLinkInMemoryLocationStore {
367
371
  return pageRows(this.spots, (row) => (0, location_store_integration_1.matchesSpotLocation)(row, filter), page);
368
372
  }
369
373
  async updateActor(actor, intent) {
370
- const key = key_codec_1.ZLinkLocationKeyCodec.encodeActorKey({ meshName: actor.meshName, actorId: actor.actorId });
374
+ const key = key_codec_1.ZLinkLocationKeyCodec.encodeActorKey({
375
+ meshName: actor.meshName,
376
+ actorId: actor.actorId
377
+ });
371
378
  const updatedAt = this.now();
372
379
  const current = this.actors.rows.get(key);
373
- if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim
374
- && current !== undefined
375
- && this.isOwnerLive(current.ownerId, updatedAt)) {
380
+ if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim &&
381
+ current !== undefined &&
382
+ this.isOwnerLive(current.ownerId, updatedAt)) {
376
383
  return rejectedConflict();
377
384
  }
378
385
  if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.Renew) {
379
- if (current === undefined
380
- || current.ownerId !== actor.ownerId
381
- || current.leaseGeneration !== actor.leaseGeneration)
386
+ if (current === undefined ||
387
+ current.ownerId !== actor.ownerId ||
388
+ current.leaseGeneration !== actor.leaseGeneration)
382
389
  return ignoredStale();
383
390
  this.actors.rows.set(key, { ...actor, updatedAt });
384
391
  this.bump(internal_location_contracts_1.ZLinkLocationKind.Actor, actor.meshName);
385
392
  return stored(this.actors.generations.get(key) ?? 0n, updatedAt);
386
393
  }
387
- if (current !== undefined
388
- && !canTakeOver(current.ownerId, current.leaseGeneration, this.leases.get(current.ownerId), actor.ownerId, actor.leaseGeneration, intent, updatedAt))
394
+ if (current !== undefined &&
395
+ !canTakeOver(current.ownerId, current.leaseGeneration, this.leases.get(current.ownerId), actor.ownerId, actor.leaseGeneration, intent, updatedAt))
389
396
  return rejectedConflict();
390
397
  const generation = (this.actors.generations.get(key) ?? 0n) + 1n;
391
398
  this.actors.generations.set(key, generation);
@@ -397,9 +404,9 @@ class ZLinkInMemoryLocationStore {
397
404
  const encoded = key_codec_1.ZLinkLocationKeyCodec.encodeActorKey(key);
398
405
  const current = this.actors.rows.get(encoded);
399
406
  const leaseGeneration = current?.leaseGeneration ?? this.actors.generations.get(encoded);
400
- if (current === undefined
401
- || current.ownerId !== owner.ownerId
402
- || leaseGeneration !== owner.leaseGeneration) {
407
+ if (current === undefined ||
408
+ current.ownerId !== owner.ownerId ||
409
+ leaseGeneration !== owner.leaseGeneration) {
403
410
  return internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale;
404
411
  }
405
412
  this.actors.rows.delete(encoded);
@@ -413,7 +420,10 @@ class ZLinkInMemoryLocationStore {
413
420
  return pageRows(this.actors, (row) => (0, location_store_integration_1.matchesActorLocation)(row, filter), page);
414
421
  }
415
422
  async updateRoute(route, intent) {
416
- return this.write(this.routes, key_codec_1.ZLinkLocationKeyCodec.encodeRouteKey({ routeKind: route.routeKind, routeKey: route.routeKey }), route, intent, route.ownerId, route.generation, (row) => row.ownerId, (row) => row.generation, (row, generation, updatedAt) => ({ ...row, generation, updatedAt }), internal_location_contracts_1.ZLinkLocationKind.Route, undefined);
423
+ return this.write(this.routes, key_codec_1.ZLinkLocationKeyCodec.encodeRouteKey({
424
+ routeKind: route.routeKind,
425
+ routeKey: route.routeKey
426
+ }), route, intent, route.ownerId, route.generation, (row) => row.ownerId, (row) => row.generation, (row, generation, updatedAt) => ({ ...row, generation, updatedAt }), internal_location_contracts_1.ZLinkLocationKind.Route, undefined);
417
427
  }
418
428
  async removeRoute(key, owner) {
419
429
  return this.remove(this.routes, key_codec_1.ZLinkLocationKeyCodec.encodeRouteKey(key), owner, (row) => row.ownerId, (row) => row.generation, internal_location_contracts_1.ZLinkLocationKind.Route, undefined);
@@ -475,7 +485,9 @@ class ZLinkInMemoryLocationStore {
475
485
  signal?.throwIfAborted();
476
486
  validateTransferIdentity(meshName, actorId, transferId);
477
487
  validateTransferLease(successorOwnerId, recoveryLeaseTtlMs);
478
- const record = this.actorTransfers.get(actorTransferKey(meshName, actorId))?.records.get(transferId);
488
+ const record = this.actorTransfers
489
+ .get(actorTransferKey(meshName, actorId))
490
+ ?.records.get(transferId);
479
491
  if (record === undefined)
480
492
  return transferResult('notFound');
481
493
  if (record.state !== 'prepared' && record.state !== 'committed') {
@@ -497,7 +509,9 @@ class ZLinkInMemoryLocationStore {
497
509
  async resolveActorTransfer(meshName, actorId, signal) {
498
510
  signal?.throwIfAborted();
499
511
  const slot = this.actorTransfers.get(actorTransferKey(meshName, actorId));
500
- return slot?.activeTransferId === undefined ? undefined : slot.records.get(slot.activeTransferId);
512
+ return slot?.activeTransferId === undefined
513
+ ? undefined
514
+ : slot.records.get(slot.activeTransferId);
501
515
  }
502
516
  async claimOwnerLease(ownerId, leaseTtlMs, signal) {
503
517
  signal?.throwIfAborted();
@@ -537,9 +551,9 @@ class ZLinkInMemoryLocationStore {
537
551
  validateOwnerLeaseInput(token.ownerId, leaseTtlMs);
538
552
  const storeNow = this.now();
539
553
  const current = this.leases.get(token.ownerId);
540
- if (current === undefined
541
- || current.leaseExpiresAt.getTime() <= storeNow.getTime()
542
- || current.token.leaseGeneration !== token.leaseGeneration) {
554
+ if (current === undefined ||
555
+ current.leaseExpiresAt.getTime() <= storeNow.getTime() ||
556
+ current.token.leaseGeneration !== token.leaseGeneration) {
543
557
  return { kind: 'stale' };
544
558
  }
545
559
  const leaseExpiresAt = new Date(storeNow.getTime() + leaseTtlMs);
@@ -558,9 +572,9 @@ class ZLinkInMemoryLocationStore {
558
572
  async removeAllByOwner(owner, signal) {
559
573
  signal?.throwIfAborted();
560
574
  const lease = this.leases.get(owner.ownerId);
561
- if (lease === undefined
562
- || lease.token.leaseGeneration !== owner.leaseGeneration
563
- || lease.leaseExpiresAt.getTime() <= this.now().getTime()) {
575
+ if (lease === undefined ||
576
+ lease.token.leaseGeneration !== owner.leaseGeneration ||
577
+ lease.leaseExpiresAt.getTime() <= this.now().getTime()) {
564
578
  return 0n;
565
579
  }
566
580
  const ownerId = owner.ownerId;
@@ -587,9 +601,9 @@ class ZLinkInMemoryLocationStore {
587
601
  const authorityKey = (0, authority_key_codec_1.encodeAuthorityKey)('user_spot', descriptor.entrySpotId).value;
588
602
  const current = this.entrySpotClaims.get(authorityKey);
589
603
  if (current !== undefined) {
590
- if (current.descriptorKey !== descriptorKey
591
- || current.ownerId !== descriptor.ownerId
592
- || current.lifecycleGeneration !== descriptor.lifecycleGeneration) {
604
+ if (current.descriptorKey !== descriptorKey ||
605
+ current.ownerId !== descriptor.ownerId ||
606
+ current.lifecycleGeneration !== descriptor.lifecycleGeneration) {
593
607
  return false;
594
608
  }
595
609
  this.entrySpotClaims.set(authorityKey, {
@@ -611,9 +625,9 @@ class ZLinkInMemoryLocationStore {
611
625
  return;
612
626
  const authorityKey = (0, authority_key_codec_1.encodeAuthorityKey)('user_spot', descriptor.entrySpotId).value;
613
627
  const current = this.entrySpotClaims.get(authorityKey);
614
- if (current?.ownerId === descriptor.ownerId
615
- && current.leaseGeneration === descriptor.leaseGeneration
616
- && current.lifecycleGeneration === descriptor.lifecycleGeneration) {
628
+ if (current?.ownerId === descriptor.ownerId &&
629
+ current.leaseGeneration === descriptor.leaseGeneration &&
630
+ current.lifecycleGeneration === descriptor.lifecycleGeneration) {
617
631
  this.entrySpotClaims.delete(authorityKey);
618
632
  }
619
633
  }
@@ -623,21 +637,22 @@ class ZLinkInMemoryLocationStore {
623
637
  write(table, key, row, intent, ownerId, generation, ownerOf, generationOf, finalize, kind, meshName) {
624
638
  const updatedAt = this.now();
625
639
  const current = table.rows.get(key);
626
- if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim
627
- && current !== undefined
628
- && this.isOwnerLive(ownerOf(current), updatedAt)) {
640
+ if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim &&
641
+ current !== undefined &&
642
+ this.isOwnerLive(ownerOf(current), updatedAt)) {
629
643
  return rejectedConflict();
630
644
  }
631
- if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim || intent === internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover) {
645
+ if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim ||
646
+ intent === internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover) {
632
647
  const next = (table.generations.get(key) ?? 0n) + 1n;
633
648
  table.generations.set(key, next);
634
649
  table.rows.set(key, finalize(row, next, updatedAt));
635
650
  this.bump(kind, meshName);
636
651
  return stored(next, updatedAt);
637
652
  }
638
- if (current !== undefined
639
- && ownerOf(current) === ownerId
640
- && (generation === 0n || generationOf(current) === generation)) {
653
+ if (current !== undefined &&
654
+ ownerOf(current) === ownerId &&
655
+ (generation === 0n || generationOf(current) === generation)) {
641
656
  table.rows.set(key, finalize(row, generation, updatedAt));
642
657
  this.bump(kind, meshName);
643
658
  return stored(table.generations.get(key) ?? generation, updatedAt);
@@ -667,8 +682,9 @@ class ZLinkInMemoryLocationStore {
667
682
  }
668
683
  remove(table, key, owner, ownerOf, generationOf, kind, meshName) {
669
684
  const current = table.rows.get(key);
670
- if (current === undefined || ownerOf(current) !== owner.ownerId
671
- || generationOf(current) !== owner.leaseGeneration) {
685
+ if (current === undefined ||
686
+ ownerOf(current) !== owner.ownerId ||
687
+ generationOf(current) !== owner.leaseGeneration) {
672
688
  return ignoredStale();
673
689
  }
674
690
  table.rows.delete(key);
@@ -729,10 +745,14 @@ function validateMeshNodeDescriptor(descriptor) {
729
745
  throw new TypeError('Only Object Server descriptors may publish an Entry Spot ID.');
730
746
  }
731
747
  const maxGeneration = 0x7fffffffffffffffn;
732
- if (descriptor.lifecycleGeneration < 1n || descriptor.lifecycleGeneration > maxGeneration
733
- || descriptor.descriptorRevision < 1n || descriptor.descriptorRevision > maxGeneration
734
- || descriptor.leaseGeneration < 1n || descriptor.leaseGeneration > maxGeneration
735
- || descriptor.applicationVersion < 0n || descriptor.applicationVersion > maxGeneration) {
748
+ if (descriptor.lifecycleGeneration < 1n ||
749
+ descriptor.lifecycleGeneration > maxGeneration ||
750
+ descriptor.descriptorRevision < 1n ||
751
+ descriptor.descriptorRevision > maxGeneration ||
752
+ descriptor.leaseGeneration < 1n ||
753
+ descriptor.leaseGeneration > maxGeneration ||
754
+ descriptor.applicationVersion < 0n ||
755
+ descriptor.applicationVersion > maxGeneration) {
736
756
  throw new RangeError('MeshNode descriptor generations are invalid.');
737
757
  }
738
758
  const capacities = [
@@ -740,20 +760,22 @@ function validateMeshNodeDescriptor(descriptor) {
740
760
  descriptor.populationCapacity.spots,
741
761
  ...descriptor.populationCapacity.spotTypes
742
762
  ];
743
- const values = capacities.flatMap(capacity => [capacity.active, capacity.reserved, capacity.limit]);
744
- if (values.some(value => !Number.isSafeInteger(value) || value < 0)
745
- || capacities.some(capacity => capacity.active + capacity.reserved > capacity.limit
746
- && capacity.limit !== 0)
747
- || !Number.isSafeInteger(descriptor.activationConcurrency.active)
748
- || descriptor.activationConcurrency.active < 0
749
- || !Number.isSafeInteger(descriptor.activationConcurrency.limit)
750
- || descriptor.activationConcurrency.limit < 1
751
- || descriptor.activationConcurrency.active > descriptor.activationConcurrency.limit
752
- || descriptor.placementWeight < 0
753
- || descriptor.placementWeight > 10_000
754
- || descriptor.objectCapabilities.length > 1024
755
- || (descriptor.objectRole !== internal_location_contracts_1.ZLinkObjectRole.Server
756
- && descriptor.objectCapabilities.length !== 0)) {
763
+ const values = capacities.flatMap((capacity) => [
764
+ capacity.active,
765
+ capacity.reserved,
766
+ capacity.limit
767
+ ]);
768
+ if (values.some((value) => !Number.isSafeInteger(value) || value < 0) ||
769
+ capacities.some((capacity) => capacity.active + capacity.reserved > capacity.limit && capacity.limit !== 0) ||
770
+ !Number.isSafeInteger(descriptor.activationConcurrency.active) ||
771
+ descriptor.activationConcurrency.active < 0 ||
772
+ !Number.isSafeInteger(descriptor.activationConcurrency.limit) ||
773
+ descriptor.activationConcurrency.limit < 1 ||
774
+ descriptor.activationConcurrency.active > descriptor.activationConcurrency.limit ||
775
+ descriptor.placementWeight < 0 ||
776
+ descriptor.placementWeight > 10_000 ||
777
+ descriptor.objectCapabilities.length > 1024 ||
778
+ (descriptor.objectRole !== internal_location_contracts_1.ZLinkObjectRole.Server && descriptor.objectCapabilities.length !== 0)) {
757
779
  throw new RangeError('MeshNode object capacity is invalid.');
758
780
  }
759
781
  const keys = new Set();
@@ -768,8 +790,9 @@ function validateMeshNodeDescriptor(descriptor) {
768
790
  if ((capability.policy === 'snapshot') !== capability.hasSnapshotAdapter) {
769
791
  throw new TypeError('Snapshot adapter presence does not match the maintenance policy.');
770
792
  }
771
- if (!Number.isSafeInteger(capability.limit) || capability.limit < 0
772
- || capability.objectKind === 'actor' && capability.limit !== 0) {
793
+ if (!Number.isSafeInteger(capability.limit) ||
794
+ capability.limit < 0 ||
795
+ (capability.objectKind === 'actor' && capability.limit !== 0)) {
773
796
  throw new RangeError('MeshNode capability limit is invalid.');
774
797
  }
775
798
  }
@@ -779,8 +802,7 @@ function validDescriptorText(value) {
779
802
  return size >= 1 && size <= 255 && !value.includes('\0');
780
803
  }
781
804
  function meshNodeImmutableFingerprint(descriptor) {
782
- const capabilities = [...descriptor.objectCapabilities]
783
- .sort((left, right) => {
805
+ const capabilities = [...descriptor.objectCapabilities].sort((left, right) => {
784
806
  const byKind = left.objectKind.localeCompare(right.objectKind);
785
807
  return byKind !== 0 ? byKind : left.stableType.localeCompare(right.stableType);
786
808
  });
@@ -817,9 +839,7 @@ function meshNodeDescriptorFingerprint(descriptor) {
817
839
  }
818
840
  const TRANSFER_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
819
841
  function meshNodeKey(meshName, rid) {
820
- const value = typeof rid === 'string'
821
- ? rid
822
- : rid.toHex();
842
+ const value = typeof rid === 'string' ? rid : rid.toHex();
823
843
  return `${meshName.length}:${meshName}:${value.length}:${value}`;
824
844
  }
825
845
  function clientServerKey(channelName, serverRid) {
@@ -835,17 +855,20 @@ function fanoutPublisherKey(channelName, publisherRid) {
835
855
  return `${channelName.length}:${channelName}:${value.length}:${value}`;
836
856
  }
837
857
  function validateClientServerDescriptor(descriptor) {
838
- if (!validDescriptorText(descriptor.channelName)
839
- || !validDescriptorText(String(descriptor.serverRid))
840
- || !validDescriptorText(descriptor.endpoint)
841
- || !validDescriptorText(descriptor.securityIdentity)
842
- || !validDescriptorText(descriptor.ownerId)) {
858
+ if (!validDescriptorText(descriptor.channelName) ||
859
+ !validDescriptorText(String(descriptor.serverRid)) ||
860
+ !validDescriptorText(descriptor.endpoint) ||
861
+ !validDescriptorText(descriptor.securityIdentity) ||
862
+ !validDescriptorText(descriptor.ownerId)) {
843
863
  throw new TypeError('ClientServer descriptor identity and endpoint are required.');
844
864
  }
845
865
  const maxGeneration = 0x7fffffffffffffffn;
846
- if (descriptor.lifecycleGeneration < 1n || descriptor.lifecycleGeneration > maxGeneration
847
- || descriptor.descriptorRevision < 1n || descriptor.descriptorRevision > maxGeneration
848
- || descriptor.leaseGeneration < 1n || descriptor.leaseGeneration > maxGeneration) {
866
+ if (descriptor.lifecycleGeneration < 1n ||
867
+ descriptor.lifecycleGeneration > maxGeneration ||
868
+ descriptor.descriptorRevision < 1n ||
869
+ descriptor.descriptorRevision > maxGeneration ||
870
+ descriptor.leaseGeneration < 1n ||
871
+ descriptor.leaseGeneration > maxGeneration) {
849
872
  throw new RangeError('ClientServer descriptor generations are invalid.');
850
873
  }
851
874
  if (!Number.isInteger(descriptor.weight) || descriptor.weight < 0 || descriptor.weight > 10_000) {
@@ -872,17 +895,20 @@ function clientServerDescriptorFingerprint(descriptor) {
872
895
  });
873
896
  }
874
897
  function validateFanoutPublisherDescriptor(descriptor) {
875
- if (!validDescriptorText(descriptor.channelName)
876
- || !validDescriptorText(String(descriptor.publisherRid))
877
- || !validDescriptorText(descriptor.endpoint)
878
- || !validDescriptorText(descriptor.securityIdentity)
879
- || !validDescriptorText(descriptor.ownerId)) {
898
+ if (!validDescriptorText(descriptor.channelName) ||
899
+ !validDescriptorText(String(descriptor.publisherRid)) ||
900
+ !validDescriptorText(descriptor.endpoint) ||
901
+ !validDescriptorText(descriptor.securityIdentity) ||
902
+ !validDescriptorText(descriptor.ownerId)) {
880
903
  throw new TypeError('Fanout publisher descriptor identity and endpoint are required.');
881
904
  }
882
905
  const maxGeneration = 0x7fffffffffffffffn;
883
- if (descriptor.lifecycleGeneration < 1n || descriptor.lifecycleGeneration > maxGeneration
884
- || descriptor.descriptorRevision < 1n || descriptor.descriptorRevision > maxGeneration
885
- || descriptor.leaseGeneration < 1n || descriptor.leaseGeneration > maxGeneration) {
906
+ if (descriptor.lifecycleGeneration < 1n ||
907
+ descriptor.lifecycleGeneration > maxGeneration ||
908
+ descriptor.descriptorRevision < 1n ||
909
+ descriptor.descriptorRevision > maxGeneration ||
910
+ descriptor.leaseGeneration < 1n ||
911
+ descriptor.leaseGeneration > maxGeneration) {
886
912
  throw new RangeError('Fanout publisher descriptor generations are invalid.');
887
913
  }
888
914
  }
@@ -960,9 +986,7 @@ function pageRows(table, matches, page) {
960
986
  function pageValues(rows, page, key) {
961
987
  const ordered = [...rows].sort((left, right) => key(left).localeCompare(key(right)));
962
988
  const offset = parseContinuationToken(page.continuationToken);
963
- const size = page.pageSize !== undefined && page.pageSize > 0
964
- ? page.pageSize
965
- : Number.MAX_SAFE_INTEGER;
989
+ const size = page.pageSize !== undefined && page.pageSize > 0 ? page.pageSize : Number.MAX_SAFE_INTEGER;
966
990
  const items = ordered.slice(offset, offset + size);
967
991
  const nextOffset = offset + items.length;
968
992
  return {
@@ -987,7 +1011,11 @@ function ignoredStale() {
987
1011
  return { status: internal_location_contracts_1.ZLinkLocationWriteStatus.IgnoredStale, generation: 0n, updatedAt: new Date(0) };
988
1012
  }
989
1013
  function rejectedConflict() {
990
- return { status: internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict, generation: 0n, updatedAt: new Date(0) };
1014
+ return {
1015
+ status: internal_location_contracts_1.ZLinkLocationWriteStatus.RejectedConflict,
1016
+ generation: 0n,
1017
+ updatedAt: new Date(0)
1018
+ };
991
1019
  }
992
1020
  function canTakeOver(currentOwnerId, currentLeaseGeneration, currentLease, nextOwnerId, nextLeaseGeneration, intent, now) {
993
1021
  if (intent === internal_location_contracts_1.ZLinkLocationWriteIntent.Takeover) {
@@ -998,11 +1026,10 @@ function canTakeOver(currentOwnerId, currentLeaseGeneration, currentLease, nextO
998
1026
  if (intent !== internal_location_contracts_1.ZLinkLocationWriteIntent.NewClaim) {
999
1027
  return false;
1000
1028
  }
1001
- const ownerGone = currentLease === undefined
1002
- || currentLease.leaseExpiresAt.getTime() <= now.getTime();
1029
+ const ownerGone = currentLease === undefined || currentLease.leaseExpiresAt.getTime() <= now.getTime();
1003
1030
  if (ownerGone)
1004
1031
  return true;
1005
- return currentOwnerId === nextOwnerId
1006
- && currentLeaseGeneration !== nextLeaseGeneration
1007
- && currentLease.token.leaseGeneration === nextLeaseGeneration;
1032
+ return (currentOwnerId === nextOwnerId &&
1033
+ currentLeaseGeneration !== nextLeaseGeneration &&
1034
+ currentLease.token.leaseGeneration === nextLeaseGeneration);
1008
1035
  }