@fougere/core 0.6.0-alpha.0 → 0.8.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 (510) hide show
  1. package/README.md +1 -1
  2. package/dist/boot/AppLifecycle.d.ts +1 -1
  3. package/dist/boot/AppLifecycle.d.ts.map +1 -1
  4. package/dist/boot/AppLifecycle.js +13 -2
  5. package/dist/boot/AppLifecycle.js.map +1 -1
  6. package/dist/boot/Emissions.d.ts +13 -90
  7. package/dist/boot/Emissions.d.ts.map +1 -1
  8. package/dist/boot/Emissions.js +21 -118
  9. package/dist/boot/Emissions.js.map +1 -1
  10. package/dist/boot/ambient-port.d.ts +3 -24
  11. package/dist/boot/ambient-port.d.ts.map +1 -1
  12. package/dist/boot/ambient.als.d.ts.map +1 -1
  13. package/dist/boot/ambient.als.js +7 -12
  14. package/dist/boot/ambient.als.js.map +1 -1
  15. package/dist/boot/ambient.queue.d.ts +2 -5
  16. package/dist/boot/ambient.queue.d.ts.map +1 -1
  17. package/dist/boot/ambient.queue.js.map +1 -1
  18. package/dist/boot/apply.d.ts +1 -13
  19. package/dist/boot/apply.d.ts.map +1 -1
  20. package/dist/boot/apply.js +9 -16
  21. package/dist/boot/apply.js.map +1 -1
  22. package/dist/boot/auth.d.ts +2 -12
  23. package/dist/boot/auth.d.ts.map +1 -1
  24. package/dist/boot/boot.d.ts +3 -16
  25. package/dist/boot/boot.d.ts.map +1 -1
  26. package/dist/boot/boot.js +4 -11
  27. package/dist/boot/boot.js.map +1 -1
  28. package/dist/boot/bootstrap.d.ts.map +1 -1
  29. package/dist/boot/bootstrap.js +84 -130
  30. package/dist/boot/bootstrap.js.map +1 -1
  31. package/dist/boot/card.d.ts +1 -17
  32. package/dist/boot/card.d.ts.map +1 -1
  33. package/dist/boot/card.js +3 -32
  34. package/dist/boot/card.js.map +1 -1
  35. package/dist/boot/frame.d.ts +8 -32
  36. package/dist/boot/frame.d.ts.map +1 -1
  37. package/dist/boot/frame.js +17 -56
  38. package/dist/boot/frame.js.map +1 -1
  39. package/dist/boot/hosted.d.ts +2 -24
  40. package/dist/boot/hosted.d.ts.map +1 -1
  41. package/dist/boot/hosted.js +10 -15
  42. package/dist/boot/hosted.js.map +1 -1
  43. package/dist/boot/ownership.d.ts +3 -36
  44. package/dist/boot/ownership.d.ts.map +1 -1
  45. package/dist/boot/ownership.js +5 -40
  46. package/dist/boot/ownership.js.map +1 -1
  47. package/dist/boot/ports.d.ts +1 -14
  48. package/dist/boot/ports.d.ts.map +1 -1
  49. package/dist/boot/ports.js +1 -14
  50. package/dist/boot/ports.js.map +1 -1
  51. package/dist/boot/remote.d.ts +5 -38
  52. package/dist/boot/remote.d.ts.map +1 -1
  53. package/dist/boot/remote.js +8 -41
  54. package/dist/boot/remote.js.map +1 -1
  55. package/dist/boot/runner.d.ts +4 -21
  56. package/dist/boot/runner.d.ts.map +1 -1
  57. package/dist/boot/runner.js +4 -17
  58. package/dist/boot/runner.js.map +1 -1
  59. package/dist/boot/seed.d.ts +4 -31
  60. package/dist/boot/seed.d.ts.map +1 -1
  61. package/dist/boot/seed.js +6 -37
  62. package/dist/boot/seed.js.map +1 -1
  63. package/dist/boot/statement-drift.d.ts +2 -21
  64. package/dist/boot/statement-drift.d.ts.map +1 -1
  65. package/dist/boot/statement-drift.js +4 -9
  66. package/dist/boot/statement-drift.js.map +1 -1
  67. package/dist/boot/together.d.ts +4 -8
  68. package/dist/boot/together.d.ts.map +1 -1
  69. package/dist/boot/together.js +15 -50
  70. package/dist/boot/together.js.map +1 -1
  71. package/dist/boot/types.d.ts +31 -173
  72. package/dist/boot/types.d.ts.map +1 -1
  73. package/dist/builtin/config.d.ts +7 -0
  74. package/dist/builtin/config.d.ts.map +1 -0
  75. package/dist/builtin/config.js +15 -0
  76. package/dist/builtin/config.js.map +1 -0
  77. package/dist/{builtins → builtin}/logger.d.ts +4 -25
  78. package/dist/builtin/logger.d.ts.map +1 -0
  79. package/dist/{builtins → builtin}/logger.js +5 -32
  80. package/dist/builtin/logger.js.map +1 -0
  81. package/dist/config-loader.d.ts +9 -67
  82. package/dist/config-loader.d.ts.map +1 -1
  83. package/dist/config-loader.js +5 -18
  84. package/dist/config-loader.js.map +1 -1
  85. package/dist/contract.d.ts +15 -31
  86. package/dist/contract.d.ts.map +1 -1
  87. package/dist/contract.js +13 -26
  88. package/dist/contract.js.map +1 -1
  89. package/dist/criterion.d.ts +37 -0
  90. package/dist/criterion.d.ts.map +1 -0
  91. package/dist/criterion.js +28 -0
  92. package/dist/criterion.js.map +1 -0
  93. package/dist/crypto/encoding.d.ts +2 -15
  94. package/dist/crypto/encoding.d.ts.map +1 -1
  95. package/dist/crypto/encoding.js +2 -15
  96. package/dist/crypto/encoding.js.map +1 -1
  97. package/dist/crypto/node.d.ts.map +1 -1
  98. package/dist/crypto/node.js +1 -7
  99. package/dist/crypto/node.js.map +1 -1
  100. package/dist/crypto/port.d.ts +2 -18
  101. package/dist/crypto/port.d.ts.map +1 -1
  102. package/dist/crypto/port.js +1 -17
  103. package/dist/crypto/port.js.map +1 -1
  104. package/dist/crypto/webcrypto.d.ts.map +1 -1
  105. package/dist/crypto/webcrypto.js +1 -12
  106. package/dist/crypto/webcrypto.js.map +1 -1
  107. package/dist/declare.d.ts +19 -37
  108. package/dist/declare.d.ts.map +1 -1
  109. package/dist/declare.js +23 -30
  110. package/dist/declare.js.map +1 -1
  111. package/dist/define.d.ts +2 -3
  112. package/dist/define.d.ts.map +1 -1
  113. package/dist/define.js +2 -3
  114. package/dist/define.js.map +1 -1
  115. package/dist/descriptor/Fronds.d.ts +3 -28
  116. package/dist/descriptor/Fronds.d.ts.map +1 -1
  117. package/dist/descriptor/Fronds.js +6 -31
  118. package/dist/descriptor/Fronds.js.map +1 -1
  119. package/dist/descriptor/frond.d.ts +25 -60
  120. package/dist/descriptor/frond.d.ts.map +1 -1
  121. package/dist/descriptor/frond.js +5 -1
  122. package/dist/descriptor/frond.js.map +1 -1
  123. package/dist/dispatch/ArgumentResolver.d.ts +1 -1
  124. package/dist/dispatch/ArgumentResolver.d.ts.map +1 -1
  125. package/dist/dispatch/ArgumentResolver.js +5 -5
  126. package/dist/dispatch/ArgumentResolver.js.map +1 -1
  127. package/dist/dispatch/DispatchEvent.d.ts +2 -2
  128. package/dist/dispatch/DispatchEvent.d.ts.map +1 -1
  129. package/dist/dispatch/DispatchLifecycle.d.ts +1 -7
  130. package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -1
  131. package/dist/dispatch/DispatchLifecycle.js +1 -7
  132. package/dist/dispatch/DispatchLifecycle.js.map +1 -1
  133. package/dist/dispatch/DispatchPort.d.ts +1 -1
  134. package/dist/dispatch/DispatchPort.d.ts.map +1 -1
  135. package/dist/dispatch/Dispatcher.d.ts +1 -1
  136. package/dist/dispatch/Dispatcher.d.ts.map +1 -1
  137. package/dist/dispatch/Dispatcher.js +2 -2
  138. package/dist/dispatch/Dispatcher.js.map +1 -1
  139. package/dist/{boot → dispatch}/HandlerFacade.d.ts +25 -38
  140. package/dist/dispatch/HandlerFacade.d.ts.map +1 -0
  141. package/dist/{boot → dispatch}/HandlerFacade.js +65 -74
  142. package/dist/dispatch/HandlerFacade.js.map +1 -0
  143. package/dist/dispatch/LocalRoutePolicy.d.ts +1 -1
  144. package/dist/dispatch/LocalRoutePolicy.d.ts.map +1 -1
  145. package/dist/dispatch/LocalRoutePolicy.js +4 -4
  146. package/dist/dispatch/LocalRoutePolicy.js.map +1 -1
  147. package/dist/dispatch/OperationRoute.d.ts +2 -2
  148. package/dist/dispatch/OperationRoute.d.ts.map +1 -1
  149. package/dist/dispatch/OutputView.d.ts +3 -2
  150. package/dist/dispatch/OutputView.d.ts.map +1 -1
  151. package/dist/dispatch/OutputView.js +19 -1
  152. package/dist/dispatch/OutputView.js.map +1 -1
  153. package/dist/dispatch/Route.d.ts +2 -2
  154. package/dist/dispatch/Route.d.ts.map +1 -1
  155. package/dist/dispatch/RoutePolicy.d.ts +1 -1
  156. package/dist/dispatch/RoutePolicy.d.ts.map +1 -1
  157. package/dist/dispatch/RouteRegistry.d.ts +1 -1
  158. package/dist/dispatch/RouteRegistry.d.ts.map +1 -1
  159. package/dist/dispatch/RouteRegistry.js +2 -2
  160. package/dist/dispatch/RouteRegistry.js.map +1 -1
  161. package/dist/dispatch/RouteResolver.d.ts +2 -4
  162. package/dist/dispatch/RouteResolver.d.ts.map +1 -1
  163. package/dist/dispatch/StorageGuard.d.ts +40 -8
  164. package/dist/dispatch/StorageGuard.d.ts.map +1 -1
  165. package/dist/dispatch/StorageGuard.js +151 -20
  166. package/dist/dispatch/StorageGuard.js.map +1 -1
  167. package/dist/dispatch/presenterArguments.d.ts +7 -0
  168. package/dist/dispatch/presenterArguments.d.ts.map +1 -0
  169. package/dist/dispatch/presenterArguments.js +12 -0
  170. package/dist/dispatch/presenterArguments.js.map +1 -0
  171. package/dist/dispatch/remoteRoutes.d.ts +7 -0
  172. package/dist/dispatch/remoteRoutes.d.ts.map +1 -0
  173. package/dist/dispatch/{RemoteRouteResolver.js → remoteRoutes.js} +6 -10
  174. package/dist/dispatch/remoteRoutes.js.map +1 -0
  175. package/dist/dispatch/routeNotFound.d.ts +9 -0
  176. package/dist/dispatch/routeNotFound.d.ts.map +1 -0
  177. package/dist/dispatch/routeNotFound.js +21 -0
  178. package/dist/dispatch/routeNotFound.js.map +1 -0
  179. package/dist/dispatch/validateInput.d.ts +5 -0
  180. package/dist/dispatch/validateInput.d.ts.map +1 -0
  181. package/dist/dispatch/validateInput.js +20 -0
  182. package/dist/dispatch/validateInput.js.map +1 -0
  183. package/dist/effective-operation.d.ts +1 -24
  184. package/dist/effective-operation.d.ts.map +1 -1
  185. package/dist/effective-operation.js +21 -50
  186. package/dist/effective-operation.js.map +1 -1
  187. package/dist/emit.d.ts +4 -42
  188. package/dist/emit.d.ts.map +1 -1
  189. package/dist/emit.js +3 -39
  190. package/dist/emit.js.map +1 -1
  191. package/dist/entry/facade.d.ts +8 -0
  192. package/dist/entry/facade.d.ts.map +1 -0
  193. package/dist/entry/facade.js +28 -0
  194. package/dist/entry/facade.js.map +1 -0
  195. package/dist/entry/transport.d.ts +5 -0
  196. package/dist/entry/transport.d.ts.map +1 -0
  197. package/dist/entry/transport.js +11 -0
  198. package/dist/entry/transport.js.map +1 -0
  199. package/dist/frond-config.d.ts +7 -70
  200. package/dist/frond-config.d.ts.map +1 -1
  201. package/dist/frond-config.js +1 -9
  202. package/dist/frond-config.js.map +1 -1
  203. package/dist/identity-keys.d.ts +2 -5
  204. package/dist/identity-keys.d.ts.map +1 -1
  205. package/dist/identity-keys.js +3 -16
  206. package/dist/identity-keys.js.map +1 -1
  207. package/dist/identity.d.ts +4 -30
  208. package/dist/identity.d.ts.map +1 -1
  209. package/dist/identity.js +11 -73
  210. package/dist/identity.js.map +1 -1
  211. package/dist/imports.d.ts +1 -7
  212. package/dist/imports.d.ts.map +1 -1
  213. package/dist/imports.js +1 -7
  214. package/dist/imports.js.map +1 -1
  215. package/dist/index.d.ts +17 -24
  216. package/dist/index.d.ts.map +1 -1
  217. package/dist/index.js +10 -18
  218. package/dist/index.js.map +1 -1
  219. package/dist/loader.d.ts +1 -8
  220. package/dist/loader.d.ts.map +1 -1
  221. package/dist/loader.js +1 -8
  222. package/dist/loader.js.map +1 -1
  223. package/dist/node.d.ts +2 -11
  224. package/dist/node.d.ts.map +1 -1
  225. package/dist/node.js +2 -11
  226. package/dist/node.js.map +1 -1
  227. package/dist/prefab/collector.d.ts +1 -22
  228. package/dist/prefab/collector.d.ts.map +1 -1
  229. package/dist/prefab/collector.js +1 -22
  230. package/dist/prefab/collector.js.map +1 -1
  231. package/dist/prefab/crud.d.ts +16 -32
  232. package/dist/prefab/crud.d.ts.map +1 -1
  233. package/dist/prefab/crud.js +31 -58
  234. package/dist/prefab/crud.js.map +1 -1
  235. package/dist/prefab/mirror.d.ts +2 -24
  236. package/dist/prefab/mirror.d.ts.map +1 -1
  237. package/dist/prefab/mirror.js +2 -20
  238. package/dist/prefab/mirror.js.map +1 -1
  239. package/dist/prefab/prefab.d.ts +1 -7
  240. package/dist/prefab/prefab.d.ts.map +1 -1
  241. package/dist/prefab/prefab.js +1 -7
  242. package/dist/prefab/prefab.js.map +1 -1
  243. package/dist/prefab/presenter.d.ts +2 -36
  244. package/dist/prefab/presenter.d.ts.map +1 -1
  245. package/dist/prefab/presenter.js +2 -36
  246. package/dist/prefab/presenter.js.map +1 -1
  247. package/dist/prefab/repository.d.ts +5 -73
  248. package/dist/prefab/repository.d.ts.map +1 -1
  249. package/dist/prefab/repository.js +3 -16
  250. package/dist/prefab/repository.js.map +1 -1
  251. package/dist/scan/adapters.d.ts +3 -0
  252. package/dist/scan/adapters.d.ts.map +1 -0
  253. package/dist/scan/adapters.js +25 -0
  254. package/dist/scan/adapters.js.map +1 -0
  255. package/dist/scan/bundling.d.ts +1 -12
  256. package/dist/scan/bundling.d.ts.map +1 -1
  257. package/dist/scan/bundling.js +1 -12
  258. package/dist/scan/bundling.js.map +1 -1
  259. package/dist/scan/contract.d.ts +27 -0
  260. package/dist/scan/contract.d.ts.map +1 -0
  261. package/dist/scan/contract.js +46 -0
  262. package/dist/scan/contract.js.map +1 -0
  263. package/dist/scan/conventions.d.ts +6 -40
  264. package/dist/scan/conventions.d.ts.map +1 -1
  265. package/dist/scan/conventions.js +5 -34
  266. package/dist/scan/conventions.js.map +1 -1
  267. package/dist/scan/emit.d.ts +1 -5
  268. package/dist/scan/emit.d.ts.map +1 -1
  269. package/dist/scan/emit.js +10 -78
  270. package/dist/scan/emit.js.map +1 -1
  271. package/dist/scan/handler-parser.d.ts +4 -26
  272. package/dist/scan/handler-parser.d.ts.map +1 -1
  273. package/dist/scan/handler-parser.js +26 -83
  274. package/dist/scan/handler-parser.js.map +1 -1
  275. package/dist/scan/result.d.ts +3 -16
  276. package/dist/scan/result.d.ts.map +1 -1
  277. package/dist/scan/scanner.d.ts +2 -27
  278. package/dist/scan/scanner.d.ts.map +1 -1
  279. package/dist/scan/scanner.js +45 -133
  280. package/dist/scan/scanner.js.map +1 -1
  281. package/dist/scan/statement.d.ts.map +1 -1
  282. package/dist/scan/statement.js +60 -37
  283. package/dist/scan/statement.js.map +1 -1
  284. package/dist/source.d.ts +53 -0
  285. package/dist/source.d.ts.map +1 -0
  286. package/dist/source.js +18 -0
  287. package/dist/source.js.map +1 -0
  288. package/dist/storage.d.ts +13 -210
  289. package/dist/storage.d.ts.map +1 -1
  290. package/dist/storage.js +4 -68
  291. package/dist/storage.js.map +1 -1
  292. package/dist/store.d.ts +18 -0
  293. package/dist/store.d.ts.map +1 -0
  294. package/dist/store.js +179 -0
  295. package/dist/store.js.map +1 -0
  296. package/dist/verify.d.ts +5 -38
  297. package/dist/verify.d.ts.map +1 -1
  298. package/dist/verify.js +17 -37
  299. package/dist/verify.js.map +1 -1
  300. package/dist/wire/CallLog.d.ts +32 -0
  301. package/dist/wire/CallLog.d.ts.map +1 -0
  302. package/dist/{contract → wire}/CallLog.js.map +1 -1
  303. package/dist/wire/Invocation.d.ts +32 -0
  304. package/dist/wire/Invocation.d.ts.map +1 -0
  305. package/dist/wire/Invocation.js +66 -0
  306. package/dist/wire/Invocation.js.map +1 -0
  307. package/dist/{contract → wire}/RouteAddress.d.ts +5 -0
  308. package/dist/wire/RouteAddress.d.ts.map +1 -0
  309. package/dist/{contract → wire}/RouteAddress.js +7 -0
  310. package/dist/wire/RouteAddress.js.map +1 -0
  311. package/dist/wire/binding.d.ts +5 -21
  312. package/dist/wire/binding.d.ts.map +1 -1
  313. package/dist/wire/binding.js +5 -10
  314. package/dist/wire/binding.js.map +1 -1
  315. package/dist/wire/call.d.ts +24 -133
  316. package/dist/wire/call.d.ts.map +1 -1
  317. package/dist/wire/call.js +15 -41
  318. package/dist/wire/call.js.map +1 -1
  319. package/dist/wire/drift.d.ts +3 -28
  320. package/dist/wire/drift.d.ts.map +1 -1
  321. package/dist/wire/drift.js +4 -23
  322. package/dist/wire/drift.js.map +1 -1
  323. package/dist/wire/errors.d.ts +4 -24
  324. package/dist/wire/errors.d.ts.map +1 -1
  325. package/dist/wire/errors.js +4 -24
  326. package/dist/wire/errors.js.map +1 -1
  327. package/dist/wire/http-error.d.ts +2 -13
  328. package/dist/wire/http-error.d.ts.map +1 -1
  329. package/dist/wire/http-error.js +5 -19
  330. package/dist/wire/http-error.js.map +1 -1
  331. package/dist/wire/loggerMiddleware.d.ts +2 -8
  332. package/dist/wire/loggerMiddleware.d.ts.map +1 -1
  333. package/dist/wire/loggerMiddleware.js +1 -7
  334. package/dist/wire/loggerMiddleware.js.map +1 -1
  335. package/dist/wire/middleware.d.ts +3 -7
  336. package/dist/wire/middleware.d.ts.map +1 -1
  337. package/dist/wire/middleware.js +1 -5
  338. package/dist/wire/middleware.js.map +1 -1
  339. package/dist/wire/operation.d.ts +7 -43
  340. package/dist/wire/operation.d.ts.map +1 -1
  341. package/dist/wire/operation.js +4 -15
  342. package/dist/wire/operation.js.map +1 -1
  343. package/dist/wire/signature.d.ts +4 -25
  344. package/dist/wire/signature.d.ts.map +1 -1
  345. package/package.json +3 -3
  346. package/src/boot/AppLifecycle.ts +15 -2
  347. package/src/boot/Emissions.ts +21 -118
  348. package/src/boot/ambient-port.ts +3 -24
  349. package/src/boot/ambient.als.ts +7 -12
  350. package/src/boot/ambient.queue.ts +2 -5
  351. package/src/boot/apply.ts +9 -16
  352. package/src/boot/auth.ts +2 -12
  353. package/src/boot/boot.ts +6 -21
  354. package/src/boot/bootstrap.ts +95 -140
  355. package/src/boot/card.ts +4 -33
  356. package/src/boot/frame.ts +24 -64
  357. package/src/boot/hosted.ts +12 -34
  358. package/src/boot/ownership.ts +5 -39
  359. package/src/boot/ports.ts +1 -14
  360. package/src/boot/remote.ts +11 -58
  361. package/src/boot/runner.ts +5 -22
  362. package/src/boot/seed.ts +6 -37
  363. package/src/boot/statement-drift.ts +5 -24
  364. package/src/boot/together.ts +18 -51
  365. package/src/boot/types.ts +31 -173
  366. package/src/{builtins → builtin}/config.ts +1 -7
  367. package/src/{builtins → builtin}/logger.ts +6 -39
  368. package/src/config-loader.ts +12 -71
  369. package/src/contract.ts +19 -39
  370. package/src/criterion.ts +54 -0
  371. package/src/crypto/encoding.ts +2 -15
  372. package/src/crypto/node.ts +1 -7
  373. package/src/crypto/port.ts +2 -18
  374. package/src/crypto/webcrypto.ts +1 -12
  375. package/src/declare.ts +42 -41
  376. package/src/define.ts +2 -3
  377. package/src/descriptor/Fronds.ts +6 -31
  378. package/src/descriptor/frond.ts +26 -60
  379. package/src/dispatch/ArgumentResolver.ts +6 -6
  380. package/src/dispatch/DispatchEvent.ts +2 -2
  381. package/src/dispatch/DispatchLifecycle.ts +1 -7
  382. package/src/dispatch/DispatchPort.ts +1 -1
  383. package/src/dispatch/Dispatcher.ts +3 -3
  384. package/src/dispatch/HandlerFacade.ts +231 -0
  385. package/src/dispatch/LocalRoutePolicy.ts +4 -4
  386. package/src/dispatch/OperationRoute.ts +2 -2
  387. package/src/dispatch/OutputView.ts +24 -2
  388. package/src/dispatch/Route.ts +2 -2
  389. package/src/dispatch/RoutePolicy.ts +1 -1
  390. package/src/dispatch/RouteRegistry.ts +2 -2
  391. package/src/dispatch/RouteResolver.ts +2 -4
  392. package/src/dispatch/StorageGuard.ts +175 -19
  393. package/src/dispatch/presenterArguments.ts +25 -0
  394. package/src/dispatch/{RemoteRouteResolver.ts → remoteRoutes.ts} +7 -9
  395. package/src/dispatch/routeNotFound.ts +33 -0
  396. package/src/dispatch/validateInput.ts +28 -0
  397. package/src/effective-operation.ts +21 -50
  398. package/src/emit.ts +5 -63
  399. package/src/entry/facade.ts +44 -0
  400. package/src/entry/transport.ts +16 -0
  401. package/src/frond-config.ts +7 -70
  402. package/src/identity-keys.ts +3 -16
  403. package/src/identity.ts +12 -80
  404. package/src/imports.ts +2 -31
  405. package/src/index.ts +17 -24
  406. package/src/loader.ts +2 -16
  407. package/src/node.ts +2 -11
  408. package/src/prefab/collector.ts +1 -22
  409. package/src/prefab/crud.ts +37 -76
  410. package/src/prefab/mirror.ts +4 -44
  411. package/src/prefab/prefab.ts +2 -21
  412. package/src/prefab/presenter.ts +2 -36
  413. package/src/prefab/repository.ts +7 -83
  414. package/src/scan/adapters.ts +32 -0
  415. package/src/scan/bundling.ts +1 -12
  416. package/src/scan/contract.ts +80 -0
  417. package/src/scan/conventions.ts +6 -40
  418. package/src/scan/emit.ts +11 -80
  419. package/src/scan/handler-parser.ts +27 -96
  420. package/src/scan/result.ts +3 -16
  421. package/src/scan/scanner.ts +46 -132
  422. package/src/scan/statement.ts +73 -41
  423. package/src/source.ts +63 -0
  424. package/src/storage.ts +14 -234
  425. package/src/store.ts +191 -0
  426. package/src/verify.ts +16 -57
  427. package/src/wire/CallLog.ts +30 -0
  428. package/src/{contract → wire}/Invocation.ts +24 -17
  429. package/src/{contract → wire}/RouteAddress.ts +7 -0
  430. package/src/wire/binding.ts +9 -25
  431. package/src/wire/call.ts +30 -133
  432. package/src/wire/drift.ts +5 -30
  433. package/src/wire/errors.ts +4 -24
  434. package/src/wire/http-error.ts +5 -19
  435. package/src/wire/loggerMiddleware.ts +2 -8
  436. package/src/wire/middleware.ts +3 -7
  437. package/src/wire/operation.ts +8 -48
  438. package/src/wire/signature.ts +4 -25
  439. package/dist/boot/HandlerFacade.d.ts.map +0 -1
  440. package/dist/boot/HandlerFacade.js.map +0 -1
  441. package/dist/builtins/config.d.ts +0 -13
  442. package/dist/builtins/config.d.ts.map +0 -1
  443. package/dist/builtins/config.js +0 -21
  444. package/dist/builtins/config.js.map +0 -1
  445. package/dist/builtins/logger.d.ts.map +0 -1
  446. package/dist/builtins/logger.js.map +0 -1
  447. package/dist/contract/Call.d.ts +0 -10
  448. package/dist/contract/Call.d.ts.map +0 -1
  449. package/dist/contract/Call.js +0 -15
  450. package/dist/contract/Call.js.map +0 -1
  451. package/dist/contract/CallLog.d.ts +0 -57
  452. package/dist/contract/CallLog.d.ts.map +0 -1
  453. package/dist/contract/Invocation.d.ts +0 -27
  454. package/dist/contract/Invocation.d.ts.map +0 -1
  455. package/dist/contract/Invocation.js +0 -59
  456. package/dist/contract/Invocation.js.map +0 -1
  457. package/dist/contract/RouteAddress.d.ts.map +0 -1
  458. package/dist/contract/RouteAddress.js.map +0 -1
  459. package/dist/dispatch/InputValidator.d.ts +0 -7
  460. package/dist/dispatch/InputValidator.d.ts.map +0 -1
  461. package/dist/dispatch/InputValidator.js +0 -22
  462. package/dist/dispatch/InputValidator.js.map +0 -1
  463. package/dist/dispatch/OperationExecutor.d.ts +0 -25
  464. package/dist/dispatch/OperationExecutor.d.ts.map +0 -1
  465. package/dist/dispatch/OperationExecutor.js +0 -32
  466. package/dist/dispatch/OperationExecutor.js.map +0 -1
  467. package/dist/dispatch/OutputProjector.d.ts +0 -12
  468. package/dist/dispatch/OutputProjector.d.ts.map +0 -1
  469. package/dist/dispatch/OutputProjector.js +0 -30
  470. package/dist/dispatch/OutputProjector.js.map +0 -1
  471. package/dist/dispatch/PresenterArgumentResolver.d.ts +0 -12
  472. package/dist/dispatch/PresenterArgumentResolver.d.ts.map +0 -1
  473. package/dist/dispatch/PresenterArgumentResolver.js +0 -20
  474. package/dist/dispatch/PresenterArgumentResolver.js.map +0 -1
  475. package/dist/dispatch/RemoteRouteResolver.d.ts +0 -13
  476. package/dist/dispatch/RemoteRouteResolver.d.ts.map +0 -1
  477. package/dist/dispatch/RemoteRouteResolver.js.map +0 -1
  478. package/dist/dispatch/RouteNotFoundError.d.ts +0 -10
  479. package/dist/dispatch/RouteNotFoundError.d.ts.map +0 -1
  480. package/dist/dispatch/RouteNotFoundError.js +0 -24
  481. package/dist/dispatch/RouteNotFoundError.js.map +0 -1
  482. package/dist/entry/DynamicFacade.d.ts +0 -10
  483. package/dist/entry/DynamicFacade.d.ts.map +0 -1
  484. package/dist/entry/DynamicFacade.js +0 -27
  485. package/dist/entry/DynamicFacade.js.map +0 -1
  486. package/dist/entry/FacadeEntry.d.ts +0 -11
  487. package/dist/entry/FacadeEntry.d.ts.map +0 -1
  488. package/dist/entry/FacadeEntry.js +0 -26
  489. package/dist/entry/FacadeEntry.js.map +0 -1
  490. package/dist/entry/TransportEntry.d.ts +0 -13
  491. package/dist/entry/TransportEntry.d.ts.map +0 -1
  492. package/dist/entry/TransportEntry.js +0 -24
  493. package/dist/entry/TransportEntry.js.map +0 -1
  494. package/dist/rows.d.ts +0 -40
  495. package/dist/rows.d.ts.map +0 -1
  496. package/dist/rows.js +0 -146
  497. package/dist/rows.js.map +0 -1
  498. package/src/boot/HandlerFacade.ts +0 -242
  499. package/src/contract/Call.ts +0 -18
  500. package/src/contract/CallLog.ts +0 -55
  501. package/src/dispatch/InputValidator.ts +0 -28
  502. package/src/dispatch/OperationExecutor.ts +0 -60
  503. package/src/dispatch/OutputProjector.ts +0 -32
  504. package/src/dispatch/PresenterArgumentResolver.ts +0 -25
  505. package/src/dispatch/RouteNotFoundError.ts +0 -29
  506. package/src/entry/DynamicFacade.ts +0 -28
  507. package/src/entry/FacadeEntry.ts +0 -32
  508. package/src/entry/TransportEntry.ts +0 -30
  509. package/src/rows.ts +0 -155
  510. /package/dist/{contract → wire}/CallLog.js +0 -0
@@ -1,32 +0,0 @@
1
- import { Visibility } from '@fougere/schema';
2
- import { preserveArrayProperties } from './ArrayResult.js';
3
- import type { OutputView } from './OutputView.js';
4
-
5
- /**
6
- * Projects one operation result onto the fields its audience may read.
7
- *
8
- * One of the two exits a judge watches; `StorageGuard` is the other.
9
- */
10
- export class OutputProjector {
11
- constructor(private readonly view: OutputView) {}
12
-
13
- project(result: unknown): unknown {
14
- if (result === null || result === undefined) return result;
15
-
16
- if (Array.isArray(result)) {
17
- return preserveArrayProperties(result, result.map((item) => this.project(item)));
18
- }
19
-
20
- if (typeof result !== 'object') return result;
21
-
22
- const record = result as Record<string, unknown>;
23
- const scoped = this.view.closed
24
- ? Object.fromEntries(
25
- Object.keys(this.view.fields)
26
- .filter((key) => key in record)
27
- .map((key) => [key, record[key]]),
28
- )
29
- : record;
30
- return Visibility.of(this.view.fields).encode(scoped);
31
- }
32
- }
@@ -1,25 +0,0 @@
1
- import { computeBindingPlan } from '../wire/binding.js';
2
- import type { InvocationContext } from '../contract/Invocation.js';
3
- import type { PresenterEntry } from '../descriptor/frond.js';
4
- import type { ArgumentResolver } from './ArgumentResolver.js';
5
- import type { PresenterArgs } from './PresenterExecutor.js';
6
-
7
- /** Resolves the invocation-dependent arguments of every computed presenter field. */
8
- export class PresenterArgumentResolver {
9
- constructor(
10
- private readonly argumentsResolver: ArgumentResolver,
11
- private readonly collectorTypes: Set<string>,
12
- ) {}
13
-
14
- async resolve(meta: PresenterEntry, invocation: InvocationContext): Promise<PresenterArgs> {
15
- const argumentsByField: PresenterArgs = {};
16
- for (const field of meta.fieldMeta) {
17
- if (!field.params?.length) continue;
18
- argumentsByField[field.name] = await this.argumentsResolver.resolve(
19
- computeBindingPlan(field.params, this.collectorTypes),
20
- invocation,
21
- );
22
- }
23
- return argumentsByField;
24
- }
25
- }
@@ -1,29 +0,0 @@
1
- import type { Call } from '../contract/Call.js';
2
- import { ErrorCode, FougereError } from '../wire/errors.js';
3
- import type { Route } from './Route.js';
4
- import type { RoutePolicy } from './RoutePolicy.js';
5
-
6
- /** Describes an unresolved route from the destinations visible to one dispatcher. */
7
- export class RouteNotFoundError extends FougereError {
8
- readonly servedOperations: readonly string[];
9
-
10
- constructor(call: Call, routes: readonly Route[], policy?: RoutePolicy) {
11
- const served = routes
12
- .filter((route) => !policy || policy.accepts(route))
13
- .filter((route) => route.address.entity === call.address.entity)
14
- .filter((route) => route.kind === 'system'
15
- || route.address.surface === call.address.surface)
16
- .map((route) => route.address.operation);
17
- const operation = call.address.operation;
18
- const entity = call.address.entity;
19
- const message = entity === 'rpc'
20
- ? `Unknown rpc operation '${operation}'. `
21
- + (served.length ? `It serves ${served.join(', ')}.` : 'It serves nothing.')
22
- : served.length
23
- ? `Unknown operation '${operation}' on '${entity}'. It serves ${served.join(', ')}.`
24
- : `No route serves '${call.address}'`;
25
-
26
- super({ code: ErrorCode.NOT_FOUND, message, entity, operation });
27
- this.servedOperations = served;
28
- }
29
- }
@@ -1,28 +0,0 @@
1
- type Operation = (...args: any[]) => unknown;
2
-
3
- /** Facade for a remote contract whose operation names are not known before discovery. */
4
- export class DynamicFacade {
5
- readonly operations: Record<string, Operation>;
6
-
7
- constructor(private readonly operation: (name: string) => Operation) {
8
- this.operations = new Proxy({}, {
9
- get: (_target, name) => this.isOperationName(name) ? this.operation(name) : undefined,
10
- has: (_target, name) => this.isOperationName(name),
11
- getOwnPropertyDescriptor: (_target, name) => this.isOperationName(name)
12
- ? {
13
- value: this.operation(name),
14
- writable: false,
15
- enumerable: true,
16
- configurable: true,
17
- }
18
- : undefined,
19
- });
20
- }
21
-
22
- private isOperationName(name: string | symbol): name is string {
23
- return typeof name === 'string'
24
- && name !== 'then'
25
- && name !== 'toJSON'
26
- && !Object.hasOwn(Object.prototype, name);
27
- }
28
- }
@@ -1,32 +0,0 @@
1
- import { Call } from '../contract/Call.js';
2
- import type { InvocationInput } from '../contract/Invocation.js';
3
- import { RouteAddress } from '../contract/RouteAddress.js';
4
- import type { DispatchPort } from '../dispatch/DispatchPort.js';
5
- import { DynamicFacade } from './DynamicFacade.js';
6
-
7
- /** Object-shaped entry that turns facade method calls into canonical dispatches. */
8
- export class FacadeEntry {
9
- readonly operations: Record<string, Function>;
10
-
11
- constructor(
12
- private readonly dispatcher: DispatchPort,
13
- private readonly entity: string,
14
- operationNames?: Iterable<string>,
15
- private readonly surface?: string,
16
- ) {
17
- this.operations = operationNames
18
- ? Object.fromEntries([...operationNames].map((name) => [name, this.operation(name)]))
19
- : new DynamicFacade((name) => this.operation(name)).operations;
20
- }
21
-
22
- private operation(name: string): (invocation?: InvocationInput) => Promise<unknown> {
23
- return (invocation) => this.dispatcher.dispatch(new Call(
24
- new RouteAddress({
25
- entity: this.entity,
26
- operation: name,
27
- ...(this.surface !== undefined ? { surface: this.surface } : {}),
28
- }),
29
- invocation,
30
- ));
31
- }
32
- }
@@ -1,30 +0,0 @@
1
- import { Call } from '../contract/Call.js';
2
- import { RouteAddress } from '../contract/RouteAddress.js';
3
- import type { DispatchPort } from '../dispatch/DispatchPort.js';
4
- import type { FrondCall, Transport } from '../wire/call.js';
5
- import type { InvocationContext } from '../contract/Invocation.js';
6
-
7
- /** Object entry for the historical transport contract. */
8
- export class TransportEntry {
9
- constructor(
10
- private readonly dispatcher: DispatchPort,
11
- private readonly surface?: string,
12
- ) {}
13
-
14
- receive(legacy: FrondCall, invocation: InvocationContext): Promise<unknown> {
15
- return this.dispatcher.dispatch(new Call(
16
- new RouteAddress({
17
- entity: legacy.entity,
18
- operation: legacy.op,
19
- ...(this.surface !== undefined ? { surface: this.surface } : {}),
20
- }),
21
- invocation,
22
- ));
23
- }
24
- }
25
-
26
- /** Adapt the historical transport signature to the canonical dispatch port. */
27
- export function createTransportEntry(dispatcher: DispatchPort, surface?: string): Transport {
28
- const entry = new TransportEntry(dispatcher, surface);
29
- return entry.receive.bind(entry);
30
- }
package/src/rows.ts DELETED
@@ -1,155 +0,0 @@
1
- /**
2
- * The thirteen gestures of {@link Storage}, derived from four.
3
- *
4
- * A place rows live varies in ONE thing — how a row is fetched, written, dropped and
5
- * enumerated. Everything above that is the same everywhere: what a page is, how a criterion
6
- * matches, which stamps survive an upsert, and the two refusals a `create` owes its caller.
7
- * Measured on the Map realization: 14 lines of 140 touched the store.
8
- *
9
- * So an adapter supplies {@link Rows} and receives a whole `StorageFactory`. It is the frame
10
- * a third party writing a source needs — without it, `Sources.register` hands over a
11
- * four-gesture contract and leaves the thirteen to be re-derived, which is how three
12
- * divergent copies of the same store ended up in this repo's own demos.
13
- *
14
- * What is NOT here: `transacted`. A unit of work belongs to the engine that has one, and
15
- * this frame has none — which is why a `Source` built on it leaves the key absent and a
16
- * frame compensates.
17
- */
18
- import { applyCreate, applyUpdate, Lifecycle, Role, type SchemaView } from '@fougere/schema';
19
- import type { Storage, StorageFactory } from './storage.js';
20
-
21
- /** One row, as every realization hands it over. */
22
- export type Row = Record<string, unknown>;
23
-
24
- /**
25
- * A keyed collection of rows — what an adapter supplies, and all of it.
26
- *
27
- * Async on purpose, even where a realization is not: a Map answers instantly and a directory
28
- * does not, and the frame above cannot be written twice. `client` is what the port's own
29
- * escape hatch exposes, `unknown` for the reason it is there.
30
- */
31
- export interface Rows {
32
- get(key: string): Promise<Row | undefined>;
33
- has(key: string): Promise<boolean>;
34
- set(key: string, row: Row): Promise<void>;
35
- delete(key: string): Promise<boolean>;
36
- /** Every row it holds. A realization that cannot answer this cheaply says so in its doc. */
37
- all(): Promise<Row[]>;
38
- /** Handed on as `Storage.client` — the Map, the directory, whatever it is. */
39
- readonly client: unknown;
40
- }
41
-
42
- export function storageOver(open: (entity: SchemaView, name: string) => Rows): StorageFactory {
43
- return (entity: SchemaView, name: string): Storage => {
44
- const fields = entity.getFields();
45
- const rows = open(entity, name);
46
- const pk = Object.entries(fields).find(([, field]) => Role.of(field).isPrimary)?.[0] ?? 'id';
47
- // `Storage.findById(id: string)` — but a key can hold a number, and a Map keyed on
48
- // `1` does not answer `'1'`. SQL never had the question; here the divergence was
49
- // silent and only on this storage.
50
- const keyOf = (value: unknown) => String(value);
51
- // Same contract as SQL: a criterion may name a SET, and an empty set matches nothing.
52
- const matches = (row: Record<string, unknown>, criteria: Record<string, unknown>) =>
53
- Object.entries(criteria).every(([key, value]) => Array.isArray(value)
54
- ? value.some((v) => Object.is(row[key], v))
55
- : Object.is(row[key], value));
56
- return {
57
- client: rows.client,
58
- async list(options?: any) {
59
- let items = await rows.all();
60
- if (options?.where) items = items.filter((row) => matches(row, options.where));
61
- // Held before the page is cut, and after the filter: `total` answers "how many
62
- // match", which is what a paginator divides. Reading `store.size` at the end
63
- // answered a different question — every row the store holds, including the ones
64
- // the filter exists to keep out of this caller's sight.
65
- const matching = items.length;
66
- const limit = options?.limit;
67
- const offset = options?.page && limit ? (options.page - 1) * limit : options?.offset ?? 0;
68
- if (offset > 0) items = items.slice(offset);
69
- const hasMore = limit ? items.length > limit : false;
70
- if (limit) items = items.slice(0, limit);
71
- const result = items as any;
72
- result.hasMore = hasMore;
73
- result.endCursor = items.length > 0 ? String((items[items.length - 1] as any)[pk] ?? '') : undefined;
74
- if (options?.count) result.total = matching;
75
- return result;
76
- },
77
- async findById(id: string) { return await rows.get(keyOf(id)); },
78
- async findBy(criteria: Record<string, unknown>) {
79
- return (await rows.all()).find((row) => matches(row, criteria));
80
- },
81
- async findAllBy(criteria: Record<string, unknown>) {
82
- return (await rows.all()).filter((row) => matches(row, criteria));
83
- },
84
- // Same contract as SQL: a map keyed by the primary key, a miss being an absent key.
85
- async findByKeys(ids: readonly string[]) {
86
- const found = new Map<string, Record<string, unknown>>();
87
- for (const id of ids) {
88
- const row = await rows.get(keyOf(id));
89
- if (row) found.set(String(id), row);
90
- }
91
- return found;
92
- },
93
- // The dual, same contract as SQL: grouped by the value read off the ROW.
94
- async findAllByKeys(field: string, keys: readonly string[]) {
95
- const grouped = new Map<string, Record<string, unknown>[]>();
96
- if (keys.length === 0) return grouped;
97
- const wanted = new Set(keys.map(String));
98
- for (const row of await rows.all()) {
99
- const key = String(row[field]);
100
- if (!wanted.has(key)) continue;
101
- const held = grouped.get(key);
102
- if (held) held.push(row); else grouped.set(key, [row]);
103
- }
104
- return grouped;
105
- },
106
- // Same contract as SQL: the key and the creation stamps survive an overwrite.
107
- async upsert(input: Partial<Record<string, unknown>>) {
108
- const record = applyCreate(fields, applyUpdate(fields, input));
109
- const id = record[pk] as string | undefined;
110
- if (id === undefined) throw new Error(`${name}.upsert(): no \`${pk}\` — an upsert needs the key it writes at.`);
111
- const held = await rows.get(keyOf(id));
112
- if (held) {
113
- for (const [key, field] of Object.entries(fields)) {
114
- if (key === pk || Lifecycle.of(field).stampedOnce) record[key] = held[key];
115
- }
116
- }
117
- await rows.set(keyOf(id), record);
118
- return record;
119
- },
120
- async upsertAll(inputs: readonly Partial<Record<string, unknown>>[]) {
121
- for (const input of inputs) await this.upsert(input);
122
- return inputs.length;
123
- },
124
- async create(input: Partial<Record<string, unknown>>) {
125
- const record = applyCreate(fields, input);
126
- const id = record[pk] as string | undefined;
127
- // `primary(text())` declares no generator, so nothing fills the hole and the
128
- // caller has to. Keying on `undefined` would let the second create overwrite the
129
- // first, in silence — the old version hid this by inventing an `id` field the
130
- // entity never declared.
131
- if (id === undefined) {
132
- throw new Error(`${name}.create: '${pk}' is the primary key and nothing supplied it — this entity declares no generator for it.`);
133
- }
134
- // A create is not an upsert. `Map.set` overwrites, so a second create under the
135
- // same key answered "created" while destroying the previous row — SQL answers a
136
- // constraint violation, and a store that loses data silently is worse than one
137
- // that fails.
138
- if (await rows.has(keyOf(id))) {
139
- throw new Error(`${name}.create: '${pk}' ${JSON.stringify(id)} already exists.`);
140
- }
141
- await rows.set(keyOf(id), record);
142
- return record;
143
- },
144
- async update(id: string, input: Partial<Record<string, unknown>>) {
145
- const existing = await rows.get(keyOf(id));
146
- if (!existing) throw new Error(`Not found: ${id}`);
147
- const updated = { ...existing, ...applyUpdate(fields, input), [pk]: existing[pk] };
148
- await rows.set(keyOf(id), updated);
149
- return updated;
150
- },
151
- async delete(id: string) { return await rows.delete(keyOf(id)); },
152
- output(_schema: SchemaView) { return this; },
153
- };
154
- };
155
- }
File without changes