@fougere/core 0.5.0-alpha.1 → 0.7.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 (519) hide show
  1. package/README.md +1 -1
  2. package/dist/boot/Emissions.d.ts +14 -91
  3. package/dist/boot/Emissions.d.ts.map +1 -1
  4. package/dist/boot/Emissions.js +21 -118
  5. package/dist/boot/Emissions.js.map +1 -1
  6. package/dist/boot/ambient-port.d.ts +3 -24
  7. package/dist/boot/ambient-port.d.ts.map +1 -1
  8. package/dist/boot/ambient.als.d.ts.map +1 -1
  9. package/dist/boot/ambient.als.js +7 -12
  10. package/dist/boot/ambient.als.js.map +1 -1
  11. package/dist/boot/ambient.queue.d.ts +2 -5
  12. package/dist/boot/ambient.queue.d.ts.map +1 -1
  13. package/dist/boot/ambient.queue.js.map +1 -1
  14. package/dist/boot/apply.d.ts +1 -13
  15. package/dist/boot/apply.d.ts.map +1 -1
  16. package/dist/boot/apply.js +3 -15
  17. package/dist/boot/apply.js.map +1 -1
  18. package/dist/boot/auth.d.ts +6 -16
  19. package/dist/boot/auth.d.ts.map +1 -1
  20. package/dist/boot/boot.d.ts +5 -18
  21. package/dist/boot/boot.d.ts.map +1 -1
  22. package/dist/boot/boot.js +4 -11
  23. package/dist/boot/boot.js.map +1 -1
  24. package/dist/boot/bootstrap.d.ts.map +1 -1
  25. package/dist/boot/bootstrap.js +106 -163
  26. package/dist/boot/bootstrap.js.map +1 -1
  27. package/dist/boot/card.d.ts +5 -0
  28. package/dist/boot/card.d.ts.map +1 -0
  29. package/dist/boot/card.js +71 -0
  30. package/dist/boot/card.js.map +1 -0
  31. package/dist/boot/frame.d.ts +8 -32
  32. package/dist/boot/frame.d.ts.map +1 -1
  33. package/dist/boot/frame.js +23 -57
  34. package/dist/boot/frame.js.map +1 -1
  35. package/dist/boot/hosted.d.ts +3 -19
  36. package/dist/boot/hosted.d.ts.map +1 -1
  37. package/dist/boot/hosted.js +12 -17
  38. package/dist/boot/hosted.js.map +1 -1
  39. package/dist/boot/ownership.d.ts +5 -36
  40. package/dist/boot/ownership.d.ts.map +1 -1
  41. package/dist/boot/ownership.js +9 -49
  42. package/dist/boot/ownership.js.map +1 -1
  43. package/dist/boot/ports.d.ts +2 -15
  44. package/dist/boot/ports.d.ts.map +1 -1
  45. package/dist/boot/ports.js +1 -14
  46. package/dist/boot/ports.js.map +1 -1
  47. package/dist/boot/remote.d.ts +5 -38
  48. package/dist/boot/remote.d.ts.map +1 -1
  49. package/dist/boot/remote.js +8 -41
  50. package/dist/boot/remote.js.map +1 -1
  51. package/dist/boot/runner.d.ts +11 -0
  52. package/dist/boot/runner.d.ts.map +1 -0
  53. package/dist/boot/runner.js +13 -0
  54. package/dist/boot/runner.js.map +1 -0
  55. package/dist/boot/seed.d.ts +5 -32
  56. package/dist/boot/seed.d.ts.map +1 -1
  57. package/dist/boot/seed.js +10 -41
  58. package/dist/boot/seed.js.map +1 -1
  59. package/dist/boot/statement-drift.d.ts +4 -22
  60. package/dist/boot/statement-drift.d.ts.map +1 -1
  61. package/dist/boot/statement-drift.js +4 -9
  62. package/dist/boot/statement-drift.js.map +1 -1
  63. package/dist/boot/together.d.ts +8 -12
  64. package/dist/boot/together.d.ts.map +1 -1
  65. package/dist/boot/together.js +28 -65
  66. package/dist/boot/together.js.map +1 -1
  67. package/dist/boot/types.d.ts +36 -180
  68. package/dist/boot/types.d.ts.map +1 -1
  69. package/dist/builtin/config.d.ts +7 -0
  70. package/dist/builtin/config.d.ts.map +1 -0
  71. package/dist/builtin/config.js +15 -0
  72. package/dist/builtin/config.js.map +1 -0
  73. package/dist/{builtins → builtin}/logger.d.ts +4 -25
  74. package/dist/builtin/logger.d.ts.map +1 -0
  75. package/dist/{builtins → builtin}/logger.js +5 -32
  76. package/dist/builtin/logger.js.map +1 -0
  77. package/dist/config-loader.d.ts +9 -67
  78. package/dist/config-loader.d.ts.map +1 -1
  79. package/dist/config-loader.js +5 -18
  80. package/dist/config-loader.js.map +1 -1
  81. package/dist/contract.d.ts +13 -31
  82. package/dist/contract.d.ts.map +1 -1
  83. package/dist/contract.js +10 -26
  84. package/dist/contract.js.map +1 -1
  85. package/dist/crypto/encoding.d.ts +2 -15
  86. package/dist/crypto/encoding.d.ts.map +1 -1
  87. package/dist/crypto/encoding.js +2 -15
  88. package/dist/crypto/encoding.js.map +1 -1
  89. package/dist/crypto/node.d.ts.map +1 -1
  90. package/dist/crypto/node.js +1 -7
  91. package/dist/crypto/node.js.map +1 -1
  92. package/dist/crypto/port.d.ts +2 -18
  93. package/dist/crypto/port.d.ts.map +1 -1
  94. package/dist/crypto/port.js +1 -17
  95. package/dist/crypto/port.js.map +1 -1
  96. package/dist/crypto/webcrypto.d.ts.map +1 -1
  97. package/dist/crypto/webcrypto.js +1 -12
  98. package/dist/crypto/webcrypto.js.map +1 -1
  99. package/dist/declare.d.ts +41 -0
  100. package/dist/declare.d.ts.map +1 -0
  101. package/dist/{scan/declare.js → declare.js} +6 -31
  102. package/dist/declare.js.map +1 -0
  103. package/dist/define.d.ts +2 -3
  104. package/dist/define.d.ts.map +1 -1
  105. package/dist/define.js +2 -3
  106. package/dist/define.js.map +1 -1
  107. package/dist/descriptor/Fronds.d.ts +19 -0
  108. package/dist/descriptor/Fronds.d.ts.map +1 -0
  109. package/dist/descriptor/Fronds.js +40 -0
  110. package/dist/descriptor/Fronds.js.map +1 -0
  111. package/dist/descriptor/frond.d.ts +135 -0
  112. package/dist/descriptor/frond.d.ts.map +1 -0
  113. package/dist/{scan → descriptor}/frond.js.map +1 -1
  114. package/dist/dispatch/ArgumentResolver.d.ts +6 -3
  115. package/dist/dispatch/ArgumentResolver.d.ts.map +1 -1
  116. package/dist/dispatch/ArgumentResolver.js +48 -3
  117. package/dist/dispatch/ArgumentResolver.js.map +1 -1
  118. package/dist/dispatch/DispatchEvent.d.ts +2 -2
  119. package/dist/dispatch/DispatchEvent.d.ts.map +1 -1
  120. package/dist/dispatch/DispatchLifecycle.d.ts +1 -7
  121. package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -1
  122. package/dist/dispatch/DispatchLifecycle.js +1 -7
  123. package/dist/dispatch/DispatchLifecycle.js.map +1 -1
  124. package/dist/dispatch/DispatchPort.d.ts +1 -1
  125. package/dist/dispatch/DispatchPort.d.ts.map +1 -1
  126. package/dist/dispatch/Dispatcher.d.ts +1 -1
  127. package/dist/dispatch/Dispatcher.d.ts.map +1 -1
  128. package/dist/dispatch/Dispatcher.js +2 -2
  129. package/dist/dispatch/Dispatcher.js.map +1 -1
  130. package/dist/{boot → dispatch}/HandlerFacade.d.ts +25 -38
  131. package/dist/dispatch/HandlerFacade.d.ts.map +1 -0
  132. package/dist/{boot → dispatch}/HandlerFacade.js +65 -74
  133. package/dist/dispatch/HandlerFacade.js.map +1 -0
  134. package/dist/dispatch/LocalRoutePolicy.d.ts +1 -1
  135. package/dist/dispatch/LocalRoutePolicy.d.ts.map +1 -1
  136. package/dist/dispatch/LocalRoutePolicy.js +4 -4
  137. package/dist/dispatch/LocalRoutePolicy.js.map +1 -1
  138. package/dist/dispatch/OperationRoute.d.ts +2 -2
  139. package/dist/dispatch/OperationRoute.d.ts.map +1 -1
  140. package/dist/dispatch/OutputView.d.ts +3 -2
  141. package/dist/dispatch/OutputView.d.ts.map +1 -1
  142. package/dist/dispatch/OutputView.js +19 -1
  143. package/dist/dispatch/OutputView.js.map +1 -1
  144. package/dist/dispatch/Route.d.ts +2 -3
  145. package/dist/dispatch/Route.d.ts.map +1 -1
  146. package/dist/dispatch/RoutePolicy.d.ts +1 -1
  147. package/dist/dispatch/RoutePolicy.d.ts.map +1 -1
  148. package/dist/dispatch/RouteRegistry.d.ts +1 -1
  149. package/dist/dispatch/RouteRegistry.d.ts.map +1 -1
  150. package/dist/dispatch/RouteRegistry.js +2 -2
  151. package/dist/dispatch/RouteRegistry.js.map +1 -1
  152. package/dist/dispatch/RouteResolver.d.ts +2 -4
  153. package/dist/dispatch/RouteResolver.d.ts.map +1 -1
  154. package/dist/dispatch/StorageGuard.d.ts +9 -8
  155. package/dist/dispatch/StorageGuard.d.ts.map +1 -1
  156. package/dist/dispatch/StorageGuard.js +66 -23
  157. package/dist/dispatch/StorageGuard.js.map +1 -1
  158. package/dist/dispatch/presenterArguments.d.ts +7 -0
  159. package/dist/dispatch/presenterArguments.d.ts.map +1 -0
  160. package/dist/dispatch/presenterArguments.js +12 -0
  161. package/dist/dispatch/presenterArguments.js.map +1 -0
  162. package/dist/dispatch/remoteRoutes.d.ts +7 -0
  163. package/dist/dispatch/remoteRoutes.d.ts.map +1 -0
  164. package/dist/dispatch/{RemoteRouteResolver.js → remoteRoutes.js} +6 -10
  165. package/dist/dispatch/remoteRoutes.js.map +1 -0
  166. package/dist/dispatch/routeNotFound.d.ts +9 -0
  167. package/dist/dispatch/routeNotFound.d.ts.map +1 -0
  168. package/dist/dispatch/routeNotFound.js +21 -0
  169. package/dist/dispatch/routeNotFound.js.map +1 -0
  170. package/dist/dispatch/validateInput.d.ts +5 -0
  171. package/dist/dispatch/validateInput.d.ts.map +1 -0
  172. package/dist/dispatch/validateInput.js +20 -0
  173. package/dist/dispatch/validateInput.js.map +1 -0
  174. package/dist/effective-operation.d.ts +6 -3
  175. package/dist/effective-operation.d.ts.map +1 -1
  176. package/dist/effective-operation.js +49 -27
  177. package/dist/effective-operation.js.map +1 -1
  178. package/dist/emit.d.ts +4 -42
  179. package/dist/emit.d.ts.map +1 -1
  180. package/dist/emit.js +3 -39
  181. package/dist/emit.js.map +1 -1
  182. package/dist/entry/facade.d.ts +8 -0
  183. package/dist/entry/facade.d.ts.map +1 -0
  184. package/dist/entry/facade.js +28 -0
  185. package/dist/entry/facade.js.map +1 -0
  186. package/dist/entry/transport.d.ts +5 -0
  187. package/dist/entry/transport.d.ts.map +1 -0
  188. package/dist/entry/transport.js +11 -0
  189. package/dist/entry/transport.js.map +1 -0
  190. package/dist/frond-config.d.ts +8 -71
  191. package/dist/frond-config.d.ts.map +1 -1
  192. package/dist/frond-config.js +1 -9
  193. package/dist/frond-config.js.map +1 -1
  194. package/dist/graph.d.ts +1 -1
  195. package/dist/graph.d.ts.map +1 -1
  196. package/dist/identity-keys.d.ts +2 -5
  197. package/dist/identity-keys.d.ts.map +1 -1
  198. package/dist/identity-keys.js +3 -16
  199. package/dist/identity-keys.js.map +1 -1
  200. package/dist/identity.d.ts +4 -30
  201. package/dist/identity.d.ts.map +1 -1
  202. package/dist/identity.js +11 -73
  203. package/dist/identity.js.map +1 -1
  204. package/dist/imports.d.ts +2 -8
  205. package/dist/imports.d.ts.map +1 -1
  206. package/dist/imports.js +1 -7
  207. package/dist/imports.js.map +1 -1
  208. package/dist/index.d.ts +28 -30
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +17 -22
  211. package/dist/index.js.map +1 -1
  212. package/dist/loader.d.ts +1 -8
  213. package/dist/loader.d.ts.map +1 -1
  214. package/dist/loader.js +1 -8
  215. package/dist/loader.js.map +1 -1
  216. package/dist/node.d.ts +2 -11
  217. package/dist/node.d.ts.map +1 -1
  218. package/dist/node.js +2 -11
  219. package/dist/node.js.map +1 -1
  220. package/dist/prefab/collector.d.ts +1 -22
  221. package/dist/prefab/collector.d.ts.map +1 -1
  222. package/dist/prefab/collector.js +1 -22
  223. package/dist/prefab/collector.js.map +1 -1
  224. package/dist/prefab/crud.d.ts +19 -35
  225. package/dist/prefab/crud.d.ts.map +1 -1
  226. package/dist/prefab/crud.js +39 -66
  227. package/dist/prefab/crud.js.map +1 -1
  228. package/dist/prefab/mirror.d.ts +5 -27
  229. package/dist/prefab/mirror.d.ts.map +1 -1
  230. package/dist/prefab/mirror.js +6 -24
  231. package/dist/prefab/mirror.js.map +1 -1
  232. package/dist/prefab/prefab.d.ts +1 -7
  233. package/dist/prefab/prefab.d.ts.map +1 -1
  234. package/dist/prefab/prefab.js +1 -7
  235. package/dist/prefab/prefab.js.map +1 -1
  236. package/dist/prefab/presenter.d.ts +2 -36
  237. package/dist/prefab/presenter.d.ts.map +1 -1
  238. package/dist/prefab/presenter.js +2 -36
  239. package/dist/prefab/presenter.js.map +1 -1
  240. package/dist/prefab/repository.d.ts +12 -80
  241. package/dist/prefab/repository.d.ts.map +1 -1
  242. package/dist/prefab/repository.js +22 -35
  243. package/dist/prefab/repository.js.map +1 -1
  244. package/dist/scan/adapters.d.ts +3 -0
  245. package/dist/scan/adapters.d.ts.map +1 -0
  246. package/dist/scan/adapters.js +25 -0
  247. package/dist/scan/adapters.js.map +1 -0
  248. package/dist/scan/bundling.d.ts +1 -12
  249. package/dist/scan/bundling.d.ts.map +1 -1
  250. package/dist/scan/bundling.js +1 -12
  251. package/dist/scan/bundling.js.map +1 -1
  252. package/dist/scan/conventions.d.ts +6 -40
  253. package/dist/scan/conventions.d.ts.map +1 -1
  254. package/dist/scan/conventions.js +5 -34
  255. package/dist/scan/conventions.js.map +1 -1
  256. package/dist/scan/emit.d.ts +2 -6
  257. package/dist/scan/emit.d.ts.map +1 -1
  258. package/dist/scan/emit.js +5 -39
  259. package/dist/scan/emit.js.map +1 -1
  260. package/dist/scan/handler-parser.d.ts +9 -76
  261. package/dist/scan/handler-parser.d.ts.map +1 -1
  262. package/dist/scan/handler-parser.js +28 -85
  263. package/dist/scan/handler-parser.js.map +1 -1
  264. package/dist/scan/result.d.ts +28 -0
  265. package/dist/scan/result.d.ts.map +1 -0
  266. package/dist/scan/result.js +2 -0
  267. package/dist/scan/result.js.map +1 -0
  268. package/dist/scan/scanner.d.ts +3 -28
  269. package/dist/scan/scanner.d.ts.map +1 -1
  270. package/dist/scan/scanner.js +36 -135
  271. package/dist/scan/scanner.js.map +1 -1
  272. package/dist/scan/statement.d.ts +1 -1
  273. package/dist/scan/statement.d.ts.map +1 -1
  274. package/dist/scan/statement.js +4 -30
  275. package/dist/scan/statement.js.map +1 -1
  276. package/dist/source.d.ts +41 -0
  277. package/dist/source.d.ts.map +1 -0
  278. package/dist/source.js +10 -0
  279. package/dist/source.js.map +1 -0
  280. package/dist/storage.d.ts +92 -0
  281. package/dist/storage.d.ts.map +1 -0
  282. package/dist/storage.js +50 -0
  283. package/dist/storage.js.map +1 -0
  284. package/dist/store.d.ts +18 -0
  285. package/dist/store.d.ts.map +1 -0
  286. package/dist/store.js +146 -0
  287. package/dist/store.js.map +1 -0
  288. package/dist/verify.d.ts +6 -39
  289. package/dist/verify.d.ts.map +1 -1
  290. package/dist/verify.js +19 -39
  291. package/dist/verify.js.map +1 -1
  292. package/dist/wire/CallLog.d.ts +32 -0
  293. package/dist/wire/CallLog.d.ts.map +1 -0
  294. package/dist/{contract → wire}/CallLog.js.map +1 -1
  295. package/dist/wire/Invocation.d.ts +32 -0
  296. package/dist/wire/Invocation.d.ts.map +1 -0
  297. package/dist/wire/Invocation.js +66 -0
  298. package/dist/wire/Invocation.js.map +1 -0
  299. package/dist/wire/RouteAddress.d.ts +24 -0
  300. package/dist/wire/RouteAddress.d.ts.map +1 -0
  301. package/dist/{contract → wire}/RouteAddress.js +7 -0
  302. package/dist/wire/RouteAddress.js.map +1 -0
  303. package/dist/wire/binding.d.ts +36 -0
  304. package/dist/wire/binding.d.ts.map +1 -0
  305. package/dist/{boot → wire}/binding.js +5 -62
  306. package/dist/wire/binding.js.map +1 -0
  307. package/dist/wire/call.d.ts +25 -172
  308. package/dist/wire/call.d.ts.map +1 -1
  309. package/dist/wire/call.js +15 -166
  310. package/dist/wire/call.js.map +1 -1
  311. package/dist/wire/drift.d.ts +3 -28
  312. package/dist/wire/drift.d.ts.map +1 -1
  313. package/dist/wire/drift.js +4 -23
  314. package/dist/wire/drift.js.map +1 -1
  315. package/dist/wire/errors.d.ts +4 -24
  316. package/dist/wire/errors.d.ts.map +1 -1
  317. package/dist/wire/errors.js +4 -24
  318. package/dist/wire/errors.js.map +1 -1
  319. package/dist/wire/http-error.d.ts +2 -13
  320. package/dist/wire/http-error.d.ts.map +1 -1
  321. package/dist/wire/http-error.js +5 -19
  322. package/dist/wire/http-error.js.map +1 -1
  323. package/dist/wire/loggerMiddleware.d.ts +2 -8
  324. package/dist/wire/loggerMiddleware.d.ts.map +1 -1
  325. package/dist/wire/loggerMiddleware.js +1 -7
  326. package/dist/wire/loggerMiddleware.js.map +1 -1
  327. package/dist/wire/middleware.d.ts +3 -7
  328. package/dist/wire/middleware.d.ts.map +1 -1
  329. package/dist/wire/middleware.js +1 -5
  330. package/dist/wire/middleware.js.map +1 -1
  331. package/dist/wire/operation.d.ts +12 -74
  332. package/dist/wire/operation.d.ts.map +1 -1
  333. package/dist/wire/operation.js +4 -66
  334. package/dist/wire/operation.js.map +1 -1
  335. package/dist/wire/signature.d.ts +37 -0
  336. package/dist/wire/signature.d.ts.map +1 -0
  337. package/dist/wire/signature.js +2 -0
  338. package/dist/wire/signature.js.map +1 -0
  339. package/package.json +3 -3
  340. package/src/boot/Emissions.ts +22 -119
  341. package/src/boot/ambient-port.ts +3 -24
  342. package/src/boot/ambient.als.ts +7 -12
  343. package/src/boot/ambient.queue.ts +2 -5
  344. package/src/boot/apply.ts +3 -15
  345. package/src/boot/auth.ts +6 -16
  346. package/src/boot/boot.ts +8 -23
  347. package/src/boot/bootstrap.ts +117 -173
  348. package/src/boot/card.ts +84 -0
  349. package/src/boot/frame.ts +31 -65
  350. package/src/boot/hosted.ts +15 -40
  351. package/src/boot/ownership.ts +14 -49
  352. package/src/boot/ports.ts +2 -15
  353. package/src/boot/remote.ts +11 -58
  354. package/src/boot/runner.ts +17 -0
  355. package/src/boot/seed.ts +11 -42
  356. package/src/boot/statement-drift.ts +10 -28
  357. package/src/boot/together.ts +38 -72
  358. package/src/boot/types.ts +36 -180
  359. package/src/{builtins → builtin}/config.ts +1 -7
  360. package/src/{builtins → builtin}/logger.ts +6 -39
  361. package/src/config-loader.ts +12 -71
  362. package/src/contract.ts +15 -39
  363. package/src/crypto/encoding.ts +2 -15
  364. package/src/crypto/node.ts +1 -7
  365. package/src/crypto/port.ts +2 -18
  366. package/src/crypto/webcrypto.ts +1 -12
  367. package/src/{scan/declare.ts → declare.ts} +11 -42
  368. package/src/define.ts +2 -3
  369. package/src/descriptor/Fronds.ts +47 -0
  370. package/src/descriptor/frond.ts +145 -0
  371. package/src/dispatch/ArgumentResolver.ts +54 -8
  372. package/src/dispatch/DispatchEvent.ts +2 -2
  373. package/src/dispatch/DispatchLifecycle.ts +1 -7
  374. package/src/dispatch/DispatchPort.ts +1 -1
  375. package/src/dispatch/Dispatcher.ts +3 -3
  376. package/src/dispatch/HandlerFacade.ts +231 -0
  377. package/src/dispatch/LocalRoutePolicy.ts +4 -4
  378. package/src/dispatch/OperationRoute.ts +2 -2
  379. package/src/dispatch/OutputView.ts +24 -2
  380. package/src/dispatch/Route.ts +2 -4
  381. package/src/dispatch/RoutePolicy.ts +1 -1
  382. package/src/dispatch/RouteRegistry.ts +2 -2
  383. package/src/dispatch/RouteResolver.ts +2 -4
  384. package/src/dispatch/StorageGuard.ts +75 -23
  385. package/src/dispatch/presenterArguments.ts +25 -0
  386. package/src/dispatch/{RemoteRouteResolver.ts → remoteRoutes.ts} +7 -9
  387. package/src/dispatch/routeNotFound.ts +33 -0
  388. package/src/dispatch/validateInput.ts +28 -0
  389. package/src/effective-operation.ts +60 -37
  390. package/src/emit.ts +5 -63
  391. package/src/entry/facade.ts +44 -0
  392. package/src/entry/transport.ts +16 -0
  393. package/src/frond-config.ts +8 -71
  394. package/src/graph.ts +1 -1
  395. package/src/identity-keys.ts +3 -16
  396. package/src/identity.ts +12 -80
  397. package/src/imports.ts +3 -32
  398. package/src/index.ts +28 -33
  399. package/src/loader.ts +2 -16
  400. package/src/node.ts +2 -11
  401. package/src/prefab/collector.ts +1 -22
  402. package/src/prefab/crud.ts +51 -90
  403. package/src/prefab/mirror.ts +9 -49
  404. package/src/prefab/prefab.ts +2 -21
  405. package/src/prefab/presenter.ts +2 -36
  406. package/src/prefab/repository.ts +32 -108
  407. package/src/scan/adapters.ts +32 -0
  408. package/src/scan/bundling.ts +1 -12
  409. package/src/scan/conventions.ts +6 -40
  410. package/src/scan/emit.ts +7 -43
  411. package/src/scan/handler-parser.ts +41 -163
  412. package/src/scan/result.ts +29 -0
  413. package/src/scan/scanner.ts +40 -138
  414. package/src/scan/statement.ts +6 -31
  415. package/src/source.ts +44 -0
  416. package/src/storage.ts +141 -0
  417. package/src/store.ts +152 -0
  418. package/src/verify.ts +19 -60
  419. package/src/wire/CallLog.ts +30 -0
  420. package/src/{contract → wire}/Invocation.ts +24 -17
  421. package/src/{contract → wire}/RouteAddress.ts +10 -0
  422. package/src/wire/binding.ts +102 -0
  423. package/src/wire/call.ts +30 -261
  424. package/src/wire/drift.ts +5 -30
  425. package/src/wire/errors.ts +4 -24
  426. package/src/wire/http-error.ts +5 -19
  427. package/src/wire/loggerMiddleware.ts +2 -8
  428. package/src/wire/middleware.ts +3 -7
  429. package/src/wire/operation.ts +13 -110
  430. package/src/wire/signature.ts +38 -0
  431. package/dist/boot/HandlerFacade.d.ts.map +0 -1
  432. package/dist/boot/HandlerFacade.js.map +0 -1
  433. package/dist/boot/binding.d.ts +0 -60
  434. package/dist/boot/binding.d.ts.map +0 -1
  435. package/dist/boot/binding.js.map +0 -1
  436. package/dist/builtins/config.d.ts +0 -13
  437. package/dist/builtins/config.d.ts.map +0 -1
  438. package/dist/builtins/config.js +0 -21
  439. package/dist/builtins/config.js.map +0 -1
  440. package/dist/builtins/logger.d.ts.map +0 -1
  441. package/dist/builtins/logger.js.map +0 -1
  442. package/dist/contract/Call.d.ts +0 -10
  443. package/dist/contract/Call.d.ts.map +0 -1
  444. package/dist/contract/Call.js +0 -15
  445. package/dist/contract/Call.js.map +0 -1
  446. package/dist/contract/CallLog.d.ts +0 -57
  447. package/dist/contract/CallLog.d.ts.map +0 -1
  448. package/dist/contract/Invocation.d.ts +0 -27
  449. package/dist/contract/Invocation.d.ts.map +0 -1
  450. package/dist/contract/Invocation.js +0 -59
  451. package/dist/contract/Invocation.js.map +0 -1
  452. package/dist/contract/RouteAddress.d.ts +0 -17
  453. package/dist/contract/RouteAddress.d.ts.map +0 -1
  454. package/dist/contract/RouteAddress.js.map +0 -1
  455. package/dist/dispatch/InputValidator.d.ts +0 -7
  456. package/dist/dispatch/InputValidator.d.ts.map +0 -1
  457. package/dist/dispatch/InputValidator.js +0 -22
  458. package/dist/dispatch/InputValidator.js.map +0 -1
  459. package/dist/dispatch/OperationExecutor.d.ts +0 -25
  460. package/dist/dispatch/OperationExecutor.d.ts.map +0 -1
  461. package/dist/dispatch/OperationExecutor.js +0 -32
  462. package/dist/dispatch/OperationExecutor.js.map +0 -1
  463. package/dist/dispatch/OutputProjector.d.ts +0 -12
  464. package/dist/dispatch/OutputProjector.d.ts.map +0 -1
  465. package/dist/dispatch/OutputProjector.js +0 -30
  466. package/dist/dispatch/OutputProjector.js.map +0 -1
  467. package/dist/dispatch/PresenterArgumentResolver.d.ts +0 -12
  468. package/dist/dispatch/PresenterArgumentResolver.d.ts.map +0 -1
  469. package/dist/dispatch/PresenterArgumentResolver.js +0 -20
  470. package/dist/dispatch/PresenterArgumentResolver.js.map +0 -1
  471. package/dist/dispatch/RemoteRouteResolver.d.ts +0 -13
  472. package/dist/dispatch/RemoteRouteResolver.d.ts.map +0 -1
  473. package/dist/dispatch/RemoteRouteResolver.js.map +0 -1
  474. package/dist/dispatch/RouteNotFoundError.d.ts +0 -10
  475. package/dist/dispatch/RouteNotFoundError.d.ts.map +0 -1
  476. package/dist/dispatch/RouteNotFoundError.js +0 -24
  477. package/dist/dispatch/RouteNotFoundError.js.map +0 -1
  478. package/dist/entry/DynamicFacade.d.ts +0 -10
  479. package/dist/entry/DynamicFacade.d.ts.map +0 -1
  480. package/dist/entry/DynamicFacade.js +0 -27
  481. package/dist/entry/DynamicFacade.js.map +0 -1
  482. package/dist/entry/FacadeEntry.d.ts +0 -11
  483. package/dist/entry/FacadeEntry.d.ts.map +0 -1
  484. package/dist/entry/FacadeEntry.js +0 -26
  485. package/dist/entry/FacadeEntry.js.map +0 -1
  486. package/dist/entry/TransportEntry.d.ts +0 -13
  487. package/dist/entry/TransportEntry.d.ts.map +0 -1
  488. package/dist/entry/TransportEntry.js +0 -24
  489. package/dist/entry/TransportEntry.js.map +0 -1
  490. package/dist/orm.d.ts +0 -207
  491. package/dist/orm.d.ts.map +0 -1
  492. package/dist/orm.js +0 -66
  493. package/dist/orm.js.map +0 -1
  494. package/dist/scan/Fronds.d.ts +0 -45
  495. package/dist/scan/Fronds.d.ts.map +0 -1
  496. package/dist/scan/Fronds.js +0 -66
  497. package/dist/scan/Fronds.js.map +0 -1
  498. package/dist/scan/declare.d.ts +0 -71
  499. package/dist/scan/declare.d.ts.map +0 -1
  500. package/dist/scan/declare.js.map +0 -1
  501. package/dist/scan/frond.d.ts +0 -224
  502. package/dist/scan/frond.d.ts.map +0 -1
  503. package/src/boot/HandlerFacade.ts +0 -242
  504. package/src/boot/binding.ts +0 -182
  505. package/src/contract/Call.ts +0 -18
  506. package/src/contract/CallLog.ts +0 -55
  507. package/src/dispatch/InputValidator.ts +0 -28
  508. package/src/dispatch/OperationExecutor.ts +0 -60
  509. package/src/dispatch/OutputProjector.ts +0 -32
  510. package/src/dispatch/PresenterArgumentResolver.ts +0 -25
  511. package/src/dispatch/RouteNotFoundError.ts +0 -29
  512. package/src/entry/DynamicFacade.ts +0 -28
  513. package/src/entry/FacadeEntry.ts +0 -32
  514. package/src/entry/TransportEntry.ts +0 -30
  515. package/src/orm.ts +0 -252
  516. package/src/scan/Fronds.ts +0 -73
  517. package/src/scan/frond.ts +0 -235
  518. /package/dist/{scan → descriptor}/frond.js +0 -0
  519. /package/dist/{contract → wire}/CallLog.js +0 -0
@@ -0,0 +1,41 @@
1
+ /** A frond stated by its author, for an app that will not scan. */
2
+ import { type SchemaView } from '@fougere/schema';
3
+ import type { FrondDescriptor, SeedEntry } from './descriptor/frond.js';
4
+ /** A class, as a declaration hands it over: the constructor itself. */
5
+ type Ctor = new (...args: never[]) => unknown;
6
+ /** What a subject needs beyond its class, when its constructor names a frame or a port. */
7
+ export interface DeclaredSubject {
8
+ ctor: Ctor;
9
+ deps?: string[];
10
+ }
11
+ /** A handler, and the surface it answers on when it is not the default one. */
12
+ export interface DeclaredHandler extends DeclaredSubject {
13
+ /**
14
+ * The scan reads this from the directory (`handlers/public/`), so a statement has to say it: two
15
+ * handlers over one entity collide on their address otherwise, and the refusal names the same
16
+ * route twice.
17
+ */
18
+ surface?: string;
19
+ }
20
+ /** A class on its own, or a class with what it asks for. */
21
+ export type Declared = Ctor | DeclaredSubject;
22
+ /** What a declaration states about one frond. Everything else is derived from the classes. */
23
+ export interface FrondDeclaration {
24
+ entities?: SchemaView[];
25
+ handlers?: (Ctor | DeclaredHandler)[];
26
+ presenters?: (Ctor | DeclaredSubject)[];
27
+ collectors?: (Ctor | DeclaredSubject)[];
28
+ providers?: Declared[];
29
+ seeds?: {
30
+ entityName: string;
31
+ data: SeedEntry['data'];
32
+ }[];
33
+ /** Per-surface entity lists — the same key `frond.config.ts` states. */
34
+ surfaces?: Record<string, string[]>;
35
+ /** The import scope this frond answers under. Defaults to the conventional one. */
36
+ scope?: string;
37
+ }
38
+ /** State a frond without reading a disk. */
39
+ export declare function frond(name: string, declared?: FrondDeclaration): FrondDescriptor;
40
+ export {};
41
+ //# sourceMappingURL=declare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare.d.ts","sourceRoot":"","sources":["../src/declare.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EACmB,eAAe,EACb,SAAS,EACzC,MAAM,uBAAuB,CAAC;AAI/B,uEAAuE;AACvE,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAE9C,2FAA2F;AAC3F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,eAAe,CAAC;AA6B9C,8FAA8F;AAC9F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;IAC1D,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4CAA4C;AAC5C,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAqB,GAAG,eAAe,CAmFpF"}
@@ -1,29 +1,12 @@
1
- /**
2
- * A frond stated by its author, for an app that will not scan.
3
- *
4
- * The scan reads the type checker because a signature IS a declaration — and that reading
5
- * has to happen while the types still exist, which is build time. An app that wants
6
- * neither a build step nor `typescript` at runtime says the same thing here instead, and
7
- * `createApp` cannot tell the difference: it consumes a `ScanResult`, never a scanner.
8
- *
9
- * What it does NOT ask for is the point. Every name the scan derives from a class is
10
- * derived here the same way — `PostHandler` answers at `post`, `Post` is stored as `post`
11
- * — so a declaration states classes and nothing else. `filePath` is empty because there is
12
- * no file to point at, and a diagnostic that would have quoted one says so plainly.
13
- *
14
- * Measured on `demos/nuxt-blog`: 23 of its 29 operations need no word here at all, because
15
- * `Crud.__ops` declares them at runtime. Only the six the author wrote by hand cost
16
- * anything, and they cost `frond.config.ts` — where what is not derivable is stated.
17
- */
1
+ /** A frond stated by its author, for an app that will not scan. */
18
2
  import { lowerFirst } from '@fougere/schema';
19
- import { DEFAULT_CONVENTIONS } from './conventions.js';
20
- import { getPresenterFields } from '../prefab/presenter.js';
3
+ import { DEFAULT_CONVENTIONS } from './scan/conventions.js';
4
+ import { getPresenterFields } from './prefab/presenter.js';
21
5
  const ctorOf = (d) => (typeof d === 'function' ? d : d.ctor);
22
6
  /**
23
7
  * What a prefab was BUILT ON — `Presenter(Post)` and `Collector(User)` both keep it under
24
- * `__entity`, which is the only place it survives: nothing in the FORM of `PostPresenter`
25
- * says `Post`. Absent, the class did not come through the prefab, and the refusal says so
26
- * rather than yielding a frond whose presenter belongs to no entity.
8
+ * `__entity`, which is the only place it survives: nothing in the FORM of `PostPresenter` says
9
+ * `Post`.
27
10
  */
28
11
  function subjectOf(ctor, kind) {
29
12
  const subject = ctor.__entity;
@@ -39,15 +22,7 @@ function addressOf(className) {
39
22
  const base = className.endsWith('Handler') ? className.slice(0, -7) : className;
40
23
  return lowerFirst(base);
41
24
  }
42
- /**
43
- * State a frond without reading a disk.
44
- *
45
- * ```ts
46
- * createApp({
47
- * scan: { fronds: Fronds.scanned([frond('blog', { entities: [Post], handlers: [PostHandler] })]), diagnostics: [] },
48
- * })
49
- * ```
50
- */
25
+ /** State a frond without reading a disk. */
51
26
  export function frond(name, declared = {}) {
52
27
  const scope = declared.scope ?? DEFAULT_CONVENTIONS.scope;
53
28
  const entities = (declared.entities ?? []).map((entityClass) => ({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare.js","sourceRoot":"","sources":["../src/declare.ts"],"names":[],"mappings":"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"}
package/dist/define.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import type { FougereConfig } from './config-loader.js';
2
2
  /**
3
- * Identity helper for fougere.config.ts — preserves literal types for autocomplete
4
- * while validating against FougereConfig. Equivalent to `satisfies FougereConfig`
5
- * but more explicit and aligned with defineFrond().
3
+ * Identity helper for fougere.config.ts — preserves literal types for autocomplete while
4
+ * validating against FougereConfig.
6
5
  */
7
6
  export declare function defineFougere<T extends FougereConfig>(config: T): T;
8
7
  //# sourceMappingURL=define.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAEnE"}
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAEnE"}
package/dist/define.js CHANGED
@@ -1,7 +1,6 @@
1
1
  /**
2
- * Identity helper for fougere.config.ts — preserves literal types for autocomplete
3
- * while validating against FougereConfig. Equivalent to `satisfies FougereConfig`
4
- * but more explicit and aligned with defineFrond().
2
+ * Identity helper for fougere.config.ts — preserves literal types for autocomplete while
3
+ * validating against FougereConfig.
5
4
  */
6
5
  export function defineFougere(config) {
7
6
  return config;
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAA0B,MAAS;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAA0B,MAAS;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { SchemaView } from '@fougere/schema';
2
+ import type { EntityEntry, FrondDescriptor } from './frond.js';
3
+ /** What this app hosts, with the questions everyone was asking it by hand. */
4
+ export declare class Fronds extends Array<FrondDescriptor> {
5
+ static get [Symbol.species](): ArrayConstructor;
6
+ /** The fronds an app hosts, scanned or stated. The only gate in — `Array.of` is taken. */
7
+ static hosting(fronds: readonly FrondDescriptor[]): Fronds;
8
+ /** The frond that hosts an entity — `undefined` when no loaded frond does. */
9
+ owner(entity: string): FrondDescriptor | undefined;
10
+ /** The entity of that name, wherever it was declared. */
11
+ entity(name: string): EntityEntry | undefined;
12
+ /** Every entity class, by name — across all fronds and never per-frond. */
13
+ schemas(): Map<string, SchemaView>;
14
+ /** Every declared entity, sorted. What is DECLARED, not what answers. */
15
+ entityNames(): string[];
16
+ /** The names a call may address, sorted — what a NOT_FOUND must print. */
17
+ servedNames(surface?: string): string[];
18
+ }
19
+ //# sourceMappingURL=Fronds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fronds.d.ts","sourceRoot":"","sources":["../../src/descriptor/Fronds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/D,8EAA8E;AAC9E,qBAAa,MAAO,SAAQ,KAAK,CAAC,eAAe,CAAC;IAChD,WAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAEvD;IAED,0FAA0F;IAC1F,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM;IAM1D,8EAA8E;IAC9E,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIlD,yDAAyD;IACzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAQ7C,2EAA2E;IAC3E,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAIlC,yEAAyE;IACzE,WAAW,IAAI,MAAM,EAAE;IAIvB,0EAA0E;IAC1E,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;CAKxC"}
@@ -0,0 +1,40 @@
1
+ /** What this app hosts, with the questions everyone was asking it by hand. */
2
+ export class Fronds extends Array {
3
+ static get [Symbol.species]() {
4
+ return Array;
5
+ }
6
+ /** The fronds an app hosts, scanned or stated. The only gate in — `Array.of` is taken. */
7
+ static hosting(fronds) {
8
+ const all = new Fronds();
9
+ all.push(...fronds);
10
+ return all;
11
+ }
12
+ /** The frond that hosts an entity — `undefined` when no loaded frond does. */
13
+ owner(entity) {
14
+ return this.find((frond) => frond.entities.some((e) => e.name === entity));
15
+ }
16
+ /** The entity of that name, wherever it was declared. */
17
+ entity(name) {
18
+ for (const frond of this) {
19
+ const found = frond.entities.find((e) => e.name === name);
20
+ if (found)
21
+ return found;
22
+ }
23
+ return undefined;
24
+ }
25
+ /** Every entity class, by name — across all fronds and never per-frond. */
26
+ schemas() {
27
+ return new Map(this.flatMap((frond) => frond.entities.map((e) => [e.name, e.entityClass])));
28
+ }
29
+ /** Every declared entity, sorted. What is DECLARED, not what answers. */
30
+ entityNames() {
31
+ return this.flatMap((frond) => frond.entities.map((e) => e.name)).sort();
32
+ }
33
+ /** The names a call may address, sorted — what a NOT_FOUND must print. */
34
+ servedNames(surface) {
35
+ return this.flatMap((frond) => frond.handlers
36
+ .filter((handler) => (handler.surface ?? undefined) === surface)
37
+ .map((handler) => handler.address)).sort();
38
+ }
39
+ }
40
+ //# sourceMappingURL=Fronds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fronds.js","sourceRoot":"","sources":["../../src/descriptor/Fronds.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,MAAM,OAAO,MAAO,SAAQ,KAAsB;IAChD,MAAM,KAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0FAA0F;IAC1F,MAAM,CAAC,OAAO,CAAC,MAAkC;QAC/C,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,MAAc;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,IAAY;QACjB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC1D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,OAAO;QACL,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAU,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,yEAAyE;IACzE,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,0EAA0E;IAC1E,WAAW,CAAC,OAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ;aAC1C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,OAAO,CAAC;aAC/D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,135 @@
1
+ /** What a frond is made of — one interface per convention directory. */
2
+ import type { SchemaView } from '@fougere/schema';
3
+ import type { Param, OperationContract, OperationsMap } from '../wire/operation.js';
4
+ import type { PresenterViews } from '../prefab/presenter.js';
5
+ /** A discovered provider — a class under `services/` or `repositories/`, injected by type. */
6
+ export interface ProviderEntry {
7
+ /** The class constructor (default export of the file). */
8
+ ctor: new (...args: never[]) => unknown;
9
+ /** Constructor dependency type names (from AST scan). */
10
+ deps: string[];
11
+ /** Absolute file path (for debugging). */
12
+ filePath: string;
13
+ }
14
+ /** A discovered entity (Entity subclass in entities/ dir). */
15
+ export interface EntityEntry {
16
+ /** Registration key: class name lowercased first char (e.g. 'product'). */
17
+ name: string;
18
+ /** The Entity class (has static getFields()). */
19
+ entityClass: SchemaView;
20
+ /** Absolute file path (for debugging). */
21
+ filePath: string;
22
+ /** Whether this entity is part of the frond's public contract. */
23
+ exposed?: boolean;
24
+ }
25
+ /** A discovered handler (controls what a service exposes). */
26
+ export interface HandlerEntry {
27
+ /** Registration key (e.g. 'postHandler'). */
28
+ name: string;
29
+ /**
30
+ * The name this handler answers to — its class name minus `Handler`, lowercased (`PostHandler` →
31
+ * `post`).
32
+ */
33
+ address: string;
34
+ /** The handler class. */
35
+ ctor: new (...args: never[]) => unknown;
36
+ /** All operations with full signatures for binding. */
37
+ operations: OperationsMap;
38
+ /** Constructor dependency type names (from AST scan). */
39
+ deps: string[];
40
+ /** Absolute file path (for debugging). */
41
+ filePath: string;
42
+ /** Whether this handler is part of the frond's public contract. */
43
+ exposed?: boolean;
44
+ /** Output schema override — when Crud(Entity, Output), restricts storage output. */
45
+ outputOverride?: SchemaView;
46
+ /** Surface name — subdirectory in handlers/ (e.g. 'admin', 'public'). */
47
+ surface?: string;
48
+ }
49
+ /** Return type metadata for a presenter computed field. */
50
+ export interface PresenterFieldMeta {
51
+ name: string;
52
+ /** Inferred return type name: 'string', 'number', 'boolean', or a class name. */
53
+ returnType?: string;
54
+ /** The field emits a LIST per row — `tags(posts: Post[]): string[][]`. */
55
+ list?: boolean;
56
+ /** Whether the return is nullable. */
57
+ nullable?: boolean;
58
+ /** The declared parameters AFTER the rows. */
59
+ params?: Param[];
60
+ }
61
+ /** A discovered presenter (computed fields for an entity's output). */
62
+ export interface PresenterEntry {
63
+ /** Entity name this presenter enriches (e.g. 'post' from PostPresenter). */
64
+ entityName: string;
65
+ /** The presenter class. */
66
+ ctor: new (...args: never[]) => unknown;
67
+ /** Computed field names (method names on prototype). */
68
+ fields: string[];
69
+ /** Per-field type metadata (inferred from source via parser). */
70
+ fieldMeta: PresenterFieldMeta[];
71
+ /**
72
+ * The view each computed field emits, when the presenter declares one (`Presenter(Order, {
73
+ * items: [OrderItemView] })`).
74
+ */
75
+ views?: PresenterViews;
76
+ /** Constructor dependency type names (from AST scan). */
77
+ deps: string[];
78
+ /** Absolute file path (for debugging). */
79
+ filePath: string;
80
+ }
81
+ /** A discovered collector (resolves handler input params from invocation context). */
82
+ export interface CollectorEntry {
83
+ /** Registration key of the TYPE this collector resolves — 'user', 'ability'. */
84
+ typeName: string;
85
+ /** The collector class. */
86
+ ctor: new (...args: never[]) => unknown;
87
+ /** Constructor dependency type names (from AST scan). */
88
+ deps: string[];
89
+ /** Absolute file path (for debugging). */
90
+ filePath: string;
91
+ }
92
+ /** A discovered seed file (array of records or async factory). */
93
+ export interface SeedEntry {
94
+ /** Entity name this seed targets (from filename: Author.seed.ts → 'author'). */
95
+ entityName: string;
96
+ /** Raw default export — array or function. Resolved at runtime. */
97
+ data: Record<string, unknown>[] | SeedFactory;
98
+ /** Absolute file path (for debugging). */
99
+ filePath: string;
100
+ }
101
+ /** Seed factory — receives a resolver to access handlers cross-frond. */
102
+ export type SeedFactory = (resolve: <T>(name: string) => T) => Promise<Record<string, unknown>[]>;
103
+ /** Where a frond lives on disk. */
104
+ export interface FrondSource {
105
+ /** Absolute path to the frond directory. */
106
+ path: string;
107
+ /** The @fronds/{name} package name. Always present. */
108
+ package: string;
109
+ }
110
+ export interface FrondDescriptor {
111
+ name: string;
112
+ source: FrondSource;
113
+ providers: ProviderEntry[];
114
+ entities: EntityEntry[];
115
+ handlers: HandlerEntry[];
116
+ presenters: PresenterEntry[];
117
+ collectors: CollectorEntry[];
118
+ seeds: SeedEntry[];
119
+ /**
120
+ * Per-surface entity lists from frond.config.ts (e.g. { graphql: ['Post'], rest: ['Post',
121
+ * 'Author'] }).
122
+ */
123
+ surfaces?: Record<string, string[]>;
124
+ /** Entities this frond may read across sources — see `FrondConfig.reads`. */
125
+ reads?: string[];
126
+ /** Per-operation overrides from frond.config.ts. */
127
+ operationsOverrides?: Record<string, OperationContract & {
128
+ kind?: 'query' | 'command';
129
+ /** Class name to resolve from DI (overrides default `{Entity}Handler` lookup). */
130
+ handlerName?: string;
131
+ /** Method name on the resolved handler (defaults to op name). */
132
+ method?: string;
133
+ }>;
134
+ }
135
+ //# sourceMappingURL=frond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frond.d.ts","sourceRoot":"","sources":["../../src/descriptor/frond.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"frond.js","sourceRoot":"","sources":["../../src/scan/frond.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"frond.js","sourceRoot":"","sources":["../../src/descriptor/frond.ts"],"names":[],"mappings":""}
@@ -1,10 +1,13 @@
1
- import { type BindingPlan, type CollectorResolver } from '../boot/binding.js';
2
- import type { InvocationContext } from '../contract/Invocation.js';
1
+ import type { InvocationContext } from '../wire/Invocation.js';
2
+ import type { BindingPlan } from '../wire/binding.js';
3
+ export interface CollectorResolver {
4
+ collect(ctx: InvocationContext): Promise<unknown>;
5
+ }
3
6
  export type CollectorLookup = (typeName: string) => CollectorResolver | undefined;
4
7
  /** Resolves an operation's declared binding plan against one invocation. */
5
8
  export declare class ArgumentResolver {
6
9
  private readonly collectors?;
7
10
  constructor(collectors?: CollectorLookup | undefined);
8
- resolve(plan: BindingPlan, invocation: InvocationContext): Promise<unknown[]>;
11
+ resolve(plan: BindingPlan, ctx: InvocationContext): Promise<unknown[]>;
9
12
  }
10
13
  //# sourceMappingURL=ArgumentResolver.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"ArgumentResolver.d.ts","sourceRoot":"","sources":["../../src/dispatch/ArgumentResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,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;IAEnD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAiD7E"}
@@ -1,12 +1,57 @@
1
- import { resolveArgs, } from '../boot/binding.js';
2
1
  /** Resolves an operation's declared binding plan against one invocation. */
3
2
  export class ArgumentResolver {
4
3
  collectors;
5
4
  constructor(collectors) {
6
5
  this.collectors = collectors;
7
6
  }
8
- resolve(plan, invocation) {
9
- return resolveArgs(plan, invocation, this.collectors);
7
+ async resolve(plan, ctx) {
8
+ const args = [];
9
+ for (const binding of plan) {
10
+ switch (binding.source.kind) {
11
+ case 'collector': {
12
+ const collector = this.collectors?.(binding.source.typeName);
13
+ args.push(collector ? await collector.collect(ctx) : undefined);
14
+ break;
15
+ }
16
+ case 'context': {
17
+ args.push(ctx);
18
+ break;
19
+ }
20
+ case 'param': {
21
+ // `null` is a value, not a miss. Nullish coalescing used to make an explicit
22
+ // nullable path/GraphQL argument fall through to query (or become undefined),
23
+ // collapsing `T | null` into `T | undefined`. Only undefined means absent.
24
+ const fromParams = ctx.params[binding.source.name];
25
+ let val = fromParams === undefined
26
+ ? ctx.query[binding.source.name]
27
+ : fromParams;
28
+ if (val != null && binding.source.coerce === 'number')
29
+ val = Number(val);
30
+ if (val != null && binding.source.coerce === 'boolean')
31
+ val = val === 'true' || val === '1' || val === true;
32
+ args.push(val);
33
+ break;
34
+ }
35
+ case 'fact': {
36
+ // A fact IS the payload — the whole of what happened, never a piece of it.
37
+ // Identical to `input` today, and deliberately not sharing its branch: the two
38
+ // agree by coincidence, not by rule, and the day `input` learns to look up a
39
+ // value by parameter name a subscriber would receive ONE FIELD of the fact it
40
+ // subscribed to. Splitting it costs nothing and removes that trap.
41
+ args.push(ctx.input);
42
+ break;
43
+ }
44
+ case 'input': {
45
+ args.push(ctx.input);
46
+ break;
47
+ }
48
+ case 'query': {
49
+ args.push(ctx.query);
50
+ break;
51
+ }
52
+ }
53
+ }
54
+ return args;
10
55
  }
11
56
  }
12
57
  //# sourceMappingURL=ArgumentResolver.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"ArgumentResolver.js","sourceRoot":"","sources":["../../src/dispatch/ArgumentResolver.ts"],"names":[],"mappings":"AASA,4EAA4E;AAC5E,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;IAAG,CAAC;IAE7D,KAAK,CAAC,OAAO,CAAC,IAAiB,EAAE,GAAsB;QACrD,MAAM,IAAI,GAAc,EAAE,CAAC;QAE3B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,QAAQ,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5B,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAChE,MAAM;gBACR,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM;gBACR,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,6EAA6E;oBAC7E,8EAA8E;oBAC9E,2EAA2E;oBAC3E,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,GAAG,GAAY,UAAU,KAAK,SAAS;wBACzC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBAChC,CAAC,CAAC,UAAU,CAAC;oBACf,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;wBAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBACzE,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;wBAAE,GAAG,GAAG,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC;oBAC5G,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM;gBACR,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,2EAA2E;oBAC3E,+EAA+E;oBAC/E,6EAA6E;oBAC7E,8EAA8E;oBAC9E,mEAAmE;oBACnE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrB,MAAM;gBACR,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrB,MAAM;gBACR,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
- import type { Call } from '../contract/Call.js';
2
- import type { RouteKind } from './Route.js';
1
+ import type { Call } from '../wire/call.js';
2
+ import type { RouteKind } from '../wire/RouteAddress.js';
3
3
  export type DispatchStage = 'received' | 'resolved' | 'completed' | 'failed' | 'settled';
4
4
  /** Immutable transition observed across one dispatch lifecycle. */
5
5
  export declare class DispatchEvent {
@@ -1 +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"}
1
+ {"version":3,"file":"DispatchEvent.d.ts","sourceRoot":"","sources":["../../src/dispatch/DispatchEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,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"}
@@ -4,13 +4,7 @@ export declare class DispatchLifecycle {
4
4
  private readonly diagnose;
5
5
  private readonly observers;
6
6
  constructor(observers?: readonly DispatchObserver[], diagnose?: (error: unknown, event: DispatchEvent) => void);
7
- /**
8
- * Subscribe after the dispatcher was built, and get the unsubscription back.
9
- *
10
- * The list used to be settled at construction, so only the caller of `createApp` could
11
- * observe — an extension, which runs in `up(app)`, could not. `app.use` already adds a
12
- * middleware this late; this is its dual, and the pair is *participate* / *watch*.
13
- */
7
+ /** Subscribe after the dispatcher was built, and get the unsubscription back. */
14
8
  add(observer: DispatchObserver): () => void;
15
9
  publish(event: DispatchEvent): void;
16
10
  }
@@ -1 +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;IAK1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAG7C,SAAS,GAAE,SAAS,gBAAgB,EAAO,EAC1B,QAAQ,GAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,IAAe;IAKtF;;;;;;OAMG;IACH,GAAG,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAS3C,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAapC"}
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;IAK1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAG7C,SAAS,GAAE,SAAS,gBAAgB,EAAO,EAC1B,QAAQ,GAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,KAAK,IAAe;IAKtF,iFAAiF;IACjF,GAAG,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAS3C,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAapC"}
@@ -6,13 +6,7 @@ export class DispatchLifecycle {
6
6
  this.diagnose = diagnose;
7
7
  this.observers = [...observers];
8
8
  }
9
- /**
10
- * Subscribe after the dispatcher was built, and get the unsubscription back.
11
- *
12
- * The list used to be settled at construction, so only the caller of `createApp` could
13
- * observe — an extension, which runs in `up(app)`, could not. `app.use` already adds a
14
- * middleware this late; this is its dual, and the pair is *participate* / *watch*.
15
- */
9
+ /** Subscribe after the dispatcher was built, and get the unsubscription back. */
16
10
  add(observer) {
17
11
  this.observers.push(observer);
18
12
  return () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DispatchLifecycle.js","sourceRoot":"","sources":["../../src/dispatch/DispatchLifecycle.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,OAAO,iBAAiB;IAKT;IAJF,SAAS,CAAqB;IAE/C,YACE,YAAyC,EAAE,EAC1B,WAA2D,GAAG,EAAE,GAAE,CAAC;QAAnE,aAAQ,GAAR,QAAQ,CAA2D;QAEpF,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,QAA0B;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;IAED,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"}
1
+ {"version":3,"file":"DispatchLifecycle.js","sourceRoot":"","sources":["../../src/dispatch/DispatchLifecycle.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,OAAO,iBAAiB;IAKT;IAJF,SAAS,CAAqB;IAE/C,YACE,YAAyC,EAAE,EAC1B,WAA2D,GAAG,EAAE,GAAE,CAAC;QAAnE,aAAQ,GAAR,QAAQ,CAA2D;QAEpF,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,iFAAiF;IACjF,GAAG,CAAC,QAA0B;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;IAED,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"}
@@ -1,4 +1,4 @@
1
- import type { Call } from '../contract/Call.js';
1
+ import type { Call } from '../wire/call.js';
2
2
  /** The only capability an entry needs. */
3
3
  export interface DispatchPort {
4
4
  dispatch(call: Call): Promise<unknown>;
@@ -1 +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"}
1
+ {"version":3,"file":"DispatchPort.d.ts","sourceRoot":"","sources":["../../src/dispatch/DispatchPort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC"}
@@ -1,4 +1,4 @@
1
- import type { Call } from '../contract/Call.js';
1
+ import type { Call } from '../wire/call.js';
2
2
  import { DispatchLifecycle } from './DispatchLifecycle.js';
3
3
  import type { DispatchPort } from './DispatchPort.js';
4
4
  import type { RoutePolicy } from './RoutePolicy.js';
@@ -1 +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"}
1
+ {"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../../src/dispatch/Dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,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"}
@@ -1,6 +1,6 @@
1
1
  import { DispatchEvent } from './DispatchEvent.js';
2
2
  import { DispatchLifecycle } from './DispatchLifecycle.js';
3
- import { RouteNotFoundError } from './RouteNotFoundError.js';
3
+ import { routeNotFound, servedOperations } from './routeNotFound.js';
4
4
  /** Resolves and executes every call through the same transverse lifecycle. */
5
5
  export class Dispatcher {
6
6
  routes;
@@ -24,7 +24,7 @@ export class Dispatcher {
24
24
  route = resolved && (!this.policy || this.policy.accepts(resolved)) ? resolved : undefined;
25
25
  if (!route) {
26
26
  throw this.policy?.notFound?.(call, this.routes.routes())
27
- ?? new RouteNotFoundError(call, this.routes.routes(), this.policy);
27
+ ?? routeNotFound(call, servedOperations(call, this.routes.routes(), this.policy));
28
28
  }
29
29
  this.lifecycle.publish(DispatchEvent.resolved(call, route.kind));
30
30
  const result = await route.execute(call);
@@ -1 +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"}
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,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGrE,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,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACtF,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"}