@fougere/core 0.2.0-alpha.2 → 0.3.0-alpha.0

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 (414) hide show
  1. package/README.md +2 -1
  2. package/dist/boot/AppLifecycle.d.ts +18 -0
  3. package/dist/boot/AppLifecycle.d.ts.map +1 -0
  4. package/dist/boot/AppLifecycle.js +42 -0
  5. package/dist/boot/AppLifecycle.js.map +1 -0
  6. package/dist/boot/Emissions.d.ts +126 -0
  7. package/dist/boot/Emissions.d.ts.map +1 -0
  8. package/dist/boot/Emissions.js +233 -0
  9. package/dist/boot/Emissions.js.map +1 -0
  10. package/dist/boot/HandlerFacade.d.ts +72 -0
  11. package/dist/boot/HandlerFacade.d.ts.map +1 -0
  12. package/dist/boot/HandlerFacade.js +174 -0
  13. package/dist/boot/HandlerFacade.js.map +1 -0
  14. package/dist/boot/Lifecycle.d.ts +4 -0
  15. package/dist/boot/Lifecycle.d.ts.map +1 -0
  16. package/dist/boot/Lifecycle.js +3 -0
  17. package/dist/boot/Lifecycle.js.map +1 -0
  18. package/dist/boot/ambient-port.d.ts +38 -0
  19. package/dist/boot/ambient-port.d.ts.map +1 -0
  20. package/dist/boot/ambient-port.js +2 -0
  21. package/dist/boot/ambient-port.js.map +1 -0
  22. package/dist/boot/ambient.als.d.ts +3 -0
  23. package/dist/boot/ambient.als.d.ts.map +1 -0
  24. package/dist/boot/ambient.als.js +34 -0
  25. package/dist/boot/ambient.als.js.map +1 -0
  26. package/dist/boot/ambient.queue.d.ts +10 -0
  27. package/dist/boot/ambient.queue.d.ts.map +1 -0
  28. package/dist/boot/ambient.queue.js +60 -0
  29. package/dist/boot/ambient.queue.js.map +1 -0
  30. package/dist/boot/apply.d.ts +22 -0
  31. package/dist/boot/apply.d.ts.map +1 -0
  32. package/dist/boot/apply.js +48 -0
  33. package/dist/boot/apply.js.map +1 -0
  34. package/dist/boot/auth.d.ts +53 -0
  35. package/dist/boot/auth.d.ts.map +1 -0
  36. package/dist/boot/auth.js +2 -0
  37. package/dist/boot/auth.js.map +1 -0
  38. package/dist/{binding.d.ts → boot/binding.d.ts} +14 -17
  39. package/dist/boot/binding.d.ts.map +1 -0
  40. package/dist/{binding.js → boot/binding.js} +19 -10
  41. package/dist/boot/binding.js.map +1 -0
  42. package/dist/{boot.d.ts → boot/boot.d.ts} +25 -5
  43. package/dist/boot/boot.d.ts.map +1 -0
  44. package/dist/boot/boot.js +70 -0
  45. package/dist/boot/boot.js.map +1 -0
  46. package/dist/boot/bootstrap.d.ts.map +1 -0
  47. package/dist/boot/bootstrap.js +721 -0
  48. package/dist/boot/bootstrap.js.map +1 -0
  49. package/dist/boot/egress.d.ts +8 -0
  50. package/dist/boot/egress.d.ts.map +1 -0
  51. package/dist/boot/egress.js +11 -0
  52. package/dist/boot/egress.js.map +1 -0
  53. package/dist/boot/frame.d.ts +44 -0
  54. package/dist/boot/frame.d.ts.map +1 -0
  55. package/dist/boot/frame.js +181 -0
  56. package/dist/boot/frame.js.map +1 -0
  57. package/dist/boot/ownership.d.ts +42 -0
  58. package/dist/boot/ownership.d.ts.map +1 -0
  59. package/dist/boot/ownership.js +127 -0
  60. package/dist/boot/ownership.js.map +1 -0
  61. package/dist/boot/ports.d.ts +17 -0
  62. package/dist/boot/ports.d.ts.map +1 -0
  63. package/dist/boot/ports.js +57 -0
  64. package/dist/boot/ports.js.map +1 -0
  65. package/dist/{remote.d.ts → boot/remote.d.ts} +11 -3
  66. package/dist/boot/remote.d.ts.map +1 -0
  67. package/dist/{remote.js → boot/remote.js} +24 -26
  68. package/dist/boot/remote.js.map +1 -0
  69. package/dist/{seed.d.ts → boot/seed.d.ts} +13 -1
  70. package/dist/boot/seed.d.ts.map +1 -0
  71. package/dist/{seed.js → boot/seed.js} +24 -3
  72. package/dist/boot/seed.js.map +1 -0
  73. package/dist/boot/together.d.ts +26 -0
  74. package/dist/boot/together.d.ts.map +1 -0
  75. package/dist/boot/together.js +163 -0
  76. package/dist/boot/together.js.map +1 -0
  77. package/dist/boot/types.d.ts +260 -0
  78. package/dist/boot/types.d.ts.map +1 -0
  79. package/dist/boot/types.js.map +1 -0
  80. package/dist/builtins/config.d.ts +9 -0
  81. package/dist/builtins/config.d.ts.map +1 -1
  82. package/dist/builtins/config.js +16 -1
  83. package/dist/builtins/config.js.map +1 -1
  84. package/dist/builtins/logger.d.ts +37 -4
  85. package/dist/builtins/logger.d.ts.map +1 -1
  86. package/dist/builtins/logger.js +66 -7
  87. package/dist/builtins/logger.js.map +1 -1
  88. package/dist/config-loader.d.ts +39 -35
  89. package/dist/config-loader.d.ts.map +1 -1
  90. package/dist/config-loader.js +15 -54
  91. package/dist/config-loader.js.map +1 -1
  92. package/dist/contract/Call.d.ts +10 -0
  93. package/dist/contract/Call.d.ts.map +1 -0
  94. package/dist/contract/Call.js +15 -0
  95. package/dist/contract/Call.js.map +1 -0
  96. package/dist/contract/Invocation.d.ts +27 -0
  97. package/dist/contract/Invocation.d.ts.map +1 -0
  98. package/dist/contract/Invocation.js +59 -0
  99. package/dist/contract/Invocation.js.map +1 -0
  100. package/dist/contract/RouteAddress.d.ts +17 -0
  101. package/dist/contract/RouteAddress.d.ts.map +1 -0
  102. package/dist/contract/RouteAddress.js +38 -0
  103. package/dist/contract/RouteAddress.js.map +1 -0
  104. package/dist/contract.d.ts +25 -19
  105. package/dist/contract.d.ts.map +1 -1
  106. package/dist/contract.js +25 -10
  107. package/dist/contract.js.map +1 -1
  108. package/dist/crypto/encoding.d.ts +25 -0
  109. package/dist/crypto/encoding.d.ts.map +1 -0
  110. package/dist/crypto/encoding.js +58 -0
  111. package/dist/crypto/encoding.js.map +1 -0
  112. package/dist/crypto/node.d.ts +4 -0
  113. package/dist/crypto/node.d.ts.map +1 -0
  114. package/dist/crypto/node.js +25 -0
  115. package/dist/crypto/node.js.map +1 -0
  116. package/dist/crypto/port.d.ts +42 -0
  117. package/dist/crypto/port.d.ts.map +1 -0
  118. package/dist/crypto/port.js +19 -0
  119. package/dist/crypto/port.js.map +1 -0
  120. package/dist/crypto/webcrypto.d.ts +4 -0
  121. package/dist/crypto/webcrypto.d.ts.map +1 -0
  122. package/dist/crypto/webcrypto.js +34 -0
  123. package/dist/crypto/webcrypto.js.map +1 -0
  124. package/dist/dispatch/ArgumentResolver.d.ts +10 -0
  125. package/dist/dispatch/ArgumentResolver.d.ts.map +1 -0
  126. package/dist/dispatch/ArgumentResolver.js +12 -0
  127. package/dist/dispatch/ArgumentResolver.js.map +1 -0
  128. package/dist/dispatch/ArrayResult.d.ts +3 -0
  129. package/dist/dispatch/ArrayResult.d.ts.map +1 -0
  130. package/dist/dispatch/ArrayResult.js +11 -0
  131. package/dist/dispatch/ArrayResult.js.map +1 -0
  132. package/dist/dispatch/DispatchEvent.d.ts +18 -0
  133. package/dist/dispatch/DispatchEvent.d.ts.map +1 -0
  134. package/dist/dispatch/DispatchEvent.js +30 -0
  135. package/dist/dispatch/DispatchEvent.js.map +1 -0
  136. package/dist/dispatch/DispatchLifecycle.d.ts +9 -0
  137. package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -0
  138. package/dist/dispatch/DispatchLifecycle.js +25 -0
  139. package/dist/dispatch/DispatchLifecycle.js.map +1 -0
  140. package/dist/dispatch/DispatchPort.d.ts +6 -0
  141. package/dist/dispatch/DispatchPort.d.ts.map +1 -0
  142. package/dist/dispatch/DispatchPort.js +2 -0
  143. package/dist/dispatch/DispatchPort.js.map +1 -0
  144. package/dist/dispatch/Dispatcher.d.ts +16 -0
  145. package/dist/dispatch/Dispatcher.d.ts.map +1 -0
  146. package/dist/dispatch/Dispatcher.js +44 -0
  147. package/dist/dispatch/Dispatcher.js.map +1 -0
  148. package/dist/dispatch/InFlight.d.ts +12 -0
  149. package/dist/dispatch/InFlight.d.ts.map +1 -0
  150. package/dist/dispatch/InFlight.js +46 -0
  151. package/dist/dispatch/InFlight.js.map +1 -0
  152. package/dist/dispatch/InputValidator.d.ts +7 -0
  153. package/dist/dispatch/InputValidator.d.ts.map +1 -0
  154. package/dist/dispatch/InputValidator.js +21 -0
  155. package/dist/dispatch/InputValidator.js.map +1 -0
  156. package/dist/dispatch/LocalRoutePolicy.d.ts +11 -0
  157. package/dist/dispatch/LocalRoutePolicy.d.ts.map +1 -0
  158. package/dist/dispatch/LocalRoutePolicy.js +32 -0
  159. package/dist/dispatch/LocalRoutePolicy.js.map +1 -0
  160. package/dist/dispatch/OperationExecutor.d.ts +25 -0
  161. package/dist/dispatch/OperationExecutor.d.ts.map +1 -0
  162. package/dist/dispatch/OperationExecutor.js +32 -0
  163. package/dist/dispatch/OperationExecutor.js.map +1 -0
  164. package/dist/dispatch/OperationRoute.d.ts +13 -0
  165. package/dist/dispatch/OperationRoute.d.ts.map +1 -0
  166. package/dist/dispatch/OperationRoute.js +15 -0
  167. package/dist/dispatch/OperationRoute.js.map +1 -0
  168. package/dist/dispatch/OutputProjector.d.ts +12 -0
  169. package/dist/dispatch/OutputProjector.d.ts.map +1 -0
  170. package/dist/dispatch/OutputProjector.js +30 -0
  171. package/dist/dispatch/OutputProjector.js.map +1 -0
  172. package/dist/dispatch/OutputView.d.ts +8 -0
  173. package/dist/dispatch/OutputView.d.ts.map +1 -0
  174. package/dist/dispatch/OutputView.js +10 -0
  175. package/dist/dispatch/OutputView.js.map +1 -0
  176. package/dist/dispatch/PresenterArgumentResolver.d.ts +12 -0
  177. package/dist/dispatch/PresenterArgumentResolver.d.ts.map +1 -0
  178. package/dist/dispatch/PresenterArgumentResolver.js +20 -0
  179. package/dist/dispatch/PresenterArgumentResolver.js.map +1 -0
  180. package/dist/dispatch/PresenterExecutor.d.ts +11 -0
  181. package/dist/dispatch/PresenterExecutor.d.ts.map +1 -0
  182. package/dist/dispatch/PresenterExecutor.js +56 -0
  183. package/dist/dispatch/PresenterExecutor.js.map +1 -0
  184. package/dist/dispatch/RemoteRouteResolver.d.ts +13 -0
  185. package/dist/dispatch/RemoteRouteResolver.d.ts.map +1 -0
  186. package/dist/dispatch/RemoteRouteResolver.js +18 -0
  187. package/dist/dispatch/RemoteRouteResolver.js.map +1 -0
  188. package/dist/dispatch/Route.d.ts +10 -0
  189. package/dist/dispatch/Route.d.ts.map +1 -0
  190. package/dist/dispatch/Route.js +2 -0
  191. package/dist/dispatch/Route.js.map +1 -0
  192. package/dist/dispatch/RouteNotFoundError.d.ts +10 -0
  193. package/dist/dispatch/RouteNotFoundError.d.ts.map +1 -0
  194. package/dist/dispatch/RouteNotFoundError.js +24 -0
  195. package/dist/dispatch/RouteNotFoundError.js.map +1 -0
  196. package/dist/dispatch/RoutePolicy.d.ts +8 -0
  197. package/dist/dispatch/RoutePolicy.d.ts.map +1 -0
  198. package/dist/dispatch/RoutePolicy.js +2 -0
  199. package/dist/dispatch/RoutePolicy.js.map +1 -0
  200. package/dist/dispatch/RouteRegistry.d.ts +18 -0
  201. package/dist/dispatch/RouteRegistry.d.ts.map +1 -0
  202. package/dist/dispatch/RouteRegistry.js +62 -0
  203. package/dist/dispatch/RouteRegistry.js.map +1 -0
  204. package/dist/dispatch/RouteResolver.d.ts +7 -0
  205. package/dist/dispatch/RouteResolver.d.ts.map +1 -0
  206. package/dist/dispatch/RouteResolver.js +2 -0
  207. package/dist/dispatch/RouteResolver.js.map +1 -0
  208. package/dist/dispatch/StorageGuard.d.ts +15 -0
  209. package/dist/dispatch/StorageGuard.d.ts.map +1 -0
  210. package/dist/dispatch/StorageGuard.js +63 -0
  211. package/dist/dispatch/StorageGuard.js.map +1 -0
  212. package/dist/effective-operation.d.ts +90 -0
  213. package/dist/effective-operation.d.ts.map +1 -0
  214. package/dist/effective-operation.js +450 -0
  215. package/dist/effective-operation.js.map +1 -0
  216. package/dist/emit.js +2 -2
  217. package/dist/emit.js.map +1 -1
  218. package/dist/entry/DynamicFacade.d.ts +10 -0
  219. package/dist/entry/DynamicFacade.d.ts.map +1 -0
  220. package/dist/entry/DynamicFacade.js +27 -0
  221. package/dist/entry/DynamicFacade.js.map +1 -0
  222. package/dist/entry/FacadeEntry.d.ts +11 -0
  223. package/dist/entry/FacadeEntry.d.ts.map +1 -0
  224. package/dist/entry/FacadeEntry.js +26 -0
  225. package/dist/entry/FacadeEntry.js.map +1 -0
  226. package/dist/entry/TransportEntry.d.ts +13 -0
  227. package/dist/entry/TransportEntry.d.ts.map +1 -0
  228. package/dist/entry/TransportEntry.js +24 -0
  229. package/dist/entry/TransportEntry.js.map +1 -0
  230. package/dist/frond-config.d.ts +24 -7
  231. package/dist/frond-config.d.ts.map +1 -1
  232. package/dist/frond-config.js.map +1 -1
  233. package/dist/graph.d.ts +1 -1
  234. package/dist/graph.d.ts.map +1 -1
  235. package/dist/graph.js +3 -2
  236. package/dist/graph.js.map +1 -1
  237. package/dist/identity-keys.d.ts +14 -0
  238. package/dist/identity-keys.d.ts.map +1 -0
  239. package/dist/identity-keys.js +37 -0
  240. package/dist/identity-keys.js.map +1 -0
  241. package/dist/identity.d.ts +58 -0
  242. package/dist/identity.d.ts.map +1 -0
  243. package/dist/identity.js +182 -0
  244. package/dist/identity.js.map +1 -0
  245. package/dist/imports.d.ts +1 -1
  246. package/dist/imports.d.ts.map +1 -1
  247. package/dist/imports.js +7 -3
  248. package/dist/imports.js.map +1 -1
  249. package/dist/index.d.ts +57 -38
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +38 -32
  252. package/dist/index.js.map +1 -1
  253. package/dist/loader.d.ts +16 -0
  254. package/dist/loader.d.ts.map +1 -0
  255. package/dist/loader.js +25 -0
  256. package/dist/loader.js.map +1 -0
  257. package/dist/node.d.ts +21 -0
  258. package/dist/node.d.ts.map +1 -0
  259. package/dist/node.js +24 -0
  260. package/dist/node.js.map +1 -0
  261. package/dist/orm.d.ts +69 -8
  262. package/dist/orm.d.ts.map +1 -1
  263. package/dist/orm.js +35 -2
  264. package/dist/orm.js.map +1 -1
  265. package/dist/prefab/collector.d.ts +29 -0
  266. package/dist/prefab/collector.d.ts.map +1 -0
  267. package/dist/prefab/collector.js +34 -0
  268. package/dist/prefab/collector.js.map +1 -0
  269. package/dist/{crud.d.ts → prefab/crud.d.ts} +7 -8
  270. package/dist/prefab/crud.d.ts.map +1 -0
  271. package/dist/{crud.js → prefab/crud.js} +39 -5
  272. package/dist/prefab/crud.js.map +1 -0
  273. package/dist/prefab/mirror.d.ts +52 -0
  274. package/dist/prefab/mirror.d.ts.map +1 -0
  275. package/dist/prefab/mirror.js +66 -0
  276. package/dist/prefab/mirror.js.map +1 -0
  277. package/dist/prefab/prefab.d.ts +15 -0
  278. package/dist/prefab/prefab.d.ts.map +1 -0
  279. package/dist/prefab/prefab.js +19 -0
  280. package/dist/prefab/prefab.js.map +1 -0
  281. package/dist/{presenter.d.ts → prefab/presenter.d.ts} +6 -17
  282. package/dist/prefab/presenter.d.ts.map +1 -0
  283. package/dist/{presenter.js → prefab/presenter.js} +5 -23
  284. package/dist/prefab/presenter.js.map +1 -0
  285. package/dist/prefab/repository.d.ts +104 -0
  286. package/dist/prefab/repository.d.ts.map +1 -0
  287. package/dist/prefab/repository.js +62 -0
  288. package/dist/prefab/repository.js.map +1 -0
  289. package/dist/scan/Fronds.d.ts +45 -0
  290. package/dist/scan/Fronds.d.ts.map +1 -0
  291. package/dist/scan/Fronds.js +66 -0
  292. package/dist/scan/Fronds.js.map +1 -0
  293. package/dist/scan/conventions.d.ts +74 -0
  294. package/dist/scan/conventions.d.ts.map +1 -0
  295. package/dist/scan/conventions.js +82 -0
  296. package/dist/scan/conventions.js.map +1 -0
  297. package/dist/scan/emit.d.ts +14 -0
  298. package/dist/scan/emit.d.ts.map +1 -0
  299. package/dist/scan/emit.js +211 -0
  300. package/dist/scan/emit.js.map +1 -0
  301. package/dist/scan/frond.d.ts +224 -0
  302. package/dist/scan/frond.d.ts.map +1 -0
  303. package/dist/scan/frond.js +2 -0
  304. package/dist/scan/frond.js.map +1 -0
  305. package/dist/{handler-parser.d.ts → scan/handler-parser.d.ts} +18 -9
  306. package/dist/scan/handler-parser.d.ts.map +1 -0
  307. package/dist/scan/handler-parser.js +625 -0
  308. package/dist/scan/handler-parser.js.map +1 -0
  309. package/dist/scan/scan-cache.d.ts +16 -0
  310. package/dist/scan/scan-cache.d.ts.map +1 -0
  311. package/dist/{scan-cache.js → scan/scan-cache.js} +27 -20
  312. package/dist/scan/scan-cache.js.map +1 -0
  313. package/dist/scan/scanner.d.ts +20 -0
  314. package/dist/scan/scanner.d.ts.map +1 -0
  315. package/dist/{scanner.js → scan/scanner.js} +185 -167
  316. package/dist/scan/scanner.js.map +1 -0
  317. package/dist/verify.d.ts +16 -3
  318. package/dist/verify.d.ts.map +1 -1
  319. package/dist/verify.js +21 -18
  320. package/dist/verify.js.map +1 -1
  321. package/dist/{call.d.ts → wire/call.d.ts} +70 -1
  322. package/dist/wire/call.d.ts.map +1 -0
  323. package/dist/{call.js → wire/call.js} +48 -75
  324. package/dist/wire/call.js.map +1 -0
  325. package/dist/{middleware.d.ts → wire/errors.d.ts} +18 -19
  326. package/dist/wire/errors.d.ts.map +1 -0
  327. package/dist/{middleware.js → wire/errors.js} +26 -14
  328. package/dist/wire/errors.js.map +1 -0
  329. package/dist/{errors.d.ts → wire/http-error.d.ts} +5 -6
  330. package/dist/wire/http-error.d.ts.map +1 -0
  331. package/dist/{errors.js → wire/http-error.js} +7 -6
  332. package/dist/wire/http-error.js.map +1 -0
  333. package/dist/wire/invocation.d.ts +4 -0
  334. package/dist/wire/invocation.d.ts.map +1 -0
  335. package/dist/wire/invocation.js +3 -0
  336. package/dist/wire/invocation.js.map +1 -0
  337. package/dist/{middleware/logger.d.ts → wire/loggerMiddleware.d.ts} +3 -3
  338. package/dist/wire/loggerMiddleware.d.ts.map +1 -0
  339. package/dist/{middleware/logger.js → wire/loggerMiddleware.js} +2 -2
  340. package/dist/wire/loggerMiddleware.js.map +1 -0
  341. package/dist/wire/middleware.d.ts +29 -0
  342. package/dist/wire/middleware.d.ts.map +1 -0
  343. package/dist/wire/middleware.js +20 -0
  344. package/dist/wire/middleware.js.map +1 -0
  345. package/dist/{operation.d.ts → wire/operation.d.ts} +39 -10
  346. package/dist/wire/operation.d.ts.map +1 -0
  347. package/dist/wire/operation.js +167 -0
  348. package/dist/wire/operation.js.map +1 -0
  349. package/package.json +24 -7
  350. package/dist/binding.d.ts.map +0 -1
  351. package/dist/binding.js.map +0 -1
  352. package/dist/boot.d.ts.map +0 -1
  353. package/dist/boot.js +0 -53
  354. package/dist/boot.js.map +0 -1
  355. package/dist/bootstrap.d.ts.map +0 -1
  356. package/dist/bootstrap.js +0 -879
  357. package/dist/bootstrap.js.map +0 -1
  358. package/dist/call.d.ts.map +0 -1
  359. package/dist/call.js.map +0 -1
  360. package/dist/collector.d.ts +0 -28
  361. package/dist/collector.d.ts.map +0 -1
  362. package/dist/collector.js +0 -32
  363. package/dist/collector.js.map +0 -1
  364. package/dist/crud.d.ts.map +0 -1
  365. package/dist/crud.js.map +0 -1
  366. package/dist/egress.d.ts +0 -52
  367. package/dist/egress.d.ts.map +0 -1
  368. package/dist/egress.js +0 -186
  369. package/dist/egress.js.map +0 -1
  370. package/dist/errors.d.ts.map +0 -1
  371. package/dist/errors.js.map +0 -1
  372. package/dist/handler-parser.d.ts.map +0 -1
  373. package/dist/handler-parser.js +0 -505
  374. package/dist/handler-parser.js.map +0 -1
  375. package/dist/invocation.d.ts +0 -20
  376. package/dist/invocation.d.ts.map +0 -1
  377. package/dist/invocation.js +0 -15
  378. package/dist/invocation.js.map +0 -1
  379. package/dist/middleware/error-handler.d.ts +0 -15
  380. package/dist/middleware/error-handler.d.ts.map +0 -1
  381. package/dist/middleware/error-handler.js +0 -29
  382. package/dist/middleware/error-handler.js.map +0 -1
  383. package/dist/middleware/logger.d.ts.map +0 -1
  384. package/dist/middleware/logger.js.map +0 -1
  385. package/dist/middleware.d.ts.map +0 -1
  386. package/dist/middleware.js.map +0 -1
  387. package/dist/mirror.d.ts +0 -93
  388. package/dist/mirror.d.ts.map +0 -1
  389. package/dist/mirror.js +0 -96
  390. package/dist/mirror.js.map +0 -1
  391. package/dist/operation.d.ts.map +0 -1
  392. package/dist/operation.js +0 -95
  393. package/dist/operation.js.map +0 -1
  394. package/dist/presenter.d.ts.map +0 -1
  395. package/dist/presenter.js.map +0 -1
  396. package/dist/remote.d.ts.map +0 -1
  397. package/dist/remote.js.map +0 -1
  398. package/dist/repository.d.ts +0 -55
  399. package/dist/repository.d.ts.map +0 -1
  400. package/dist/repository.js +0 -26
  401. package/dist/repository.js.map +0 -1
  402. package/dist/scan-cache.d.ts +0 -10
  403. package/dist/scan-cache.d.ts.map +0 -1
  404. package/dist/scan-cache.js.map +0 -1
  405. package/dist/scanner.d.ts +0 -34
  406. package/dist/scanner.d.ts.map +0 -1
  407. package/dist/scanner.js.map +0 -1
  408. package/dist/seed.d.ts.map +0 -1
  409. package/dist/seed.js.map +0 -1
  410. package/dist/types.d.ts +0 -421
  411. package/dist/types.d.ts.map +0 -1
  412. package/dist/types.js.map +0 -1
  413. /package/dist/{bootstrap.d.ts → boot/bootstrap.d.ts} +0 -0
  414. /package/dist/{types.js → boot/types.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/crypto/port.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,4BAA4B;AAC5B,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED,2BAA2B;AAC3B,MAAM,WAAW,QAAQ;IACvB,yEAAyE;IACzE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAED,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,sDAAsD;IACtD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,uEAAuE;IACvE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxD"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The two Ed25519 gestures a signed call needs, and the one hash that binds it.
3
+ *
4
+ * Node signs 59% faster than WebCrypto on the same curve (measured 2026-08-23: 14.30 µs
5
+ * against 22.72 µs per signature, 34.42 against 41.81 to verify), so this is a PORT with
6
+ * two realizations and not one implementation at the lowest common denominator. `#crypto`
7
+ * resolves to `crypto/node.ts` everywhere except under the `workerd` condition — the
8
+ * bundler picks at build time, and neither half ever appears in the other's output.
9
+ *
10
+ * The shape is async because WebCrypto is. On Node that costs one microtask, which the
11
+ * same measurement puts inside the noise of the signature itself (14.30 sync against
12
+ * 14.28 awaited) — awaiting is free, converting is not.
13
+ *
14
+ * A KEY IS PARSED ONCE. `crypto.subtle.importKey` is async and per-key, so an interface
15
+ * shaped `sign(key, data)` would import on every call; `signerOf(pem)` hands back
16
+ * something that holds the parsed key, and a boot builds it once.
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.js","sourceRoot":"","sources":["../../src/crypto/port.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
@@ -0,0 +1,4 @@
1
+ import type { CryptoPort, PublicJwk, Signer, Verifier } from './port.js';
2
+ export declare const crypto: CryptoPort;
3
+ export type { CryptoPort, PublicJwk, Signer, Verifier };
4
+ //# sourceMappingURL=webcrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webcrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/webcrypto.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAqBzE,eAAO,MAAM,MAAM,EAAE,UAkBpB,CAAC;AAEF,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Ed25519 through WebCrypto — what a runtime with no `node:` builtin has.
3
+ *
4
+ * Verified in real workerd with no compatibility flag (2026-08-23): sign, verify, a JWK
5
+ * import, an SPKI import and SHA-256 all answer. `Ed25519` is the algorithm name; the
6
+ * older `NODE-ED25519` spelling is not used, and a runtime that only knows that one will
7
+ * refuse at `importKey` rather than silently signing with something else.
8
+ *
9
+ * The four gestures are declared here rather than pulled from `lib.dom`: this package
10
+ * compiles with `lib: ["ESNext"]` and naming DOM would make every consumer carry a
11
+ * browser's globals to read a server type. What the file needs IS the declaration.
12
+ */
13
+ import { derOf } from './encoding.js';
14
+ const ED25519 = { name: 'Ed25519' };
15
+ /** Read at call time — a Worker has the global, and reading it at module load does not. */
16
+ const subtle = () => globalThis.crypto.subtle;
17
+ export const crypto = {
18
+ async sha256(data) {
19
+ return new Uint8Array(await subtle().digest('SHA-256', data));
20
+ },
21
+ async signerOf(privateKeyPem) {
22
+ // Imported once, at boot. Doing it per call would put an async key parse inside
23
+ // every outgoing request — the reason the port hands back a signer at all.
24
+ const key = await subtle().importKey('pkcs8', derOf(privateKeyPem), ED25519, false, ['sign']);
25
+ return { async sign(data) { return new Uint8Array(await subtle().sign(ED25519, key, data)); } };
26
+ },
27
+ async verifierOf(key) {
28
+ const imported = typeof key === 'string'
29
+ ? await subtle().importKey('spki', derOf(key), ED25519, false, ['verify'])
30
+ : await subtle().importKey('jwk', key, ED25519, false, ['verify']);
31
+ return { verify: (data, signature) => subtle().verify(ED25519, imported, signature, data) };
32
+ },
33
+ };
34
+ //# sourceMappingURL=webcrypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webcrypto.js","sourceRoot":"","sources":["../../src/crypto/webcrypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAgBtC,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAW,CAAC;AAE7C,2FAA2F;AAC3F,MAAM,MAAM,GAAG,GAAc,EAAE,CAC5B,UAA2D,CAAC,MAAM,CAAC,MAAM,CAAC;AAE7E,MAAM,CAAC,MAAM,MAAM,GAAe;IAChC,KAAK,CAAC,MAAM,CAAC,IAAI;QACf,OAAO,IAAI,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAa;QAC1B,gFAAgF;QAChF,2EAA2E;QAC3E,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9F,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAG;QAClB,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ;YACtC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC1E,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;IAC9F,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type BindingPlan, type CollectorResolver } from '../boot/binding.js';
2
+ import type { InvocationContext } from '../contract/Invocation.js';
3
+ export type CollectorLookup = (typeName: string) => CollectorResolver | undefined;
4
+ /** Resolves an operation's declared binding plan against one invocation. */
5
+ export declare class ArgumentResolver {
6
+ private readonly collectors?;
7
+ constructor(collectors?: CollectorLookup | undefined);
8
+ resolve(plan: BindingPlan, invocation: InvocationContext): Promise<unknown[]>;
9
+ }
10
+ //# sourceMappingURL=ArgumentResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArgumentResolver.d.ts","sourceRoot":"","sources":["../../src/dispatch/ArgumentResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAElF,4EAA4E;AAC5E,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAX,UAAU,CAAC,EAAE,eAAe,YAAA;IAEzD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAG9E"}
@@ -0,0 +1,12 @@
1
+ import { resolveArgs, } from '../boot/binding.js';
2
+ /** Resolves an operation's declared binding plan against one invocation. */
3
+ export class ArgumentResolver {
4
+ collectors;
5
+ constructor(collectors) {
6
+ this.collectors = collectors;
7
+ }
8
+ resolve(plan, invocation) {
9
+ return resolveArgs(plan, invocation, this.collectors);
10
+ }
11
+ }
12
+ //# sourceMappingURL=ArgumentResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArgumentResolver.js","sourceRoot":"","sources":["../../src/dispatch/ArgumentResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAGZ,MAAM,oBAAoB,CAAC;AAK5B,4EAA4E;AAC5E,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;IAAG,CAAC;IAE7D,OAAO,CAAC,IAAiB,EAAE,UAA6B;QACtD,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ /** Preserve the named properties carried by a list result when its rows are replaced. */
2
+ export declare function preserveArrayProperties<T extends unknown[]>(source: unknown[], target: T): T;
3
+ //# sourceMappingURL=ArrayResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayResult.d.ts","sourceRoot":"","sources":["../../src/dispatch/ArrayResult.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAQ5F"}
@@ -0,0 +1,11 @@
1
+ /** Preserve the named properties carried by a list result when its rows are replaced. */
2
+ export function preserveArrayProperties(source, target) {
3
+ for (const key of Object.keys(source)) {
4
+ if (!/^\d+$/.test(key)) {
5
+ target[key] =
6
+ source[key];
7
+ }
8
+ }
9
+ return target;
10
+ }
11
+ //# sourceMappingURL=ArrayResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayResult.js","sourceRoot":"","sources":["../../src/dispatch/ArrayResult.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAsB,MAAiB,EAAE,MAAS;IACvF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAA6C,CAAC,GAAG,CAAC;gBAChD,MAA6C,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Call } from '../contract/Call.js';
2
+ import type { RouteKind } from './Route.js';
3
+ export type DispatchStage = 'received' | 'resolved' | 'completed' | 'failed' | 'settled';
4
+ /** Immutable transition observed across one dispatch lifecycle. */
5
+ export declare class DispatchEvent {
6
+ readonly stage: DispatchStage;
7
+ readonly call: Call;
8
+ readonly routeKind?: RouteKind | undefined;
9
+ readonly error?: unknown | undefined;
10
+ private constructor();
11
+ static received(call: Call): DispatchEvent;
12
+ static resolved(call: Call, routeKind: RouteKind): DispatchEvent;
13
+ static completed(call: Call, routeKind: RouteKind): DispatchEvent;
14
+ static failed(call: Call, error: unknown, routeKind?: RouteKind): DispatchEvent;
15
+ static settled(call: Call, routeKind?: RouteKind): DispatchEvent;
16
+ }
17
+ export type DispatchObserver = (event: DispatchEvent) => void;
18
+ //# sourceMappingURL=DispatchEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchEvent.d.ts","sourceRoot":"","sources":["../../src/dispatch/DispatchEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzF,mEAAmE;AACnE,qBAAa,aAAa;IAEtB,QAAQ,CAAC,KAAK,EAAE,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI;IACnB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;IAJ1B,OAAO;IASP,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa;IAI1C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa;IAIhE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa;IAIjE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,aAAa;IAI/E,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,aAAa;CAGjE;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC"}
@@ -0,0 +1,30 @@
1
+ /** Immutable transition observed across one dispatch lifecycle. */
2
+ export class DispatchEvent {
3
+ stage;
4
+ call;
5
+ routeKind;
6
+ error;
7
+ constructor(stage, call, routeKind, error) {
8
+ this.stage = stage;
9
+ this.call = call;
10
+ this.routeKind = routeKind;
11
+ this.error = error;
12
+ Object.freeze(this);
13
+ }
14
+ static received(call) {
15
+ return new DispatchEvent('received', call);
16
+ }
17
+ static resolved(call, routeKind) {
18
+ return new DispatchEvent('resolved', call, routeKind);
19
+ }
20
+ static completed(call, routeKind) {
21
+ return new DispatchEvent('completed', call, routeKind);
22
+ }
23
+ static failed(call, error, routeKind) {
24
+ return new DispatchEvent('failed', call, routeKind, error);
25
+ }
26
+ static settled(call, routeKind) {
27
+ return new DispatchEvent('settled', call, routeKind);
28
+ }
29
+ }
30
+ //# sourceMappingURL=DispatchEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchEvent.js","sourceRoot":"","sources":["../../src/dispatch/DispatchEvent.ts"],"names":[],"mappings":"AAKA,mEAAmE;AACnE,MAAM,OAAO,aAAa;IAEb;IACA;IACA;IACA;IAJX,YACW,KAAoB,EACpB,IAAU,EACV,SAAqB,EACrB,KAAe;QAHf,UAAK,GAAL,KAAK,CAAe;QACpB,SAAI,GAAJ,IAAI,CAAM;QACV,cAAS,GAAT,SAAS,CAAY;QACrB,UAAK,GAAL,KAAK,CAAU;QAExB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAU;QACxB,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAU,EAAE,SAAoB;QAC9C,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAU,EAAE,SAAoB;QAC/C,OAAO,IAAI,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAU,EAAE,KAAc,EAAE,SAAqB;QAC7D,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAU,EAAE,SAAqB;QAC9C,OAAO,IAAI,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import type { DispatchEvent, DispatchObserver } from './DispatchEvent.js';
2
+ /** Publishes dispatch transitions without participating in dispatch decisions. */
3
+ export declare class DispatchLifecycle {
4
+ private readonly observers;
5
+ private readonly diagnose;
6
+ constructor(observers?: readonly DispatchObserver[], diagnose?: (error: unknown, event: DispatchEvent) => void);
7
+ publish(event: DispatchEvent): void;
8
+ }
9
+ //# sourceMappingURL=DispatchLifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchLifecycle.d.ts","sourceRoot":"","sources":["../../src/dispatch/DispatchLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,kFAAkF;AAClF,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,SAAS,GAAE,SAAS,gBAAgB,EAAO,EAC3C,QAAQ,GAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,IAAe;IAGtF,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAapC"}
@@ -0,0 +1,25 @@
1
+ /** Publishes dispatch transitions without participating in dispatch decisions. */
2
+ export class DispatchLifecycle {
3
+ observers;
4
+ diagnose;
5
+ constructor(observers = [], diagnose = () => { }) {
6
+ this.observers = observers;
7
+ this.diagnose = diagnose;
8
+ }
9
+ publish(event) {
10
+ for (const observer of this.observers) {
11
+ try {
12
+ observer(event);
13
+ }
14
+ catch (error) {
15
+ try {
16
+ this.diagnose(error, event);
17
+ }
18
+ catch {
19
+ // Diagnostics remain observational too.
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ //# sourceMappingURL=DispatchLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchLifecycle.js","sourceRoot":"","sources":["../../src/dispatch/DispatchLifecycle.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,OAAO,iBAAiB;IAET;IACA;IAFnB,YACmB,YAAyC,EAAE,EAC3C,WAA2D,GAAG,EAAE,GAAE,CAAC;QADnE,cAAS,GAAT,SAAS,CAAkC;QAC3C,aAAQ,GAAR,QAAQ,CAA2D;IACnF,CAAC;IAEJ,OAAO,CAAC,KAAoB;QAC1B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,wCAAwC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { Call } from '../contract/Call.js';
2
+ /** The only capability an entry needs. */
3
+ export interface DispatchPort {
4
+ dispatch(call: Call): Promise<unknown>;
5
+ }
6
+ //# sourceMappingURL=DispatchPort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchPort.d.ts","sourceRoot":"","sources":["../../src/dispatch/DispatchPort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DispatchPort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchPort.js","sourceRoot":"","sources":["../../src/dispatch/DispatchPort.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { Call } from '../contract/Call.js';
2
+ import { DispatchLifecycle } from './DispatchLifecycle.js';
3
+ import type { DispatchPort } from './DispatchPort.js';
4
+ import type { RoutePolicy } from './RoutePolicy.js';
5
+ import { RouteRegistry } from './RouteRegistry.js';
6
+ import type { InFlight } from './InFlight.js';
7
+ /** Resolves and executes every call through the same transverse lifecycle. */
8
+ export declare class Dispatcher implements DispatchPort {
9
+ private readonly routes;
10
+ private readonly inFlight;
11
+ private readonly lifecycle;
12
+ private readonly policy?;
13
+ constructor(routes: RouteRegistry, inFlight: InFlight, lifecycle?: DispatchLifecycle, policy?: RoutePolicy | undefined);
14
+ dispatch(call: Call): Promise<unknown>;
15
+ }
16
+ //# sourceMappingURL=Dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../../src/dispatch/Dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,8EAA8E;AAC9E,qBAAa,UAAW,YAAW,YAAY;IAE3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAHP,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,oBAA0B,EACnC,MAAM,CAAC,EAAE,WAAW,YAAA;IAGjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;CA4B7C"}
@@ -0,0 +1,44 @@
1
+ import { DispatchEvent } from './DispatchEvent.js';
2
+ import { DispatchLifecycle } from './DispatchLifecycle.js';
3
+ import { RouteNotFoundError } from './RouteNotFoundError.js';
4
+ /** Resolves and executes every call through the same transverse lifecycle. */
5
+ export class Dispatcher {
6
+ routes;
7
+ inFlight;
8
+ lifecycle;
9
+ policy;
10
+ constructor(routes, inFlight, lifecycle = new DispatchLifecycle(), policy) {
11
+ this.routes = routes;
12
+ this.inFlight = inFlight;
13
+ this.lifecycle = lifecycle;
14
+ this.policy = policy;
15
+ }
16
+ async dispatch(call) {
17
+ let route;
18
+ let release;
19
+ this.lifecycle.publish(DispatchEvent.received(call));
20
+ try {
21
+ release = this.inFlight.enter(call.address.entity, call.address.operation);
22
+ const known = this.routes.find(call.address);
23
+ const resolved = known ?? await this.routes.resolve(call.address);
24
+ route = resolved && (!this.policy || this.policy.accepts(resolved)) ? resolved : undefined;
25
+ if (!route) {
26
+ throw this.policy?.notFound?.(call, this.routes.routes())
27
+ ?? new RouteNotFoundError(call, this.routes.routes(), this.policy);
28
+ }
29
+ this.lifecycle.publish(DispatchEvent.resolved(call, route.kind));
30
+ const result = await route.execute(call);
31
+ this.lifecycle.publish(DispatchEvent.completed(call, route.kind));
32
+ return result;
33
+ }
34
+ catch (error) {
35
+ this.lifecycle.publish(DispatchEvent.failed(call, error, route?.kind));
36
+ throw error;
37
+ }
38
+ finally {
39
+ this.lifecycle.publish(DispatchEvent.settled(call, route?.kind));
40
+ release?.();
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=Dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dispatcher.js","sourceRoot":"","sources":["../../src/dispatch/Dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,8EAA8E;AAC9E,MAAM,OAAO,UAAU;IAEF;IACA;IACA;IACA;IAJnB,YACmB,MAAqB,EACrB,QAAkB,EAClB,YAAY,IAAI,iBAAiB,EAAE,EACnC,MAAoB;QAHpB,WAAM,GAAN,MAAM,CAAe;QACrB,aAAQ,GAAR,QAAQ,CAAU;QAClB,cAAS,GAAT,SAAS,CAA0B;QACnC,WAAM,GAAN,MAAM,CAAc;IACpC,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,IAAU;QACvB,IAAI,KAAwB,CAAC;QAC7B,IAAI,OAAiC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,KAAK,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;uBACpD,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACvE,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACjE,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;IACH,CAAC;CAEF"}
@@ -0,0 +1,12 @@
1
+ /** Controls dispatch admission and signals when every accepted call has settled. */
2
+ export declare class InFlight {
3
+ private running;
4
+ private accepting;
5
+ private idle;
6
+ get count(): number;
7
+ get open(): boolean;
8
+ enter(entity: string, operation: string): () => void;
9
+ close(): void;
10
+ whenIdle(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=InFlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlight.d.ts","sourceRoot":"","sources":["../../src/dispatch/InFlight.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,IAAI,CAAyB;IAErC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,IAAI;IAwBpD,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAI1B"}
@@ -0,0 +1,46 @@
1
+ import { FougereError, ErrorCode } from '../wire/errors.js';
2
+ /** Controls dispatch admission and signals when every accepted call has settled. */
3
+ export class InFlight {
4
+ running = 0;
5
+ accepting = true;
6
+ idle = [];
7
+ get count() {
8
+ return this.running;
9
+ }
10
+ get open() {
11
+ return this.accepting;
12
+ }
13
+ enter(entity, operation) {
14
+ if (!this.accepting) {
15
+ throw new FougereError({
16
+ code: ErrorCode.SERVICE_UNAVAILABLE,
17
+ message: 'This app is being released and takes no new call — reach the current one through its handle.',
18
+ entity,
19
+ operation,
20
+ });
21
+ }
22
+ this.running++;
23
+ let released = false;
24
+ return () => {
25
+ if (released)
26
+ return;
27
+ released = true;
28
+ this.running--;
29
+ if (this.running !== 0)
30
+ return;
31
+ const waiting = this.idle;
32
+ this.idle = [];
33
+ for (const wake of waiting)
34
+ wake();
35
+ };
36
+ }
37
+ close() {
38
+ this.accepting = false;
39
+ }
40
+ whenIdle() {
41
+ if (this.running === 0)
42
+ return Promise.resolve();
43
+ return new Promise((resolve) => this.idle.push(resolve));
44
+ }
45
+ }
46
+ //# sourceMappingURL=InFlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InFlight.js","sourceRoot":"","sources":["../../src/dispatch/InFlight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE5D,oFAAoF;AACpF,MAAM,OAAO,QAAQ;IACX,OAAO,GAAG,CAAC,CAAC;IACZ,SAAS,GAAG,IAAI,CAAC;IACjB,IAAI,GAAsB,EAAE,CAAC;IAErC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,SAAiB;QACrC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,SAAS,CAAC,mBAAmB;gBACnC,OAAO,EAAE,8FAA8F;gBACvG,MAAM;gBACN,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;gBAAE,OAAO;YAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,OAAO;gBAAE,IAAI,EAAE,CAAC;QACrC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import { type SchemaView } from '@fougere/schema';
2
+ import type { InvocationContext } from '../contract/Invocation.js';
3
+ /** Validates and decodes the input body declared by one operation contract. */
4
+ export declare class InputValidator {
5
+ validate(schema: SchemaView | undefined, invocation: InvocationContext, entity: string, operation: string): InvocationContext;
6
+ }
7
+ //# sourceMappingURL=InputValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputValidator.d.ts","sourceRoot":"","sources":["../../src/dispatch/InputValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,+EAA+E;AAC/E,qBAAa,cAAc;IACzB,QAAQ,CACN,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,iBAAiB;CAmBrB"}
@@ -0,0 +1,21 @@
1
+ import { Judge } from '@fougere/schema';
2
+ import { ErrorCode, FougereError } from '../wire/errors.js';
3
+ /** Validates and decodes the input body declared by one operation contract. */
4
+ export class InputValidator {
5
+ validate(schema, invocation, entity, operation) {
6
+ if (!schema || invocation.body === undefined || invocation.body === null)
7
+ return invocation;
8
+ const result = Judge.row(schema.getFields(), invocation.body, { patch: schema.getOpts().patch });
9
+ if (!result.success) {
10
+ throw new FougereError({
11
+ code: ErrorCode.VALIDATION_FAILED,
12
+ message: result.errors.map((error) => `${error.path}: ${error.message}`).join(', '),
13
+ details: result.errors,
14
+ entity,
15
+ operation,
16
+ });
17
+ }
18
+ return { ...invocation, body: result.data };
19
+ }
20
+ }
21
+ //# sourceMappingURL=InputValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputValidator.js","sourceRoot":"","sources":["../../src/dispatch/InputValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,+EAA+E;AAC/E,MAAM,OAAO,cAAc;IACzB,QAAQ,CACN,MAA8B,EAC9B,UAA6B,EAC7B,MAAc,EACd,SAAiB;QAEjB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAE5F,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CACtB,MAAM,CAAC,SAAS,EAAE,EAClB,UAAU,CAAC,IAAI,EACf,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAClC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,SAAS,CAAC,iBAAiB;gBACjC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnF,OAAO,EAAE,MAAM,CAAC,MAAM;gBACtB,MAAM;gBACN,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { Call } from '../contract/Call.js';
2
+ import type { Route } from './Route.js';
3
+ import type { RoutePolicy } from './RoutePolicy.js';
4
+ /** Incoming calls may execute here but never forward to another host. */
5
+ export declare class LocalRoutePolicy implements RoutePolicy {
6
+ private readonly hostedNames;
7
+ constructor(hostedNames: (surface?: string) => string[]);
8
+ accepts(route: Route): boolean;
9
+ notFound(call: Call, routes: readonly Route[]): Error | undefined;
10
+ }
11
+ //# sourceMappingURL=LocalRoutePolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalRoutePolicy.d.ts","sourceRoot":"","sources":["../../src/dispatch/LocalRoutePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,yEAAyE;AACzE,qBAAa,gBAAiB,YAAW,WAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE;IAExE,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAI9B,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,KAAK,GAAG,SAAS;CAmBlE"}
@@ -0,0 +1,32 @@
1
+ import { ErrorCode, FougereError } from '../wire/errors.js';
2
+ import { RouteNotFoundError } from './RouteNotFoundError.js';
3
+ /** Incoming calls may execute here but never forward to another host. */
4
+ export class LocalRoutePolicy {
5
+ hostedNames;
6
+ constructor(hostedNames) {
7
+ this.hostedNames = hostedNames;
8
+ }
9
+ accepts(route) {
10
+ return route.kind !== 'remote';
11
+ }
12
+ notFound(call, routes) {
13
+ if (call.address.entity === 'rpc')
14
+ return undefined;
15
+ const unknownRoute = new RouteNotFoundError(call, routes, this);
16
+ if (unknownRoute.servedOperations.length > 0)
17
+ return unknownRoute;
18
+ const hosted = this.hostedNames(call.address.surface);
19
+ const entity = call.address.entity;
20
+ const surface = call.address.surface;
21
+ return new FougereError({
22
+ code: ErrorCode.NOT_FOUND,
23
+ message: (surface
24
+ ? `Entity '${entity}' is not served on surface '${surface}'`
25
+ : `Entity '${entity}' is not hosted here`)
26
+ + (hosted.length ? `. Hosted here: ${hosted.join(', ')}.` : '. This app hosts no entity.'),
27
+ entity,
28
+ operation: call.address.operation,
29
+ });
30
+ }
31
+ }
32
+ //# sourceMappingURL=LocalRoutePolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalRoutePolicy.js","sourceRoot":"","sources":["../../src/dispatch/LocalRoutePolicy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,yEAAyE;AACzE,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,WAA2C;QAA3C,gBAAW,GAAX,WAAW,CAAgC;IAAG,CAAC;IAE5E,OAAO,CAAC,KAAY;QAClB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IACjC,CAAC;IAED,QAAQ,CAAC,IAAU,EAAE,MAAwB;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QAEpD,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,YAAY,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QAElE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACrC,OAAO,IAAI,YAAY,CAAC;YACtB,IAAI,EAAE,SAAS,CAAC,SAAS;YACzB,OAAO,EAAE,CAAC,OAAO;gBACf,CAAC,CAAC,WAAW,MAAM,+BAA+B,OAAO,GAAG;gBAC5D,CAAC,CAAC,WAAW,MAAM,sBAAsB,CAAC;kBACxC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B,CAAC;YAC5F,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAClC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { InvocationContext } from '../contract/Invocation.js';
2
+ import type { OperationContract } from '../wire/operation.js';
3
+ import { type AppMiddleware } from '../wire/middleware.js';
4
+ import type { ArgumentResolver } from './ArgumentResolver.js';
5
+ import type { InputValidator } from './InputValidator.js';
6
+ import type { OutputProjector } from './OutputProjector.js';
7
+ export interface OperationExecution {
8
+ entity: string;
9
+ frond: string;
10
+ operation: string;
11
+ contract: OperationContract | undefined;
12
+ middlewares: () => AppMiddleware[];
13
+ validator: InputValidator;
14
+ arguments: ArgumentResolver;
15
+ invoke: (args: unknown[]) => unknown | Promise<unknown>;
16
+ projector: OutputProjector;
17
+ present?: (result: unknown, invocation: InvocationContext) => Promise<unknown>;
18
+ }
19
+ /** Executes one operation through the same ordered boundary steps on every route. */
20
+ export declare class OperationExecutor {
21
+ private readonly execution;
22
+ constructor(execution: OperationExecution);
23
+ execute(input?: Partial<InvocationContext>): Promise<unknown>;
24
+ }
25
+ //# sourceMappingURL=OperationExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationExecutor.d.ts","sourceRoot":"","sources":["../../src/dispatch/OperationExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,WAAW,EAAE,MAAM,aAAa,EAAE,CAAC;IACnC,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAChF;AAED,qFAAqF;AACrF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,kBAAkB;IAEpD,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CA8BpE"}
@@ -0,0 +1,32 @@
1
+ import { canonicalInvocation } from '../contract/Invocation.js';
2
+ import { runMiddlewares, } from '../wire/middleware.js';
3
+ /** Executes one operation through the same ordered boundary steps on every route. */
4
+ export class OperationExecutor {
5
+ execution;
6
+ constructor(execution) {
7
+ this.execution = execution;
8
+ }
9
+ async execute(input) {
10
+ const invocation = canonicalInvocation(input);
11
+ const context = {
12
+ entity: this.execution.entity,
13
+ frond: this.execution.frond,
14
+ operation: this.execution.operation,
15
+ args: [],
16
+ state: invocation.state,
17
+ invocation,
18
+ };
19
+ return runMiddlewares(this.execution.middlewares(), context, async () => {
20
+ const effective = this.execution.validator.validate(this.execution.contract?.input, invocation, context.entity, context.operation);
21
+ context.invocation = effective;
22
+ const args = this.execution.contract?.binding
23
+ ? await this.execution.arguments.resolve(this.execution.contract.binding, effective)
24
+ : [];
25
+ const projected = this.execution.projector.project(await this.execution.invoke(args));
26
+ return this.execution.present
27
+ ? this.execution.present(projected, effective)
28
+ : projected;
29
+ });
30
+ }
31
+ }
32
+ //# sourceMappingURL=OperationExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationExecutor.js","sourceRoot":"","sources":["../../src/dispatch/OperationExecutor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EACL,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAkB/B,qFAAqF;AACrF,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,SAA6B;QAA7B,cAAS,GAAT,SAAS,CAAoB;IAAG,CAAC;IAE9D,KAAK,CAAC,OAAO,CAAC,KAAkC;QAC9C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAqB;YAChC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAC7B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YACnC,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,UAAU;SACX,CAAC;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CACjD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAC9B,UAAU,EACV,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CAAC;YACF,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO;gBAC3C,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;gBACpF,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAChD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAClC,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;gBAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;gBAC9C,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { Call } from '../contract/Call.js';
2
+ import type { RouteAddress } from '../contract/RouteAddress.js';
3
+ import type { Route } from './Route.js';
4
+ export type RouteExecution = (call: Call) => unknown | Promise<unknown>;
5
+ /** One executable route, distinguished by its routing kind. */
6
+ export declare class OperationRoute implements Route {
7
+ readonly kind: Route['kind'];
8
+ readonly address: RouteAddress;
9
+ private readonly execution;
10
+ constructor(kind: Route['kind'], address: RouteAddress, execution: RouteExecution);
11
+ execute(call: Call): Promise<unknown>;
12
+ }
13
+ //# sourceMappingURL=OperationRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationRoute.d.ts","sourceRoot":"","sources":["../../src/dispatch/OperationRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAExE,+DAA+D;AAC/D,qBAAa,cAAe,YAAW,KAAK;IAExC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,YAAY;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFjB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EACnB,OAAO,EAAE,YAAY,EACb,SAAS,EAAE,cAAc;IAGtC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;CAG5C"}
@@ -0,0 +1,15 @@
1
+ /** One executable route, distinguished by its routing kind. */
2
+ export class OperationRoute {
3
+ kind;
4
+ address;
5
+ execution;
6
+ constructor(kind, address, execution) {
7
+ this.kind = kind;
8
+ this.address = address;
9
+ this.execution = execution;
10
+ }
11
+ async execute(call) {
12
+ return (await this.execution(call)) ?? null;
13
+ }
14
+ }
15
+ //# sourceMappingURL=OperationRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationRoute.js","sourceRoot":"","sources":["../../src/dispatch/OperationRoute.ts"],"names":[],"mappings":"AAMA,+DAA+D;AAC/D,MAAM,OAAO,cAAc;IAEd;IACA;IACQ;IAHnB,YACW,IAAmB,EACnB,OAAqB,EACb,SAAyB;QAFjC,SAAI,GAAJ,IAAI,CAAe;QACnB,YAAO,GAAP,OAAO,CAAc;QACb,cAAS,GAAT,SAAS,CAAgB;IACzC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,IAAU;QACtB,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;CACF"}