@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,185 @@
1
+ import { type DescriptorMessageSchema } from "../entity/entity-metadata.js";
2
+ import { AbstractAssignee, AbstractCommander, AbstractEventReactor, AbstractEventSubscriber } from "./standalone.js";
3
+ import { HandlerMetadataRegistry, type EntityClass, type EntityHandlersMetadata, type HandlerMethodName, type HandlerOrigin, type WhereOptions } from "./handler-metadata.js";
4
+ /**
5
+ * Generated registry metadata consumed by the framework.
6
+ *
7
+ * Application code regenerates this data whenever the handler contract changes.
8
+ */
9
+ export interface GeneratedHandlerRegistry {
10
+ /**
11
+ * Unversioned Entity and standalone receiver declarations.
12
+ */
13
+ readonly receivers: readonly GeneratedReceiver[];
14
+ }
15
+ /**
16
+ * Framework-owned ingestion adapter for generated handler registries.
17
+ */
18
+ export declare class HandlerRegistryIngestor {
19
+ /**
20
+ * Converts generated registry records into canonical entity handler metadata.
21
+ *
22
+ * @param registry Generated registry metadata to validate and materialize.
23
+ * @returns Frozen canonical entity-handler metadata.
24
+ */
25
+ ingest(registry: unknown): readonly EntityHandlersMetadata[];
26
+ /**
27
+ * Registers generated registry records in a caller-owned metadata registry.
28
+ *
29
+ * @param generated Generated registry metadata to validate and register.
30
+ * @param registry Metadata registry to update.
31
+ * @returns The updated metadata registry.
32
+ */
33
+ register(generated: unknown, registry?: HandlerMetadataRegistry): HandlerMetadataRegistry;
34
+ }
35
+ /**
36
+ * Error code for generated handler registry ingestion failures.
37
+ */
38
+ export type RegistryIngestionErrorCode = "UNSUPPORTED_REGISTRY_VERSION" | "UNSUPPORTED_HANDLER_KIND" | "INVALID_PARAMETER_COUNT" | "INVALID_SCHEMA" | "INVALID_SIGNAL_ORIGIN" | "EXTERNAL_COMMAND_RECEIVER" | "MISSING_EMITTED_SCHEMAS" | "UNEXPECTED_EMITTED_SCHEMAS";
39
+ /**
40
+ * Error thrown when generated handler registry metadata cannot be ingested.
41
+ */
42
+ export declare class HandlerRegistryIngestionError extends Error {
43
+ /**
44
+ * Stable code for callers/tests that need structured failure handling.
45
+ */
46
+ readonly code: RegistryIngestionErrorCode;
47
+ /**
48
+ * Creates an ingestion error.
49
+ *
50
+ * @param code Stable code that identifies the failed validation.
51
+ * @param message Human-readable failure description.
52
+ */
53
+ constructor(code: RegistryIngestionErrorCode, message: string);
54
+ }
55
+ /**
56
+ * Describes handler categories supported by generated registry ingestion.
57
+ */
58
+ export type GeneratedHandlerKind = "command-assignment" | "command-substitution" | "command-reaction" | "event-subscription" | "state-subscription" | "event-reaction";
59
+ /**
60
+ * Describes public handler arity recorded by generated registry tooling.
61
+ */
62
+ export type GeneratedHandlerParameterCount = 1 | 2;
63
+ /**
64
+ * Describes a type-erased generated Entity group accepted by a top-level registry.
65
+ */
66
+ export interface GeneratedEntityHandlerGroup {
67
+ /**
68
+ * Entity class whose prototype owns the generated handler methods.
69
+ */
70
+ readonly receiverKind: "entity";
71
+ /**
72
+ * Entity constructor matched to the generated receiver declaration.
73
+ */
74
+ readonly receiverType: EntityClass;
75
+ /**
76
+ * Generated Protobuf-ES schema for the entity state.
77
+ */
78
+ readonly stateSchema: DescriptorMessageSchema;
79
+ /**
80
+ * Generated handler records in declaration order.
81
+ */
82
+ readonly handlers: readonly GeneratedHandlerRecordInput[];
83
+ }
84
+ type StandaloneReceiver = AbstractAssignee | AbstractCommander | AbstractEventReactor | AbstractEventSubscriber;
85
+ interface NominalStandaloneReceiverConstructor<Instance extends StandaloneReceiver> {
86
+ /**
87
+ * Prototype carrying the standalone receiver's nominal base-class brand.
88
+ */
89
+ readonly prototype: Instance;
90
+ /**
91
+ * Creates a standalone receiver instance.
92
+ *
93
+ * @param args Application-defined constructor arguments.
94
+ * @returns A nominal standalone receiver instance.
95
+ */
96
+ new (...args: any[]): Instance;
97
+ }
98
+ /**
99
+ * Nominal constructor for a supported standalone handler receiver.
100
+ */
101
+ export type StandaloneReceiverConstructor = NominalStandaloneReceiverConstructor<AbstractAssignee> | NominalStandaloneReceiverConstructor<AbstractCommander> | NominalStandaloneReceiverConstructor<AbstractEventReactor> | NominalStandaloneReceiverConstructor<AbstractEventSubscriber>;
102
+ /**
103
+ * Metadata for one decorated standalone application receiver.
104
+ */
105
+ export interface GeneratedStandaloneHandlerGroup {
106
+ /**
107
+ * Marks this declaration as a standalone receiver.
108
+ */
109
+ readonly receiverKind: "standalone";
110
+ /**
111
+ * Constructor used to match a registered standalone application instance.
112
+ */
113
+ readonly receiverType: StandaloneReceiverConstructor;
114
+ /**
115
+ * Generated handler declarations in source order.
116
+ */
117
+ readonly handlers: readonly GeneratedHandlerRecordInput[];
118
+ }
119
+ /**
120
+ * One generated Entity or standalone receiver declaration.
121
+ */
122
+ export type GeneratedReceiver = GeneratedEntityHandlerGroup | GeneratedStandaloneHandlerGroup;
123
+ /**
124
+ * Describes generated handler records for one entity class.
125
+ *
126
+ */
127
+ export interface GeneratedEntityHandlers<Instance extends object = object, StateSchema extends DescriptorMessageSchema = DescriptorMessageSchema> extends GeneratedEntityHandlerGroup {
128
+ /**
129
+ * Entity class whose prototype owns the generated handler methods.
130
+ */
131
+ readonly receiverType: EntityClass<Instance>;
132
+ /**
133
+ * Generated Protobuf-ES schema for the entity state.
134
+ */
135
+ readonly stateSchema: StateSchema;
136
+ /**
137
+ * Generated handler records in declaration order.
138
+ */
139
+ readonly handlers: readonly GeneratedHandlerRecord<Instance>[];
140
+ }
141
+ /**
142
+ * Describes type-erased generated metadata for one decorated handler method.
143
+ *
144
+ */
145
+ export interface GeneratedHandlerRecordInput {
146
+ /**
147
+ * Handler role inferred from the bare decorator.
148
+ */
149
+ readonly kind: GeneratedHandlerKind;
150
+ /**
151
+ * Receiver instance method name selected by generated metadata.
152
+ */
153
+ readonly methodName: string;
154
+ /**
155
+ * Generated Protobuf-ES schema accepted by the handler method.
156
+ */
157
+ readonly input: {
158
+ readonly schema: DescriptorMessageSchema;
159
+ readonly origin: HandlerOrigin;
160
+ readonly where?: WhereOptions;
161
+ };
162
+ /**
163
+ * Generated Protobuf-ES schemas returned normally or declared as thrown rejections.
164
+ */
165
+ readonly outcomes: {
166
+ readonly returned: readonly DescriptorMessageSchema[];
167
+ readonly thrown: readonly DescriptorMessageSchema[];
168
+ };
169
+ /**
170
+ * Public method arity: `handler(signal)` or `handler(signal, context)`.
171
+ */
172
+ readonly parameterCount: GeneratedHandlerParameterCount;
173
+ }
174
+ /**
175
+ * Describes generated metadata for one decorated handler method on a concrete entity class.
176
+ *
177
+ */
178
+ export interface GeneratedHandlerRecord<Instance extends object = object> extends GeneratedHandlerRecordInput {
179
+ /**
180
+ * Entity instance method name selected by generated metadata.
181
+ */
182
+ readonly methodName: HandlerMethodName<Instance>;
183
+ }
184
+ export {};
185
+ //# sourceMappingURL=generated-handler-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-handler-registry.d.ts","sourceRoot":"","sources":["../../src/handler/generated-handler-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,439 @@
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 { isEntitySchema } from "../entity/entity-metadata.js";
15
+ import { ProcessManager } from "../entity/entity.js";
16
+ import { AbstractAssignee, AbstractCommander, AbstractEventReactor, AbstractEventSubscriber, } from "./standalone.js";
17
+ import { HandlerMetadataValues, HandlerMetadataRegistry, } from "./handler-metadata.js";
18
+ import { RejectionSources } from "./rejection-source.js";
19
+ /**
20
+ * Cohesive fail-closed validation for generated Protobuf-ES descriptor objects.
21
+ */
22
+ const DescriptorValidation = Object.freeze({
23
+ isMessage(value) {
24
+ if (value === null || typeof value !== "object")
25
+ return false;
26
+ const message = value;
27
+ if (message.kind !== "message" ||
28
+ typeof message.typeName !== "string" ||
29
+ message.typeName.trim().length === 0 ||
30
+ typeof message.name !== "string" ||
31
+ message.name.trim().length === 0 ||
32
+ message.typeName.split(".").at(-1) !== message.name ||
33
+ !Array.isArray(message.fields) ||
34
+ !Array.isArray(message.members) ||
35
+ !Array.isArray(message.oneofs) ||
36
+ !Array.isArray(message.nestedEnums) ||
37
+ !Array.isArray(message.nestedExtensions) ||
38
+ !Array.isArray(message.nestedMessages) ||
39
+ !DescriptorValidation.hasProtoType(message.proto, "google.protobuf.DescriptorProto") ||
40
+ typeof message.toString !== "function" ||
41
+ !DescriptorValidation.isFile(message.file)) {
42
+ return false;
43
+ }
44
+ return DescriptorValidation.fileContainsMessage(message.file, value);
45
+ },
46
+ hasProtoType(value, typeName) {
47
+ return (value !== null &&
48
+ typeof value === "object" &&
49
+ value.$typeName === typeName);
50
+ },
51
+ isFile(value) {
52
+ if (value === null || typeof value !== "object")
53
+ return false;
54
+ const file = value;
55
+ return (file.kind === "file" &&
56
+ typeof file.name === "string" &&
57
+ file.name.trim().length > 0 &&
58
+ Array.isArray(file.messages) &&
59
+ DescriptorValidation.hasProtoType(file.proto, "google.protobuf.FileDescriptorProto") &&
60
+ typeof file.toString === "function");
61
+ },
62
+ fileContainsMessage(file, target) {
63
+ const visited = new Set();
64
+ const contains = (messages) => {
65
+ if (!Array.isArray(messages))
66
+ return false;
67
+ return messages.some((message) => {
68
+ if (message === target)
69
+ return true;
70
+ if (message === null || typeof message !== "object" || visited.has(message))
71
+ return false;
72
+ visited.add(message);
73
+ return contains(message.nestedMessages);
74
+ });
75
+ };
76
+ return contains(file.messages);
77
+ },
78
+ });
79
+ /**
80
+ * Framework-owned ingestion adapter for generated handler registries.
81
+ */
82
+ export class HandlerRegistryIngestor {
83
+ // prettier-ignore
84
+ /**
85
+ * Converts generated registry records into canonical entity handler metadata.
86
+ *
87
+ * @param registry Generated registry metadata to validate and materialize.
88
+ * @returns Frozen canonical entity-handler metadata.
89
+ */
90
+ ingest(registry) {
91
+ GeneratedRegistry.assert(registry);
92
+ return GeneratedRegistry.materializeAll(registry);
93
+ }
94
+ /**
95
+ * Registers generated registry records in a caller-owned metadata registry.
96
+ *
97
+ * @param generated Generated registry metadata to validate and register.
98
+ * @param registry Metadata registry to update.
99
+ * @returns The updated metadata registry.
100
+ */
101
+ register(generated, registry = new HandlerMetadataRegistry()) {
102
+ GeneratedRegistry.assert(generated);
103
+ const entityHandlers = this.ingest(generated);
104
+ new HandlerMetadataRegistry([...registry.listEntityHandlers(), ...entityHandlers]);
105
+ for (const metadata of entityHandlers) {
106
+ registry.register(metadata);
107
+ }
108
+ return registry;
109
+ }
110
+ }
111
+ /**
112
+ * Error thrown when generated handler registry metadata cannot be ingested.
113
+ */
114
+ export class HandlerRegistryIngestionError extends Error {
115
+ // prettier-ignore
116
+ /**
117
+ * Stable code for callers/tests that need structured failure handling.
118
+ */
119
+ code;
120
+ /**
121
+ * Creates an ingestion error.
122
+ *
123
+ * @param code Stable code that identifies the failed validation.
124
+ * @param message Human-readable failure description.
125
+ */
126
+ constructor(code, message) {
127
+ super(message);
128
+ this.name = "HandlerRegistryIngestionError";
129
+ this.code = code;
130
+ Object.setPrototypeOf(this, new.target.prototype);
131
+ }
132
+ }
133
+ const GeneratedRegistry = Object.freeze({
134
+ assert(registry) {
135
+ if (registry === null || typeof registry !== "object") {
136
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_REGISTRY_VERSION", "Generated handler registry must be an object.");
137
+ }
138
+ const receivers = registry.receivers;
139
+ if (!Array.isArray(receivers)) {
140
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_REGISTRY_VERSION", "Generated handler registry must declare an unversioned receivers array; " +
141
+ "regenerate generated handler metadata.");
142
+ }
143
+ receivers.forEach((receiver) => {
144
+ GeneratedRegistry.validateReceiver(receiver);
145
+ });
146
+ },
147
+ validateReceiver(receiver) {
148
+ if (receiver === null || typeof receiver !== "object") {
149
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", "Generated receiver must be an object.");
150
+ }
151
+ const value = receiver;
152
+ if (value.receiverKind !== "entity" && value.receiverKind !== "standalone") {
153
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", "Generated receiver must declare a supported receiver kind.");
154
+ }
155
+ if (typeof value.receiverType !== "function" || value.receiverType.prototype === undefined) {
156
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", "Generated receiver must declare a constructor.");
157
+ }
158
+ if (!Array.isArray(value.handlers)) {
159
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", "Generated receiver must declare a handlers array.");
160
+ }
161
+ if (value.receiverKind === "entity" &&
162
+ (value.stateSchema === undefined || value.stateSchema === null)) {
163
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", "Generated Entity receiver must declare a state schema.");
164
+ }
165
+ value.handlers.forEach((handler) => {
166
+ GeneratedRegistry.validateHandler(handler);
167
+ });
168
+ },
169
+ materializeAll(registry) {
170
+ registry.receivers.forEach((receiver) => {
171
+ if (receiver.receiverKind === "standalone")
172
+ GeneratedRegistry.validateStandalone(receiver);
173
+ });
174
+ return Object.freeze(registry.receivers
175
+ .filter((receiver) => receiver.receiverKind === "entity")
176
+ .map((receiver) => GeneratedRegistry.materialize(receiver)));
177
+ },
178
+ materialize(entity) {
179
+ GeneratedRegistry.validateSchema(entity.stateSchema, "entity state schema");
180
+ entity.handlers.forEach((handler) => {
181
+ GeneratedRegistry.validateHandler(handler);
182
+ });
183
+ GeneratedRegistry.validateCommandHandlers(entity);
184
+ return HandlerMetadataValues.defineArity(entity.receiverType, entity.stateSchema, (builder) => entity.handlers.map((handler) => GeneratedRegistry.build(builder, handler)), entity.handlers.map((handler) => ({
185
+ kind: handler.kind,
186
+ methodName: handler.methodName,
187
+ outcomes: Object.freeze({
188
+ returned: Object.freeze([...handler.outcomes.returned]),
189
+ thrown: Object.freeze([...handler.outcomes.thrown]),
190
+ }),
191
+ parameterCount: handler.parameterCount,
192
+ origin: handler.input.origin,
193
+ ...(handler.input.where === undefined
194
+ ? {}
195
+ : { where: Object.freeze({ ...handler.input.where }) }),
196
+ })));
197
+ },
198
+ validateCommandHandlers(entity) {
199
+ if (entity.handlers.some((handler) => handler.kind === "command-substitution" || handler.kind === "command-reaction") &&
200
+ !(entity.receiverType.prototype instanceof ProcessManager)) {
201
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_HANDLER_KIND", "Generated @Command handlers are supported only by Process Manager entities.");
202
+ }
203
+ },
204
+ validateStandalone(receiver) {
205
+ const role = GeneratedRegistry.standaloneRole(receiver.receiverType.prototype);
206
+ if (role === undefined) {
207
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_HANDLER_KIND", "Standalone receiver must extend a supported nominal handler base class.");
208
+ }
209
+ for (const handler of receiver.handlers) {
210
+ GeneratedRegistry.validateHandler(handler);
211
+ GeneratedRegistry.validateStandaloneRole(handler, role);
212
+ }
213
+ },
214
+ standaloneRole(prototype) {
215
+ return prototype instanceof AbstractAssignee
216
+ ? "assignee"
217
+ : prototype instanceof AbstractCommander
218
+ ? "commander"
219
+ : prototype instanceof AbstractEventReactor
220
+ ? "reactor"
221
+ : prototype instanceof AbstractEventSubscriber
222
+ ? "subscriber"
223
+ : undefined;
224
+ },
225
+ validateStandaloneRole(handler, role) {
226
+ const valid = (role === "assignee" && handler.kind === "command-assignment") ||
227
+ (role === "commander" &&
228
+ (handler.kind === "command-substitution" || handler.kind === "command-reaction")) ||
229
+ (role === "reactor" && handler.kind === "event-reaction") ||
230
+ (role === "subscriber" &&
231
+ (handler.kind === "event-subscription" || handler.kind === "state-subscription"));
232
+ if (!valid) {
233
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_HANDLER_KIND", `Generated handler "${handler.methodName}" is not legal for standalone ${role}.`);
234
+ }
235
+ GeneratedRegistry.validateStandaloneOutput(handler, role);
236
+ GeneratedRegistry.validateStandaloneOrigin(handler, role);
237
+ },
238
+ validateStandaloneOutput(handler, role) {
239
+ if (role !== "assignee" && role !== "reactor")
240
+ return;
241
+ const invalid = handler.outcomes.returned.some((schema) => !GeneratedRegistry.isLegacyEventSchema(schema) || isEntitySchema(schema));
242
+ if (invalid) {
243
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Standalone ${role} "${handler.methodName}" must produce Events.`);
244
+ }
245
+ },
246
+ validateStandaloneOrigin(handler, role) {
247
+ if (role === "subscriber" &&
248
+ handler.input.origin === "external" &&
249
+ handler.kind === "state-subscription") {
250
+ throw new HandlerRegistryIngestionError("INVALID_SIGNAL_ORIGIN", `Standalone state subscriber "${handler.methodName}" cannot accept External state.`);
251
+ }
252
+ },
253
+ build(builder, handler) {
254
+ const methodName = handler.methodName;
255
+ switch (handler.kind) {
256
+ case "command-assignment":
257
+ return builder.assign(handler.input.schema, methodName);
258
+ case "command-substitution":
259
+ return builder.substitute(handler.input.schema, methodName);
260
+ case "command-reaction":
261
+ return builder.command(handler.input.schema, methodName);
262
+ case "event-subscription":
263
+ return builder.subscribe(handler.input.schema, methodName);
264
+ case "state-subscription":
265
+ return builder.subscribe(handler.input.schema, methodName);
266
+ case "event-reaction":
267
+ return builder.react(handler.input.schema, methodName);
268
+ default:
269
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_HANDLER_KIND", `Generated handler kind "${String(handler.kind)}" is not supported.`);
270
+ }
271
+ },
272
+ validateHandler(handler) {
273
+ GeneratedRegistry.validateRecordShape(handler);
274
+ if (!GeneratedRegistry.isKind(handler.kind)) {
275
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_HANDLER_KIND", `Generated handler kind "${String(handler.kind)}" is not supported.`);
276
+ }
277
+ GeneratedRegistry.validateOrigin(handler);
278
+ GeneratedRegistry.validateParameterCount(handler);
279
+ GeneratedRegistry.validateOutcomeSchemas(handler);
280
+ GeneratedRegistry.validateCommandRoles(handler);
281
+ GeneratedRegistry.validateWhere(handler);
282
+ GeneratedRegistry.validateSubscriptionShape(handler);
283
+ },
284
+ validateRecordShape(handler) {
285
+ const untrustedHandler = handler;
286
+ if (untrustedHandler === null || typeof untrustedHandler !== "object") {
287
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", "Generated handler must be an object.");
288
+ }
289
+ const value = untrustedHandler;
290
+ if (typeof value.kind !== "string" ||
291
+ typeof value.methodName !== "string" ||
292
+ value.input === null ||
293
+ typeof value.input !== "object" ||
294
+ value.outcomes === null ||
295
+ typeof value.outcomes !== "object" ||
296
+ !Array.isArray(value.outcomes.returned) ||
297
+ !Array.isArray(value.outcomes.thrown) ||
298
+ typeof value.parameterCount !== "number") {
299
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated handler "${typeof value.methodName === "string" ? value.methodName : "unknown"}" ` +
300
+ "has an invalid record shape.");
301
+ }
302
+ },
303
+ validateOrigin(handler) {
304
+ const origin = handler.input.origin;
305
+ if (origin !== "domestic" && origin !== "external") {
306
+ throw new HandlerRegistryIngestionError("INVALID_SIGNAL_ORIGIN", `Generated handler "${handler.methodName}" declares an invalid signal origin.`);
307
+ }
308
+ if (handler.input.origin === "external" &&
309
+ (handler.kind === "command-assignment" || handler.kind === "command-substitution")) {
310
+ throw new HandlerRegistryIngestionError("EXTERNAL_COMMAND_RECEIVER", `Generated command receiver "${handler.methodName}" cannot accept external commands.`);
311
+ }
312
+ },
313
+ validateParameterCount(handler) {
314
+ const parameterCount = handler.parameterCount;
315
+ if (parameterCount !== 1 && parameterCount !== 2) {
316
+ throw new HandlerRegistryIngestionError("INVALID_PARAMETER_COUNT", `Generated handler "${handler.methodName}" declares unsupported parameter count ` +
317
+ `${String(parameterCount)}.`);
318
+ }
319
+ },
320
+ validateOutcomeSchemas(handler) {
321
+ GeneratedRegistry.validateSchema(handler.input.schema, `signal schema for generated handler "${handler.methodName}"`);
322
+ handler.outcomes.returned.forEach((schema, index) => {
323
+ GeneratedRegistry.validateSchema(schema, `emitted schema ${String(index)} for generated handler "${handler.methodName}"`);
324
+ });
325
+ handler.outcomes.thrown.forEach((schema, index) => {
326
+ GeneratedRegistry.validateSchema(schema, `thrown schema ${String(index)} for generated handler "${handler.methodName}"`);
327
+ if (!RejectionSources.matches(schema.file.proto.name)) {
328
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated handler "${handler.methodName}" must declare rejection schemas in outcomes.thrown.`);
329
+ }
330
+ });
331
+ if (handler.outcomes.thrown.length > 0 &&
332
+ handler.kind !== "command-assignment" &&
333
+ handler.kind !== "command-substitution") {
334
+ throw new HandlerRegistryIngestionError("UNSUPPORTED_HANDLER_KIND", `Generated handler "${handler.methodName}" may declare thrown rejections only for command-accepting receptors.`);
335
+ }
336
+ },
337
+ validateSubscriptionShape(handler) {
338
+ if (handler.kind === "event-subscription" || handler.kind === "state-subscription") {
339
+ GeneratedRegistry.validateSubscription(handler);
340
+ if (handler.kind === "state-subscription" && !isEntitySchema(handler.input.schema)) {
341
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated state subscription handler "${handler.methodName}" must declare an entity state schema.`);
342
+ }
343
+ if (handler.kind === "event-subscription" && isEntitySchema(handler.input.schema)) {
344
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated event subscription handler "${handler.methodName}" must not declare an entity state schema.`);
345
+ }
346
+ return;
347
+ }
348
+ if (handler.kind === "command-assignment" ||
349
+ handler.kind === "command-substitution" ||
350
+ handler.kind === "command-reaction") {
351
+ GeneratedRegistry.validateEmits(handler);
352
+ }
353
+ },
354
+ validateSchema(schema, label) {
355
+ if (DescriptorValidation.isMessage(schema))
356
+ return;
357
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated handler registry ${label} must be a generated Protobuf message descriptor.`);
358
+ },
359
+ validateEmits(handler) {
360
+ if (handler.outcomes.returned.length > 0) {
361
+ return;
362
+ }
363
+ throw new HandlerRegistryIngestionError("MISSING_EMITTED_SCHEMAS", `Generated handler "${handler.methodName}" must declare at least one emitted schema.`);
364
+ },
365
+ validateCommandRoles(handler) {
366
+ if ((handler.kind === "command-assignment" || handler.kind === "command-substitution") &&
367
+ !GeneratedRegistry.isCommandSchema(handler.input.schema)) {
368
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated command receiver "${handler.methodName}" must declare a Command input schema.`);
369
+ }
370
+ if ((handler.kind === "command-reaction" || handler.kind === "event-reaction") &&
371
+ !GeneratedRegistry.isLegacyEventSchema(handler.input.schema)) {
372
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated Event reactor "${handler.methodName}" must declare an Event or rejection input schema.`);
373
+ }
374
+ if (handler.kind !== "command-substitution" && handler.kind !== "command-reaction")
375
+ return;
376
+ if (handler.outcomes.returned.every((schema) => GeneratedRegistry.isCommandSchema(schema)))
377
+ return;
378
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated @Command handler "${handler.methodName}" must declare Command outputs.`);
379
+ },
380
+ validateSubscription(handler) {
381
+ if (handler.outcomes.returned.length === 0) {
382
+ return;
383
+ }
384
+ throw new HandlerRegistryIngestionError("UNEXPECTED_EMITTED_SCHEMAS", `Generated event subscription handler "${handler.methodName}" must not declare emitted schemas.`);
385
+ },
386
+ validateWhere(handler) {
387
+ const where = handler.input.where;
388
+ if (where === undefined)
389
+ return;
390
+ if (typeof where !== "object" ||
391
+ where === null ||
392
+ Array.isArray(where) ||
393
+ (Reflect.getPrototypeOf(where) !== Object.prototype && Reflect.getPrototypeOf(where) !== null)) {
394
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated handler "${handler.methodName}" declares an invalid Event field filter.`);
395
+ }
396
+ const keys = Object.keys(where);
397
+ const filter = where;
398
+ if (keys.length !== 2 ||
399
+ !keys.includes("eventField") ||
400
+ !keys.includes("equals") ||
401
+ typeof filter.eventField !== "string" ||
402
+ filter.eventField.trim().length === 0 ||
403
+ typeof filter.equals !== "string" ||
404
+ !GeneratedRegistry.isLegacyEventSchema(handler.input.schema) ||
405
+ (handler.kind !== "event-subscription" &&
406
+ handler.kind !== "event-reaction" &&
407
+ handler.kind !== "command-reaction")) {
408
+ throw new HandlerRegistryIngestionError("INVALID_SCHEMA", `Generated handler "${handler.methodName}" declares an invalid Event field filter.`);
409
+ }
410
+ },
411
+ isLegacyEventSchema(schema) {
412
+ const fileName = schema.file.name.split(/[\\/]/u).at(-1);
413
+ return (fileName === "events" ||
414
+ fileName === "events.proto" ||
415
+ fileName?.endsWith("_events") === true ||
416
+ fileName?.endsWith("_events.proto") === true ||
417
+ fileName === "rejections" ||
418
+ fileName?.endsWith("_rejections") === true ||
419
+ RejectionSources.matches(schema.file.name) ||
420
+ schema.typeName === "spine.core.Event");
421
+ },
422
+ isCommandSchema(schema) {
423
+ const fileName = schema.file.name.split(/[\\/]/u).at(-1);
424
+ return (schema.typeName !== "spine.core.Command" &&
425
+ (fileName === "commands" ||
426
+ fileName === "commands.proto" ||
427
+ fileName?.endsWith("_commands") === true ||
428
+ fileName?.endsWith("_commands.proto") === true));
429
+ },
430
+ isKind(kind) {
431
+ return (kind === "command-assignment" ||
432
+ kind === "command-substitution" ||
433
+ kind === "command-reaction" ||
434
+ kind === "event-subscription" ||
435
+ kind === "state-subscription" ||
436
+ kind === "event-reaction");
437
+ },
438
+ });
439
+ //# sourceMappingURL=generated-handler-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-handler-registry.js","sourceRoot":"","sources":["../../src/handler/generated-handler-registry.ts"],"names":[],"mappings":"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"}