@spine-event-engine/server 2.0.0-snapshot.2

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 (354) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +569 -0
  3. package/REFERENCE.md +488 -0
  4. package/dist/bus/command-bus.d.ts +61 -0
  5. package/dist/bus/command-bus.d.ts.map +1 -0
  6. package/dist/bus/command-bus.js +201 -0
  7. package/dist/bus/command-bus.js.map +1 -0
  8. package/dist/bus/command-dispatcher-registry.d.ts +33 -0
  9. package/dist/bus/command-dispatcher-registry.d.ts.map +1 -0
  10. package/dist/bus/command-dispatcher-registry.js +75 -0
  11. package/dist/bus/command-dispatcher-registry.js.map +1 -0
  12. package/dist/bus/command-dispatcher.d.ts +25 -0
  13. package/dist/bus/command-dispatcher.d.ts.map +1 -0
  14. package/dist/bus/command-dispatcher.js +15 -0
  15. package/dist/bus/command-dispatcher.js.map +1 -0
  16. package/dist/bus/command-errors.d.ts +23 -0
  17. package/dist/bus/command-errors.d.ts.map +1 -0
  18. package/dist/bus/command-errors.js +52 -0
  19. package/dist/bus/command-errors.js.map +1 -0
  20. package/dist/bus/event-bus.d.ts +113 -0
  21. package/dist/bus/event-bus.d.ts.map +1 -0
  22. package/dist/bus/event-bus.js +518 -0
  23. package/dist/bus/event-bus.js.map +1 -0
  24. package/dist/bus/event-dispatcher-origin-schemas.d.ts +17 -0
  25. package/dist/bus/event-dispatcher-origin-schemas.d.ts.map +1 -0
  26. package/dist/bus/event-dispatcher-origin-schemas.js +32 -0
  27. package/dist/bus/event-dispatcher-origin-schemas.js.map +1 -0
  28. package/dist/bus/event-dispatcher-registry.d.ts +48 -0
  29. package/dist/bus/event-dispatcher-registry.d.ts.map +1 -0
  30. package/dist/bus/event-dispatcher-registry.js +176 -0
  31. package/dist/bus/event-dispatcher-registry.js.map +1 -0
  32. package/dist/bus/event-dispatcher.d.ts +48 -0
  33. package/dist/bus/event-dispatcher.d.ts.map +1 -0
  34. package/dist/bus/event-dispatcher.js +15 -0
  35. package/dist/bus/event-dispatcher.js.map +1 -0
  36. package/dist/context/bounded-context.d.ts +606 -0
  37. package/dist/context/bounded-context.d.ts.map +1 -0
  38. package/dist/context/bounded-context.js +1780 -0
  39. package/dist/context/bounded-context.js.map +1 -0
  40. package/dist/context/entity-inbox.d.ts +63 -0
  41. package/dist/context/entity-inbox.d.ts.map +1 -0
  42. package/dist/context/entity-inbox.js +380 -0
  43. package/dist/context/entity-inbox.js.map +1 -0
  44. package/dist/context/local-inbox-handoff.d.ts +244 -0
  45. package/dist/context/local-inbox-handoff.d.ts.map +1 -0
  46. package/dist/context/local-inbox-handoff.js +334 -0
  47. package/dist/context/local-inbox-handoff.js.map +1 -0
  48. package/dist/context/projection-handoff.d.ts +46 -0
  49. package/dist/context/projection-handoff.d.ts.map +1 -0
  50. package/dist/context/projection-handoff.js +172 -0
  51. package/dist/context/projection-handoff.js.map +1 -0
  52. package/dist/context/tenant-index.d.ts +41 -0
  53. package/dist/context/tenant-index.d.ts.map +1 -0
  54. package/dist/context/tenant-index.js +92 -0
  55. package/dist/context/tenant-index.js.map +1 -0
  56. package/dist/delivery/conditional-pickup.d.ts +25 -0
  57. package/dist/delivery/conditional-pickup.d.ts.map +1 -0
  58. package/dist/delivery/conditional-pickup.js +26 -0
  59. package/dist/delivery/conditional-pickup.js.map +1 -0
  60. package/dist/delivery/delivery-builder.d.ts +216 -0
  61. package/dist/delivery/delivery-builder.d.ts.map +1 -0
  62. package/dist/delivery/delivery-builder.js +323 -0
  63. package/dist/delivery/delivery-builder.js.map +1 -0
  64. package/dist/delivery/delivery-lease.d.ts +15 -0
  65. package/dist/delivery/delivery-lease.d.ts.map +1 -0
  66. package/dist/delivery/delivery-lease.js +44 -0
  67. package/dist/delivery/delivery-lease.js.map +1 -0
  68. package/dist/delivery/delivery-loop.d.ts +113 -0
  69. package/dist/delivery/delivery-loop.d.ts.map +1 -0
  70. package/dist/delivery/delivery-loop.js +119 -0
  71. package/dist/delivery/delivery-loop.js.map +1 -0
  72. package/dist/delivery/delivery-monitor.d.ts +165 -0
  73. package/dist/delivery/delivery-monitor.d.ts.map +1 -0
  74. package/dist/delivery/delivery-monitor.js +168 -0
  75. package/dist/delivery/delivery-monitor.js.map +1 -0
  76. package/dist/delivery/delivery-ports.d.ts +141 -0
  77. package/dist/delivery/delivery-ports.d.ts.map +1 -0
  78. package/dist/delivery/delivery-ports.js +15 -0
  79. package/dist/delivery/delivery-ports.js.map +1 -0
  80. package/dist/delivery/delivery-run-control.d.ts +50 -0
  81. package/dist/delivery/delivery-run-control.d.ts.map +1 -0
  82. package/dist/delivery/delivery-run-control.js +66 -0
  83. package/dist/delivery/delivery-run-control.js.map +1 -0
  84. package/dist/delivery/delivery-run-coordinator.d.ts +218 -0
  85. package/dist/delivery/delivery-run-coordinator.d.ts.map +1 -0
  86. package/dist/delivery/delivery-run-coordinator.js +609 -0
  87. package/dist/delivery/delivery-run-coordinator.js.map +1 -0
  88. package/dist/delivery/delivery-storage-error.d.ts +13 -0
  89. package/dist/delivery/delivery-storage-error.d.ts.map +1 -0
  90. package/dist/delivery/delivery-storage-error.js +30 -0
  91. package/dist/delivery/delivery-storage-error.js.map +1 -0
  92. package/dist/delivery/delivery-supervisor.d.ts +175 -0
  93. package/dist/delivery/delivery-supervisor.d.ts.map +1 -0
  94. package/dist/delivery/delivery-supervisor.js +469 -0
  95. package/dist/delivery/delivery-supervisor.js.map +1 -0
  96. package/dist/delivery/delivery-worker.d.ts +180 -0
  97. package/dist/delivery/delivery-worker.d.ts.map +1 -0
  98. package/dist/delivery/delivery-worker.js +232 -0
  99. package/dist/delivery/delivery-worker.js.map +1 -0
  100. package/dist/delivery/delivery.d.ts +238 -0
  101. package/dist/delivery/delivery.d.ts.map +1 -0
  102. package/dist/delivery/delivery.js +400 -0
  103. package/dist/delivery/delivery.js.map +1 -0
  104. package/dist/delivery/inbox-records.d.ts +19 -0
  105. package/dist/delivery/inbox-records.d.ts.map +1 -0
  106. package/dist/delivery/inbox-records.js +291 -0
  107. package/dist/delivery/inbox-records.js.map +1 -0
  108. package/dist/delivery/inbox-storage.d.ts +81 -0
  109. package/dist/delivery/inbox-storage.d.ts.map +1 -0
  110. package/dist/delivery/inbox-storage.js +353 -0
  111. package/dist/delivery/inbox-storage.js.map +1 -0
  112. package/dist/delivery/inbox.d.ts +263 -0
  113. package/dist/delivery/inbox.d.ts.map +1 -0
  114. package/dist/delivery/inbox.js +172 -0
  115. package/dist/delivery/inbox.js.map +1 -0
  116. package/dist/delivery/parked-delivery-obligations.d.ts +182 -0
  117. package/dist/delivery/parked-delivery-obligations.d.ts.map +1 -0
  118. package/dist/delivery/parked-delivery-obligations.js +390 -0
  119. package/dist/delivery/parked-delivery-obligations.js.map +1 -0
  120. package/dist/delivery/shard-index.d.ts +41 -0
  121. package/dist/delivery/shard-index.d.ts.map +1 -0
  122. package/dist/delivery/shard-index.js +67 -0
  123. package/dist/delivery/shard-index.js.map +1 -0
  124. package/dist/delivery/sharded-work-registry.d.ts +114 -0
  125. package/dist/delivery/sharded-work-registry.d.ts.map +1 -0
  126. package/dist/delivery/sharded-work-registry.js +360 -0
  127. package/dist/delivery/sharded-work-registry.js.map +1 -0
  128. package/dist/entity/entity-metadata.d.ts +173 -0
  129. package/dist/entity/entity-metadata.d.ts.map +1 -0
  130. package/dist/entity/entity-metadata.js +187 -0
  131. package/dist/entity/entity-metadata.js.map +1 -0
  132. package/dist/entity/entity-storage-descriptor.d.ts +64 -0
  133. package/dist/entity/entity-storage-descriptor.d.ts.map +1 -0
  134. package/dist/entity/entity-storage-descriptor.js +227 -0
  135. package/dist/entity/entity-storage-descriptor.js.map +1 -0
  136. package/dist/entity/entity-transaction.d.ts +372 -0
  137. package/dist/entity/entity-transaction.d.ts.map +1 -0
  138. package/dist/entity/entity-transaction.js +413 -0
  139. package/dist/entity/entity-transaction.js.map +1 -0
  140. package/dist/entity/entity-transition-validation.d.ts +47 -0
  141. package/dist/entity/entity-transition-validation.d.ts.map +1 -0
  142. package/dist/entity/entity-transition-validation.js +327 -0
  143. package/dist/entity/entity-transition-validation.js.map +1 -0
  144. package/dist/entity/entity.d.ts +499 -0
  145. package/dist/entity/entity.d.ts.map +1 -0
  146. package/dist/entity/entity.js +829 -0
  147. package/dist/entity/entity.js.map +1 -0
  148. package/dist/entity/implicit-required-id.d.ts +15 -0
  149. package/dist/entity/implicit-required-id.d.ts.map +1 -0
  150. package/dist/entity/implicit-required-id.js +123 -0
  151. package/dist/entity/implicit-required-id.js.map +1 -0
  152. package/dist/entity/spec-scanner.d.ts +14 -0
  153. package/dist/entity/spec-scanner.d.ts.map +1 -0
  154. package/dist/entity/spec-scanner.js +37 -0
  155. package/dist/entity/spec-scanner.js.map +1 -0
  156. package/dist/handler/build-time-handler-analyzer.d.ts +150 -0
  157. package/dist/handler/build-time-handler-analyzer.d.ts.map +1 -0
  158. package/dist/handler/build-time-handler-analyzer.js +1101 -0
  159. package/dist/handler/build-time-handler-analyzer.js.map +1 -0
  160. package/dist/handler/command-registration-readiness.d.ts +99 -0
  161. package/dist/handler/command-registration-readiness.d.ts.map +1 -0
  162. package/dist/handler/command-registration-readiness.js +118 -0
  163. package/dist/handler/command-registration-readiness.js.map +1 -0
  164. package/dist/handler/event-handler-filter.d.ts +43 -0
  165. package/dist/handler/event-handler-filter.d.ts.map +1 -0
  166. package/dist/handler/event-handler-filter.js +128 -0
  167. package/dist/handler/event-handler-filter.js.map +1 -0
  168. package/dist/handler/event-registration-readiness.d.ts +196 -0
  169. package/dist/handler/event-registration-readiness.d.ts.map +1 -0
  170. package/dist/handler/event-registration-readiness.js +187 -0
  171. package/dist/handler/event-registration-readiness.js.map +1 -0
  172. package/dist/handler/external.d.ts +10 -0
  173. package/dist/handler/external.d.ts.map +1 -0
  174. package/dist/handler/external.js +15 -0
  175. package/dist/handler/external.js.map +1 -0
  176. package/dist/handler/generated-handler-registry.d.ts +154 -0
  177. package/dist/handler/generated-handler-registry.d.ts.map +1 -0
  178. package/dist/handler/generated-handler-registry.js +223 -0
  179. package/dist/handler/generated-handler-registry.js.map +1 -0
  180. package/dist/handler/generated-registry-discovery.d.ts +94 -0
  181. package/dist/handler/generated-registry-discovery.d.ts.map +1 -0
  182. package/dist/handler/generated-registry-discovery.js +228 -0
  183. package/dist/handler/generated-registry-discovery.js.map +1 -0
  184. package/dist/handler/generated-registry-writer.d.ts +58 -0
  185. package/dist/handler/generated-registry-writer.d.ts.map +1 -0
  186. package/dist/handler/generated-registry-writer.js +458 -0
  187. package/dist/handler/generated-registry-writer.js.map +1 -0
  188. package/dist/handler/handler-codegen.d.ts +48 -0
  189. package/dist/handler/handler-codegen.d.ts.map +1 -0
  190. package/dist/handler/handler-codegen.js +214 -0
  191. package/dist/handler/handler-codegen.js.map +1 -0
  192. package/dist/handler/handler-decorators.d.ts +134 -0
  193. package/dist/handler/handler-decorators.d.ts.map +1 -0
  194. package/dist/handler/handler-decorators.js +239 -0
  195. package/dist/handler/handler-decorators.js.map +1 -0
  196. package/dist/handler/handler-metadata.d.ts +510 -0
  197. package/dist/handler/handler-metadata.d.ts.map +1 -0
  198. package/dist/handler/handler-metadata.js +391 -0
  199. package/dist/handler/handler-metadata.js.map +1 -0
  200. package/dist/handler/registration-readiness-metadata.d.ts +68 -0
  201. package/dist/handler/registration-readiness-metadata.d.ts.map +1 -0
  202. package/dist/handler/registration-readiness-metadata.js +170 -0
  203. package/dist/handler/registration-readiness-metadata.js.map +1 -0
  204. package/dist/handler/rejection-source.d.ts +11 -0
  205. package/dist/handler/rejection-source.d.ts.map +1 -0
  206. package/dist/handler/rejection-source.js +25 -0
  207. package/dist/handler/rejection-source.js.map +1 -0
  208. package/dist/index.d.ts +46 -0
  209. package/dist/index.d.ts.map +1 -0
  210. package/dist/index.js +54 -0
  211. package/dist/index.js.map +1 -0
  212. package/dist/integration/external-messages.d.ts +49 -0
  213. package/dist/integration/external-messages.d.ts.map +1 -0
  214. package/dist/integration/external-messages.js +112 -0
  215. package/dist/integration/external-messages.js.map +1 -0
  216. package/dist/integration/integration-broker.d.ts +74 -0
  217. package/dist/integration/integration-broker.d.ts.map +1 -0
  218. package/dist/integration/integration-broker.js +444 -0
  219. package/dist/integration/integration-broker.js.map +1 -0
  220. package/dist/integration/third-party-context.d.ts +56 -0
  221. package/dist/integration/third-party-context.d.ts.map +1 -0
  222. package/dist/integration/third-party-context.js +130 -0
  223. package/dist/integration/third-party-context.js.map +1 -0
  224. package/dist/repository/command-errors.d.ts +25 -0
  225. package/dist/repository/command-errors.d.ts.map +1 -0
  226. package/dist/repository/command-errors.js +43 -0
  227. package/dist/repository/command-errors.js.map +1 -0
  228. package/dist/repository/command-routing.d.ts +72 -0
  229. package/dist/repository/command-routing.d.ts.map +1 -0
  230. package/dist/repository/command-routing.js +98 -0
  231. package/dist/repository/command-routing.js.map +1 -0
  232. package/dist/repository/commit-fence.d.ts +22 -0
  233. package/dist/repository/commit-fence.d.ts.map +1 -0
  234. package/dist/repository/commit-fence.js +37 -0
  235. package/dist/repository/commit-fence.js.map +1 -0
  236. package/dist/repository/event-routing.d.ts +71 -0
  237. package/dist/repository/event-routing.d.ts.map +1 -0
  238. package/dist/repository/event-routing.js +96 -0
  239. package/dist/repository/event-routing.js.map +1 -0
  240. package/dist/repository/primitive-id.d.ts +86 -0
  241. package/dist/repository/primitive-id.d.ts.map +1 -0
  242. package/dist/repository/primitive-id.js +110 -0
  243. package/dist/repository/primitive-id.js.map +1 -0
  244. package/dist/repository/repository.d.ts +670 -0
  245. package/dist/repository/repository.d.ts.map +1 -0
  246. package/dist/repository/repository.js +3298 -0
  247. package/dist/repository/repository.js.map +1 -0
  248. package/dist/repository/routing-declarations.d.ts +75 -0
  249. package/dist/repository/routing-declarations.d.ts.map +1 -0
  250. package/dist/repository/routing-declarations.js +101 -0
  251. package/dist/repository/routing-declarations.js.map +1 -0
  252. package/dist/repository/state-update-routing.d.ts +66 -0
  253. package/dist/repository/state-update-routing.d.ts.map +1 -0
  254. package/dist/repository/state-update-routing.js +91 -0
  255. package/dist/repository/state-update-routing.js.map +1 -0
  256. package/dist/runtime/runtime.d.ts +156 -0
  257. package/dist/runtime/runtime.d.ts.map +1 -0
  258. package/dist/runtime/runtime.js +215 -0
  259. package/dist/runtime/runtime.js.map +1 -0
  260. package/dist/runtime/signal-intake.d.ts +84 -0
  261. package/dist/runtime/signal-intake.d.ts.map +1 -0
  262. package/dist/runtime/signal-intake.js +94 -0
  263. package/dist/runtime/signal-intake.js.map +1 -0
  264. package/dist/runtime/signal-metadata.d.ts +242 -0
  265. package/dist/runtime/signal-metadata.d.ts.map +1 -0
  266. package/dist/runtime/signal-metadata.js +368 -0
  267. package/dist/runtime/signal-metadata.js.map +1 -0
  268. package/dist/server/browser-server.d.ts +49 -0
  269. package/dist/server/browser-server.d.ts.map +1 -0
  270. package/dist/server/browser-server.js +633 -0
  271. package/dist/server/browser-server.js.map +1 -0
  272. package/dist/server/durable-subscription-bindings.d.ts +122 -0
  273. package/dist/server/durable-subscription-bindings.d.ts.map +1 -0
  274. package/dist/server/durable-subscription-bindings.js +524 -0
  275. package/dist/server/durable-subscription-bindings.js.map +1 -0
  276. package/dist/server/environment-attachment.d.ts +356 -0
  277. package/dist/server/environment-attachment.d.ts.map +1 -0
  278. package/dist/server/environment-attachment.js +2061 -0
  279. package/dist/server/environment-attachment.js.map +1 -0
  280. package/dist/server/environment-delivery-records.d.ts +77 -0
  281. package/dist/server/environment-delivery-records.d.ts.map +1 -0
  282. package/dist/server/environment-delivery-records.js +282 -0
  283. package/dist/server/environment-delivery-records.js.map +1 -0
  284. package/dist/server/environment-delivery-worker.d.ts +161 -0
  285. package/dist/server/environment-delivery-worker.d.ts.map +1 -0
  286. package/dist/server/environment-delivery-worker.js +664 -0
  287. package/dist/server/environment-delivery-worker.js.map +1 -0
  288. package/dist/server/environment.d.ts +43 -0
  289. package/dist/server/environment.d.ts.map +1 -0
  290. package/dist/server/environment.js +90 -0
  291. package/dist/server/environment.js.map +1 -0
  292. package/dist/server/managed-child-subscription.d.ts +11 -0
  293. package/dist/server/managed-child-subscription.d.ts.map +1 -0
  294. package/dist/server/managed-child-subscription.js +44 -0
  295. package/dist/server/managed-child-subscription.js.map +1 -0
  296. package/dist/server/managed-server-application.d.ts +324 -0
  297. package/dist/server/managed-server-application.d.ts.map +1 -0
  298. package/dist/server/managed-server-application.js +937 -0
  299. package/dist/server/managed-server-application.js.map +1 -0
  300. package/dist/server/node-coordinator.d.ts +191 -0
  301. package/dist/server/node-coordinator.d.ts.map +1 -0
  302. package/dist/server/node-coordinator.js +552 -0
  303. package/dist/server/node-coordinator.js.map +1 -0
  304. package/dist/server/process-server-coordinator.d.ts +15 -0
  305. package/dist/server/process-server-coordinator.d.ts.map +1 -0
  306. package/dist/server/process-server-coordinator.js +112 -0
  307. package/dist/server/process-server-coordinator.js.map +1 -0
  308. package/dist/server/reserved-spine-rpc-paths.json +8 -0
  309. package/dist/server/retryable-close.d.ts +28 -0
  310. package/dist/server/retryable-close.d.ts.map +1 -0
  311. package/dist/server/retryable-close.js +129 -0
  312. package/dist/server/retryable-close.js.map +1 -0
  313. package/dist/server/server-environment.d.ts +180 -0
  314. package/dist/server/server-environment.d.ts.map +1 -0
  315. package/dist/server/server-environment.js +418 -0
  316. package/dist/server/server-environment.js.map +1 -0
  317. package/dist/server/server-log.d.ts +18 -0
  318. package/dist/server/server-log.d.ts.map +1 -0
  319. package/dist/server/server-log.js +96 -0
  320. package/dist/server/server-log.js.map +1 -0
  321. package/dist/server/server.d.ts +389 -0
  322. package/dist/server/server.d.ts.map +1 -0
  323. package/dist/server/server.js +752 -0
  324. package/dist/server/server.js.map +1 -0
  325. package/dist/services/spine-services.d.ts +88 -0
  326. package/dist/services/spine-services.d.ts.map +1 -0
  327. package/dist/services/spine-services.js +1586 -0
  328. package/dist/services/spine-services.js.map +1 -0
  329. package/dist/stand/stand.d.ts +294 -0
  330. package/dist/stand/stand.d.ts.map +1 -0
  331. package/dist/stand/stand.js +680 -0
  332. package/dist/stand/stand.js.map +1 -0
  333. package/dist/stand/subscription-observer.d.ts +53 -0
  334. package/dist/stand/subscription-observer.d.ts.map +1 -0
  335. package/dist/stand/subscription-observer.js +444 -0
  336. package/dist/stand/subscription-observer.js.map +1 -0
  337. package/dist/stand/subscription-records.d.ts +12 -0
  338. package/dist/stand/subscription-records.d.ts.map +1 -0
  339. package/dist/stand/subscription-records.js +99 -0
  340. package/dist/stand/subscription-records.js.map +1 -0
  341. package/dist/stand/subscription-registry.d.ts +285 -0
  342. package/dist/stand/subscription-registry.d.ts.map +1 -0
  343. package/dist/stand/subscription-registry.js +403 -0
  344. package/dist/stand/subscription-registry.js.map +1 -0
  345. package/dist/stand/subscription-runtime.d.ts +102 -0
  346. package/dist/stand/subscription-runtime.d.ts.map +1 -0
  347. package/dist/stand/subscription-runtime.js +380 -0
  348. package/dist/stand/subscription-runtime.js.map +1 -0
  349. package/dist/testing/index.d.ts +14 -0
  350. package/dist/testing/index.d.ts.map +1 -0
  351. package/dist/testing/index.js +34 -0
  352. package/dist/testing/index.js.map +1 -0
  353. package/dist/tsconfig.tsbuildinfo +1 -0
  354. package/package.json +65 -0
@@ -0,0 +1,380 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ var _a;
15
+ import { create, toBinary } from "@bufbuild/protobuf";
16
+ import { SubscriptionIdSchema, SubscriptionSchema, } from "@spine-event-engine/proto/client";
17
+ import { emitServerWarning } from "../server/server-log.js";
18
+ import { SubscriptionObservers } from "./subscription-observer.js";
19
+ import { standAccess } from "./stand.js";
20
+ const subscriptionRuntimeLoggers = new WeakMap();
21
+ const subscriptionRuntimes = new WeakSet();
22
+ /**
23
+ * Coordinates the local delivery side of one paired bounded context's durable
24
+ * subscription registry.
25
+ *
26
+ * The runtime owns exactly one registry snapshot loop, timer, attachment map,
27
+ * and consumer map. It classifies a target from domain Stand metadata before
28
+ * attaching it: domain events observe only the domain bus, while entity-state
29
+ * updates observe only the paired System bus. This keeps a subscription ID and
30
+ * attachment identity attached once, while allowing all active service streams to share
31
+ * the same rendered update.
32
+ *
33
+ * @internal
34
+ */
35
+ export class SubscriptionRuntime {
36
+ #domainStand;
37
+ #systemStand;
38
+ #domainEventBus;
39
+ #systemEventBus;
40
+ #registry;
41
+ #consumers = new Map();
42
+ #attachments = new Map();
43
+ #tail = Promise.resolve();
44
+ #timer;
45
+ #timerReconciliation;
46
+ #closing = false;
47
+ #closed;
48
+ /**
49
+ * Creates an unstarted runtime for a paired domain and System Stand.
50
+ *
51
+ * @param domainStand Supplies authoritative domain state metadata.
52
+ * @param systemStand Retained as the paired state-observer owner boundary.
53
+ * @param domainEventBus Delivers domain-event subscription targets.
54
+ * @param systemEventBus Delivers Entity state and lifecycle subscription targets.
55
+ * @param registry Stores canonical subscription definitions in the domain namespace.
56
+ */
57
+ constructor(domainStand, systemStand, domainEventBus, systemEventBus, registry) {
58
+ subscriptionRuntimes.add(this);
59
+ this.#domainStand = domainStand;
60
+ this.#systemStand = systemStand;
61
+ this.#domainEventBus = domainEventBus;
62
+ this.#systemEventBus = systemEventBus;
63
+ this.#registry = registry;
64
+ }
65
+ /**
66
+ * Starts immediate and ten-second complete-snapshot reconciliation.
67
+ */
68
+ start() {
69
+ if (this.#timer !== undefined || this.#closing)
70
+ return;
71
+ // spine-log-boundary: server.subscription_initial_reconcile
72
+ void this.reconcile().catch(() => {
73
+ this.#warnReconciliationFailure();
74
+ });
75
+ this.#timer = setInterval(() => {
76
+ void this.#reconcileTimer();
77
+ }, 10_000);
78
+ this.#timer.unref();
79
+ }
80
+ /**
81
+ * Adds a local stream consumer and reconciles before returning its handle.
82
+ *
83
+ * @param id Identifies the durable subscription definition.
84
+ * @param onUpdate Receives rendered subscription updates.
85
+ * @returns Resolves to the consumer removal handle.
86
+ */
87
+ consume(id, onUpdate) {
88
+ if (this.#closing)
89
+ return Promise.reject(new Error("Subscription runtime is closing."));
90
+ let consumers = this.#consumers.get(id);
91
+ if (consumers === undefined) {
92
+ consumers = new Set();
93
+ this.#consumers.set(id, consumers);
94
+ }
95
+ consumers.add(onUpdate);
96
+ return this.reconcile()
97
+ .then(() => this.#consumerHandle(id, onUpdate))
98
+ .catch((error) => {
99
+ this.#removeConsumer(id, onUpdate);
100
+ throw error;
101
+ });
102
+ }
103
+ /**
104
+ * Updates local attachments from one complete registry snapshot.
105
+ *
106
+ * @returns Resolves after the accepted snapshot is reconciled.
107
+ */
108
+ reconcile() {
109
+ const cycle = this.#tail.then(async () => {
110
+ if (this.#closing)
111
+ return;
112
+ await this.#registry.cleanup();
113
+ const entries = await this.#registry.snapshot();
114
+ const seen = new Set();
115
+ for (const entry of entries) {
116
+ const id = entry.subscription.id?.value;
117
+ if (id === undefined)
118
+ continue;
119
+ seen.add(id);
120
+ if (entry.phase === "active")
121
+ await this.#attach(id, entry);
122
+ else
123
+ this.remove(id);
124
+ }
125
+ for (const id of this.#attachments.keys())
126
+ if (!seen.has(id))
127
+ this.remove(id);
128
+ });
129
+ // spine-log-boundary: server.subscription_reconcile_tail
130
+ this.#tail = cycle.catch(() => undefined);
131
+ return cycle;
132
+ }
133
+ #reconcileTimer() {
134
+ if (this.#timerReconciliation !== undefined)
135
+ return this.#timerReconciliation;
136
+ const reconciliation = this.reconcile().finally(() => {
137
+ this.#timerReconciliation = undefined;
138
+ });
139
+ this.#timerReconciliation = reconciliation;
140
+ // spine-log-boundary: server.subscription_timer_reconcile
141
+ void reconciliation.catch(() => {
142
+ this.#warnReconciliationFailure();
143
+ });
144
+ return reconciliation;
145
+ }
146
+ #warnReconciliationFailure() {
147
+ const logger = subscriptionRuntimeLoggers.get(this);
148
+ if (logger === undefined)
149
+ return;
150
+ emitServerWarning(logger, "Subscription reconciliation failed.", {
151
+ operation: "subscription.reconcile",
152
+ reasonCode: "failed",
153
+ });
154
+ }
155
+ /**
156
+ * Removes all local delivery state for one canonical subscription ID.
157
+ *
158
+ * @param id Identifies the durable subscription definition.
159
+ */
160
+ remove(id) {
161
+ this.#consumers.delete(id);
162
+ this.#detach(id);
163
+ }
164
+ #detach(id) {
165
+ const attachment = this.#attachments.get(id);
166
+ if (attachment === undefined)
167
+ return;
168
+ this.#attachments.delete(id);
169
+ attachment.subscription.unsubscribe();
170
+ }
171
+ /**
172
+ * Returns the pair-owned durable registry.
173
+ *
174
+ * @returns Returns the durable subscription registry.
175
+ */
176
+ registry() {
177
+ return this.#registry;
178
+ }
179
+ /**
180
+ * Marks the runtime terminal and stops its reconciliation timer.
181
+ */
182
+ beginClose() {
183
+ this.#closing = true;
184
+ if (this.#timer !== undefined)
185
+ clearInterval(this.#timer);
186
+ }
187
+ /**
188
+ * Waits for accepted reconciliation and detaches every observer.
189
+ *
190
+ * @returns Resolves after every local observer has been detached.
191
+ */
192
+ async drainClose() {
193
+ this.beginClose();
194
+ await this.#tail;
195
+ const errors = [];
196
+ for (const id of [...this.#attachments.keys()]) {
197
+ try {
198
+ this.remove(id);
199
+ }
200
+ catch (error) {
201
+ errors.push(error);
202
+ }
203
+ }
204
+ this.#consumers.clear();
205
+ if (errors.length > 0)
206
+ throw new AggregateError(errors, "Subscription runtime close failed.");
207
+ }
208
+ /**
209
+ * Closes the shared registry after observer cleanup.
210
+ *
211
+ * @returns Resolves after the durable registry closes.
212
+ */
213
+ finishClose() {
214
+ this.#closed ??= this.#finishClose();
215
+ return this.#closed;
216
+ }
217
+ async #finishClose() {
218
+ const errors = [];
219
+ await _a.#closePart(() => this.drainClose(), errors);
220
+ await _a.#closePart(() => this.#registry.close(), errors);
221
+ if (errors.length > 0) {
222
+ throw new AggregateError(errors.flatMap((error) => error instanceof AggregateError
223
+ ? Array.from(error.errors, (nested) => nested)
224
+ : [error]), "Subscription runtime close failed.");
225
+ }
226
+ }
227
+ /**
228
+ * Performs all close phases for direct runtime owners.
229
+ *
230
+ * @returns Resolves after runtime shutdown completes.
231
+ */
232
+ close() {
233
+ return this.finishClose();
234
+ }
235
+ /**
236
+ * Starts failed-construction cleanup before the context has exposed the runtime.
237
+ *
238
+ * @internal
239
+ */
240
+ abortClose() {
241
+ this.#closed ??= this.#abortClose();
242
+ }
243
+ async #abortClose() {
244
+ this.beginClose();
245
+ const registryClose = _a.#closeThunk(() => this.#registry.close());
246
+ await Promise.allSettled([this.drainClose(), registryClose]);
247
+ }
248
+ #consumerHandle(id, onUpdate) {
249
+ let closed = false;
250
+ return Object.freeze({
251
+ get closed() {
252
+ return closed;
253
+ },
254
+ unsubscribe: () => {
255
+ if (closed)
256
+ return;
257
+ closed = true;
258
+ this.#removeConsumer(id, onUpdate);
259
+ },
260
+ });
261
+ }
262
+ #removeConsumer(id, onUpdate) {
263
+ const consumers = this.#consumers.get(id);
264
+ consumers?.delete(onUpdate);
265
+ if (consumers?.size === 0)
266
+ this.#consumers.delete(id);
267
+ }
268
+ async #attach(id, expected) {
269
+ const current = await this.#registry.get(create(SubscriptionIdSchema, { value: id }));
270
+ if (current?.phase !== "active" || !sameEntry(current, expected) || this.#closing)
271
+ return;
272
+ const identity = entryIdentity(current);
273
+ if (sameBytes(this.#attachments.get(id)?.identity, identity))
274
+ return;
275
+ this.#detach(id);
276
+ const state = standAccess.observedState(this.#domainStand, current.subscription.topic?.target?.type);
277
+ const attachment = state === undefined
278
+ ? SubscriptionObservers.observeEvent(current.subscription, this.#domainEventBus, (update) => {
279
+ this.#notify(id, update);
280
+ })
281
+ : standAccess.observeState(this.#systemStand, current.subscription, state, this.#systemEventBus, (update) => {
282
+ this.#notify(id, update);
283
+ });
284
+ if (attachment !== undefined)
285
+ this.#attachments.set(id, { identity, subscription: attachment });
286
+ }
287
+ static async #closePart(work, errors) {
288
+ try {
289
+ await work();
290
+ }
291
+ catch (error) {
292
+ errors.push(error);
293
+ }
294
+ }
295
+ static async #closeThunk(work) {
296
+ await work();
297
+ }
298
+ #notify(id, update) {
299
+ for (const consumer of [...(this.#consumers.get(id) ?? [])]) {
300
+ const logger = subscriptionRuntimeLoggers.get(this);
301
+ try {
302
+ const invoke = consumer;
303
+ const outcome = invoke(update);
304
+ if (_a.#isPromiseLike(outcome)) {
305
+ // spine-log-boundary: server.subscription_consumer_async_delivery
306
+ void Promise.resolve(outcome).catch(() => {
307
+ _a.#warnConsumerFailure(logger, id);
308
+ });
309
+ }
310
+ // spine-log-boundary: server.subscription_consumer_delivery
311
+ }
312
+ catch {
313
+ // Individual best-effort stream consumers cannot suppress peers.
314
+ _a.#warnConsumerFailure(logger, id);
315
+ }
316
+ }
317
+ }
318
+ static #warnConsumerFailure(logger, id) {
319
+ if (logger === undefined)
320
+ return;
321
+ emitServerWarning(logger, "Subscription consumer delivery failed.", {
322
+ subscriptionId: id,
323
+ operation: "subscription.consumer",
324
+ reasonCode: "failed",
325
+ });
326
+ }
327
+ static #isPromiseLike(value) {
328
+ return ((typeof value === "object" || typeof value === "function") &&
329
+ value !== null &&
330
+ "then" in value &&
331
+ typeof value.then === "function");
332
+ }
333
+ }
334
+ _a = SubscriptionRuntime;
335
+ /**
336
+ * Exposes framework-only subscription-runtime logging metadata installation.
337
+ *
338
+ * @internal
339
+ */
340
+ export const subscriptionRuntimeAccess = Object.freeze({
341
+ installLogger(runtime, logger) {
342
+ if (!subscriptionRuntimes.has(runtime)) {
343
+ throw new TypeError("Subscription runtime logger requires a SubscriptionRuntime instance.");
344
+ }
345
+ subscriptionRuntimeLoggers.set(runtime, logger);
346
+ },
347
+ clearLogger(runtime) {
348
+ if (!subscriptionRuntimes.has(runtime)) {
349
+ throw new TypeError("Subscription runtime logger requires a SubscriptionRuntime instance.");
350
+ }
351
+ subscriptionRuntimeLoggers.delete(runtime);
352
+ },
353
+ loggerFor(runtime) {
354
+ if (!subscriptionRuntimes.has(runtime)) {
355
+ throw new TypeError("Subscription runtime logger requires a SubscriptionRuntime instance.");
356
+ }
357
+ const logger = subscriptionRuntimeLoggers.get(runtime);
358
+ if (logger === undefined)
359
+ throw new TypeError("Subscription runtime logger is not installed.");
360
+ return logger;
361
+ },
362
+ });
363
+ function entryIdentity(entry) {
364
+ const subscription = toBinary(SubscriptionSchema, entry.subscription);
365
+ const createdAt = new Uint8Array(8);
366
+ new DataView(createdAt.buffer).setFloat64(0, entry.createdAt);
367
+ const identity = new Uint8Array(subscription.length + createdAt.length);
368
+ identity.set(subscription);
369
+ identity.set(createdAt, subscription.length);
370
+ return identity;
371
+ }
372
+ function sameEntry(left, right) {
373
+ return (left.phase === right.phase &&
374
+ left.createdAt === right.createdAt &&
375
+ sameBytes(entryIdentity(left), entryIdentity(right)));
376
+ }
377
+ function sameBytes(left, right) {
378
+ return left?.length === right.length && left.every((value, index) => value === right[index]);
379
+ }
380
+ //# sourceMappingURL=subscription-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-runtime.js","sourceRoot":"","sources":["../../src/stand/subscription-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Provides deterministic server-environment cleanup for package tests.
3
+ */
4
+ export declare const ServerTests: {
5
+ readonly resetEnvironment: () => Promise<void>;
6
+ };
7
+ /**
8
+ * Supplies the package-testing reset operation as an explicit short value.
9
+ *
10
+ * @internal
11
+ */
12
+ declare const serverTestReset: () => Promise<void>;
13
+ export { serverTestReset as resetServerEnvironmentForTest };
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE;IAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CASxE,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAgC,CAAC;AAE1E,OAAO,EAAE,eAAe,IAAI,6BAA6B,EAAE,CAAC"}
@@ -0,0 +1,34 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { ServerEnvironmentLifecycle } from "../server/server-environment.js";
15
+ /**
16
+ * Provides deterministic server-environment cleanup for package tests.
17
+ */
18
+ export const ServerTests = Object.freeze({
19
+ // prettier-ignore
20
+ /**
21
+ * Resets shared server facilities before the next test creates a server.
22
+ */
23
+ resetEnvironment() {
24
+ return ServerEnvironmentLifecycle.resetForTest();
25
+ },
26
+ });
27
+ /**
28
+ * Supplies the package-testing reset operation as an explicit short value.
29
+ *
30
+ * @internal
31
+ */
32
+ const serverTestReset = ServerTests.resetEnvironment;
33
+ export { serverTestReset as resetServerEnvironmentForTest };
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAuD,MAAM,CAAC,MAAM,CAAC;IAC3F,kBAAkB;IAElB;;OAEG;IACH,gBAAgB;QACd,OAAO,0BAA0B,CAAC,YAAY,EAAE,CAAC;IACnD,CAAC;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,eAAe,GAAwB,WAAW,CAAC,gBAAgB,CAAC;AAE1E,OAAO,EAAE,eAAe,IAAI,6BAA6B,EAAE,CAAC"}