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

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 (378) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +209 -0
  3. package/REFERENCE.md +760 -0
  4. package/dist/browser/browser-server.d.ts +95 -0
  5. package/dist/browser/browser-server.d.ts.map +1 -0
  6. package/dist/browser/browser-server.js +719 -0
  7. package/dist/browser/browser-server.js.map +1 -0
  8. package/dist/browser/durable-subscription-bindings.d.ts +122 -0
  9. package/dist/browser/durable-subscription-bindings.d.ts.map +1 -0
  10. package/dist/browser/durable-subscription-bindings.js +524 -0
  11. package/dist/browser/durable-subscription-bindings.js.map +1 -0
  12. package/dist/browser/index.d.ts +12 -0
  13. package/dist/browser/index.d.ts.map +1 -0
  14. package/dist/browser/index.js +24 -0
  15. package/dist/browser/index.js.map +1 -0
  16. package/dist/browser/options.d.ts +183 -0
  17. package/dist/browser/options.d.ts.map +1 -0
  18. package/dist/browser/options.js +15 -0
  19. package/dist/browser/options.js.map +1 -0
  20. package/dist/bus/command-bus.d.ts +63 -0
  21. package/dist/bus/command-bus.d.ts.map +1 -0
  22. package/dist/bus/command-bus.js +236 -0
  23. package/dist/bus/command-bus.js.map +1 -0
  24. package/dist/bus/command-dispatcher-registry.d.ts +33 -0
  25. package/dist/bus/command-dispatcher-registry.d.ts.map +1 -0
  26. package/dist/bus/command-dispatcher-registry.js +75 -0
  27. package/dist/bus/command-dispatcher-registry.js.map +1 -0
  28. package/dist/bus/command-dispatcher.d.ts +25 -0
  29. package/dist/bus/command-dispatcher.d.ts.map +1 -0
  30. package/dist/bus/command-dispatcher.js +15 -0
  31. package/dist/bus/command-dispatcher.js.map +1 -0
  32. package/dist/bus/command-errors.d.ts +23 -0
  33. package/dist/bus/command-errors.d.ts.map +1 -0
  34. package/dist/bus/command-errors.js +52 -0
  35. package/dist/bus/command-errors.js.map +1 -0
  36. package/dist/bus/event-bus.d.ts +113 -0
  37. package/dist/bus/event-bus.d.ts.map +1 -0
  38. package/dist/bus/event-bus.js +518 -0
  39. package/dist/bus/event-bus.js.map +1 -0
  40. package/dist/bus/event-dispatcher-origin-schemas.d.ts +17 -0
  41. package/dist/bus/event-dispatcher-origin-schemas.d.ts.map +1 -0
  42. package/dist/bus/event-dispatcher-origin-schemas.js +32 -0
  43. package/dist/bus/event-dispatcher-origin-schemas.js.map +1 -0
  44. package/dist/bus/event-dispatcher-registry.d.ts +48 -0
  45. package/dist/bus/event-dispatcher-registry.d.ts.map +1 -0
  46. package/dist/bus/event-dispatcher-registry.js +176 -0
  47. package/dist/bus/event-dispatcher-registry.js.map +1 -0
  48. package/dist/bus/event-dispatcher.d.ts +48 -0
  49. package/dist/bus/event-dispatcher.d.ts.map +1 -0
  50. package/dist/bus/event-dispatcher.js +15 -0
  51. package/dist/bus/event-dispatcher.js.map +1 -0
  52. package/dist/context/bounded-context.d.ts +592 -0
  53. package/dist/context/bounded-context.d.ts.map +1 -0
  54. package/dist/context/bounded-context.js +1897 -0
  55. package/dist/context/bounded-context.js.map +1 -0
  56. package/dist/context/entity-inbox.d.ts +63 -0
  57. package/dist/context/entity-inbox.d.ts.map +1 -0
  58. package/dist/context/entity-inbox.js +387 -0
  59. package/dist/context/entity-inbox.js.map +1 -0
  60. package/dist/context/local-inbox-handoff.d.ts +248 -0
  61. package/dist/context/local-inbox-handoff.d.ts.map +1 -0
  62. package/dist/context/local-inbox-handoff.js +340 -0
  63. package/dist/context/local-inbox-handoff.js.map +1 -0
  64. package/dist/context/projection-handoff.d.ts +46 -0
  65. package/dist/context/projection-handoff.d.ts.map +1 -0
  66. package/dist/context/projection-handoff.js +177 -0
  67. package/dist/context/projection-handoff.js.map +1 -0
  68. package/dist/context/tenant-index.d.ts +41 -0
  69. package/dist/context/tenant-index.d.ts.map +1 -0
  70. package/dist/context/tenant-index.js +93 -0
  71. package/dist/context/tenant-index.js.map +1 -0
  72. package/dist/delivery/conditional-pickup.d.ts +25 -0
  73. package/dist/delivery/conditional-pickup.d.ts.map +1 -0
  74. package/dist/delivery/conditional-pickup.js +26 -0
  75. package/dist/delivery/conditional-pickup.js.map +1 -0
  76. package/dist/delivery/delivery-builder.d.ts +216 -0
  77. package/dist/delivery/delivery-builder.d.ts.map +1 -0
  78. package/dist/delivery/delivery-builder.js +323 -0
  79. package/dist/delivery/delivery-builder.js.map +1 -0
  80. package/dist/delivery/delivery-lease.d.ts +15 -0
  81. package/dist/delivery/delivery-lease.d.ts.map +1 -0
  82. package/dist/delivery/delivery-lease.js +44 -0
  83. package/dist/delivery/delivery-lease.js.map +1 -0
  84. package/dist/delivery/delivery-loop.d.ts +113 -0
  85. package/dist/delivery/delivery-loop.d.ts.map +1 -0
  86. package/dist/delivery/delivery-loop.js +119 -0
  87. package/dist/delivery/delivery-loop.js.map +1 -0
  88. package/dist/delivery/delivery-monitor.d.ts +165 -0
  89. package/dist/delivery/delivery-monitor.d.ts.map +1 -0
  90. package/dist/delivery/delivery-monitor.js +168 -0
  91. package/dist/delivery/delivery-monitor.js.map +1 -0
  92. package/dist/delivery/delivery-ports.d.ts +151 -0
  93. package/dist/delivery/delivery-ports.d.ts.map +1 -0
  94. package/dist/delivery/delivery-ports.js +15 -0
  95. package/dist/delivery/delivery-ports.js.map +1 -0
  96. package/dist/delivery/delivery-run-control.d.ts +50 -0
  97. package/dist/delivery/delivery-run-control.d.ts.map +1 -0
  98. package/dist/delivery/delivery-run-control.js +66 -0
  99. package/dist/delivery/delivery-run-control.js.map +1 -0
  100. package/dist/delivery/delivery-run-coordinator.d.ts +218 -0
  101. package/dist/delivery/delivery-run-coordinator.d.ts.map +1 -0
  102. package/dist/delivery/delivery-run-coordinator.js +609 -0
  103. package/dist/delivery/delivery-run-coordinator.js.map +1 -0
  104. package/dist/delivery/delivery-storage-error.d.ts +13 -0
  105. package/dist/delivery/delivery-storage-error.d.ts.map +1 -0
  106. package/dist/delivery/delivery-storage-error.js +30 -0
  107. package/dist/delivery/delivery-storage-error.js.map +1 -0
  108. package/dist/delivery/delivery-supervisor.d.ts +175 -0
  109. package/dist/delivery/delivery-supervisor.d.ts.map +1 -0
  110. package/dist/delivery/delivery-supervisor.js +469 -0
  111. package/dist/delivery/delivery-supervisor.js.map +1 -0
  112. package/dist/delivery/delivery-worker.d.ts +180 -0
  113. package/dist/delivery/delivery-worker.d.ts.map +1 -0
  114. package/dist/delivery/delivery-worker.js +232 -0
  115. package/dist/delivery/delivery-worker.js.map +1 -0
  116. package/dist/delivery/delivery.d.ts +236 -0
  117. package/dist/delivery/delivery.d.ts.map +1 -0
  118. package/dist/delivery/delivery.js +539 -0
  119. package/dist/delivery/delivery.js.map +1 -0
  120. package/dist/delivery/inbox-records.d.ts +19 -0
  121. package/dist/delivery/inbox-records.d.ts.map +1 -0
  122. package/dist/delivery/inbox-records.js +291 -0
  123. package/dist/delivery/inbox-records.js.map +1 -0
  124. package/dist/delivery/inbox-storage.d.ts +83 -0
  125. package/dist/delivery/inbox-storage.d.ts.map +1 -0
  126. package/dist/delivery/inbox-storage.js +336 -0
  127. package/dist/delivery/inbox-storage.js.map +1 -0
  128. package/dist/delivery/inbox.d.ts +272 -0
  129. package/dist/delivery/inbox.d.ts.map +1 -0
  130. package/dist/delivery/inbox.js +183 -0
  131. package/dist/delivery/inbox.js.map +1 -0
  132. package/dist/delivery/parked-delivery-obligations.d.ts +182 -0
  133. package/dist/delivery/parked-delivery-obligations.d.ts.map +1 -0
  134. package/dist/delivery/parked-delivery-obligations.js +390 -0
  135. package/dist/delivery/parked-delivery-obligations.js.map +1 -0
  136. package/dist/delivery/shard-index.d.ts +41 -0
  137. package/dist/delivery/shard-index.d.ts.map +1 -0
  138. package/dist/delivery/shard-index.js +67 -0
  139. package/dist/delivery/shard-index.js.map +1 -0
  140. package/dist/delivery/sharded-work-registry.d.ts +114 -0
  141. package/dist/delivery/sharded-work-registry.d.ts.map +1 -0
  142. package/dist/delivery/sharded-work-registry.js +361 -0
  143. package/dist/delivery/sharded-work-registry.js.map +1 -0
  144. package/dist/entity/entity-metadata.d.ts +173 -0
  145. package/dist/entity/entity-metadata.d.ts.map +1 -0
  146. package/dist/entity/entity-metadata.js +187 -0
  147. package/dist/entity/entity-metadata.js.map +1 -0
  148. package/dist/entity/entity-storage-descriptor.d.ts +64 -0
  149. package/dist/entity/entity-storage-descriptor.d.ts.map +1 -0
  150. package/dist/entity/entity-storage-descriptor.js +227 -0
  151. package/dist/entity/entity-storage-descriptor.js.map +1 -0
  152. package/dist/entity/entity-transaction.d.ts +372 -0
  153. package/dist/entity/entity-transaction.d.ts.map +1 -0
  154. package/dist/entity/entity-transaction.js +413 -0
  155. package/dist/entity/entity-transaction.js.map +1 -0
  156. package/dist/entity/entity-transition-validation.d.ts +47 -0
  157. package/dist/entity/entity-transition-validation.d.ts.map +1 -0
  158. package/dist/entity/entity-transition-validation.js +327 -0
  159. package/dist/entity/entity-transition-validation.js.map +1 -0
  160. package/dist/entity/entity.d.ts +605 -0
  161. package/dist/entity/entity.d.ts.map +1 -0
  162. package/dist/entity/entity.js +981 -0
  163. package/dist/entity/entity.js.map +1 -0
  164. package/dist/entity/implicit-required-id.d.ts +15 -0
  165. package/dist/entity/implicit-required-id.d.ts.map +1 -0
  166. package/dist/entity/implicit-required-id.js +123 -0
  167. package/dist/entity/implicit-required-id.js.map +1 -0
  168. package/dist/entity/spec-scanner.d.ts +14 -0
  169. package/dist/entity/spec-scanner.d.ts.map +1 -0
  170. package/dist/entity/spec-scanner.js +37 -0
  171. package/dist/entity/spec-scanner.js.map +1 -0
  172. package/dist/handler/command-registration-readiness.d.ts +99 -0
  173. package/dist/handler/command-registration-readiness.d.ts.map +1 -0
  174. package/dist/handler/command-registration-readiness.js +120 -0
  175. package/dist/handler/command-registration-readiness.js.map +1 -0
  176. package/dist/handler/declared-rejections.d.ts +11 -0
  177. package/dist/handler/declared-rejections.d.ts.map +1 -0
  178. package/dist/handler/declared-rejections.js +34 -0
  179. package/dist/handler/declared-rejections.js.map +1 -0
  180. package/dist/handler/event-handler-filter.d.ts +43 -0
  181. package/dist/handler/event-handler-filter.d.ts.map +1 -0
  182. package/dist/handler/event-handler-filter.js +128 -0
  183. package/dist/handler/event-handler-filter.js.map +1 -0
  184. package/dist/handler/event-registration-readiness.d.ts +196 -0
  185. package/dist/handler/event-registration-readiness.d.ts.map +1 -0
  186. package/dist/handler/event-registration-readiness.js +187 -0
  187. package/dist/handler/event-registration-readiness.js.map +1 -0
  188. package/dist/handler/external.d.ts +10 -0
  189. package/dist/handler/external.d.ts.map +1 -0
  190. package/dist/handler/external.js +15 -0
  191. package/dist/handler/external.js.map +1 -0
  192. package/dist/handler/generated-handler-registry.d.ts +185 -0
  193. package/dist/handler/generated-handler-registry.d.ts.map +1 -0
  194. package/dist/handler/generated-handler-registry.js +439 -0
  195. package/dist/handler/generated-handler-registry.js.map +1 -0
  196. package/dist/handler/generated-registry-discovery.d.ts +94 -0
  197. package/dist/handler/generated-registry-discovery.d.ts.map +1 -0
  198. package/dist/handler/generated-registry-discovery.js +226 -0
  199. package/dist/handler/generated-registry-discovery.js.map +1 -0
  200. package/dist/handler/handler-decorators.d.ts +151 -0
  201. package/dist/handler/handler-decorators.d.ts.map +1 -0
  202. package/dist/handler/handler-decorators.js +275 -0
  203. package/dist/handler/handler-decorators.js.map +1 -0
  204. package/dist/handler/handler-metadata.d.ts +553 -0
  205. package/dist/handler/handler-metadata.d.ts.map +1 -0
  206. package/dist/handler/handler-metadata.js +437 -0
  207. package/dist/handler/handler-metadata.js.map +1 -0
  208. package/dist/handler/registration-readiness-metadata.d.ts +68 -0
  209. package/dist/handler/registration-readiness-metadata.d.ts.map +1 -0
  210. package/dist/handler/registration-readiness-metadata.js +171 -0
  211. package/dist/handler/registration-readiness-metadata.js.map +1 -0
  212. package/dist/handler/rejection-source.d.ts +11 -0
  213. package/dist/handler/rejection-source.d.ts.map +1 -0
  214. package/dist/handler/rejection-source.js +25 -0
  215. package/dist/handler/rejection-source.js.map +1 -0
  216. package/dist/handler/standalone.d.ts +25 -0
  217. package/dist/handler/standalone.d.ts.map +1 -0
  218. package/dist/handler/standalone.js +38 -0
  219. package/dist/handler/standalone.js.map +1 -0
  220. package/dist/index.d.ts +46 -0
  221. package/dist/index.d.ts.map +1 -0
  222. package/dist/index.js +54 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/integration/external-messages.d.ts +49 -0
  225. package/dist/integration/external-messages.d.ts.map +1 -0
  226. package/dist/integration/external-messages.js +112 -0
  227. package/dist/integration/external-messages.js.map +1 -0
  228. package/dist/integration/integration-broker.d.ts +74 -0
  229. package/dist/integration/integration-broker.d.ts.map +1 -0
  230. package/dist/integration/integration-broker.js +444 -0
  231. package/dist/integration/integration-broker.js.map +1 -0
  232. package/dist/integration/third-party-context.d.ts +56 -0
  233. package/dist/integration/third-party-context.d.ts.map +1 -0
  234. package/dist/integration/third-party-context.js +130 -0
  235. package/dist/integration/third-party-context.js.map +1 -0
  236. package/dist/repository/command-errors.d.ts +25 -0
  237. package/dist/repository/command-errors.d.ts.map +1 -0
  238. package/dist/repository/command-errors.js +43 -0
  239. package/dist/repository/command-errors.js.map +1 -0
  240. package/dist/repository/command-routing.d.ts +72 -0
  241. package/dist/repository/command-routing.d.ts.map +1 -0
  242. package/dist/repository/command-routing.js +98 -0
  243. package/dist/repository/command-routing.js.map +1 -0
  244. package/dist/repository/commit-fence.d.ts +22 -0
  245. package/dist/repository/commit-fence.d.ts.map +1 -0
  246. package/dist/repository/commit-fence.js +37 -0
  247. package/dist/repository/commit-fence.js.map +1 -0
  248. package/dist/repository/event-routing.d.ts +71 -0
  249. package/dist/repository/event-routing.d.ts.map +1 -0
  250. package/dist/repository/event-routing.js +96 -0
  251. package/dist/repository/event-routing.js.map +1 -0
  252. package/dist/repository/primitive-id.d.ts +75 -0
  253. package/dist/repository/primitive-id.d.ts.map +1 -0
  254. package/dist/repository/primitive-id.js +85 -0
  255. package/dist/repository/primitive-id.js.map +1 -0
  256. package/dist/repository/repository.d.ts +667 -0
  257. package/dist/repository/repository.d.ts.map +1 -0
  258. package/dist/repository/repository.js +3510 -0
  259. package/dist/repository/repository.js.map +1 -0
  260. package/dist/repository/routing-declarations.d.ts +75 -0
  261. package/dist/repository/routing-declarations.d.ts.map +1 -0
  262. package/dist/repository/routing-declarations.js +101 -0
  263. package/dist/repository/routing-declarations.js.map +1 -0
  264. package/dist/repository/state-update-routing.d.ts +66 -0
  265. package/dist/repository/state-update-routing.d.ts.map +1 -0
  266. package/dist/repository/state-update-routing.js +91 -0
  267. package/dist/repository/state-update-routing.js.map +1 -0
  268. package/dist/runtime/runtime.d.ts +156 -0
  269. package/dist/runtime/runtime.d.ts.map +1 -0
  270. package/dist/runtime/runtime.js +215 -0
  271. package/dist/runtime/runtime.js.map +1 -0
  272. package/dist/runtime/signal-intake.d.ts +84 -0
  273. package/dist/runtime/signal-intake.d.ts.map +1 -0
  274. package/dist/runtime/signal-intake.js +94 -0
  275. package/dist/runtime/signal-intake.js.map +1 -0
  276. package/dist/runtime/signal-metadata.d.ts +217 -0
  277. package/dist/runtime/signal-metadata.d.ts.map +1 -0
  278. package/dist/runtime/signal-metadata.js +333 -0
  279. package/dist/runtime/signal-metadata.js.map +1 -0
  280. package/dist/runtime/signal-publisher.d.ts +144 -0
  281. package/dist/runtime/signal-publisher.d.ts.map +1 -0
  282. package/dist/runtime/signal-publisher.js +248 -0
  283. package/dist/runtime/signal-publisher.js.map +1 -0
  284. package/dist/runtime/standalone-handler-runtime.d.ts +114 -0
  285. package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -0
  286. package/dist/runtime/standalone-handler-runtime.js +307 -0
  287. package/dist/runtime/standalone-handler-runtime.js.map +1 -0
  288. package/dist/server/environment-attachment.d.ts +356 -0
  289. package/dist/server/environment-attachment.d.ts.map +1 -0
  290. package/dist/server/environment-attachment.js +2062 -0
  291. package/dist/server/environment-attachment.js.map +1 -0
  292. package/dist/server/environment-delivery-records.d.ts +77 -0
  293. package/dist/server/environment-delivery-records.d.ts.map +1 -0
  294. package/dist/server/environment-delivery-records.js +282 -0
  295. package/dist/server/environment-delivery-records.js.map +1 -0
  296. package/dist/server/environment-delivery-worker.d.ts +161 -0
  297. package/dist/server/environment-delivery-worker.d.ts.map +1 -0
  298. package/dist/server/environment-delivery-worker.js +673 -0
  299. package/dist/server/environment-delivery-worker.js.map +1 -0
  300. package/dist/server/environment.d.ts +43 -0
  301. package/dist/server/environment.d.ts.map +1 -0
  302. package/dist/server/environment.js +90 -0
  303. package/dist/server/environment.js.map +1 -0
  304. package/dist/server/managed-child-subscription.d.ts +11 -0
  305. package/dist/server/managed-child-subscription.d.ts.map +1 -0
  306. package/dist/server/managed-child-subscription.js +44 -0
  307. package/dist/server/managed-child-subscription.js.map +1 -0
  308. package/dist/server/managed-server-application.d.ts +327 -0
  309. package/dist/server/managed-server-application.d.ts.map +1 -0
  310. package/dist/server/managed-server-application.js +937 -0
  311. package/dist/server/managed-server-application.js.map +1 -0
  312. package/dist/server/node-coordinator.d.ts +191 -0
  313. package/dist/server/node-coordinator.d.ts.map +1 -0
  314. package/dist/server/node-coordinator.js +552 -0
  315. package/dist/server/node-coordinator.js.map +1 -0
  316. package/dist/server/process-server-coordinator.d.ts +15 -0
  317. package/dist/server/process-server-coordinator.d.ts.map +1 -0
  318. package/dist/server/process-server-coordinator.js +112 -0
  319. package/dist/server/process-server-coordinator.js.map +1 -0
  320. package/dist/server/reserved-spine-rpc-paths.json +8 -0
  321. package/dist/server/retryable-close.d.ts +28 -0
  322. package/dist/server/retryable-close.d.ts.map +1 -0
  323. package/dist/server/retryable-close.js +129 -0
  324. package/dist/server/retryable-close.js.map +1 -0
  325. package/dist/server/server-environment.d.ts +180 -0
  326. package/dist/server/server-environment.d.ts.map +1 -0
  327. package/dist/server/server-environment.js +418 -0
  328. package/dist/server/server-environment.js.map +1 -0
  329. package/dist/server/server-log.d.ts +18 -0
  330. package/dist/server/server-log.d.ts.map +1 -0
  331. package/dist/server/server-log.js +100 -0
  332. package/dist/server/server-log.js.map +1 -0
  333. package/dist/server/server.d.ts +221 -0
  334. package/dist/server/server.d.ts.map +1 -0
  335. package/dist/server/server.js +704 -0
  336. package/dist/server/server.js.map +1 -0
  337. package/dist/services/query-reader.d.ts +19 -0
  338. package/dist/services/query-reader.d.ts.map +1 -0
  339. package/dist/services/query-reader.js +43 -0
  340. package/dist/services/query-reader.js.map +1 -0
  341. package/dist/services/spine-services.d.ts +88 -0
  342. package/dist/services/spine-services.d.ts.map +1 -0
  343. package/dist/services/spine-services.js +1582 -0
  344. package/dist/services/spine-services.js.map +1 -0
  345. package/dist/spi/delivery.d.ts +5 -0
  346. package/dist/spi/delivery.d.ts.map +1 -0
  347. package/dist/spi/delivery.js +18 -0
  348. package/dist/spi/delivery.js.map +1 -0
  349. package/dist/spi/handler-registry.d.ts +8 -0
  350. package/dist/spi/handler-registry.d.ts.map +1 -0
  351. package/dist/spi/handler-registry.js +15 -0
  352. package/dist/spi/handler-registry.js.map +1 -0
  353. package/dist/stand/stand.d.ts +294 -0
  354. package/dist/stand/stand.d.ts.map +1 -0
  355. package/dist/stand/stand.js +681 -0
  356. package/dist/stand/stand.js.map +1 -0
  357. package/dist/stand/subscription-observer.d.ts +53 -0
  358. package/dist/stand/subscription-observer.d.ts.map +1 -0
  359. package/dist/stand/subscription-observer.js +444 -0
  360. package/dist/stand/subscription-observer.js.map +1 -0
  361. package/dist/stand/subscription-records.d.ts +12 -0
  362. package/dist/stand/subscription-records.d.ts.map +1 -0
  363. package/dist/stand/subscription-records.js +99 -0
  364. package/dist/stand/subscription-records.js.map +1 -0
  365. package/dist/stand/subscription-registry.d.ts +285 -0
  366. package/dist/stand/subscription-registry.d.ts.map +1 -0
  367. package/dist/stand/subscription-registry.js +403 -0
  368. package/dist/stand/subscription-registry.js.map +1 -0
  369. package/dist/stand/subscription-runtime.d.ts +102 -0
  370. package/dist/stand/subscription-runtime.d.ts.map +1 -0
  371. package/dist/stand/subscription-runtime.js +380 -0
  372. package/dist/stand/subscription-runtime.js.map +1 -0
  373. package/dist/testing/index.d.ts +36 -0
  374. package/dist/testing/index.d.ts.map +1 -0
  375. package/dist/testing/index.js +54 -0
  376. package/dist/testing/index.js.map +1 -0
  377. package/dist/tsconfig.tsbuildinfo +1 -0
  378. package/package.json +76 -0
@@ -0,0 +1,361 @@
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 { clone, create } from "@bufbuild/protobuf";
15
+ import { TenantIdSchema } from "@spine-event-engine/proto";
16
+ import { ShardIndexSchema, ShardSessionRecordSchema, WorkerIdSchema, } from "@spine-event-engine/proto/delivery";
17
+ import { RecordSpec, } from "@spine-event-engine/storage";
18
+ import { TenantBoundary } from "@spine-event-engine/storage/provider";
19
+ import { DeliveryStorageCorruptionError } from "./delivery-storage-error.js";
20
+ import { DeliveryLeases } from "./delivery-lease.js";
21
+ import { ShardIndex } from "./shard-index.js";
22
+ const retries = 8;
23
+ const leaseDefault = 30_000;
24
+ /**
25
+ * Defines direct durable shard-session records keyed by their generated shard index.
26
+ */
27
+ export const shardSessionRecordSpec = new RecordSpec({
28
+ sourceType: ShardSessionRecordSchema,
29
+ recordType: ShardSessionRecordSchema,
30
+ idSchema: ShardIndexSchema,
31
+ extractId: (record) => {
32
+ if (record.index === undefined)
33
+ throw new DeliveryStorageCorruptionError("Shard session index is missing.");
34
+ return record.index;
35
+ },
36
+ });
37
+ /**
38
+ * Coordinates durable exclusive ownership of delivery shards.
39
+ */
40
+ export class ShardedWorkRegistry {
41
+ // prettier-ignore
42
+ /**
43
+ * Identifies the renewable leased session model.
44
+ */
45
+ sessionKind = "LEASED";
46
+ #context;
47
+ #factory;
48
+ #lease;
49
+ #now;
50
+ /**
51
+ * Opens a registry over direct shard-session storage.
52
+ *
53
+ * @param options Configures durable storage, lease duration, and clock.
54
+ */
55
+ constructor(options) {
56
+ this.#context = copy(options.context);
57
+ this.#factory = options.storageFactory;
58
+ this.#lease = DeliveryLeases.requireMs("ShardedWorkRegistry", options.leaseMs ?? leaseDefault);
59
+ this.#now = options.now ?? (() => new Date());
60
+ configs.set(this, {
61
+ context: this.#context,
62
+ storageFactory: this.#factory,
63
+ lease: this.#lease,
64
+ now: this.#now,
65
+ });
66
+ Object.freeze(this);
67
+ }
68
+ /**
69
+ * Acquires a shard for one complete durable worker identity.
70
+ *
71
+ * @param shard Identifies the shard to acquire.
72
+ * @param worker Identifies the worker requesting ownership.
73
+ * @returns The live owned session, or `undefined` when another worker owns it.
74
+ */
75
+ async pickUp(shard, worker) {
76
+ const nextShard = checkedShard(shard);
77
+ const nextWorker = checkedWorker(worker);
78
+ const storage = this.#storage();
79
+ try {
80
+ atomic(storage);
81
+ for (let i = 0; i < retries; i++) {
82
+ const id = wireId(nextShard);
83
+ const record = await storage.read(id);
84
+ const current = record === undefined ? undefined : session(record, nextShard, this.#lease);
85
+ const now = time(this.#now());
86
+ if (current?.worker !== undefined && current.expiresAt.getTime() > now) {
87
+ return sameWorker(current.worker, nextWorker) ? current : undefined;
88
+ }
89
+ const next = owned(nextShard, nextWorker, now, this.#lease);
90
+ if (await storage.compareAndSet(id, record, toRecord(next)))
91
+ return next;
92
+ }
93
+ throw concurrent("Shard pickup");
94
+ }
95
+ finally {
96
+ storage.close();
97
+ }
98
+ }
99
+ /**
100
+ * Returns one renewed exact live shard-session snapshot.
101
+ *
102
+ * @param expected Supplies the previously observed session.
103
+ * @returns The renewed session, or `undefined` when ownership was lost.
104
+ */
105
+ async renew(expected) {
106
+ return this.#update(expected);
107
+ }
108
+ /**
109
+ * Returns the renewed exact ownership session.
110
+ *
111
+ * @param expected Supplies the previously observed session.
112
+ * @returns The renewed session, or `undefined` when ownership was lost.
113
+ */
114
+ validateOwnership(expected) {
115
+ return this.renew(expected);
116
+ }
117
+ /**
118
+ * Returns whether one exact live shard-session snapshot became unowned.
119
+ *
120
+ * @param expected Supplies the session to release.
121
+ * @returns Whether the session is or became unowned.
122
+ */
123
+ async release(expected) {
124
+ const storage = this.#storage();
125
+ try {
126
+ atomic(storage);
127
+ for (let i = 0; i < retries; i++) {
128
+ const record = await storage.read(wireId(expected.shard));
129
+ if (record === undefined)
130
+ return false;
131
+ const current = session(record, expected.shard, this.#lease);
132
+ if (!same(current, expected) || current.expiresAt.getTime() <= time(this.#now())) {
133
+ return current.worker === undefined;
134
+ }
135
+ if (await storage.compareAndSet(wireId(expected.shard), record, unowned(current)))
136
+ return true;
137
+ }
138
+ throw concurrent("Shard release");
139
+ }
140
+ finally {
141
+ storage.close();
142
+ }
143
+ }
144
+ /**
145
+ * Returns after draining one exclusively owned shard until a full rescan is empty.
146
+ *
147
+ * @param shard Identifies the shard to drain.
148
+ * @param worker Identifies the worker retaining ownership.
149
+ * @param read Reads the next pending shard contents.
150
+ * @param deliver Delivers one pending value under the current session.
151
+ * @returns A promise that settles after release or ownership loss.
152
+ */
153
+ async drainUntilEmpty(shard, worker, read, deliver) {
154
+ let current = await this.pickUp(shard, worker);
155
+ if (current === undefined)
156
+ return;
157
+ try {
158
+ for (;;) {
159
+ current = await this.renew(current);
160
+ if (current === undefined)
161
+ return;
162
+ const values = await read();
163
+ if (values.length === 0)
164
+ return;
165
+ for (const value of values) {
166
+ current = await this.renew(current);
167
+ if (current === undefined)
168
+ return;
169
+ await deliver(value, current);
170
+ }
171
+ }
172
+ }
173
+ finally {
174
+ if (current !== undefined)
175
+ await this.release(current);
176
+ }
177
+ }
178
+ async #update(expected) {
179
+ const storage = this.#storage();
180
+ try {
181
+ atomic(storage);
182
+ for (let i = 0; i < retries; i++) {
183
+ const record = await storage.read(wireId(expected.shard));
184
+ if (record === undefined)
185
+ return undefined;
186
+ const current = session(record, expected.shard, this.#lease);
187
+ const now = time(this.#now());
188
+ if (!same(current, expected)) {
189
+ return current.worker !== undefined &&
190
+ expected.worker !== undefined &&
191
+ sameWorker(current.worker, expected.worker) &&
192
+ current.expiresAt.getTime() > now
193
+ ? current
194
+ : undefined;
195
+ }
196
+ if (current.worker === undefined || current.expiresAt.getTime() <= now)
197
+ return undefined;
198
+ const next = owned(current.shard, current.worker, now, this.#lease);
199
+ if (await storage.compareAndSet(wireId(expected.shard), record, toRecord(next)))
200
+ return next;
201
+ }
202
+ throw concurrent("Shard renewal");
203
+ }
204
+ finally {
205
+ storage.close();
206
+ }
207
+ }
208
+ #storage() {
209
+ return this.#factory.createRecordStorage(context(this.#context), shardSessionRecordSpec);
210
+ }
211
+ }
212
+ /**
213
+ * Represents one exact durable shard ownership snapshot.
214
+ */
215
+ export class ShardSession {
216
+ shard;
217
+ worker;
218
+ pickedUpAt;
219
+ expiresAt;
220
+ // prettier-ignore
221
+ /**
222
+ * Identifies the leased session model.
223
+ */
224
+ kind = "LEASED";
225
+ /**
226
+ * Creates an immutable shard ownership snapshot.
227
+ *
228
+ * @param shard Identifies the owned shard.
229
+ * @param worker Identifies the owner, or `undefined` for an unowned row.
230
+ * @param pickedUpAt Records the durable pickup time.
231
+ * @param expiresAt Records the derived lease-expiry time.
232
+ */
233
+ constructor(shard, worker, pickedUpAt, expiresAt) {
234
+ this.shard = shard;
235
+ this.worker = worker;
236
+ this.pickedUpAt = pickedUpAt;
237
+ this.expiresAt = expiresAt;
238
+ Object.freeze(this);
239
+ }
240
+ }
241
+ const configs = new WeakMap();
242
+ /**
243
+ * Exposes package-internal registry construction observations for integrations.
244
+ */
245
+ export const shardedWorkRegistryAccess = Object.freeze({
246
+ matches(registry, contextValue, storageFactory) {
247
+ const value = configs.get(registry);
248
+ return (value?.storageFactory === storageFactory &&
249
+ value.context.name === contextValue.name &&
250
+ value.context.multitenant === contextValue.multitenant &&
251
+ TenantBoundary.of(value.context).key === TenantBoundary.of(contextValue).key);
252
+ },
253
+ });
254
+ function wireId(value) {
255
+ return create(ShardIndexSchema, { index: value.index, ofTotal: value.ofTotal });
256
+ }
257
+ function checkedShard(value) {
258
+ if (!(value instanceof ShardIndex))
259
+ throw new Error("Shard index is invalid.");
260
+ return value;
261
+ }
262
+ function checkedWorker(value) {
263
+ if (value.nodeId === undefined)
264
+ throw new Error("Shard worker is invalid.");
265
+ const node = value.nodeId.value;
266
+ if (typeof node !== "string" ||
267
+ node.trim() === "" ||
268
+ typeof value.value !== "string" ||
269
+ value.value.trim() === "")
270
+ throw new Error("Shard worker is invalid.");
271
+ return create(WorkerIdSchema, { nodeId: { value: node }, value: value.value });
272
+ }
273
+ function time(value) {
274
+ if (!(value instanceof Date) || !Number.isFinite(value.getTime()))
275
+ throw new Error("Shard time is invalid.");
276
+ return value.getTime();
277
+ }
278
+ function session(record, expected, lease) {
279
+ const index = record.index;
280
+ if (index?.index !== expected.index || index.ofTotal !== expected.ofTotal)
281
+ throw new DeliveryStorageCorruptionError("Shard session does not match its storage ID.");
282
+ const picked = timestamp(record.whenLastPicked);
283
+ const worker = record.worker === undefined ? undefined : checkedWorker(record.worker);
284
+ const expires = picked.getTime() + lease;
285
+ if (!Number.isSafeInteger(expires) || !Number.isFinite(new Date(expires).getTime()))
286
+ throw new DeliveryStorageCorruptionError("Shard lease expiry is invalid.");
287
+ return new ShardSession(expected, worker, picked, new Date(expires));
288
+ }
289
+ function atomic(storage) {
290
+ if (!storage.atomicCompareAndSet)
291
+ throw new DeliveryStorageCorruptionError("Shard storage requires atomic compare-and-set.");
292
+ }
293
+ function timestamp(value) {
294
+ if (value === undefined ||
295
+ !Number.isInteger(value.nanos) ||
296
+ value.nanos < 0 ||
297
+ value.nanos >= 1e9)
298
+ throw new DeliveryStorageCorruptionError("Shard pickup time is invalid.");
299
+ const ms = Number(value.seconds) * 1000 + Math.floor(value.nanos / 1e6);
300
+ if (!Number.isSafeInteger(ms))
301
+ throw new DeliveryStorageCorruptionError("Shard pickup time is invalid.");
302
+ return new Date(ms);
303
+ }
304
+ function owned(shard, worker, now, lease) {
305
+ const expiresAt = now + lease;
306
+ if (!Number.isSafeInteger(expiresAt) || !Number.isFinite(new Date(expiresAt).getTime()))
307
+ throw new Error("Shard lease expiry is invalid.");
308
+ return new ShardSession(shard, worker, new Date(now), new Date(expiresAt));
309
+ }
310
+ function toRecord(value) {
311
+ if (value.worker === undefined)
312
+ throw new Error("Shard worker is invalid.");
313
+ return create(ShardSessionRecordSchema, {
314
+ index: wireId(value.shard),
315
+ whenLastPicked: {
316
+ seconds: BigInt(Math.floor(value.pickedUpAt.getTime() / 1000)),
317
+ nanos: (value.pickedUpAt.getTime() % 1000) * 1e6,
318
+ },
319
+ worker: value.worker,
320
+ });
321
+ }
322
+ function unowned(value) {
323
+ return create(ShardSessionRecordSchema, {
324
+ index: wireId(value.shard),
325
+ whenLastPicked: {
326
+ seconds: BigInt(Math.floor(value.pickedUpAt.getTime() / 1000)),
327
+ nanos: (value.pickedUpAt.getTime() % 1000) * 1e6,
328
+ },
329
+ });
330
+ }
331
+ function same(a, b) {
332
+ return (a.shard.key() === b.shard.key() &&
333
+ a.pickedUpAt.getTime() === b.pickedUpAt.getTime() &&
334
+ a.worker?.nodeId?.value === b.worker?.nodeId?.value &&
335
+ a.worker?.value === b.worker?.value);
336
+ }
337
+ function sameWorker(a, b) {
338
+ return a.nodeId?.value === b.nodeId?.value && a.value === b.value;
339
+ }
340
+ function context(value) {
341
+ return value.multitenant
342
+ ? {
343
+ name: `${value.name}.delivery.shards`,
344
+ multitenant: true,
345
+ tenantId: clone(TenantIdSchema, value.tenantId),
346
+ }
347
+ : { name: `${value.name}.delivery.shards`, multitenant: false };
348
+ }
349
+ function copy(value) {
350
+ return value.multitenant
351
+ ? {
352
+ name: value.name,
353
+ multitenant: true,
354
+ tenantId: clone(TenantIdSchema, value.tenantId),
355
+ }
356
+ : { name: value.name, multitenant: false };
357
+ }
358
+ function concurrent(label) {
359
+ return new Error(`${label} could not be completed due to concurrent changes.`);
360
+ }
361
+ //# sourceMappingURL=sharded-work-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharded-work-registry.js","sourceRoot":"","sources":["../../src/delivery/sharded-work-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import type { DescField, DescFile, Message } from "@bufbuild/protobuf";
2
+ import type { GenMessage } from "@bufbuild/protobuf/codegenv2";
3
+ import type { Entity } from "./entity.js";
4
+ /**
5
+ * Protobuf-ES message schema accepted by the server descriptor metadata APIs.
6
+ */
7
+ export type DescriptorMessageSchema = GenMessage<Message>;
8
+ /**
9
+ * Constructible class from the Spine Entity family.
10
+ *
11
+ * @internal
12
+ */
13
+ export type EntityConstructor = typeof Entity;
14
+ /**
15
+ * Attaches generated state-schema metadata directly to an Entity class.
16
+ *
17
+ * @internal
18
+ * @param entityType The Entity class that owns the schema metadata.
19
+ * @param schema The generated Entity state schema.
20
+ */
21
+ export declare function attachEntitySchema(entityType: EntityConstructor, schema: DescriptorMessageSchema): void;
22
+ /**
23
+ * Reads generated state-schema metadata from an Entity class.
24
+ *
25
+ * @internal
26
+ * @param entityType The Entity class whose metadata is read.
27
+ * @returns The attached generated state schema, when present.
28
+ */
29
+ export declare function entitySchemaOf(entityType: EntityConstructor): DescriptorMessageSchema | undefined;
30
+ /**
31
+ * Normalized Spine entity kind derived from `(entity).kind`.
32
+ */
33
+ export type EntityKind = "aggregate" | "projection" | "process-manager" | "entity";
34
+ /**
35
+ * Normalized Spine entity visibility after default application.
36
+ */
37
+ export type EntityVisibility = "none" | "subscribe" | "query" | "full";
38
+ /**
39
+ * Visibility declared directly in `(entity).visibility`, before defaulting.
40
+ */
41
+ export type DeclaredEntityVisibility = EntityVisibility | "default";
42
+ /**
43
+ * Machine-readable codes for descriptor metadata extraction failures.
44
+ */
45
+ export type DescriptorMetadataErrorCode = "NOT_ENTITY_SCHEMA" | "UNSUPPORTED_ENTITY_KIND" | "UNSUPPORTED_ENTITY_VISIBILITY" | "MISSING_ENTITY_ID_FIELD" | "INVALID_COLUMN_FIELD";
46
+ /**
47
+ * Descriptor-derived metadata for one Protobuf field.
48
+ */
49
+ export interface DescriptorFieldMetadata<Field extends DescField = DescField> {
50
+ /**
51
+ * Descriptor identity for the field.
52
+ */
53
+ readonly descriptor: Field;
54
+ /**
55
+ * Protobuf field name as declared in source.
56
+ */
57
+ readonly name: Field["name"];
58
+ /**
59
+ * ECMAScript-safe property name generated by Protobuf-ES.
60
+ */
61
+ readonly localName: Field["localName"];
62
+ /**
63
+ * JSON field name.
64
+ */
65
+ readonly jsonName: Field["jsonName"];
66
+ /**
67
+ * Protobuf field number.
68
+ */
69
+ readonly number: Field["number"];
70
+ }
71
+ /**
72
+ * Hint for later default command/event routing by the first declared field.
73
+ */
74
+ export interface FirstFieldRoutingHint<Field extends DescField = DescField> {
75
+ /**
76
+ * Current default routing strategy preserved from Spine descriptor order.
77
+ */
78
+ readonly strategy: "first-field";
79
+ /**
80
+ * Field that later routing logic should inspect.
81
+ */
82
+ readonly field: DescriptorFieldMetadata<Field>;
83
+ }
84
+ /**
85
+ * Descriptor-derived entity metadata used by handler, repository, and context assembly.
86
+ */
87
+ export interface EntityMetadata<Schema extends DescriptorMessageSchema = DescriptorMessageSchema> {
88
+ /**
89
+ * Generated Protobuf-ES schema describing the entity state message.
90
+ */
91
+ readonly schema: Schema;
92
+ /**
93
+ * Alias for the schema as the descriptor-bearing message declaration.
94
+ */
95
+ readonly descriptor: Schema;
96
+ /**
97
+ * Fully qualified Protobuf type name.
98
+ */
99
+ readonly fullTypeName: Schema["typeName"];
100
+ /**
101
+ * Declaring file descriptor.
102
+ */
103
+ readonly fileDescriptor: DescFile;
104
+ /**
105
+ * Declaring file name with `.proto` restored.
106
+ */
107
+ readonly fileName: string;
108
+ /**
109
+ * Normalized entity kind.
110
+ */
111
+ readonly kind: EntityKind;
112
+ /**
113
+ * Visibility directly declared in `(entity).visibility`.
114
+ */
115
+ readonly declaredVisibility: DeclaredEntityVisibility;
116
+ /**
117
+ * Effective visibility after Spine defaults are applied.
118
+ */
119
+ readonly visibility: EntityVisibility;
120
+ /**
121
+ * Whether visibility came from an explicit option or a kind default.
122
+ */
123
+ readonly visibilitySource: "default" | "explicit";
124
+ /**
125
+ * Canonical entity ID field, taken from the first declared field.
126
+ */
127
+ readonly idField: DescriptorFieldMetadata;
128
+ /**
129
+ * Descriptor hint for later first-field routing.
130
+ */
131
+ readonly firstFieldRoutingHint: FirstFieldRoutingHint;
132
+ /**
133
+ * Fields marked `(column) = true`, in descriptor declaration order, for
134
+ * column-eligible entity kinds only. Aggregate and generic entity column
135
+ * declarations are ignored in this slice.
136
+ */
137
+ readonly columns: readonly DescriptorFieldMetadata[];
138
+ /**
139
+ * Fields marked `(set_once) = true`, in descriptor declaration order.
140
+ */
141
+ readonly setOnceFields: readonly DescriptorFieldMetadata[];
142
+ }
143
+ /**
144
+ * Error thrown when descriptor metadata cannot be derived for a schema.
145
+ */
146
+ export declare class DescriptorMetadataError extends Error {
147
+ /**
148
+ * Stable code for callers/tests that need structured failure handling.
149
+ */
150
+ readonly code: DescriptorMetadataErrorCode;
151
+ /**
152
+ * Creates a descriptor metadata error.
153
+ *
154
+ * @param code Stable failure code.
155
+ * @param message Human-readable explanation of the invalid descriptor.
156
+ */
157
+ constructor(code: DescriptorMetadataErrorCode, message: string);
158
+ }
159
+ /**
160
+ * Determines whether a schema declares Spine `(entity)` metadata.
161
+ *
162
+ * @param schema Generated schema to inspect.
163
+ * @returns `true` when the schema declares an entity option.
164
+ */
165
+ export declare function isEntitySchema(schema: DescriptorMessageSchema): boolean;
166
+ /**
167
+ * Describes deterministic entity metadata from a Protobuf-ES schema descriptor.
168
+ *
169
+ * @param schema Generated entity-state schema to describe.
170
+ * @returns Frozen metadata derived from the schema descriptor.
171
+ */
172
+ export declare function describeEntityMetadata<Schema extends DescriptorMessageSchema>(schema: Schema): EntityMetadata<Schema>;
173
+ //# sourceMappingURL=entity-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-metadata.d.ts","sourceRoot":"","sources":["../../src/entity/entity-metadata.ts"],"names":[],"mappings":"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"}