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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +569 -0
  3. package/REFERENCE.md +488 -0
  4. package/dist/bus/command-bus.d.ts +61 -0
  5. package/dist/bus/command-bus.d.ts.map +1 -0
  6. package/dist/bus/command-bus.js +201 -0
  7. package/dist/bus/command-bus.js.map +1 -0
  8. package/dist/bus/command-dispatcher-registry.d.ts +33 -0
  9. package/dist/bus/command-dispatcher-registry.d.ts.map +1 -0
  10. package/dist/bus/command-dispatcher-registry.js +75 -0
  11. package/dist/bus/command-dispatcher-registry.js.map +1 -0
  12. package/dist/bus/command-dispatcher.d.ts +25 -0
  13. package/dist/bus/command-dispatcher.d.ts.map +1 -0
  14. package/dist/bus/command-dispatcher.js +15 -0
  15. package/dist/bus/command-dispatcher.js.map +1 -0
  16. package/dist/bus/command-errors.d.ts +23 -0
  17. package/dist/bus/command-errors.d.ts.map +1 -0
  18. package/dist/bus/command-errors.js +52 -0
  19. package/dist/bus/command-errors.js.map +1 -0
  20. package/dist/bus/event-bus.d.ts +113 -0
  21. package/dist/bus/event-bus.d.ts.map +1 -0
  22. package/dist/bus/event-bus.js +518 -0
  23. package/dist/bus/event-bus.js.map +1 -0
  24. package/dist/bus/event-dispatcher-origin-schemas.d.ts +17 -0
  25. package/dist/bus/event-dispatcher-origin-schemas.d.ts.map +1 -0
  26. package/dist/bus/event-dispatcher-origin-schemas.js +32 -0
  27. package/dist/bus/event-dispatcher-origin-schemas.js.map +1 -0
  28. package/dist/bus/event-dispatcher-registry.d.ts +48 -0
  29. package/dist/bus/event-dispatcher-registry.d.ts.map +1 -0
  30. package/dist/bus/event-dispatcher-registry.js +176 -0
  31. package/dist/bus/event-dispatcher-registry.js.map +1 -0
  32. package/dist/bus/event-dispatcher.d.ts +48 -0
  33. package/dist/bus/event-dispatcher.d.ts.map +1 -0
  34. package/dist/bus/event-dispatcher.js +15 -0
  35. package/dist/bus/event-dispatcher.js.map +1 -0
  36. package/dist/context/bounded-context.d.ts +606 -0
  37. package/dist/context/bounded-context.d.ts.map +1 -0
  38. package/dist/context/bounded-context.js +1780 -0
  39. package/dist/context/bounded-context.js.map +1 -0
  40. package/dist/context/entity-inbox.d.ts +63 -0
  41. package/dist/context/entity-inbox.d.ts.map +1 -0
  42. package/dist/context/entity-inbox.js +380 -0
  43. package/dist/context/entity-inbox.js.map +1 -0
  44. package/dist/context/local-inbox-handoff.d.ts +244 -0
  45. package/dist/context/local-inbox-handoff.d.ts.map +1 -0
  46. package/dist/context/local-inbox-handoff.js +334 -0
  47. package/dist/context/local-inbox-handoff.js.map +1 -0
  48. package/dist/context/projection-handoff.d.ts +46 -0
  49. package/dist/context/projection-handoff.d.ts.map +1 -0
  50. package/dist/context/projection-handoff.js +172 -0
  51. package/dist/context/projection-handoff.js.map +1 -0
  52. package/dist/context/tenant-index.d.ts +41 -0
  53. package/dist/context/tenant-index.d.ts.map +1 -0
  54. package/dist/context/tenant-index.js +92 -0
  55. package/dist/context/tenant-index.js.map +1 -0
  56. package/dist/delivery/conditional-pickup.d.ts +25 -0
  57. package/dist/delivery/conditional-pickup.d.ts.map +1 -0
  58. package/dist/delivery/conditional-pickup.js +26 -0
  59. package/dist/delivery/conditional-pickup.js.map +1 -0
  60. package/dist/delivery/delivery-builder.d.ts +216 -0
  61. package/dist/delivery/delivery-builder.d.ts.map +1 -0
  62. package/dist/delivery/delivery-builder.js +323 -0
  63. package/dist/delivery/delivery-builder.js.map +1 -0
  64. package/dist/delivery/delivery-lease.d.ts +15 -0
  65. package/dist/delivery/delivery-lease.d.ts.map +1 -0
  66. package/dist/delivery/delivery-lease.js +44 -0
  67. package/dist/delivery/delivery-lease.js.map +1 -0
  68. package/dist/delivery/delivery-loop.d.ts +113 -0
  69. package/dist/delivery/delivery-loop.d.ts.map +1 -0
  70. package/dist/delivery/delivery-loop.js +119 -0
  71. package/dist/delivery/delivery-loop.js.map +1 -0
  72. package/dist/delivery/delivery-monitor.d.ts +165 -0
  73. package/dist/delivery/delivery-monitor.d.ts.map +1 -0
  74. package/dist/delivery/delivery-monitor.js +168 -0
  75. package/dist/delivery/delivery-monitor.js.map +1 -0
  76. package/dist/delivery/delivery-ports.d.ts +141 -0
  77. package/dist/delivery/delivery-ports.d.ts.map +1 -0
  78. package/dist/delivery/delivery-ports.js +15 -0
  79. package/dist/delivery/delivery-ports.js.map +1 -0
  80. package/dist/delivery/delivery-run-control.d.ts +50 -0
  81. package/dist/delivery/delivery-run-control.d.ts.map +1 -0
  82. package/dist/delivery/delivery-run-control.js +66 -0
  83. package/dist/delivery/delivery-run-control.js.map +1 -0
  84. package/dist/delivery/delivery-run-coordinator.d.ts +218 -0
  85. package/dist/delivery/delivery-run-coordinator.d.ts.map +1 -0
  86. package/dist/delivery/delivery-run-coordinator.js +609 -0
  87. package/dist/delivery/delivery-run-coordinator.js.map +1 -0
  88. package/dist/delivery/delivery-storage-error.d.ts +13 -0
  89. package/dist/delivery/delivery-storage-error.d.ts.map +1 -0
  90. package/dist/delivery/delivery-storage-error.js +30 -0
  91. package/dist/delivery/delivery-storage-error.js.map +1 -0
  92. package/dist/delivery/delivery-supervisor.d.ts +175 -0
  93. package/dist/delivery/delivery-supervisor.d.ts.map +1 -0
  94. package/dist/delivery/delivery-supervisor.js +469 -0
  95. package/dist/delivery/delivery-supervisor.js.map +1 -0
  96. package/dist/delivery/delivery-worker.d.ts +180 -0
  97. package/dist/delivery/delivery-worker.d.ts.map +1 -0
  98. package/dist/delivery/delivery-worker.js +232 -0
  99. package/dist/delivery/delivery-worker.js.map +1 -0
  100. package/dist/delivery/delivery.d.ts +238 -0
  101. package/dist/delivery/delivery.d.ts.map +1 -0
  102. package/dist/delivery/delivery.js +400 -0
  103. package/dist/delivery/delivery.js.map +1 -0
  104. package/dist/delivery/inbox-records.d.ts +19 -0
  105. package/dist/delivery/inbox-records.d.ts.map +1 -0
  106. package/dist/delivery/inbox-records.js +291 -0
  107. package/dist/delivery/inbox-records.js.map +1 -0
  108. package/dist/delivery/inbox-storage.d.ts +81 -0
  109. package/dist/delivery/inbox-storage.d.ts.map +1 -0
  110. package/dist/delivery/inbox-storage.js +353 -0
  111. package/dist/delivery/inbox-storage.js.map +1 -0
  112. package/dist/delivery/inbox.d.ts +263 -0
  113. package/dist/delivery/inbox.d.ts.map +1 -0
  114. package/dist/delivery/inbox.js +172 -0
  115. package/dist/delivery/inbox.js.map +1 -0
  116. package/dist/delivery/parked-delivery-obligations.d.ts +182 -0
  117. package/dist/delivery/parked-delivery-obligations.d.ts.map +1 -0
  118. package/dist/delivery/parked-delivery-obligations.js +390 -0
  119. package/dist/delivery/parked-delivery-obligations.js.map +1 -0
  120. package/dist/delivery/shard-index.d.ts +41 -0
  121. package/dist/delivery/shard-index.d.ts.map +1 -0
  122. package/dist/delivery/shard-index.js +67 -0
  123. package/dist/delivery/shard-index.js.map +1 -0
  124. package/dist/delivery/sharded-work-registry.d.ts +114 -0
  125. package/dist/delivery/sharded-work-registry.d.ts.map +1 -0
  126. package/dist/delivery/sharded-work-registry.js +360 -0
  127. package/dist/delivery/sharded-work-registry.js.map +1 -0
  128. package/dist/entity/entity-metadata.d.ts +173 -0
  129. package/dist/entity/entity-metadata.d.ts.map +1 -0
  130. package/dist/entity/entity-metadata.js +187 -0
  131. package/dist/entity/entity-metadata.js.map +1 -0
  132. package/dist/entity/entity-storage-descriptor.d.ts +64 -0
  133. package/dist/entity/entity-storage-descriptor.d.ts.map +1 -0
  134. package/dist/entity/entity-storage-descriptor.js +227 -0
  135. package/dist/entity/entity-storage-descriptor.js.map +1 -0
  136. package/dist/entity/entity-transaction.d.ts +372 -0
  137. package/dist/entity/entity-transaction.d.ts.map +1 -0
  138. package/dist/entity/entity-transaction.js +413 -0
  139. package/dist/entity/entity-transaction.js.map +1 -0
  140. package/dist/entity/entity-transition-validation.d.ts +47 -0
  141. package/dist/entity/entity-transition-validation.d.ts.map +1 -0
  142. package/dist/entity/entity-transition-validation.js +327 -0
  143. package/dist/entity/entity-transition-validation.js.map +1 -0
  144. package/dist/entity/entity.d.ts +499 -0
  145. package/dist/entity/entity.d.ts.map +1 -0
  146. package/dist/entity/entity.js +829 -0
  147. package/dist/entity/entity.js.map +1 -0
  148. package/dist/entity/implicit-required-id.d.ts +15 -0
  149. package/dist/entity/implicit-required-id.d.ts.map +1 -0
  150. package/dist/entity/implicit-required-id.js +123 -0
  151. package/dist/entity/implicit-required-id.js.map +1 -0
  152. package/dist/entity/spec-scanner.d.ts +14 -0
  153. package/dist/entity/spec-scanner.d.ts.map +1 -0
  154. package/dist/entity/spec-scanner.js +37 -0
  155. package/dist/entity/spec-scanner.js.map +1 -0
  156. package/dist/handler/build-time-handler-analyzer.d.ts +150 -0
  157. package/dist/handler/build-time-handler-analyzer.d.ts.map +1 -0
  158. package/dist/handler/build-time-handler-analyzer.js +1101 -0
  159. package/dist/handler/build-time-handler-analyzer.js.map +1 -0
  160. package/dist/handler/command-registration-readiness.d.ts +99 -0
  161. package/dist/handler/command-registration-readiness.d.ts.map +1 -0
  162. package/dist/handler/command-registration-readiness.js +118 -0
  163. package/dist/handler/command-registration-readiness.js.map +1 -0
  164. package/dist/handler/event-handler-filter.d.ts +43 -0
  165. package/dist/handler/event-handler-filter.d.ts.map +1 -0
  166. package/dist/handler/event-handler-filter.js +128 -0
  167. package/dist/handler/event-handler-filter.js.map +1 -0
  168. package/dist/handler/event-registration-readiness.d.ts +196 -0
  169. package/dist/handler/event-registration-readiness.d.ts.map +1 -0
  170. package/dist/handler/event-registration-readiness.js +187 -0
  171. package/dist/handler/event-registration-readiness.js.map +1 -0
  172. package/dist/handler/external.d.ts +10 -0
  173. package/dist/handler/external.d.ts.map +1 -0
  174. package/dist/handler/external.js +15 -0
  175. package/dist/handler/external.js.map +1 -0
  176. package/dist/handler/generated-handler-registry.d.ts +154 -0
  177. package/dist/handler/generated-handler-registry.d.ts.map +1 -0
  178. package/dist/handler/generated-handler-registry.js +223 -0
  179. package/dist/handler/generated-handler-registry.js.map +1 -0
  180. package/dist/handler/generated-registry-discovery.d.ts +94 -0
  181. package/dist/handler/generated-registry-discovery.d.ts.map +1 -0
  182. package/dist/handler/generated-registry-discovery.js +228 -0
  183. package/dist/handler/generated-registry-discovery.js.map +1 -0
  184. package/dist/handler/generated-registry-writer.d.ts +58 -0
  185. package/dist/handler/generated-registry-writer.d.ts.map +1 -0
  186. package/dist/handler/generated-registry-writer.js +458 -0
  187. package/dist/handler/generated-registry-writer.js.map +1 -0
  188. package/dist/handler/handler-codegen.d.ts +48 -0
  189. package/dist/handler/handler-codegen.d.ts.map +1 -0
  190. package/dist/handler/handler-codegen.js +214 -0
  191. package/dist/handler/handler-codegen.js.map +1 -0
  192. package/dist/handler/handler-decorators.d.ts +134 -0
  193. package/dist/handler/handler-decorators.d.ts.map +1 -0
  194. package/dist/handler/handler-decorators.js +239 -0
  195. package/dist/handler/handler-decorators.js.map +1 -0
  196. package/dist/handler/handler-metadata.d.ts +510 -0
  197. package/dist/handler/handler-metadata.d.ts.map +1 -0
  198. package/dist/handler/handler-metadata.js +391 -0
  199. package/dist/handler/handler-metadata.js.map +1 -0
  200. package/dist/handler/registration-readiness-metadata.d.ts +68 -0
  201. package/dist/handler/registration-readiness-metadata.d.ts.map +1 -0
  202. package/dist/handler/registration-readiness-metadata.js +170 -0
  203. package/dist/handler/registration-readiness-metadata.js.map +1 -0
  204. package/dist/handler/rejection-source.d.ts +11 -0
  205. package/dist/handler/rejection-source.d.ts.map +1 -0
  206. package/dist/handler/rejection-source.js +25 -0
  207. package/dist/handler/rejection-source.js.map +1 -0
  208. package/dist/index.d.ts +46 -0
  209. package/dist/index.d.ts.map +1 -0
  210. package/dist/index.js +54 -0
  211. package/dist/index.js.map +1 -0
  212. package/dist/integration/external-messages.d.ts +49 -0
  213. package/dist/integration/external-messages.d.ts.map +1 -0
  214. package/dist/integration/external-messages.js +112 -0
  215. package/dist/integration/external-messages.js.map +1 -0
  216. package/dist/integration/integration-broker.d.ts +74 -0
  217. package/dist/integration/integration-broker.d.ts.map +1 -0
  218. package/dist/integration/integration-broker.js +444 -0
  219. package/dist/integration/integration-broker.js.map +1 -0
  220. package/dist/integration/third-party-context.d.ts +56 -0
  221. package/dist/integration/third-party-context.d.ts.map +1 -0
  222. package/dist/integration/third-party-context.js +130 -0
  223. package/dist/integration/third-party-context.js.map +1 -0
  224. package/dist/repository/command-errors.d.ts +25 -0
  225. package/dist/repository/command-errors.d.ts.map +1 -0
  226. package/dist/repository/command-errors.js +43 -0
  227. package/dist/repository/command-errors.js.map +1 -0
  228. package/dist/repository/command-routing.d.ts +72 -0
  229. package/dist/repository/command-routing.d.ts.map +1 -0
  230. package/dist/repository/command-routing.js +98 -0
  231. package/dist/repository/command-routing.js.map +1 -0
  232. package/dist/repository/commit-fence.d.ts +22 -0
  233. package/dist/repository/commit-fence.d.ts.map +1 -0
  234. package/dist/repository/commit-fence.js +37 -0
  235. package/dist/repository/commit-fence.js.map +1 -0
  236. package/dist/repository/event-routing.d.ts +71 -0
  237. package/dist/repository/event-routing.d.ts.map +1 -0
  238. package/dist/repository/event-routing.js +96 -0
  239. package/dist/repository/event-routing.js.map +1 -0
  240. package/dist/repository/primitive-id.d.ts +86 -0
  241. package/dist/repository/primitive-id.d.ts.map +1 -0
  242. package/dist/repository/primitive-id.js +110 -0
  243. package/dist/repository/primitive-id.js.map +1 -0
  244. package/dist/repository/repository.d.ts +670 -0
  245. package/dist/repository/repository.d.ts.map +1 -0
  246. package/dist/repository/repository.js +3298 -0
  247. package/dist/repository/repository.js.map +1 -0
  248. package/dist/repository/routing-declarations.d.ts +75 -0
  249. package/dist/repository/routing-declarations.d.ts.map +1 -0
  250. package/dist/repository/routing-declarations.js +101 -0
  251. package/dist/repository/routing-declarations.js.map +1 -0
  252. package/dist/repository/state-update-routing.d.ts +66 -0
  253. package/dist/repository/state-update-routing.d.ts.map +1 -0
  254. package/dist/repository/state-update-routing.js +91 -0
  255. package/dist/repository/state-update-routing.js.map +1 -0
  256. package/dist/runtime/runtime.d.ts +156 -0
  257. package/dist/runtime/runtime.d.ts.map +1 -0
  258. package/dist/runtime/runtime.js +215 -0
  259. package/dist/runtime/runtime.js.map +1 -0
  260. package/dist/runtime/signal-intake.d.ts +84 -0
  261. package/dist/runtime/signal-intake.d.ts.map +1 -0
  262. package/dist/runtime/signal-intake.js +94 -0
  263. package/dist/runtime/signal-intake.js.map +1 -0
  264. package/dist/runtime/signal-metadata.d.ts +242 -0
  265. package/dist/runtime/signal-metadata.d.ts.map +1 -0
  266. package/dist/runtime/signal-metadata.js +368 -0
  267. package/dist/runtime/signal-metadata.js.map +1 -0
  268. package/dist/server/browser-server.d.ts +49 -0
  269. package/dist/server/browser-server.d.ts.map +1 -0
  270. package/dist/server/browser-server.js +633 -0
  271. package/dist/server/browser-server.js.map +1 -0
  272. package/dist/server/durable-subscription-bindings.d.ts +122 -0
  273. package/dist/server/durable-subscription-bindings.d.ts.map +1 -0
  274. package/dist/server/durable-subscription-bindings.js +524 -0
  275. package/dist/server/durable-subscription-bindings.js.map +1 -0
  276. package/dist/server/environment-attachment.d.ts +356 -0
  277. package/dist/server/environment-attachment.d.ts.map +1 -0
  278. package/dist/server/environment-attachment.js +2061 -0
  279. package/dist/server/environment-attachment.js.map +1 -0
  280. package/dist/server/environment-delivery-records.d.ts +77 -0
  281. package/dist/server/environment-delivery-records.d.ts.map +1 -0
  282. package/dist/server/environment-delivery-records.js +282 -0
  283. package/dist/server/environment-delivery-records.js.map +1 -0
  284. package/dist/server/environment-delivery-worker.d.ts +161 -0
  285. package/dist/server/environment-delivery-worker.d.ts.map +1 -0
  286. package/dist/server/environment-delivery-worker.js +664 -0
  287. package/dist/server/environment-delivery-worker.js.map +1 -0
  288. package/dist/server/environment.d.ts +43 -0
  289. package/dist/server/environment.d.ts.map +1 -0
  290. package/dist/server/environment.js +90 -0
  291. package/dist/server/environment.js.map +1 -0
  292. package/dist/server/managed-child-subscription.d.ts +11 -0
  293. package/dist/server/managed-child-subscription.d.ts.map +1 -0
  294. package/dist/server/managed-child-subscription.js +44 -0
  295. package/dist/server/managed-child-subscription.js.map +1 -0
  296. package/dist/server/managed-server-application.d.ts +324 -0
  297. package/dist/server/managed-server-application.d.ts.map +1 -0
  298. package/dist/server/managed-server-application.js +937 -0
  299. package/dist/server/managed-server-application.js.map +1 -0
  300. package/dist/server/node-coordinator.d.ts +191 -0
  301. package/dist/server/node-coordinator.d.ts.map +1 -0
  302. package/dist/server/node-coordinator.js +552 -0
  303. package/dist/server/node-coordinator.js.map +1 -0
  304. package/dist/server/process-server-coordinator.d.ts +15 -0
  305. package/dist/server/process-server-coordinator.d.ts.map +1 -0
  306. package/dist/server/process-server-coordinator.js +112 -0
  307. package/dist/server/process-server-coordinator.js.map +1 -0
  308. package/dist/server/reserved-spine-rpc-paths.json +8 -0
  309. package/dist/server/retryable-close.d.ts +28 -0
  310. package/dist/server/retryable-close.d.ts.map +1 -0
  311. package/dist/server/retryable-close.js +129 -0
  312. package/dist/server/retryable-close.js.map +1 -0
  313. package/dist/server/server-environment.d.ts +180 -0
  314. package/dist/server/server-environment.d.ts.map +1 -0
  315. package/dist/server/server-environment.js +418 -0
  316. package/dist/server/server-environment.js.map +1 -0
  317. package/dist/server/server-log.d.ts +18 -0
  318. package/dist/server/server-log.d.ts.map +1 -0
  319. package/dist/server/server-log.js +96 -0
  320. package/dist/server/server-log.js.map +1 -0
  321. package/dist/server/server.d.ts +389 -0
  322. package/dist/server/server.d.ts.map +1 -0
  323. package/dist/server/server.js +752 -0
  324. package/dist/server/server.js.map +1 -0
  325. package/dist/services/spine-services.d.ts +88 -0
  326. package/dist/services/spine-services.d.ts.map +1 -0
  327. package/dist/services/spine-services.js +1586 -0
  328. package/dist/services/spine-services.js.map +1 -0
  329. package/dist/stand/stand.d.ts +294 -0
  330. package/dist/stand/stand.d.ts.map +1 -0
  331. package/dist/stand/stand.js +680 -0
  332. package/dist/stand/stand.js.map +1 -0
  333. package/dist/stand/subscription-observer.d.ts +53 -0
  334. package/dist/stand/subscription-observer.d.ts.map +1 -0
  335. package/dist/stand/subscription-observer.js +444 -0
  336. package/dist/stand/subscription-observer.js.map +1 -0
  337. package/dist/stand/subscription-records.d.ts +12 -0
  338. package/dist/stand/subscription-records.d.ts.map +1 -0
  339. package/dist/stand/subscription-records.js +99 -0
  340. package/dist/stand/subscription-records.js.map +1 -0
  341. package/dist/stand/subscription-registry.d.ts +285 -0
  342. package/dist/stand/subscription-registry.d.ts.map +1 -0
  343. package/dist/stand/subscription-registry.js +403 -0
  344. package/dist/stand/subscription-registry.js.map +1 -0
  345. package/dist/stand/subscription-runtime.d.ts +102 -0
  346. package/dist/stand/subscription-runtime.d.ts.map +1 -0
  347. package/dist/stand/subscription-runtime.js +380 -0
  348. package/dist/stand/subscription-runtime.js.map +1 -0
  349. package/dist/testing/index.d.ts +14 -0
  350. package/dist/testing/index.d.ts.map +1 -0
  351. package/dist/testing/index.js +34 -0
  352. package/dist/testing/index.js.map +1 -0
  353. package/dist/tsconfig.tsbuildinfo +1 -0
  354. package/package.json +65 -0
@@ -0,0 +1,670 @@
1
+ import { type Message } from "@bufbuild/protobuf";
2
+ import { type MessageSchema, StringifierRegistry } from "@spine-event-engine/core";
3
+ import { type Command, type Event, type TenantId } from "@spine-event-engine/proto";
4
+ import { type StorageFactory, type StorageMode } from "@spine-event-engine/storage";
5
+ import { type CommandRouting } from "./command-routing.js";
6
+ import { type EventRouting } from "./event-routing.js";
7
+ import { type StateUpdateRouting } from "./state-update-routing.js";
8
+ import type { CommandDispatcher } from "../bus/command-dispatcher.js";
9
+ import type { EventDispatcher } from "../bus/event-dispatcher.js";
10
+ import { Delivery } from "../delivery/delivery.js";
11
+ import { type InboxMessage, type InboxMessageInput } from "../delivery/inbox.js";
12
+ import { Aggregate, type Entity, ProcessManager, Projection, type EntityFamily } from "../entity/entity.js";
13
+ import { type DescriptorFieldMetadata, type DescriptorMessageSchema, type EntityMetadata } from "../entity/entity-metadata.js";
14
+ import { type EventHandlerFilterPlan } from "../handler/event-handler-filter.js";
15
+ import { SignalMetadata } from "../runtime/signal-metadata.js";
16
+ import { type CommandAssignmentHandlerMetadata, type CommandReactionHandlerMetadata, type EntityHandlersMetadata, type EventReactionHandlerMetadata, type StateSubscriptionHandlerMetadata, type RegisteredHandlerMetadata, type WhereOptions } from "../handler/handler-metadata.js";
17
+ import { type Stand } from "../stand/stand.js";
18
+ type RepositoryEntityInstance<Schema extends DescriptorMessageSchema = DescriptorMessageSchema> = Aggregate<unknown, Schema, unknown> | Projection<unknown, Schema, unknown> | ProcessManager<unknown, Schema, unknown>;
19
+ /**
20
+ * Generated Protobuf-ES state schema carried by a repository entity constructor.
21
+ */
22
+ export type RepositoryStateSchema<EntityType extends RepositoryEntityType> = EntityType["prototype"] extends Aggregate<infer Id, infer Schema, infer Version> ? [Id, Version] extends [unknown, unknown] ? Schema : never : EntityType["prototype"] extends Projection<infer Id, infer Schema, infer Version> ? [Id, Version] extends [unknown, unknown] ? Schema : never : EntityType["prototype"] extends ProcessManager<infer Id, infer Schema, infer Version> ? [Id, Version] extends [unknown, unknown] ? Schema : never : never;
23
+ type RepositoryEntityId<EntityType extends RepositoryEntityType> = EntityType["prototype"] extends Aggregate<infer Id, DescriptorMessageSchema, unknown> ? Id : EntityType["prototype"] extends Projection<infer Id, DescriptorMessageSchema, unknown> ? Id : EntityType["prototype"] extends ProcessManager<infer Id, DescriptorMessageSchema, unknown> ? Id : never;
24
+ type RepositoryHandlers<EntityType extends RepositoryEntityType> = EntityType["prototype"] extends infer Instance extends object ? EntityHandlersMetadata<Instance, RepositoryStateSchema<EntityType>> : never;
25
+ type RepositoryHandlersOptionFor<EntityType extends RepositoryEntityType> = EntityType["prototype"] extends Aggregate<unknown, DescriptorMessageSchema, infer Version> ? [Version] extends [bigint] ? RepositoryHandlers<EntityType> | readonly RepositoryHandlers<EntityType>[] : never : EntityType["prototype"] extends Projection<unknown, DescriptorMessageSchema, infer Version> ? [Version] extends [number] ? RepositoryHandlers<EntityType> | readonly RepositoryHandlers<EntityType>[] : never : EntityType["prototype"] extends ProcessManager<unknown, DescriptorMessageSchema, infer Version> ? [Version] extends [number] ? RepositoryHandlers<EntityType> | readonly RepositoryHandlers<EntityType>[] : never : never;
26
+ type StateRoutingOption<EntityType extends RepositoryEntityType> = EntityType["prototype"] extends Projection<unknown, DescriptorMessageSchema, unknown> ? StateUpdateRouting<RepositoryEntityId<EntityType>> : never;
27
+ type IsUnion<Type, Union = Type> = Type extends unknown ? [Union] extends [Type] ? false : true : false;
28
+ /**
29
+ * Single concrete entity constructor accepted by repository identity metadata.
30
+ *
31
+ * Concrete aggregate, projection, and process-manager classes satisfy this type naturally. Broad
32
+ * constructor aliases, constructor unions, broad state schemas, and state-schema unions are
33
+ * rejected so repository identities cannot erase which state schema the entity owns.
34
+ */
35
+ export type ConcreteRepositoryEntityType<EntityType extends RepositoryEntityType> = IsUnion<EntityType> extends true ? never : RepositoryEntityType extends EntityType ? never : [ConstructorParameters<EntityType>] extends [never[]] ? never : IsUnion<RepositoryStateSchema<EntityType>> extends true ? never : DescriptorMessageSchema extends RepositoryStateSchema<EntityType> ? never : unknown;
36
+ /**
37
+ * Describes an entity constructor accepted by repository identity metadata.
38
+ *
39
+ * @typeParam Instance - The aggregate, projection, or process-manager instance type.
40
+ * @param args The constructor arguments accepted by the entity class.
41
+ * @returns An entity instance.
42
+ */
43
+ export type RepositoryEntityType<Instance extends RepositoryEntityInstance = RepositoryEntityInstance> = (abstract new (...args: never[]) => Instance) & typeof Entity<any, DescriptorMessageSchema, any> & {
44
+ /**
45
+ * Prototype inspected for built-in entity family marker inheritance.
46
+ */
47
+ readonly prototype: Instance;
48
+ /**
49
+ * Constructor name used in structured diagnostics.
50
+ */
51
+ readonly name: string;
52
+ };
53
+ /**
54
+ * Options for constructing repository identity and context-owned registration.
55
+ *
56
+ * @typeParam EntityType - A single concrete aggregate, projection, or process-manager constructor.
57
+ * The constructor's prototype must carry one concrete generated state schema; broad constructor,
58
+ * constructor-union, broad-schema, and schema-union bindings are rejected at compile time.
59
+ */
60
+ export interface RepositoryOptions<EntityType extends RepositoryEntityType & ConcreteRepositoryEntityType<EntityType>> {
61
+ /**
62
+ * Entity constructor owned by this repository identity.
63
+ */
64
+ readonly entityType: EntityType;
65
+ /**
66
+ * Generated Protobuf-ES schema for the entity state owned by this repository identity.
67
+ */
68
+ readonly schema: RepositoryStateSchema<EntityType>;
69
+ /**
70
+ * Explicit handler metadata used to register repository command and event routing.
71
+ *
72
+ * Aggregate repositories with handlers can be executed by built bounded contexts and therefore
73
+ * must use `bigint` version metadata, matching the persisted aggregate history version type.
74
+ * Projection repositories with handlers can be executed by built bounded contexts and therefore
75
+ * must use `number` version metadata, matching the protobuf event version carried into Stand.
76
+ * Process-manager repositories with handlers also execute through Stand-backed state and must
77
+ * use `number` version metadata, matching the Stand version shape used by the local runtime.
78
+ */
79
+ readonly handlers?: RepositoryHandlersOptionFor<EntityType>;
80
+ /**
81
+ * Mutable Command route declarations snapshotted when this repository is constructed.
82
+ */
83
+ readonly commandRouting?: CommandRouting<RepositoryEntityId<EntityType>>;
84
+ /**
85
+ * Mutable Event route declarations snapshotted when this repository is constructed.
86
+ */
87
+ readonly eventRouting?: EventRouting<RepositoryEntityId<EntityType>>;
88
+ /**
89
+ * Mutable state-update declarations allowed only for Projections.
90
+ */
91
+ readonly stateUpdateRouting?: StateRoutingOption<EntityType>;
92
+ /**
93
+ * Reversible field mappings used by generated Event handler filters.
94
+ *
95
+ * Pass the same source registry configured for storage/query mappings when
96
+ * message-valued fields use application-defined string representations. The
97
+ * repository snapshots the registry during construction.
98
+ */
99
+ readonly stringifierRegistry?: StringifierRegistry;
100
+ /**
101
+ * Generated event schemas that aggregate or process-manager handlers may emit.
102
+ */
103
+ readonly events?: readonly MessageSchema[];
104
+ /**
105
+ * Retain a state-history row after each successful logical store. Defaults to false.
106
+ */
107
+ readonly stateHistory?: boolean;
108
+ /**
109
+ * Retain process-manager diagnostic events. Defaults to false; aggregate events are retained.
110
+ */
111
+ readonly processManagerEventHistory?: boolean;
112
+ /**
113
+ * Enables a bounded best-effort, in-process duplicate-dispatch guard.
114
+ *
115
+ * The guard is disabled by default and uses depth 100 when enabled without
116
+ * an explicit depth. Projection repositories cannot enable it. Process
117
+ * Manager repositories must also enable `processManagerEventHistory`.
118
+ */
119
+ readonly doubleDispatchGuard?: boolean | {
120
+ readonly depth?: number;
121
+ };
122
+ }
123
+ /**
124
+ * Immutable copy-safe repository identity snapshot.
125
+ *
126
+ * @typeParam EntityType - The concrete entity constructor owned by the repository. The snapshot's
127
+ * state schema and metadata are derived from this constructor so callers cannot spell an impossible
128
+ * entity/schema snapshot pair.
129
+ */
130
+ export interface RepositoryIdentitySnapshot<EntityType extends RepositoryEntityType = RepositoryEntityType> {
131
+ /**
132
+ * Entity constructor owned by the repository.
133
+ */
134
+ readonly entityType: EntityType;
135
+ /**
136
+ * Entity family inferred from the constructor's built-in family marker base class.
137
+ */
138
+ readonly entityFamily: EntityFamily;
139
+ /**
140
+ * Generated Protobuf-ES schema for the owned entity state.
141
+ */
142
+ readonly stateSchema: RepositoryStateSchema<EntityType>;
143
+ /**
144
+ * Descriptor-derived metadata for the owned entity state.
145
+ */
146
+ readonly metadata: EntityMetadata<RepositoryStateSchema<EntityType>>;
147
+ /**
148
+ * Fully qualified Protobuf type name of the owned entity state.
149
+ */
150
+ readonly stateFullTypeName: RepositoryStateSchema<EntityType>["typeName"];
151
+ /**
152
+ * Canonical entity ID field copied from descriptor-derived metadata.
153
+ */
154
+ readonly idField: DescriptorFieldMetadata;
155
+ }
156
+ /**
157
+ * Public read view of a repository registered with a bounded context.
158
+ */
159
+ export interface RepositoryView {
160
+ /**
161
+ * Entity constructor owned by the repository.
162
+ */
163
+ readonly entityType: RepositoryEntityType;
164
+ /**
165
+ * Entity family inferred from the constructor's built-in family marker base class.
166
+ */
167
+ readonly entityFamily: EntityFamily;
168
+ /**
169
+ * Generated Protobuf-ES schema for the owned entity state.
170
+ */
171
+ readonly stateSchema: DescriptorMessageSchema;
172
+ /**
173
+ * Descriptor-derived metadata for the owned entity state.
174
+ */
175
+ readonly metadata: EntityMetadata;
176
+ /**
177
+ * Fully qualified Protobuf type name of the owned entity state.
178
+ */
179
+ readonly stateFullTypeName: string;
180
+ /**
181
+ * Canonical entity ID field copied from descriptor-derived metadata.
182
+ */
183
+ readonly idField: DescriptorFieldMetadata;
184
+ /**
185
+ * Copy-safe immutable identity snapshot for duplicate/conflict checks.
186
+ */
187
+ readonly snapshot: RepositoryIdentitySnapshot;
188
+ }
189
+ /**
190
+ * Machine-readable codes for repository identity failures.
191
+ */
192
+ export type RepositoryIdentityErrorCode = "ENTITY_SCHEMA_KIND_MISMATCH" | "UNSUPPORTED_ENTITY_TYPE";
193
+ /**
194
+ * Describes an error raised when repository identity metadata cannot be constructed.
195
+ */
196
+ export declare class RepositoryIdentityError extends Error {
197
+ /**
198
+ * Stable code for callers/tests that need structured failure handling.
199
+ */
200
+ readonly code: RepositoryIdentityErrorCode;
201
+ /**
202
+ * Creates a repository identity error.
203
+ *
204
+ * @param code The stable reason for the failed identity.
205
+ * @param message The diagnostic message.
206
+ */
207
+ constructor(code: RepositoryIdentityErrorCode, message: string);
208
+ }
209
+ /**
210
+ * Repository identity and context-owned storage registration over one entity constructor and state schema.
211
+ *
212
+ * The class records the ownership facts bounded-context registration needs for
213
+ * duplicate and conflict checks. Context assembly uses this metadata to attach
214
+ * a repository to one built context and open state record storage. With
215
+ * authentic explicit aggregate handler metadata, the built context can also
216
+ * execute aggregate commands through repository-owned assignees and live
217
+ * direct transactional handlers, persist the latest aggregate state plus a diagnostic event journal,
218
+ * and hand already-stored events to the event bus. Aggregate and process-manager command
219
+ * execution require `command.id` before routing or mutation so produced events
220
+ * can carry a contract-valid command origin. With authentic projection
221
+ * subscriber metadata, built contexts can also execute projection subscribers
222
+ * and write changed projection state through the context-owned `Stand`. With
223
+ * authentic process-manager metadata, built contexts can execute command
224
+ * assignees, event reactors, and event-commanding handlers, storing changed
225
+ * process-manager state through tenant-scoped Stand records with numeric
226
+ * versions. The `events` option declares generated event schemas emitted by
227
+ * aggregate and process-manager producer handlers. The repository surface still
228
+ * does not expose direct entity lookup/storage APIs, inbox/delivery management,
229
+ * caches, lifecycle monitors, or transport startup.
230
+ *
231
+ * @typeParam EntityType - A single concrete aggregate, projection, or process-manager constructor
232
+ * with one concrete generated state schema. Broad constructor, constructor-union, broad-schema, and
233
+ * schema-union bindings intentionally fail the public type constraint.
234
+ */
235
+ export declare class Repository<EntityType extends RepositoryEntityType & ConcreteRepositoryEntityType<EntityType>> implements RepositoryView {
236
+ #private;
237
+ /**
238
+ * Creates repository identity for one entity family and state schema pair.
239
+ *
240
+ * @param options The entity constructor, state schema, and optional routing configuration.
241
+ */
242
+ constructor(options: RepositoryOptions<EntityType>);
243
+ /**
244
+ * Returns the entity constructor owned by this repository identity.
245
+ *
246
+ * @returns The owned entity constructor.
247
+ */
248
+ get entityType(): EntityType;
249
+ /**
250
+ * Returns the entity family inferred from its constructor.
251
+ *
252
+ * @returns The aggregate, projection, or process-manager family.
253
+ */
254
+ get entityFamily(): EntityFamily;
255
+ /**
256
+ * Returns the generated schema for this repository's entity state.
257
+ *
258
+ * @returns The owned state schema.
259
+ */
260
+ get stateSchema(): RepositoryStateSchema<EntityType>;
261
+ /**
262
+ * Sets whether future state-history rows are appended for this repository.
263
+ *
264
+ * This JVM-parity switch is for controlled administration/testing, not
265
+ * routine request-time behavior. It never deletes or reconstructs history.
266
+ *
267
+ * @param enabled Whether later successful stores append state-history rows.
268
+ */
269
+ setStateHistoryEnabled(enabled: boolean): void;
270
+ /**
271
+ * Returns descriptor-derived metadata for the owned entity state.
272
+ *
273
+ * @returns A metadata view for the owned state.
274
+ */
275
+ get metadata(): EntityMetadata<RepositoryStateSchema<EntityType>>;
276
+ /**
277
+ * Returns the fully qualified Protobuf name of the owned entity state.
278
+ *
279
+ * @returns The state message type name.
280
+ */
281
+ get stateFullTypeName(): RepositoryStateSchema<EntityType>["typeName"];
282
+ /**
283
+ * Returns a copy of the canonical entity ID field metadata.
284
+ *
285
+ * @returns The descriptor field used as the entity ID.
286
+ */
287
+ get idField(): DescriptorFieldMetadata;
288
+ /**
289
+ * Returns a copy-safe identity snapshot for builder duplicate and conflict checks.
290
+ *
291
+ * @returns An immutable snapshot of the repository identity.
292
+ */
293
+ get snapshot(): RepositoryIdentitySnapshot<EntityType>;
294
+ /**
295
+ * Routes a command to one entity ID without invoking a handler.
296
+ *
297
+ * @param command The command envelope to route.
298
+ * @returns The calculated command route.
299
+ */
300
+ routeCommand(command: Command): RepositoryCommandRoute<RepositoryEntityId<EntityType>>;
301
+ /**
302
+ * Routes an Event without invoking a handler.
303
+ *
304
+ * The default route uses a readable producer whose typed ID is compatible
305
+ * with the Entity ID. A valid producer of another type falls back to the
306
+ * Event's declaration-first field. A producer that claims the compatible type
307
+ * but cannot be decoded is rejected. Custom routes may select zero, one, or
308
+ * many targets.
309
+ *
310
+ * @param event The event envelope to route.
311
+ * @returns The calculated event route.
312
+ */
313
+ routeEvent(event: Event): RepositoryEventRoute<RepositoryEntityId<EntityType>>;
314
+ }
315
+ /**
316
+ * Route-only invocation marker returned by direct repository routing APIs.
317
+ *
318
+ * Built bounded contexts may execute aggregate command assignees and event reactions through their
319
+ * command bus; direct `routeCommand()` and `routeEvent()` calls remain routing-only.
320
+ */
321
+ export type RepositoryRouteInvocation = "deferred";
322
+ /**
323
+ * Command route calculated by a repository.
324
+ */
325
+ export interface RepositoryCommandRoute<Id = unknown> {
326
+ /**
327
+ * Target entity identifier.
328
+ */
329
+ readonly entityId: Id;
330
+ /**
331
+ * Fully qualified command message type name.
332
+ */
333
+ readonly messageFullTypeName: string;
334
+ /**
335
+ * Direct repository route calculation does not invoke handlers.
336
+ */
337
+ readonly invocation: RepositoryRouteInvocation;
338
+ }
339
+ /**
340
+ * Event route calculated by a repository.
341
+ */
342
+ export interface RepositoryEventRoute<Id = unknown> {
343
+ /**
344
+ * Target entity identifiers.
345
+ */
346
+ readonly entityIds: readonly Id[];
347
+ /**
348
+ * Fully qualified event message type name.
349
+ */
350
+ readonly messageFullTypeName: string;
351
+ /**
352
+ * Direct repository route calculation does not invoke handlers.
353
+ */
354
+ readonly invocation: RepositoryRouteInvocation;
355
+ }
356
+ /**
357
+ * Route calculated for one unpacked Entity state update.
358
+ *
359
+ * @internal Framework delivery metadata.
360
+ */
361
+ interface RepositoryStateUpdateRoute<Id = unknown> extends RepositoryEventRoute<Id> {
362
+ /**
363
+ * Unpacked source Entity state selected from `EntityStateChanged.newState`.
364
+ */
365
+ readonly state: Message;
366
+ readonly subscribers: RepositoryStateSubscribers;
367
+ }
368
+ type EntityInboxLabel = "HANDLE_COMMAND" | "REACT_UPON_EVENT";
369
+ type EntityInboxFollowUp = () => Promise<void>;
370
+ type EntityInboxReplay = Promise<EntityInboxFollowUp | undefined>;
371
+ type EntityInboxMessage = InboxMessage & {
372
+ readonly label: EntityInboxLabel;
373
+ readonly status: "TO_DELIVER";
374
+ };
375
+ type EntityInboxInput = Omit<InboxMessageInput, "whenReceived" | "version" | "shard"> & {
376
+ readonly label: EntityInboxLabel;
377
+ readonly status: "TO_DELIVER";
378
+ };
379
+ /**
380
+ * Describes one Aggregate or Process Manager replay target.
381
+ *
382
+ * @internal
383
+ */
384
+ export interface EntityInboxTarget {
385
+ /**
386
+ * Target state type URL routed by this replay target.
387
+ */
388
+ readonly targetTypeUrl: string;
389
+ /**
390
+ * Delivery labels configured for this target.
391
+ */
392
+ readonly labels: readonly EntityInboxLabel[];
393
+ /**
394
+ * Returns after replaying a stored Entity Inbox message.
395
+ *
396
+ * @param message Supplies the durable Entity Inbox message.
397
+ * @param deliveryTenantId Identifies the active delivery tenant.
398
+ * @returns Resolves after replay, optionally with an async follow-up callback.
399
+ */
400
+ replay(message: EntityInboxMessage, deliveryTenantId?: TenantId): EntityInboxReplay;
401
+ }
402
+ /**
403
+ * Defines context-owned Entity Inbox handoff operations.
404
+ *
405
+ * @internal
406
+ */
407
+ export interface EntityInbox {
408
+ /**
409
+ * Returns the context-owned target-to-shard strategy.
410
+ *
411
+ * @returns The immutable delivery strategy.
412
+ */
413
+ strategy(): import("../delivery/delivery-builder.js").DeliveryStrategy;
414
+ /**
415
+ * Delivers one durable inbox row through registered Entity Inbox targets.
416
+ *
417
+ * @param message The durable inbox row to replay.
418
+ * @param deliveryTenantId The tenant resolved by the delivery runtime.
419
+ * @returns A promise that resolves after the row is replayed.
420
+ */
421
+ replay(message: InboxMessage, deliveryTenantId?: TenantId): Promise<void>;
422
+ /**
423
+ * Writes and locally delivers one durable inbox row.
424
+ *
425
+ * @param delivery The delivery runtime that persists and replays the row.
426
+ * @param input The row values to persist.
427
+ * @param deliveryTenantId The tenant resolved by the delivery runtime.
428
+ * @returns The persisted inbox row.
429
+ */
430
+ receive(delivery: Delivery, input: EntityInboxInput, deliveryTenantId?: TenantId): Promise<InboxMessage>;
431
+ /**
432
+ * Writes and locally delivers durable inbox rows in input order.
433
+ *
434
+ * @param delivery The delivery runtime that persists and replays the rows.
435
+ * @param inputs The row values to persist.
436
+ * @param deliveryTenantId The tenant resolved by the delivery runtime.
437
+ * @returns The persisted inbox rows.
438
+ */
439
+ receiveAll(delivery: Delivery, inputs: readonly EntityInboxInput[], deliveryTenantId?: TenantId): Promise<readonly InboxMessage[]>;
440
+ }
441
+ /**
442
+ *
443
+ * @internal Narrow framework-only replay target for projection subscriber inbox handoff.
444
+ */
445
+ type ProjectionInboxMessage = InboxMessage & {
446
+ readonly label: "UPDATE_SUBSCRIBER";
447
+ readonly status: "TO_DELIVER";
448
+ };
449
+ type ProjectionInboxInput = Omit<InboxMessageInput, "whenReceived" | "version"> & {
450
+ readonly label: "UPDATE_SUBSCRIBER";
451
+ readonly status: "TO_DELIVER";
452
+ };
453
+ /**
454
+ * Describes a framework-only projection inbox replay target.
455
+ *
456
+ * @internal
457
+ */
458
+ export interface ProjectionInboxTarget {
459
+ /**
460
+ * Target projection state type URL routed by this replay target.
461
+ */
462
+ readonly targetTypeUrl: string;
463
+ /**
464
+ * Delivers one durable inbox event under the active delivery tenant.
465
+ *
466
+ * @param message The durable message to replay.
467
+ * @param deliveryTenantId The tenant resolved by the delivery runtime.
468
+ * @returns A promise that resolves after the message is replayed.
469
+ */
470
+ replay(message: ProjectionInboxMessage, deliveryTenantId?: TenantId): Promise<void>;
471
+ }
472
+ /**
473
+ * Defines context-owned projection subscriber inbox handoff operations.
474
+ *
475
+ * @internal
476
+ */
477
+ export interface ProjectionInbox {
478
+ /**
479
+ * Delivers one durable inbox row through registered projection targets.
480
+ *
481
+ * @param message The durable inbox row to replay.
482
+ * @param deliveryTenantId The tenant resolved by the delivery runtime.
483
+ * @returns A promise that resolves after the row is replayed.
484
+ */
485
+ replay(message: InboxMessage, deliveryTenantId?: TenantId): Promise<void>;
486
+ /**
487
+ * Writes and locally delivers one durable inbox row.
488
+ *
489
+ * @param delivery The delivery runtime that persists and replays the row.
490
+ * @param input The row values to persist.
491
+ * @param deliveryTenantId The tenant resolved by the delivery runtime.
492
+ * @returns The persisted inbox row.
493
+ */
494
+ receive(delivery: Delivery, input: ProjectionInboxInput, deliveryTenantId?: TenantId): Promise<InboxMessage>;
495
+ }
496
+ /**
497
+ * Defines framework-only access to repository runtime state.
498
+ *
499
+ * @internal
500
+ */
501
+ export interface RepositoryAccess {
502
+ /**
503
+ * Determines whether a value is a repository view.
504
+ *
505
+ * @param repository The value to inspect.
506
+ * @returns Whether the value belongs to a repository.
507
+ */
508
+ hasInstance(repository: unknown): repository is RepositoryView;
509
+ /**
510
+ * Returns a copy-safe repository identity snapshot.
511
+ *
512
+ * @param repository The repository to inspect.
513
+ * @returns The repository identity snapshot.
514
+ */
515
+ snapshot(repository: RepositoryView): RepositoryIdentitySnapshot;
516
+ /**
517
+ * Returns schemas for events that the repository can produce.
518
+ *
519
+ * @param repository the repository to inspect.
520
+ * @returns the produced event schemas.
521
+ */
522
+ producedEventSchemas(repository: RepositoryView): readonly MessageSchema[];
523
+ /**
524
+ * Returns the repository command dispatcher when it has command routing.
525
+ *
526
+ * @param repository The repository to inspect.
527
+ * @returns The command dispatcher, if present.
528
+ */
529
+ commandDispatcher(repository: RepositoryView): CommandDispatcher | undefined;
530
+ /**
531
+ * Returns the repository event dispatcher when it has event routing.
532
+ *
533
+ * @param repository The repository to inspect.
534
+ * @returns The event dispatcher, if present.
535
+ */
536
+ eventDispatcher(repository: RepositoryView): EventDispatcher | undefined;
537
+ /**
538
+ * Returns the repository System Event dispatcher, if present.
539
+ *
540
+ * @param repository The repository to inspect.
541
+ * @returns The System Event dispatcher, if present.
542
+ */
543
+ systemEventDispatcher(repository: RepositoryView): EventDispatcher | undefined;
544
+ /**
545
+ * Returns Entity state type names subscribed by the repository.
546
+ *
547
+ * @param repository The repository to inspect.
548
+ * @returns The subscribed Entity state type names.
549
+ */
550
+ stateSubscriptionTypes(repository: RepositoryView): readonly string[];
551
+ /**
552
+ * Calculates a Projection's internal route for an Entity state-change System event.
553
+ *
554
+ * @param repository The Projection repository to route through.
555
+ * @param event The Entity state-change System event.
556
+ * @returns The calculated route, or `undefined` for an unrelated state.
557
+ */
558
+ routeStateUpdate(repository: RepositoryView, event: Event): RepositoryStateUpdateRoute | undefined;
559
+ /**
560
+ * Returns the Entity Inbox target configured for a repository.
561
+ *
562
+ * @param repository The repository to inspect.
563
+ * @returns The inbox target, if present.
564
+ */
565
+ entityInboxTarget(repository: RepositoryView): EntityInboxTarget | undefined;
566
+ /**
567
+ * Returns the projection inbox target configured for a repository.
568
+ *
569
+ * @param repository The repository to inspect.
570
+ * @returns The inbox target, if present.
571
+ */
572
+ projectionInboxTarget(repository: RepositoryView): ProjectionInboxTarget | undefined;
573
+ /**
574
+ * Dispatches an event directly to a projection repository.
575
+ *
576
+ * @param repository The projection repository to dispatch to.
577
+ * @param event The event to dispatch.
578
+ * @param rebuild Selects the stored-event rebuild loading mode.
579
+ * @returns A promise that resolves after the projection receives the event.
580
+ */
581
+ dispatchProjectionDirect(repository: RepositoryView, event: Event, rebuild?: boolean): Promise<void>;
582
+ /**
583
+ * Binds a built runtime to a repository.
584
+ *
585
+ * @param repository The repository receiving runtime services.
586
+ * @param runtime The context runtime to bind.
587
+ */
588
+ bindRuntime(repository: RepositoryView, runtime: RepositoryRuntime): void;
589
+ /**
590
+ * Clears runtime state and open storage handles for a repository.
591
+ *
592
+ * @param repository The repository to detach.
593
+ */
594
+ clearRuntime(repository: RepositoryView): void;
595
+ }
596
+ /**
597
+ * Exposes framework-only repository access for bounded-context assembly.
598
+ *
599
+ * @internal
600
+ */
601
+ export declare const repositoryAccess: RepositoryAccess;
602
+ interface RepositoryRuntime {
603
+ readonly context: StorageMode;
604
+ readonly storageFactory: StorageFactory;
605
+ readonly stand: Stand;
606
+ readonly signalMetadata: SignalMetadata;
607
+ readonly entityInbox: EntityInbox;
608
+ readonly projectionInbox: ProjectionInbox;
609
+ readonly dispatchStored: (event: Event) => Promise<void>;
610
+ readonly dispatchStoredFollowUp: (event: Event) => Promise<void>;
611
+ readonly postEventFollowUp: (event: Event) => Promise<void>;
612
+ readonly registerEventSchema: (schema: MessageSchema) => void;
613
+ readonly postSystemFollowUp: (event: Event) => Promise<void>;
614
+ readonly registerSystemEventSchema: (schema: MessageSchema) => void;
615
+ readonly onPostCommand: (command: Command) => Promise<void>;
616
+ readonly recordDispatchFailure: (event: Event, error: unknown) => void;
617
+ }
618
+ type RepositoryHandlersOption = EntityHandlersMetadata | readonly EntityHandlersMetadata[] | undefined;
619
+ type RepositoryStateSubscribers = readonly RegisteredHandlerMetadata<StateSubscriptionHandlerMetadata>[];
620
+ /**
621
+ * Internal repository handlers operations.
622
+ */
623
+ declare const RepositoryHandlers: {
624
+ normalizeHandlers(handlersOption: RepositoryHandlersOption): readonly EntityHandlersMetadata[];
625
+ createCommandReactionMap(handlers: readonly EntityHandlersMetadata[]): ReadonlyMap<string, readonly RegisteredHandlerMetadata<CommandReactionHandlerMetadata>[]>;
626
+ createEventFilterPlans<Value extends {
627
+ readonly handler: {
628
+ readonly schema: DescriptorMessageSchema;
629
+ readonly where?: WhereOptions;
630
+ };
631
+ }>(byEvent: ReadonlyMap<string, readonly Value[]>, stringifiers: StringifierRegistry): ReadonlyMap<string, EventHandlerFilterPlan<Value>>;
632
+ forOrigin<Value extends {
633
+ readonly handler: {
634
+ readonly origin: "domestic" | "external";
635
+ };
636
+ }>(values: readonly Value[], external: boolean): readonly Value[];
637
+ readinessMap<Value>(schemas: readonly MessageSchema[], find: (typeName: string) => readonly Value[]): ReadonlyMap<string, readonly Value[]>;
638
+ handlerEmittedSchemas(handler: CommandAssignmentHandlerMetadata | CommandReactionHandlerMetadata | EventReactionHandlerMetadata): readonly DescriptorMessageSchema[];
639
+ isHandlersArray(value: RepositoryHandlersOption): value is readonly EntityHandlersMetadata[];
640
+ validateHandlers(entityType: RepositoryEntityType, metadata: EntityMetadata, handlers: readonly EntityHandlersMetadata[]): void;
641
+ uniqueSchemas(schemas: readonly MessageSchema[]): readonly MessageSchema[];
642
+ pushMapValue<Key, Value>(map: Map<Key, Value[]>, key: Key, value: Value): void;
643
+ };
644
+ /**
645
+ * Defines continuation-aware repository history caches.
646
+ */
647
+ declare const repositoryHistory: {
648
+ /**
649
+ * Creates a cache that extends a repository history only when a caller requests more entries.
650
+ *
651
+ * @typeParam Entry - The history entry type.
652
+ * @param load Loads entries before an optional continuation version.
653
+ * @param versionOf Reads the optional version carried by an entry.
654
+ * @param options Selects contiguous-version and complete-group behavior.
655
+ * @returns A cache with read and clear operations.
656
+ */
657
+ createCache<Entry>(load: (depth: number, startingFromVersion?: bigint) => Promise<readonly Entry[]>, versionOf: (entry: Entry) => bigint | undefined, options?: {
658
+ readonly requireContiguousVersions?: boolean;
659
+ readonly cacheCompleteVersionGroups?: boolean;
660
+ }): {
661
+ readonly read: (depth: number) => Promise<readonly Entry[]>;
662
+ readonly clear: () => void;
663
+ };
664
+ };
665
+ /**
666
+ * Defines continuation-aware repository history caches.
667
+ */
668
+ export declare const RepositoryHistory: Readonly<typeof repositoryHistory>;
669
+ export {};
670
+ //# sourceMappingURL=repository.d.ts.map