@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,307 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ var _a;
15
+ import { clone, create } from "@bufbuild/protobuf";
16
+ import { AnyMessages, RejectionThrowable } from "@spine-event-engine/core";
17
+ import { CommandContextSchema, CommandSchema, EventContextSchema, EventSchema, RejectionEventContextSchema, } from "@spine-event-engine/proto";
18
+ import * as EntityLog from "@spine-event-engine/proto/generated/spine/system/server/entity_log_events_pb.js";
19
+ import { EventDispatcherOriginSchemas } from "../bus/event-dispatcher-origin-schemas.js";
20
+ import { DeclaredRejections } from "../handler/declared-rejections.js";
21
+ import { EventHandlerFilters, } from "../handler/event-handler-filter.js";
22
+ import { SignalMetadata } from "./signal-metadata.js";
23
+ import { SignalPublisher } from "./signal-publisher.js";
24
+ /**
25
+ * Materializes generated standalone receivers without treating them as Entities.
26
+ *
27
+ * @internal
28
+ */
29
+ export class StandaloneHandlerRuntime {
30
+ #publisher;
31
+ #metadata = new SignalMetadata();
32
+ #bindings;
33
+ #eventFilters;
34
+ /**
35
+ * Creates runtime bindings for registered standalone receivers.
36
+ *
37
+ * @param receivers Generated receiver groups with their application instances and publisher.
38
+ */
39
+ constructor(receivers) {
40
+ this.#publisher = receivers[0]?.publisher ?? _a.missingPublisher();
41
+ this.#bindings = Object.freeze(receivers.flatMap(({ group, instance }) => group.handlers.map((handler) => _a.bind(group, instance, handler))));
42
+ this.#eventFilters = _a.eventFilters(this.#bindings);
43
+ }
44
+ /**
45
+ * Creates a dispatcher for standalone Command receptors.
46
+ *
47
+ * @returns The dispatcher, or `undefined` when no Command receptor is bound.
48
+ */
49
+ commandDispatcher() {
50
+ const bindings = this.#bindings.filter((binding) => binding.handler.kind === "command-assignment" ||
51
+ binding.handler.kind === "command-substitution");
52
+ if (bindings.length === 0)
53
+ return undefined;
54
+ return {
55
+ messageSchemas: () => Object.freeze(_a.schemas(bindings)),
56
+ dispatch: async (command) => this.#dispatchCommand(command, bindings),
57
+ };
58
+ }
59
+ /**
60
+ * Creates a dispatcher for standalone Event receptors.
61
+ *
62
+ * @returns The dispatcher, or `undefined` when no Event receptor is bound.
63
+ */
64
+ eventDispatcher() {
65
+ const bindings = this.#bindings.filter((binding) => binding.handler.kind === "command-reaction" ||
66
+ binding.handler.kind === "event-reaction" ||
67
+ binding.handler.kind === "event-subscription");
68
+ if (bindings.length === 0)
69
+ return undefined;
70
+ const dispatcher = {
71
+ messageSchemas: () => Object.freeze(_a.schemas(bindings)),
72
+ externalEventSchemas: () => Object.freeze(_a.schemas(bindings.filter(({ handler }) => handler.input.origin === "external"))),
73
+ dispatch: async (event) => this.#dispatchEvent(event, bindings),
74
+ };
75
+ return EventDispatcherOriginSchemas.define(dispatcher, _a.schemas(bindings.filter(({ handler }) => handler.input.origin === "domestic")), _a.schemas(bindings.filter(({ handler }) => handler.input.origin === "external")));
76
+ }
77
+ /**
78
+ * Creates a System Event Bus dispatcher for standalone state subscribers.
79
+ *
80
+ * @returns The dispatcher, or `undefined` when no state subscriber is bound.
81
+ */
82
+ stateDispatcher() {
83
+ const bindings = this.#bindings.filter(({ handler }) => handler.kind === "state-subscription");
84
+ if (bindings.length === 0)
85
+ return undefined;
86
+ return {
87
+ messageSchemas: () => Object.freeze([EntityLog.EntityStateChangedSchema]),
88
+ dispatch: async (event) => {
89
+ const changed = event.message === undefined
90
+ ? undefined
91
+ : AnyMessages.unpack(event.message, EntityLog.EntityStateChangedSchema);
92
+ if (changed?.newState === undefined)
93
+ return;
94
+ for (const binding of bindings) {
95
+ const state = AnyMessages.unpack(changed.newState, binding.handler.input.schema);
96
+ if (state !== undefined) {
97
+ const output = await binding.invoke(state, _a.eventContext(event));
98
+ await this.#publish(binding, output, event);
99
+ }
100
+ }
101
+ },
102
+ };
103
+ }
104
+ async #dispatchCommand(command, bindings) {
105
+ if (command.message === undefined)
106
+ throw new Error("Standalone command handler requires a message.");
107
+ for (const binding of bindings) {
108
+ const message = AnyMessages.unpack(command.message, binding.handler.input.schema);
109
+ if (message === undefined)
110
+ continue;
111
+ let output;
112
+ try {
113
+ output = await binding.invoke(message, _a.commandContext(command));
114
+ }
115
+ catch (error) {
116
+ if (!RejectionThrowable.is(error))
117
+ throw error;
118
+ DeclaredRejections.require(binding.handler.methodName, binding.handler.outcomes.thrown, error);
119
+ await this.#publishRejection(command, error);
120
+ continue;
121
+ }
122
+ await this.#publish(binding, output, command);
123
+ }
124
+ }
125
+ async #dispatchEvent(event, bindings) {
126
+ if (event.message === undefined)
127
+ throw new Error("Standalone event handler requires a message.");
128
+ const origin = event.context?.external === true ? "external" : "domestic";
129
+ for (const [key, filter] of this.#eventFilters) {
130
+ const binding = bindings.find((candidate) => _a.eventFilterKey(candidate.handler.input.schema.typeName, origin) === key);
131
+ if (binding === undefined)
132
+ continue;
133
+ const message = AnyMessages.unpack(event.message, binding.handler.input.schema);
134
+ if (message === undefined)
135
+ continue;
136
+ for (const selected of filter.select(message)) {
137
+ const output = await selected.invoke(message, _a.eventContext(event));
138
+ await this.#publish(selected, output, event);
139
+ }
140
+ }
141
+ }
142
+ #publish(binding, output, source) {
143
+ const values = _a.#outputValues(output);
144
+ if (!this.#canPublish(binding, values))
145
+ return Promise.resolve();
146
+ for (const value of values)
147
+ this.#publishValue(binding, value, source);
148
+ return Promise.resolve();
149
+ }
150
+ #canPublish(binding, values) {
151
+ const subscriber = binding.handler.kind === "event-subscription" ||
152
+ binding.handler.kind === "state-subscription";
153
+ if (subscriber && values.length !== 0)
154
+ throw new Error(`Standalone subscriber "${binding.handler.methodName}" must not return signals.`);
155
+ if (!subscriber &&
156
+ (binding.handler.kind === "command-assignment" ||
157
+ binding.handler.kind === "command-substitution") &&
158
+ values.length === 0)
159
+ throw new Error(`Standalone ${binding.handler.kind} "${binding.handler.methodName}" must return a signal.`);
160
+ return !subscriber;
161
+ }
162
+ #publishValue(binding, value, source) {
163
+ const schema = binding.handler.outcomes.returned.find((candidate) => value.$typeName === candidate.typeName);
164
+ if (schema === undefined)
165
+ throw new Error(`Standalone handler "${binding.handler.methodName}" returned an undeclared signal.`);
166
+ if (binding.handler.kind === "command-substitution" ||
167
+ binding.handler.kind === "command-reaction") {
168
+ this.#publishCommand(schema, value, source);
169
+ }
170
+ else
171
+ this.#publishEvent(schema, value, source);
172
+ }
173
+ #publishCommand(schema, value, source) {
174
+ const metadata = "uuid" in (source.id ?? {})
175
+ ? this.#metadata.commandFromCommand(source)
176
+ : this.#metadata.commandFromEvent(source);
177
+ void this.#publisher.publishCommand(create(CommandSchema, {
178
+ id: metadata.id,
179
+ context: metadata.context,
180
+ message: AnyMessages.pack(schema, value),
181
+ }));
182
+ }
183
+ #publishEvent(schema, value, source) {
184
+ const metadata = "uuid" in (source.id ?? {})
185
+ ? this.#metadata.eventFromCommand(source, {})
186
+ : this.#metadata.eventFromEvent(source, {});
187
+ void this.#publisher.publishEvent(create(EventSchema, {
188
+ id: metadata.id,
189
+ context: metadata.context,
190
+ message: AnyMessages.pack(schema, value),
191
+ }));
192
+ }
193
+ async #publishRejection(command, rejection) {
194
+ const metadata = this.#metadata.eventFromCommand(command, {});
195
+ await this.#publisher.publishRejectionEvent(create(EventSchema, {
196
+ id: metadata.id,
197
+ message: AnyMessages.pack(rejection.schema, rejection.messageThrown()),
198
+ context: create(EventContextSchema, {
199
+ ...metadata.context,
200
+ rejection: create(RejectionEventContextSchema, {
201
+ command: clone(CommandSchema, command),
202
+ stacktrace: rejection.stack ?? "",
203
+ }),
204
+ }),
205
+ }));
206
+ }
207
+ /**
208
+ * Normalizes optional handler output into a list of values.
209
+ *
210
+ * @param output A handler result that may be absent, singular, or an array.
211
+ * @returns An empty list for nullish output; otherwise the array or a single-item list.
212
+ */
213
+ static #outputValues(output) {
214
+ return output === undefined || output === null ? [] : Array.isArray(output) ? output : [output];
215
+ }
216
+ /**
217
+ * Binds one generated handler declaration to its standalone application instance.
218
+ *
219
+ * @param group The generated receiver group.
220
+ * @param instance The registered application instance.
221
+ * @param handler The generated handler declaration.
222
+ * @returns The immutable runtime binding.
223
+ */
224
+ static bind(group, instance, handler) {
225
+ const method = instance[handler.methodName];
226
+ if (typeof method !== "function")
227
+ throw new TypeError(`Standalone receiver is missing method "${handler.methodName}".`);
228
+ return Object.freeze({
229
+ group,
230
+ handler,
231
+ invoke: (message, context) => Reflect.apply(method, instance, handler.parameterCount === 2 ? [message, context] : [message]),
232
+ });
233
+ }
234
+ /**
235
+ * Lists distinct signal schemas used by bindings.
236
+ *
237
+ * @param bindings The bindings to inspect.
238
+ * @returns Distinct signal schemas in binding order.
239
+ */
240
+ static schemas(bindings) {
241
+ return [
242
+ ...new Map(bindings.map(({ handler }) => [handler.input.schema.typeName, handler.input.schema])).values(),
243
+ ];
244
+ }
245
+ /**
246
+ * Builds Event filters for standalone Event receptors.
247
+ *
248
+ * @param bindings The bindings to organize.
249
+ * @returns Filter plans keyed by signal schema and origin.
250
+ */
251
+ static eventFilters(bindings) {
252
+ const eventBindings = bindings.filter(({ handler }) => handler.kind === "command-reaction" ||
253
+ handler.kind === "event-reaction" ||
254
+ handler.kind === "event-subscription");
255
+ const grouped = Map.groupBy(eventBindings, ({ handler }) => _a.eventFilterKey(handler.input.schema.typeName, handler.input.origin));
256
+ return new Map([...grouped].map(([typeName, candidates]) => [
257
+ typeName,
258
+ EventHandlerFilters.compile(candidates.map(({ handler, ...binding }) => ({
259
+ value: Object.freeze({ handler, ...binding }),
260
+ schema: handler.input.schema,
261
+ ...(handler.input.where === undefined ? {} : { where: handler.input.where }),
262
+ }))),
263
+ ]));
264
+ }
265
+ /**
266
+ * Copies a Command context or creates its generated default.
267
+ *
268
+ * @param command The Command that provides the context.
269
+ * @returns An independent Command context.
270
+ */
271
+ static commandContext(command) {
272
+ return command.context === undefined
273
+ ? create(CommandContextSchema)
274
+ : clone(CommandContextSchema, command.context);
275
+ }
276
+ /**
277
+ * Copies an Event context or creates its generated default.
278
+ *
279
+ * @param event The Event that provides the context.
280
+ * @returns An independent Event context.
281
+ */
282
+ static eventContext(event) {
283
+ return event.context === undefined
284
+ ? create(EventContextSchema)
285
+ : clone(EventContextSchema, event.context);
286
+ }
287
+ /**
288
+ * Creates a key for one Event schema and origin.
289
+ *
290
+ * @param typeName The Event schema type name.
291
+ * @param origin The required Event origin.
292
+ * @returns The filter-map key.
293
+ */
294
+ static eventFilterKey(typeName, origin) {
295
+ return `${typeName}\u0000${origin}`;
296
+ }
297
+ /**
298
+ * Throws for a missing publisher during invalid runtime construction.
299
+ *
300
+ * @returns This method never returns because it throws.
301
+ */
302
+ static missingPublisher() {
303
+ throw new Error("Standalone handler runtime requires a SignalPublisher.");
304
+ }
305
+ }
306
+ _a = StandaloneHandlerRuntime;
307
+ //# sourceMappingURL=standalone-handler-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-handler-runtime.js","sourceRoot":"","sources":["../../src/runtime/standalone-handler-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,356 @@
1
+ import type { ContextDeliveryDescriptor } from "../context/bounded-context.js";
2
+ import type { DeliveryReady } from "../context/local-inbox-handoff.js";
3
+ import type { EnvironmentDeliveryPorts } from "../context/local-inbox-handoff.js";
4
+ import { type DeliveryRunScope, type DeliveryRunSettlement } from "../delivery/delivery-run-coordinator.js";
5
+ import { ParkedDeliveryObligations, type ParkedDeliveryObligationRecord } from "../delivery/parked-delivery-obligations.js";
6
+ import { type EnvironmentGenerationWorker } from "./environment-delivery-worker.js";
7
+ import type { ILogLayer } from "loglayer";
8
+ export type { EnvironmentGenerationWorker } from "./environment-delivery-worker.js";
9
+ /**
10
+ * Identifies whether a caller or server owns an environment registration.
11
+ *
12
+ * @internal
13
+ */
14
+ export type EnvironmentOwnership = "caller" | "server";
15
+ /**
16
+ * Represents one current, non-retired environment generation.
17
+ *
18
+ * @internal
19
+ */
20
+ export interface EnvironmentGeneration {
21
+ /**
22
+ * Marks values that represent an environment generation.
23
+ */
24
+ readonly generation: true;
25
+ }
26
+ /**
27
+ * Represents one environment attachment reservation.
28
+ *
29
+ * @internal
30
+ */
31
+ export interface EnvironmentRegistrationClaim {
32
+ /**
33
+ * Identifies the reservation within its generation.
34
+ */
35
+ readonly token: string;
36
+ /**
37
+ * Identifies the generation that owns the reservation.
38
+ */
39
+ readonly generation: EnvironmentGeneration;
40
+ }
41
+ /**
42
+ * Defines the ownership and descriptors needed to attach an environment.
43
+ *
44
+ * @internal
45
+ */
46
+ export interface EnvironmentAttachOptions {
47
+ /**
48
+ * Selects caller or server ownership.
49
+ */
50
+ readonly ownership: EnvironmentOwnership;
51
+ /**
52
+ * Lists context delivery descriptors to attach.
53
+ */
54
+ readonly descriptors: readonly ContextDeliveryDescriptor[];
55
+ }
56
+ declare class AttachedEnvironmentRegistration implements EnvironmentRegistrationClaim {
57
+ #private;
58
+ readonly startup: DeliveryRunSettlement;
59
+ readonly token: string;
60
+ constructor(claim: EnvironmentRegistrationClaim, binding: RegistrationBinding, startup: DeliveryRunSettlement, records: () => readonly ParkedDeliveryObligationRecord[]);
61
+ get generation(): EnvironmentGeneration;
62
+ records(): readonly ParkedDeliveryObligationRecord[];
63
+ }
64
+ /**
65
+ * Identifies a successfully attached environment registration.
66
+ *
67
+ * @internal
68
+ */
69
+ export type EnvironmentAttachmentHandle = AttachedEnvironmentRegistration;
70
+ /**
71
+ * Defines construction seams for deterministic lifecycle tests.
72
+ *
73
+ * @internal
74
+ */
75
+ export interface EnvironmentAttachmentsOptions {
76
+ /**
77
+ * Creates a generation worker when an attachment opens a generation.
78
+ *
79
+ * @returns The worker for the new generation.
80
+ */
81
+ readonly createWorker?: () => EnvironmentGenerationWorker;
82
+ /**
83
+ * Immutable environment logger child propagated to each delivery runtime.
84
+ */
85
+ readonly logger?: ILogLayer;
86
+ /**
87
+ * Resolves the environment-owned delivery ports after its facility opens.
88
+ *
89
+ * @returns The selected remote ports, or `undefined` for local delivery.
90
+ */
91
+ readonly deliveryPorts?: () => EnvironmentDeliveryPorts | undefined;
92
+ /**
93
+ * Calls the retained lifecycle failure reporter.
94
+ *
95
+ * @param causes Lists the failures to report.
96
+ * @returns A promise that settles after the failures are reported.
97
+ */
98
+ readonly report?: (causes: readonly unknown[]) => Promise<void>;
99
+ /**
100
+ * Injects transition faults used by lifecycle tests.
101
+ */
102
+ readonly transitionFaults?: {
103
+ readonly onRoutePrepare?: (descriptor: ContextDeliveryDescriptor) => void;
104
+ readonly onScopeTransfer?: (descriptor: ContextDeliveryDescriptor, sources: readonly TransitionScopeSource[]) => void;
105
+ };
106
+ }
107
+ /**
108
+ * Tracks registration ownership and generations for one server environment.
109
+ *
110
+ * @internal
111
+ */
112
+ export declare class EnvironmentRegistrations {
113
+ #private;
114
+ /**
115
+ * Returns the number of active claims.
116
+ *
117
+ * @returns The active claim count.
118
+ */
119
+ get count(): number;
120
+ /**
121
+ * Returns the active generation, if any.
122
+ *
123
+ * @returns The current generation or `undefined`.
124
+ */
125
+ get generation(): EnvironmentGeneration | undefined;
126
+ /**
127
+ * Sets the current generation during a safe handoff.
128
+ *
129
+ * @param generation Supplies the replacement generation.
130
+ * @returns The retired generation.
131
+ */
132
+ replace(generation: EnvironmentGeneration): EnvironmentGeneration;
133
+ /**
134
+ * Creates a registration claim in the current generation.
135
+ *
136
+ * @param ownership Selects caller or server ownership.
137
+ * @returns The new opaque registration claim.
138
+ */
139
+ claim(ownership: EnvironmentOwnership): EnvironmentRegistrationClaim;
140
+ /**
141
+ * Removes one failed attachment without disturbing sibling claims.
142
+ *
143
+ * @internal
144
+ * @param token Identifies the claim.
145
+ * @returns The remaining claim count.
146
+ */
147
+ remove(token: string): number;
148
+ /**
149
+ * Clears an empty generation after its retirement is safe.
150
+ *
151
+ * @internal
152
+ * @param generation Identifies the generation to clear.
153
+ */
154
+ clear(generation: EnvironmentGeneration): void;
155
+ }
156
+ /**
157
+ * Coordinates generation attachment, detachment, recovery, and retirement for one environment.
158
+ *
159
+ * @internal
160
+ */
161
+ export declare class EnvironmentAttachments {
162
+ #private;
163
+ /**
164
+ * Creates an attachment owner.
165
+ * @param options Optionally supplies lifecycle test seams.
166
+ */
167
+ constructor(options?: EnvironmentAttachmentsOptions);
168
+ /**
169
+ * Returns the number of bounded unresolved diagnostics.
170
+ *
171
+ * @internal
172
+ * @returns The unresolved count.
173
+ */
174
+ get unresolvedReportedDomainCount(): number;
175
+ /**
176
+ * Returns the number of live registrations.
177
+ *
178
+ * @internal
179
+ * @returns The active registration count.
180
+ */
181
+ get activeRegistrationCount(): number;
182
+ /**
183
+ * Returns the number of configured delivery owners.
184
+ *
185
+ * @internal
186
+ * @returns The configured owner count.
187
+ */
188
+ get configuredOwnerCount(): number;
189
+ /**
190
+ * Returns the number of configured delivery scopes.
191
+ *
192
+ * @internal
193
+ * @returns The configured scope count.
194
+ */
195
+ get configuredScopeCount(): number;
196
+ /**
197
+ * Checks whether a failed attachment owns unfinished rollback.
198
+ *
199
+ * @internal
200
+ * @returns Whether rollback remains.
201
+ */
202
+ get failedStartPending(): boolean;
203
+ /**
204
+ * Checks whether a rejection owns failed-start rollback retry.
205
+ *
206
+ * @internal
207
+ * @param error Supplies the rejection.
208
+ * @returns Whether retry is required.
209
+ */
210
+ failedStartRetryPending(error: unknown): boolean;
211
+ /**
212
+ * Checks whether detachment made an endpoint safe.
213
+ *
214
+ * @internal
215
+ * @param attachment Identifies the attachment.
216
+ * @returns Whether the endpoint is safe.
217
+ */
218
+ endpointSafe(attachment: EnvironmentAttachmentHandle): boolean;
219
+ /**
220
+ * Checks whether an attachment owns rejected detach work.
221
+ *
222
+ * @internal
223
+ * @param attachment Identifies the attachment.
224
+ * @returns Whether detach retry is pending.
225
+ */
226
+ detachRetryPending(attachment: EnvironmentAttachmentHandle): boolean;
227
+ /**
228
+ * Attaches configured descriptors to an environment generation.
229
+ *
230
+ * @param options Supplies ownership and descriptors.
231
+ * @returns The successful attachment handle.
232
+ */
233
+ attach(options: EnvironmentAttachOptions): Promise<EnvironmentAttachmentHandle>;
234
+ /**
235
+ * Stops delivery work while preserving a retryable failed stop.
236
+ *
237
+ * @returns A promise that settles after delivery work stops.
238
+ */
239
+ stopDelivery(): Promise<void>;
240
+ /**
241
+ * Retries a previously rejected delivery stop.
242
+ *
243
+ * @returns A promise that settles after the stop retry completes.
244
+ */
245
+ retryDeliveryStop(): Promise<void>;
246
+ /**
247
+ * Accepts permanent close after all active registrations retire.
248
+ *
249
+ * @internal
250
+ * @returns A promise that resolves after permanent close is admitted.
251
+ */
252
+ admitPermanentClose(): Promise<void>;
253
+ /**
254
+ * Removes one attached registration.
255
+ *
256
+ * @param attachment Identifies the attachment to detach.
257
+ * @returns A promise that settles after the attachment detaches.
258
+ */
259
+ detach(attachment: EnvironmentAttachmentHandle): Promise<void>;
260
+ /**
261
+ * Retries rejected detachment for one attachment.
262
+ *
263
+ * @param attachment Identifies the attachment to retry.
264
+ * @returns A promise that settles after the detach retry completes.
265
+ */
266
+ retryDetach(attachment: EnvironmentAttachmentHandle): Promise<void>;
267
+ /**
268
+ * Retries rollback following a rejected attachment start.
269
+ *
270
+ * @returns A promise that settles after failed-start rollback retries.
271
+ */
272
+ retryFailedStart(): Promise<void>;
273
+ }
274
+ interface RegistrationBinding {
275
+ generation: EnvironmentGeneration;
276
+ }
277
+ type TransitionScopeSource = "configured" | "startup" | "buffered" | "retained";
278
+ /**
279
+ * Buffers descriptor readiness while one attachment transitions between generations.
280
+ *
281
+ * @internal
282
+ */
283
+ export declare class RegistrationReadiness {
284
+ #private;
285
+ /**
286
+ * Creates readiness buffering for configured descriptors.
287
+ *
288
+ * @param descriptors Supplies descriptors and their initial scopes.
289
+ * @param onPrepare Converts a readiness notification into a scope.
290
+ * @param onNotify Delivers an opened scope to its generation.
291
+ */
292
+ constructor(descriptors: readonly {
293
+ readonly descriptor: ContextDeliveryDescriptor;
294
+ readonly scopes: readonly DeliveryRunScope[];
295
+ }[], onPrepare: (descriptor: ContextDeliveryDescriptor, ready: DeliveryReady) => DeliveryRunScope, onNotify: (scope: DeliveryRunScope) => void);
296
+ /**
297
+ * Records or forwards one endpoint readiness notification.
298
+ *
299
+ * @param descriptor Identifies the reporting descriptor.
300
+ * @param ready Supplies the ready endpoint.
301
+ */
302
+ notify(descriptor: ContextDeliveryDescriptor, ready: DeliveryReady): void;
303
+ /**
304
+ * Clears readiness and discards buffered notifications.
305
+ */
306
+ fail(): void;
307
+ /**
308
+ * Prepares notification buffering for a generation transition.
309
+ *
310
+ * @param onBuffered Receives notifications buffered during the transition.
311
+ */
312
+ prepareTransition(onBuffered: (descriptor: ContextDeliveryDescriptor, ready: DeliveryReady) => void): void;
313
+ /**
314
+ * Updates every descriptor for a replacement generation.
315
+ *
316
+ * @param onPrepare Converts readiness into replacement scopes.
317
+ * @param onNotify Delivers opened replacement scopes.
318
+ */
319
+ rebind(onPrepare: (descriptor: ContextDeliveryDescriptor, ready: DeliveryReady) => DeliveryRunScope, onNotify: (scope: DeliveryRunScope) => void): void;
320
+ /**
321
+ * Updates one descriptor for a replacement generation.
322
+ *
323
+ * @param descriptor Identifies the descriptor to rebind.
324
+ * @param onPrepare Converts readiness into replacement scopes.
325
+ * @param onNotify Delivers opened replacement scopes.
326
+ */
327
+ rebindDescriptor(descriptor: ContextDeliveryDescriptor, onPrepare: (descriptor: ContextDeliveryDescriptor, ready: DeliveryReady) => DeliveryRunScope, onNotify: (scope: DeliveryRunScope) => void): void;
328
+ /**
329
+ * Opens readiness and returns initial plus buffered scopes.
330
+ *
331
+ * @param startup Supplies scopes recovered during startup.
332
+ * @returns Immutable scopes to run or notify.
333
+ */
334
+ open(startup: readonly DeliveryRunScope[]): readonly DeliveryRunScope[];
335
+ }
336
+ /**
337
+ * Exposes the registration-assembly evidence seam used by direct server tests.
338
+ * @internal
339
+ */
340
+ export interface EnvironmentAttachmentAccess {
341
+ /**
342
+ * Converts a finite startup settlement into registration-scoped parked evidence.
343
+ *
344
+ * @param token Identifies the registration.
345
+ * @param scopes Supplies configured startup scopes.
346
+ * @param settlement Supplies the finite recovery settlement.
347
+ * @returns Parked-obligation evidence for the registration.
348
+ */
349
+ startupObligations(token: string, scopes: readonly DeliveryRunScope[], settlement: DeliveryRunSettlement): ParkedDeliveryObligations;
350
+ }
351
+ /**
352
+ * Exposes owner-bound registration-assembly test operations.
353
+ * @internal
354
+ */
355
+ export declare const EnvironmentAttachmentAccess: Readonly<EnvironmentAttachmentAccess>;
356
+ //# sourceMappingURL=environment-attachment.d.ts.map