@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":"bootstrap.js","sourceRoot":"","sources":["../../src/boot/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Fields } from '@fougere/schema';
2
+ import { type PresenterArgs } from '../dispatch/PresenterExecutor.js';
3
+ export type { PresenterArgs } from '../dispatch/PresenterExecutor.js';
4
+ /** Compatibility function while call sites move to PresenterExecutor. */
5
+ export declare function presentEgress(result: unknown, presenter: Record<string, unknown> | undefined, fieldNames: string[] | undefined, entity?: string, operation?: string, args?: PresenterArgs): Promise<unknown>;
6
+ /** Compatibility function while storage wiring moves to StorageGuard. */
7
+ export declare function guardStorage<T extends object>(orm: T, fields: Fields, entityName: string): T;
8
+ //# sourceMappingURL=egress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"egress.d.ts","sourceRoot":"","sources":["../../src/boot/egress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGzF,YAAY,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,yEAAyE;AACzE,wBAAsB,aAAa,CACjC,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC9C,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAChC,MAAM,SAAY,EAClB,SAAS,SAAY,EACrB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,CAE5F"}
@@ -0,0 +1,11 @@
1
+ import { PresenterExecutor } from '../dispatch/PresenterExecutor.js';
2
+ import { StorageGuard } from '../dispatch/StorageGuard.js';
3
+ /** Compatibility function while call sites move to PresenterExecutor. */
4
+ export async function presentEgress(result, presenter, fieldNames, entity = 'unknown', operation = 'unknown', args = {}) {
5
+ return new PresenterExecutor(presenter, fieldNames, entity, operation).present(result, args);
6
+ }
7
+ /** Compatibility function while storage wiring moves to StorageGuard. */
8
+ export function guardStorage(orm, fields, entityName) {
9
+ return new StorageGuard(fields, entityName).guard(orm);
10
+ }
11
+ //# sourceMappingURL=egress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"egress.js","sourceRoot":"","sources":["../../src/boot/egress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAsB,MAAM,kCAAkC,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAI3D,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAe,EACf,SAA8C,EAC9C,UAAgC,EAChC,MAAM,GAAG,SAAS,EAClB,SAAS,GAAG,SAAS,EACrB,OAAsB,EAAE;IAExB,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC/F,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAmB,GAAM,EAAE,MAAc,EAAE,UAAkB;IACvF,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The compensated realization of a frame — what `Together` becomes when its members do
3
+ * not share an engine.
4
+ *
5
+ * A transaction is the engine's own answer and costs nothing to use: the members are
6
+ * rebuilt over it and the engine gives both the unwind and the isolation. Across engines
7
+ * there is no such thing, so the unwind is built here: every write through the port is
8
+ * recorded with the image that preceded it, and a failure replays the inverses in reverse
9
+ * order.
10
+ *
11
+ * **It gives all-or-nothing, never isolation.** Between two writes a reader sees the half,
12
+ * and nothing here can hide it — that is the whole difference between the two realizations
13
+ * and the reason the boot says which one it built.
14
+ *
15
+ * The port is thirteen known gestures, which is what makes the inverse derivable rather
16
+ * than declared: a saga asks its author for an `undo` per step because its steps are
17
+ * arbitrary code. Here they are not.
18
+ */
19
+ import { type Fields } from '@fougere/schema';
20
+ import type { Logger } from '../builtins/logger.js';
21
+ /** One write that landed, and how to take it back. */
22
+ export interface Undo {
23
+ /** What it will undo, in the sentence a failure report needs. */
24
+ what: string;
25
+ run(): Promise<void>;
26
+ }
27
+ /**
28
+ * The ORM a member is handed inside a compensated frame: the same port, writing the same
29
+ * rows, leaving an inverse behind each time.
30
+ *
31
+ * `Object.create` for the same reason `guardStorage` uses it — the ORM keeps every gesture
32
+ * it had, including the ones this knows nothing about.
33
+ */
34
+ export declare function recording<T extends object>(orm: T, entity: string, fields: Fields, journal: Undo[]): T;
35
+ /**
36
+ * Replay the inverses, most recent first, and report rather than pretend.
37
+ *
38
+ * Every one is attempted even after one fails: stopping at the first would leave writes
39
+ * standing that could have been taken back. What cannot be undone is named — the caller is
40
+ * about to tell a user their transfer failed, and "it failed and here is what is still in
41
+ * the database" is the only honest version of that sentence.
42
+ */
43
+ export declare function unwind(journal: readonly Undo[], cause: unknown, log: Logger): Promise<never>;
44
+ //# sourceMappingURL=frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/boot/frame.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAsC,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,sDAAsD;AACtD,MAAM,WAAW,IAAI;IACnB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AA6DD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CA8FtG;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAkBlG"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * The compensated realization of a frame — what `Together` becomes when its members do
3
+ * not share an engine.
4
+ *
5
+ * A transaction is the engine's own answer and costs nothing to use: the members are
6
+ * rebuilt over it and the engine gives both the unwind and the isolation. Across engines
7
+ * there is no such thing, so the unwind is built here: every write through the port is
8
+ * recorded with the image that preceded it, and a failure replays the inverses in reverse
9
+ * order.
10
+ *
11
+ * **It gives all-or-nothing, never isolation.** Between two writes a reader sees the half,
12
+ * and nothing here can hide it — that is the whole difference between the two realizations
13
+ * and the reason the boot says which one it built.
14
+ *
15
+ * The port is thirteen known gestures, which is what makes the inverse derivable rather
16
+ * than declared: a saga asks its author for an `undo` per step because its steps are
17
+ * arbitrary code. Here they are not.
18
+ */
19
+ import { FieldGroup, Unique, primaryFieldOf } from '@fougere/schema';
20
+ /** Field by field, the way a stored value compares — a Date and its clone are the same one. */
21
+ function same(a, b) {
22
+ if (Object.is(a, b))
23
+ return true;
24
+ if (a instanceof Date && b instanceof Date)
25
+ return a.getTime() === b.getTime();
26
+ if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object')
27
+ return false;
28
+ return JSON.stringify(a) === JSON.stringify(b);
29
+ }
30
+ const pick = (row, keys) => Object.fromEntries(keys.map((key) => [key, row[key]]));
31
+ /**
32
+ * Whether an upsert's conflict can be something other than the primary key.
33
+ *
34
+ * The inverse of an upsert is derivable exactly when the conflict is the primary key: read
35
+ * the rows by key first, then restore the ones that were there and delete the ones that
36
+ * were not. `SqlEntityOrm` spells `onConflict(pk)` on SQLite and Postgres, so that holds —
37
+ * but MySQL's `onDuplicateKeyUpdate` fires on ANY unique constraint, and a row that
38
+ * conflicts on a unique email while carrying a different key would be restored under a key
39
+ * the write never touched.
40
+ *
41
+ * So the question is asked of the DECLARATION, not of the engine: an entity whose only
42
+ * unique constraint is its key upserts unambiguously everywhere. This file knows no dialect
43
+ * and should not learn one.
44
+ */
45
+ function mayConflictElsewhere(fields) {
46
+ const groups = FieldGroup.groupsOf(fields, Unique);
47
+ if (groups.length > 0)
48
+ return true;
49
+ // A sole `unique()` carries a one-member group, which `groupsOf` filters out.
50
+ return Object.values(fields).some((field) => FieldGroup.on(field, Unique).length > 0);
51
+ }
52
+ /** Refused where it is used, naming the group that makes the inverse ambiguous. */
53
+ function refuseAmbiguousUpsert(entity, gesture) {
54
+ throw new Error(`${entity}.${gesture}() cannot be unwound: ${entity} declares a unique constraint besides ` +
55
+ `its key, so an upsert may overwrite a row this frame never read — and there is no ` +
56
+ `transaction here to take it back. Put the members in one source, or write ` +
57
+ `create/update explicitly.`);
58
+ }
59
+ /**
60
+ * The ORM a member is handed inside a compensated frame: the same port, writing the same
61
+ * rows, leaving an inverse behind each time.
62
+ *
63
+ * `Object.create` for the same reason `guardStorage` uses it — the ORM keeps every gesture
64
+ * it had, including the ones this knows nothing about.
65
+ */
66
+ export function recording(orm, entity, fields, journal) {
67
+ const base = orm;
68
+ if (typeof base.create !== 'function' || typeof base.update !== 'function')
69
+ return orm;
70
+ const key = primaryFieldOf(fields);
71
+ if (!key) {
72
+ throw new Error(`${entity} declares no primary field, so a write to it cannot be taken back by ` +
73
+ `identity — and this frame has no transaction to do it instead.`);
74
+ }
75
+ const recorded = Object.create(orm);
76
+ recorded.create = async function (...args) {
77
+ const row = await base.create.apply(this, args);
78
+ const id = String(row[key]);
79
+ journal.push({ what: `create ${entity}#${id}`, run: () => base.delete.call(this, id).then(() => undefined) });
80
+ return row;
81
+ };
82
+ recorded.update = async function (...args) {
83
+ const [id, patch] = args;
84
+ const before = await base.findById.call(this, id);
85
+ const row = await base.update.apply(this, args);
86
+ if (!before)
87
+ return row;
88
+ // Compare against what the WRITE produced, not against the patch: a `update: 'now'`
89
+ // field is stamped by the storage, so the patch is not what the row now holds.
90
+ const touched = Object.keys(patch);
91
+ const wrote = pick(row, touched);
92
+ journal.push({
93
+ what: `update ${entity}#${id} (${touched.join(', ')})`,
94
+ run: async () => {
95
+ const current = await base.findById.call(this, id);
96
+ if (!current)
97
+ throw new Error(`${entity}#${id} is gone`);
98
+ const moved = touched.filter((field) => !same(current[field], wrote[field]));
99
+ if (moved.length > 0) {
100
+ throw new Error(`${entity}#${id} was changed by someone else since (${moved.join(', ')})`);
101
+ }
102
+ await base.update.call(this, id, pick(before, touched));
103
+ },
104
+ });
105
+ return row;
106
+ };
107
+ recorded.delete = async function (id) {
108
+ const before = await base.findById.call(this, id);
109
+ const removed = await base.delete.call(this, id);
110
+ if (removed && before) {
111
+ journal.push({ what: `delete ${entity}#${id}`, run: () => base.create.call(this, before).then(() => undefined) });
112
+ }
113
+ return removed;
114
+ };
115
+ // An upsert says neither what it wrote over nor what it inserted, so the frame reads the
116
+ // keys first: what was there is restored, what was not is deleted. One extra query for
117
+ // the page, which is the same bargain `update` already makes for one row.
118
+ const undoUpsert = async function (rows) {
119
+ const ids = rows.map((row) => String(row[key]));
120
+ const before = await base.findByKeys.call(this, ids);
121
+ return {
122
+ what: `upsert ${entity} (${ids.length} row(s))`,
123
+ run: async () => {
124
+ for (const id of ids) {
125
+ const was = before.get(id);
126
+ if (was)
127
+ await base.update.call(this, id, was);
128
+ else
129
+ await base.delete.call(this, id);
130
+ }
131
+ },
132
+ };
133
+ };
134
+ if (typeof base.upsert === 'function') {
135
+ recorded.upsert = async function (input, ...rest) {
136
+ if (mayConflictElsewhere(fields))
137
+ refuseAmbiguousUpsert(entity, 'upsert');
138
+ const undo = await undoUpsert.call(this, [input]);
139
+ const row = await base.upsert.call(this, input, ...rest);
140
+ journal.push(undo);
141
+ return row;
142
+ };
143
+ }
144
+ if (typeof base.upsertAll === 'function') {
145
+ recorded.upsertAll = async function (inputs, ...rest) {
146
+ if (mayConflictElsewhere(fields))
147
+ refuseAmbiguousUpsert(entity, 'upsertAll');
148
+ const undo = await undoUpsert.call(this, inputs);
149
+ const written = await base.upsertAll.call(this, inputs, ...rest);
150
+ journal.push(undo);
151
+ return written;
152
+ };
153
+ }
154
+ return recorded;
155
+ }
156
+ /**
157
+ * Replay the inverses, most recent first, and report rather than pretend.
158
+ *
159
+ * Every one is attempted even after one fails: stopping at the first would leave writes
160
+ * standing that could have been taken back. What cannot be undone is named — the caller is
161
+ * about to tell a user their transfer failed, and "it failed and here is what is still in
162
+ * the database" is the only honest version of that sentence.
163
+ */
164
+ export async function unwind(journal, cause, log) {
165
+ const stuck = [];
166
+ for (const undo of [...journal].reverse()) {
167
+ try {
168
+ await undo.run();
169
+ }
170
+ catch (failure) {
171
+ stuck.push(`${undo.what} — ${failure.message}`);
172
+ log.error(`frame could not undo ${undo.what}`, failure);
173
+ }
174
+ }
175
+ if (stuck.length === 0)
176
+ throw cause;
177
+ throw new Error(`The frame failed and ${stuck.length} of ${journal.length} write(s) could not be taken back: ` +
178
+ `${stuck.join('; ')}. What remains is in the database. Original failure: ` +
179
+ `${cause?.message ?? String(cause)}`, { cause });
180
+ }
181
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/boot/frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type EntityConstructor } from '@fougere/schema';
2
+ import type { FrondDescriptor, ProviderEntry } from '../scan/frond.js';
3
+ /**
4
+ * Who owns an entity's storage.
5
+ *
6
+ * `Repository(Commande, Stock)` states it — an aggregate is the only thing that claims
7
+ * entities it is not named after, and the arity is what says so. A repository of ONE owns
8
+ * nothing: a boundary between one thing and nothing is not a boundary, and the judge is
9
+ * already on that entity's rows.
10
+ */
11
+ export declare function ownersOf(providers: readonly ProviderEntry[]): Map<string, string>;
12
+ /**
13
+ * `EntityOrm<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in.
14
+ *
15
+ * A door judges and projects; a HOLDER keeps the storage. So the rule is not about which
16
+ * directory a file sits in but about which of the two a class is: a handler, a presenter and
17
+ * a collector may never name an ORM, and a provider may name only the ORM of what its prefab
18
+ * was built on — which is `Repository` and `Mirror`, without either being named here.
19
+ *
20
+ * What it buys beyond one word instead of two: an entity that becomes owned later needs no
21
+ * call site to move, because none of them ever spelled the storage.
22
+ *
23
+ * Refused at boot rather than reported by `verify`, which nothing calls at startup.
24
+ */
25
+ export declare function refuseOrmInUserCode(frond: FrondDescriptor, owners: Map<string, string>): void;
26
+ /**
27
+ * An owned entity has no automatic CRUD — said at boot, not at the first request.
28
+ *
29
+ * `HandlerFacade.deps()` asks for `<E>Repository` when a handler inherits the five gestures
30
+ * and declares no constructor of its own, and an owned entity has no such key. That alone
31
+ * refuses — but LAZILY, at the first call, on the container's own sentence: measured, the app
32
+ * booted clean and answered every request with `'LedgerRepository' is not registered`. A
33
+ * receiver that starts and then rejects everything is found in production, which is the
34
+ * reason `serve()` checks its address at boot rather than per call.
35
+ *
36
+ * Recognized by FORM, like the façade recognizes it: a prototype carrying `list` and
37
+ * `findById` needs storage of its own, whether `Crud()` put them there or an author did.
38
+ */
39
+ export declare function refuseCrudOnOwned(frond: FrondDescriptor, owners: Map<string, string>): void;
40
+ /** Placeholder so the module's imports stay honest if a caller wants the entity list. */
41
+ export type { EntityConstructor };
42
+ //# sourceMappingURL=ownership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKvE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBjF;AAaD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAoC7F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiB3F;AASD,yFAAyF;AACzF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { registrationKeyOf } from '@fougere/schema';
2
+ import { targetOf } from '../prefab/prefab.js';
3
+ import { ownedBy, repositoryKeyOf } from '../prefab/repository.js';
4
+ import { ormKeyOf } from '../orm.js';
5
+ /**
6
+ * Who owns an entity's storage.
7
+ *
8
+ * `Repository(Commande, Stock)` states it — an aggregate is the only thing that claims
9
+ * entities it is not named after, and the arity is what says so. A repository of ONE owns
10
+ * nothing: a boundary between one thing and nothing is not a boundary, and the judge is
11
+ * already on that entity's rows.
12
+ */
13
+ export function ownersOf(providers) {
14
+ const owners = new Map();
15
+ for (const provider of providers) {
16
+ const owned = ownedBy(provider.ctor);
17
+ if (owned.length < 2)
18
+ continue;
19
+ for (const entity of owned) {
20
+ const name = registrationKeyOf(entity.name);
21
+ const first = owners.get(name);
22
+ if (first && first !== provider.ctor.name) {
23
+ // Refused rather than settled, for the reason `ports:` refuses two implementations
24
+ // and `remotes` two owners of an entity: whichever won would depend on scan order,
25
+ // and one of the two aggregates would be silently unenforced.
26
+ throw new Error(`[aggregate] ${first} and ${provider.ctor.name} both own ${name}. `
27
+ + 'An entity has one owner: merge the two, or take it out of one of them.');
28
+ }
29
+ owners.set(name, provider.ctor.name);
30
+ }
31
+ }
32
+ return owners;
33
+ }
34
+ /**
35
+ * The entities a class was BUILT ON — what a prefab may legitimately be handed the storage
36
+ * of. Empty for a plain service, which is why one cannot ask for an ORM at all.
37
+ */
38
+ function builtOn(ctor) {
39
+ const owned = ownedBy(ctor);
40
+ if (owned.length > 0)
41
+ return owned.map((e) => registrationKeyOf(e.name));
42
+ const target = targetOf(ctor);
43
+ return target?.name ? [registrationKeyOf(target.name)] : [];
44
+ }
45
+ /**
46
+ * `EntityOrm<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in.
47
+ *
48
+ * A door judges and projects; a HOLDER keeps the storage. So the rule is not about which
49
+ * directory a file sits in but about which of the two a class is: a handler, a presenter and
50
+ * a collector may never name an ORM, and a provider may name only the ORM of what its prefab
51
+ * was built on — which is `Repository` and `Mirror`, without either being named here.
52
+ *
53
+ * What it buys beyond one word instead of two: an entity that becomes owned later needs no
54
+ * call site to move, because none of them ever spelled the storage.
55
+ *
56
+ * Refused at boot rather than reported by `verify`, which nothing calls at startup.
57
+ */
58
+ export function refuseOrmInUserCode(frond, owners) {
59
+ const doors = [
60
+ ...frond.handlers.map((h) => ({ ...h, kind: 'handler' })),
61
+ ...frond.presenters.map((p) => ({ ...p, kind: 'presenter' })),
62
+ ...frond.collectors.map((c) => ({ ...c, kind: 'collector' })),
63
+ ];
64
+ const holders = frond.providers.map((p) => ({ ...p, kind: 'provider' }));
65
+ for (const decl of [...doors, ...holders]) {
66
+ const allowed = decl.kind === 'provider' ? builtOn(decl.ctor) : [];
67
+ for (const dep of decl.deps) {
68
+ const entity = entityOfOrmKey(dep);
69
+ if (!entity)
70
+ continue;
71
+ const owner = owners.get(entity);
72
+ if (owner && owner !== decl.ctor.name) {
73
+ throw new Error(`[aggregate] ${decl.ctor.name} asks for ${dep}, and ${owner} owns ${entity}.\n`
74
+ + ` Nothing else reaches an owned entity's storage — name the operation on `
75
+ + `${owner} and ask for it:\n`
76
+ + ` constructor(private ${entity}: ${owner}) {}\n`
77
+ + ` ${decl.filePath}`);
78
+ }
79
+ if (allowed.includes(entity))
80
+ continue;
81
+ throw new Error(`${decl.ctor.name} asks for ${dep}. Storage is reached through a repository, `
82
+ + `never through the port:\n`
83
+ + ` constructor(private ${entity}: ${repositoryKeyOf(entity)}) {}\n`
84
+ + ` It answers every gesture ${dep} does, whether or not anyone wrote the file — `
85
+ + `and the day ${entity} belongs to an aggregate, this line does not move.\n`
86
+ + ` ${decl.filePath}`);
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * An owned entity has no automatic CRUD — said at boot, not at the first request.
92
+ *
93
+ * `HandlerFacade.deps()` asks for `<E>Repository` when a handler inherits the five gestures
94
+ * and declares no constructor of its own, and an owned entity has no such key. That alone
95
+ * refuses — but LAZILY, at the first call, on the container's own sentence: measured, the app
96
+ * booted clean and answered every request with `'LedgerRepository' is not registered`. A
97
+ * receiver that starts and then rejects everything is found in production, which is the
98
+ * reason `serve()` checks its address at boot rather than per call.
99
+ *
100
+ * Recognized by FORM, like the façade recognizes it: a prototype carrying `list` and
101
+ * `findById` needs storage of its own, whether `Crud()` put them there or an author did.
102
+ */
103
+ export function refuseCrudOnOwned(frond, owners) {
104
+ for (const handler of frond.handlers) {
105
+ const owner = owners.get(handler.address);
106
+ if (!owner || handler.deps.length > 0)
107
+ continue;
108
+ const proto = handler.ctor.prototype;
109
+ if (typeof proto?.list !== 'function' || typeof proto?.findById !== 'function')
110
+ continue;
111
+ throw new Error(`[aggregate] ${handler.ctor.name} takes the five gestures on ${handler.address}, `
112
+ + `which ${owner} owns.\n`
113
+ + ` An owned entity has no automatic CRUD: nothing writes it but its owner, so there `
114
+ + `is no storage to hand this handler.\n`
115
+ + ` Name the operations on ${owner} and call them:\n`
116
+ + ` constructor(private ${handler.address}: ${owner}) {}\n`
117
+ + ` ${handler.filePath}`);
118
+ }
119
+ }
120
+ /** `'PostOrm'` → `'post'`, and nothing for a key that is not one. */
121
+ function entityOfOrmKey(dep) {
122
+ if (!dep.endsWith('Orm') || dep === 'Orm')
123
+ return undefined;
124
+ const entity = registrationKeyOf(dep.slice(0, -'Orm'.length));
125
+ return ormKeyOf(entity) === dep ? entity : undefined;
126
+ }
127
+ //# sourceMappingURL=ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA0B,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAmC;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,iBAAiB,CAAE,MAA2B,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1C,mFAAmF;gBACnF,mFAAmF;gBACnF,8DAA8D;gBAC9D,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,IAAI,IAAI;sBACjE,wEAAwE,CAC3E,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,IAAa;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAkC,CAAC;IAC/D,OAAO,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAsB,EAAE,MAA2B;IACrF,MAAM,KAAK,GAAG;QACZ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACzD,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7D,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;KAC9D,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC,CAAC,CAAC;IAElF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,GAAG,SAAS,KAAK,SAAS,MAAM,KAAK;sBAC7E,2EAA2E;sBAC3E,GAAG,KAAK,oBAAoB;sBAC5B,2BAA2B,MAAM,KAAK,KAAK,QAAQ;sBACnD,KAAK,IAAI,CAAC,QAAQ,EAAE,CACvB,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAEvC,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,GAAG,6CAA6C;kBAC5E,2BAA2B;kBAC3B,2BAA2B,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC,QAAQ;kBACrE,8BAA8B,GAAG,gDAAgD;kBACjF,eAAe,MAAM,sDAAsD;kBAC3E,KAAK,IAAI,CAAC,QAAQ,EAAE,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAsB,EAAE,MAA2B;IACnF,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAChD,MAAM,KAAK,GAAI,OAAO,CAAC,IAAgD,CAAC,SAAS,CAAC;QAClF,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,EAAE,QAAQ,KAAK,UAAU;YAAE,SAAS;QAEzF,MAAM,IAAI,KAAK,CACb,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,+BAA+B,OAAO,CAAC,OAAO,IAAI;cAChF,SAAS,KAAK,UAAU;cACxB,qFAAqF;cACrF,uCAAuC;cACvC,4BAA4B,KAAK,mBAAmB;cACpD,2BAA2B,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ;cAC5D,KAAK,OAAO,CAAC,QAAQ,EAAE,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ProviderEntry } from '../scan/frond.js';
2
+ /**
3
+ * A port is a class something already answers under. Nothing declares one — the
4
+ * prototype chain states it, so `class StripePayment extends Payment` IS the whole
5
+ * registration, and so is `class MyLogger extends Logger` over a builtin.
6
+ *
7
+ * This is the fourth reading of the rule the other three already apply: the type
8
+ * names the SUBJECT (`EntityOrm<E>`, `Emit<F>`, `Facade<H>`) and the container
9
+ * holds the realization. Providers were the one case where the type named the
10
+ * realization instead, so `constructor(private payment: Payment)` resolved to the
11
+ * base class and a handler got an object whose method did not exist.
12
+ *
13
+ * Only the DIRECT base binds. A deeper chain binds each link to its own child, and
14
+ * a case that wants otherwise states it in `ports:` — which wins over all of this.
15
+ */
16
+ export declare function portBindings(providers: ProviderEntry[], answers: (name: string) => boolean, chosen: Record<string, string> | undefined): Map<string, ProviderEntry>;
17
+ //# sourceMappingURL=ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/boot/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACzC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CA6C5B"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * A port is a class something already answers under. Nothing declares one — the
3
+ * prototype chain states it, so `class StripePayment extends Payment` IS the whole
4
+ * registration, and so is `class MyLogger extends Logger` over a builtin.
5
+ *
6
+ * This is the fourth reading of the rule the other three already apply: the type
7
+ * names the SUBJECT (`EntityOrm<E>`, `Emit<F>`, `Facade<H>`) and the container
8
+ * holds the realization. Providers were the one case where the type named the
9
+ * realization instead, so `constructor(private payment: Payment)` resolved to the
10
+ * base class and a handler got an object whose method did not exist.
11
+ *
12
+ * Only the DIRECT base binds. A deeper chain binds each link to its own child, and
13
+ * a case that wants otherwise states it in `ports:` — which wins over all of this.
14
+ */
15
+ export function portBindings(providers, answers, chosen) {
16
+ // port class name → the classes that extend it, in scan order.
17
+ const candidates = new Map();
18
+ for (const provider of providers) {
19
+ const base = Object.getPrototypeOf(provider.ctor);
20
+ const port = base?.name;
21
+ // ONE condition: something already answers under that name. Providers are
22
+ // registered into this scope just above, and the builtins sit in its parent, so
23
+ // this covers a neighbour service and `Logger` alike — a framework class is a
24
+ // port like any other, which is what makes a default overridable.
25
+ //
26
+ // It is also what excludes a prefab: a repository extends the class
27
+ // `Repository(Post)` returned (`RepositoryBase`), and no key is ever that name.
28
+ if (!port || !answers(port))
29
+ continue;
30
+ candidates.set(port, [...(candidates.get(port) ?? []), provider]);
31
+ }
32
+ const bound = new Map();
33
+ for (const [port, impls] of candidates) {
34
+ const named = chosen?.[port];
35
+ if (named) {
36
+ const pick = impls.find((i) => i.ctor.name === named);
37
+ if (!pick) {
38
+ throw new Error(`[ports] ${port}: '${named}' does not extend it. `
39
+ + `What does: ${impls.map((i) => i.ctor.name).join(', ')}.`);
40
+ }
41
+ bound.set(port, pick);
42
+ continue;
43
+ }
44
+ if (impls.length > 1) {
45
+ // Refusing rather than keeping one, for the reason `remotes` refuses two owners
46
+ // of an entity: whichever won would depend on scan order, and the handler would
47
+ // charge the wrong provider without a word.
48
+ throw new Error(`[ports] ${impls.map((i) => i.ctor.name).join(' and ')} both extend ${port}, `
49
+ + 'and nothing says which one answers it. Which realization a deployment uses is '
50
+ + `not a fact about the code — state it: ports: { ${port}: '${impls[0].ctor.name}' } `
51
+ + 'in fougere.config.ts.');
52
+ }
53
+ bound.set(port, impls[0]);
54
+ }
55
+ return bound;
56
+ }
57
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/boot/ports.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAC1B,SAA0B,EAC1B,OAAkC,EAClC,MAA0C;IAE1C,+DAA+D;IAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAA6B,CAAC;QAC9E,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;QACxB,0EAA0E;QAC1E,gFAAgF;QAChF,8EAA8E;QAC9E,kEAAkE;QAClE,EAAE;QACF,oEAAoE;QACpE,gFAAgF;QAChF,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,MAAM,KAAK,wBAAwB;sBAChD,cAAc,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5D,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,gFAAgF;YAChF,gFAAgF;YAChF,4CAA4C;YAC5C,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI;kBAC5E,gFAAgF;kBAChF,kDAAkD,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM;kBACpF,uBAAuB,CAC1B,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}