@fougere/core 0.6.0-alpha.0 → 0.7.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/README.md +1 -1
  2. package/dist/boot/Emissions.d.ts +13 -90
  3. package/dist/boot/Emissions.d.ts.map +1 -1
  4. package/dist/boot/Emissions.js +21 -118
  5. package/dist/boot/Emissions.js.map +1 -1
  6. package/dist/boot/ambient-port.d.ts +3 -24
  7. package/dist/boot/ambient-port.d.ts.map +1 -1
  8. package/dist/boot/ambient.als.d.ts.map +1 -1
  9. package/dist/boot/ambient.als.js +7 -12
  10. package/dist/boot/ambient.als.js.map +1 -1
  11. package/dist/boot/ambient.queue.d.ts +2 -5
  12. package/dist/boot/ambient.queue.d.ts.map +1 -1
  13. package/dist/boot/ambient.queue.js.map +1 -1
  14. package/dist/boot/apply.d.ts +1 -13
  15. package/dist/boot/apply.d.ts.map +1 -1
  16. package/dist/boot/apply.js +3 -15
  17. package/dist/boot/apply.js.map +1 -1
  18. package/dist/boot/auth.d.ts +2 -12
  19. package/dist/boot/auth.d.ts.map +1 -1
  20. package/dist/boot/boot.d.ts +3 -16
  21. package/dist/boot/boot.d.ts.map +1 -1
  22. package/dist/boot/boot.js +3 -10
  23. package/dist/boot/boot.js.map +1 -1
  24. package/dist/boot/bootstrap.d.ts.map +1 -1
  25. package/dist/boot/bootstrap.js +61 -127
  26. package/dist/boot/bootstrap.js.map +1 -1
  27. package/dist/boot/card.d.ts +1 -17
  28. package/dist/boot/card.d.ts.map +1 -1
  29. package/dist/boot/card.js +3 -32
  30. package/dist/boot/card.js.map +1 -1
  31. package/dist/boot/frame.d.ts +8 -32
  32. package/dist/boot/frame.d.ts.map +1 -1
  33. package/dist/boot/frame.js +20 -54
  34. package/dist/boot/frame.js.map +1 -1
  35. package/dist/boot/hosted.d.ts +2 -24
  36. package/dist/boot/hosted.d.ts.map +1 -1
  37. package/dist/boot/hosted.js +10 -15
  38. package/dist/boot/hosted.js.map +1 -1
  39. package/dist/boot/ownership.d.ts +3 -36
  40. package/dist/boot/ownership.d.ts.map +1 -1
  41. package/dist/boot/ownership.js +5 -40
  42. package/dist/boot/ownership.js.map +1 -1
  43. package/dist/boot/ports.d.ts +1 -14
  44. package/dist/boot/ports.d.ts.map +1 -1
  45. package/dist/boot/ports.js +1 -14
  46. package/dist/boot/ports.js.map +1 -1
  47. package/dist/boot/remote.d.ts +5 -38
  48. package/dist/boot/remote.d.ts.map +1 -1
  49. package/dist/boot/remote.js +8 -41
  50. package/dist/boot/remote.js.map +1 -1
  51. package/dist/boot/runner.d.ts +4 -21
  52. package/dist/boot/runner.d.ts.map +1 -1
  53. package/dist/boot/runner.js +4 -17
  54. package/dist/boot/runner.js.map +1 -1
  55. package/dist/boot/seed.d.ts +4 -31
  56. package/dist/boot/seed.d.ts.map +1 -1
  57. package/dist/boot/seed.js +6 -37
  58. package/dist/boot/seed.js.map +1 -1
  59. package/dist/boot/statement-drift.d.ts +2 -21
  60. package/dist/boot/statement-drift.d.ts.map +1 -1
  61. package/dist/boot/statement-drift.js +4 -9
  62. package/dist/boot/statement-drift.js.map +1 -1
  63. package/dist/boot/together.d.ts +4 -8
  64. package/dist/boot/together.d.ts.map +1 -1
  65. package/dist/boot/together.js +15 -50
  66. package/dist/boot/together.js.map +1 -1
  67. package/dist/boot/types.d.ts +28 -173
  68. package/dist/boot/types.d.ts.map +1 -1
  69. package/dist/builtin/config.d.ts +7 -0
  70. package/dist/builtin/config.d.ts.map +1 -0
  71. package/dist/builtin/config.js +15 -0
  72. package/dist/builtin/config.js.map +1 -0
  73. package/dist/{builtins → builtin}/logger.d.ts +4 -25
  74. package/dist/builtin/logger.d.ts.map +1 -0
  75. package/dist/{builtins → builtin}/logger.js +5 -32
  76. package/dist/builtin/logger.js.map +1 -0
  77. package/dist/config-loader.d.ts +9 -67
  78. package/dist/config-loader.d.ts.map +1 -1
  79. package/dist/config-loader.js +5 -18
  80. package/dist/config-loader.js.map +1 -1
  81. package/dist/contract.d.ts +13 -31
  82. package/dist/contract.d.ts.map +1 -1
  83. package/dist/contract.js +10 -26
  84. package/dist/contract.js.map +1 -1
  85. package/dist/crypto/encoding.d.ts +2 -15
  86. package/dist/crypto/encoding.d.ts.map +1 -1
  87. package/dist/crypto/encoding.js +2 -15
  88. package/dist/crypto/encoding.js.map +1 -1
  89. package/dist/crypto/node.d.ts.map +1 -1
  90. package/dist/crypto/node.js +1 -7
  91. package/dist/crypto/node.js.map +1 -1
  92. package/dist/crypto/port.d.ts +2 -18
  93. package/dist/crypto/port.d.ts.map +1 -1
  94. package/dist/crypto/port.js +1 -17
  95. package/dist/crypto/port.js.map +1 -1
  96. package/dist/crypto/webcrypto.d.ts.map +1 -1
  97. package/dist/crypto/webcrypto.js +1 -12
  98. package/dist/crypto/webcrypto.js.map +1 -1
  99. package/dist/declare.d.ts +6 -36
  100. package/dist/declare.d.ts.map +1 -1
  101. package/dist/declare.js +4 -29
  102. package/dist/declare.js.map +1 -1
  103. package/dist/define.d.ts +2 -3
  104. package/dist/define.d.ts.map +1 -1
  105. package/dist/define.js +2 -3
  106. package/dist/define.js.map +1 -1
  107. package/dist/descriptor/Fronds.d.ts +3 -28
  108. package/dist/descriptor/Fronds.d.ts.map +1 -1
  109. package/dist/descriptor/Fronds.js +6 -31
  110. package/dist/descriptor/Fronds.js.map +1 -1
  111. package/dist/descriptor/frond.d.ts +14 -63
  112. package/dist/descriptor/frond.d.ts.map +1 -1
  113. package/dist/dispatch/ArgumentResolver.d.ts +1 -1
  114. package/dist/dispatch/ArgumentResolver.d.ts.map +1 -1
  115. package/dist/dispatch/ArgumentResolver.js +5 -5
  116. package/dist/dispatch/ArgumentResolver.js.map +1 -1
  117. package/dist/dispatch/DispatchEvent.d.ts +2 -2
  118. package/dist/dispatch/DispatchEvent.d.ts.map +1 -1
  119. package/dist/dispatch/DispatchLifecycle.d.ts +1 -7
  120. package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -1
  121. package/dist/dispatch/DispatchLifecycle.js +1 -7
  122. package/dist/dispatch/DispatchLifecycle.js.map +1 -1
  123. package/dist/dispatch/DispatchPort.d.ts +1 -1
  124. package/dist/dispatch/DispatchPort.d.ts.map +1 -1
  125. package/dist/dispatch/Dispatcher.d.ts +1 -1
  126. package/dist/dispatch/Dispatcher.d.ts.map +1 -1
  127. package/dist/dispatch/Dispatcher.js +2 -2
  128. package/dist/dispatch/Dispatcher.js.map +1 -1
  129. package/dist/{boot → dispatch}/HandlerFacade.d.ts +25 -38
  130. package/dist/dispatch/HandlerFacade.d.ts.map +1 -0
  131. package/dist/{boot → dispatch}/HandlerFacade.js +65 -74
  132. package/dist/dispatch/HandlerFacade.js.map +1 -0
  133. package/dist/dispatch/LocalRoutePolicy.d.ts +1 -1
  134. package/dist/dispatch/LocalRoutePolicy.d.ts.map +1 -1
  135. package/dist/dispatch/LocalRoutePolicy.js +4 -4
  136. package/dist/dispatch/LocalRoutePolicy.js.map +1 -1
  137. package/dist/dispatch/OperationRoute.d.ts +2 -2
  138. package/dist/dispatch/OperationRoute.d.ts.map +1 -1
  139. package/dist/dispatch/OutputView.d.ts +3 -2
  140. package/dist/dispatch/OutputView.d.ts.map +1 -1
  141. package/dist/dispatch/OutputView.js +19 -1
  142. package/dist/dispatch/OutputView.js.map +1 -1
  143. package/dist/dispatch/Route.d.ts +2 -2
  144. package/dist/dispatch/Route.d.ts.map +1 -1
  145. package/dist/dispatch/RoutePolicy.d.ts +1 -1
  146. package/dist/dispatch/RoutePolicy.d.ts.map +1 -1
  147. package/dist/dispatch/RouteRegistry.d.ts +1 -1
  148. package/dist/dispatch/RouteRegistry.d.ts.map +1 -1
  149. package/dist/dispatch/RouteRegistry.js +2 -2
  150. package/dist/dispatch/RouteRegistry.js.map +1 -1
  151. package/dist/dispatch/RouteResolver.d.ts +2 -4
  152. package/dist/dispatch/RouteResolver.d.ts.map +1 -1
  153. package/dist/dispatch/StorageGuard.d.ts +8 -7
  154. package/dist/dispatch/StorageGuard.d.ts.map +1 -1
  155. package/dist/dispatch/StorageGuard.js +61 -18
  156. package/dist/dispatch/StorageGuard.js.map +1 -1
  157. package/dist/dispatch/presenterArguments.d.ts +7 -0
  158. package/dist/dispatch/presenterArguments.d.ts.map +1 -0
  159. package/dist/dispatch/presenterArguments.js +12 -0
  160. package/dist/dispatch/presenterArguments.js.map +1 -0
  161. package/dist/dispatch/remoteRoutes.d.ts +7 -0
  162. package/dist/dispatch/remoteRoutes.d.ts.map +1 -0
  163. package/dist/dispatch/{RemoteRouteResolver.js → remoteRoutes.js} +6 -10
  164. package/dist/dispatch/remoteRoutes.js.map +1 -0
  165. package/dist/dispatch/routeNotFound.d.ts +9 -0
  166. package/dist/dispatch/routeNotFound.d.ts.map +1 -0
  167. package/dist/dispatch/routeNotFound.js +21 -0
  168. package/dist/dispatch/routeNotFound.js.map +1 -0
  169. package/dist/dispatch/validateInput.d.ts +5 -0
  170. package/dist/dispatch/validateInput.d.ts.map +1 -0
  171. package/dist/dispatch/validateInput.js +20 -0
  172. package/dist/dispatch/validateInput.js.map +1 -0
  173. package/dist/effective-operation.d.ts +1 -24
  174. package/dist/effective-operation.d.ts.map +1 -1
  175. package/dist/effective-operation.js +21 -50
  176. package/dist/effective-operation.js.map +1 -1
  177. package/dist/emit.d.ts +4 -42
  178. package/dist/emit.d.ts.map +1 -1
  179. package/dist/emit.js +3 -39
  180. package/dist/emit.js.map +1 -1
  181. package/dist/entry/facade.d.ts +8 -0
  182. package/dist/entry/facade.d.ts.map +1 -0
  183. package/dist/entry/facade.js +28 -0
  184. package/dist/entry/facade.js.map +1 -0
  185. package/dist/entry/transport.d.ts +5 -0
  186. package/dist/entry/transport.d.ts.map +1 -0
  187. package/dist/entry/transport.js +11 -0
  188. package/dist/entry/transport.js.map +1 -0
  189. package/dist/frond-config.d.ts +7 -70
  190. package/dist/frond-config.d.ts.map +1 -1
  191. package/dist/frond-config.js +1 -9
  192. package/dist/frond-config.js.map +1 -1
  193. package/dist/identity-keys.d.ts +2 -5
  194. package/dist/identity-keys.d.ts.map +1 -1
  195. package/dist/identity-keys.js +3 -16
  196. package/dist/identity-keys.js.map +1 -1
  197. package/dist/identity.d.ts +4 -30
  198. package/dist/identity.d.ts.map +1 -1
  199. package/dist/identity.js +11 -73
  200. package/dist/identity.js.map +1 -1
  201. package/dist/imports.d.ts +1 -7
  202. package/dist/imports.d.ts.map +1 -1
  203. package/dist/imports.js +1 -7
  204. package/dist/imports.js.map +1 -1
  205. package/dist/index.d.ts +17 -24
  206. package/dist/index.d.ts.map +1 -1
  207. package/dist/index.js +10 -18
  208. package/dist/index.js.map +1 -1
  209. package/dist/loader.d.ts +1 -8
  210. package/dist/loader.d.ts.map +1 -1
  211. package/dist/loader.js +1 -8
  212. package/dist/loader.js.map +1 -1
  213. package/dist/node.d.ts +2 -11
  214. package/dist/node.d.ts.map +1 -1
  215. package/dist/node.js +2 -11
  216. package/dist/node.js.map +1 -1
  217. package/dist/prefab/collector.d.ts +1 -22
  218. package/dist/prefab/collector.d.ts.map +1 -1
  219. package/dist/prefab/collector.js +1 -22
  220. package/dist/prefab/collector.js.map +1 -1
  221. package/dist/prefab/crud.d.ts +16 -32
  222. package/dist/prefab/crud.d.ts.map +1 -1
  223. package/dist/prefab/crud.js +31 -58
  224. package/dist/prefab/crud.js.map +1 -1
  225. package/dist/prefab/mirror.d.ts +2 -24
  226. package/dist/prefab/mirror.d.ts.map +1 -1
  227. package/dist/prefab/mirror.js +2 -20
  228. package/dist/prefab/mirror.js.map +1 -1
  229. package/dist/prefab/prefab.d.ts +1 -7
  230. package/dist/prefab/prefab.d.ts.map +1 -1
  231. package/dist/prefab/prefab.js +1 -7
  232. package/dist/prefab/prefab.js.map +1 -1
  233. package/dist/prefab/presenter.d.ts +2 -36
  234. package/dist/prefab/presenter.d.ts.map +1 -1
  235. package/dist/prefab/presenter.js +2 -36
  236. package/dist/prefab/presenter.js.map +1 -1
  237. package/dist/prefab/repository.d.ts +5 -73
  238. package/dist/prefab/repository.d.ts.map +1 -1
  239. package/dist/prefab/repository.js +3 -16
  240. package/dist/prefab/repository.js.map +1 -1
  241. package/dist/scan/adapters.d.ts +3 -0
  242. package/dist/scan/adapters.d.ts.map +1 -0
  243. package/dist/scan/adapters.js +25 -0
  244. package/dist/scan/adapters.js.map +1 -0
  245. package/dist/scan/bundling.d.ts +1 -12
  246. package/dist/scan/bundling.d.ts.map +1 -1
  247. package/dist/scan/bundling.js +1 -12
  248. package/dist/scan/bundling.js.map +1 -1
  249. package/dist/scan/conventions.d.ts +6 -40
  250. package/dist/scan/conventions.d.ts.map +1 -1
  251. package/dist/scan/conventions.js +5 -34
  252. package/dist/scan/conventions.js.map +1 -1
  253. package/dist/scan/emit.d.ts +1 -5
  254. package/dist/scan/emit.d.ts.map +1 -1
  255. package/dist/scan/emit.js +4 -38
  256. package/dist/scan/emit.js.map +1 -1
  257. package/dist/scan/handler-parser.d.ts +4 -26
  258. package/dist/scan/handler-parser.d.ts.map +1 -1
  259. package/dist/scan/handler-parser.js +26 -83
  260. package/dist/scan/handler-parser.js.map +1 -1
  261. package/dist/scan/result.d.ts +3 -16
  262. package/dist/scan/result.d.ts.map +1 -1
  263. package/dist/scan/scanner.d.ts +2 -27
  264. package/dist/scan/scanner.d.ts.map +1 -1
  265. package/dist/scan/scanner.js +28 -127
  266. package/dist/scan/scanner.js.map +1 -1
  267. package/dist/scan/statement.d.ts.map +1 -1
  268. package/dist/scan/statement.js +4 -30
  269. package/dist/scan/statement.js.map +1 -1
  270. package/dist/source.d.ts +41 -0
  271. package/dist/source.d.ts.map +1 -0
  272. package/dist/source.js +10 -0
  273. package/dist/source.js.map +1 -0
  274. package/dist/storage.d.ts +13 -210
  275. package/dist/storage.d.ts.map +1 -1
  276. package/dist/storage.js +4 -68
  277. package/dist/storage.js.map +1 -1
  278. package/dist/store.d.ts +18 -0
  279. package/dist/store.d.ts.map +1 -0
  280. package/dist/store.js +146 -0
  281. package/dist/store.js.map +1 -0
  282. package/dist/verify.d.ts +5 -38
  283. package/dist/verify.d.ts.map +1 -1
  284. package/dist/verify.js +17 -37
  285. package/dist/verify.js.map +1 -1
  286. package/dist/wire/CallLog.d.ts +32 -0
  287. package/dist/wire/CallLog.d.ts.map +1 -0
  288. package/dist/{contract → wire}/CallLog.js.map +1 -1
  289. package/dist/wire/Invocation.d.ts +32 -0
  290. package/dist/wire/Invocation.d.ts.map +1 -0
  291. package/dist/wire/Invocation.js +66 -0
  292. package/dist/wire/Invocation.js.map +1 -0
  293. package/dist/{contract → wire}/RouteAddress.d.ts +5 -0
  294. package/dist/wire/RouteAddress.d.ts.map +1 -0
  295. package/dist/{contract → wire}/RouteAddress.js +7 -0
  296. package/dist/wire/RouteAddress.js.map +1 -0
  297. package/dist/wire/binding.d.ts +5 -21
  298. package/dist/wire/binding.d.ts.map +1 -1
  299. package/dist/wire/binding.js +5 -10
  300. package/dist/wire/binding.js.map +1 -1
  301. package/dist/wire/call.d.ts +24 -133
  302. package/dist/wire/call.d.ts.map +1 -1
  303. package/dist/wire/call.js +15 -41
  304. package/dist/wire/call.js.map +1 -1
  305. package/dist/wire/drift.d.ts +3 -28
  306. package/dist/wire/drift.d.ts.map +1 -1
  307. package/dist/wire/drift.js +4 -23
  308. package/dist/wire/drift.js.map +1 -1
  309. package/dist/wire/errors.d.ts +4 -24
  310. package/dist/wire/errors.d.ts.map +1 -1
  311. package/dist/wire/errors.js +4 -24
  312. package/dist/wire/errors.js.map +1 -1
  313. package/dist/wire/http-error.d.ts +2 -13
  314. package/dist/wire/http-error.d.ts.map +1 -1
  315. package/dist/wire/http-error.js +5 -19
  316. package/dist/wire/http-error.js.map +1 -1
  317. package/dist/wire/loggerMiddleware.d.ts +2 -8
  318. package/dist/wire/loggerMiddleware.d.ts.map +1 -1
  319. package/dist/wire/loggerMiddleware.js +1 -7
  320. package/dist/wire/loggerMiddleware.js.map +1 -1
  321. package/dist/wire/middleware.d.ts +3 -7
  322. package/dist/wire/middleware.d.ts.map +1 -1
  323. package/dist/wire/middleware.js +1 -5
  324. package/dist/wire/middleware.js.map +1 -1
  325. package/dist/wire/operation.d.ts +7 -43
  326. package/dist/wire/operation.d.ts.map +1 -1
  327. package/dist/wire/operation.js +4 -15
  328. package/dist/wire/operation.js.map +1 -1
  329. package/dist/wire/signature.d.ts +4 -25
  330. package/dist/wire/signature.d.ts.map +1 -1
  331. package/package.json +3 -3
  332. package/src/boot/Emissions.ts +21 -118
  333. package/src/boot/ambient-port.ts +3 -24
  334. package/src/boot/ambient.als.ts +7 -12
  335. package/src/boot/ambient.queue.ts +2 -5
  336. package/src/boot/apply.ts +3 -15
  337. package/src/boot/auth.ts +2 -12
  338. package/src/boot/boot.ts +5 -20
  339. package/src/boot/bootstrap.ts +69 -136
  340. package/src/boot/card.ts +4 -33
  341. package/src/boot/frame.ts +28 -62
  342. package/src/boot/hosted.ts +12 -34
  343. package/src/boot/ownership.ts +5 -39
  344. package/src/boot/ports.ts +1 -14
  345. package/src/boot/remote.ts +11 -58
  346. package/src/boot/runner.ts +5 -22
  347. package/src/boot/seed.ts +6 -37
  348. package/src/boot/statement-drift.ts +5 -24
  349. package/src/boot/together.ts +18 -51
  350. package/src/boot/types.ts +28 -173
  351. package/src/{builtins → builtin}/config.ts +1 -7
  352. package/src/{builtins → builtin}/logger.ts +6 -39
  353. package/src/config-loader.ts +12 -71
  354. package/src/contract.ts +15 -39
  355. package/src/crypto/encoding.ts +2 -15
  356. package/src/crypto/node.ts +1 -7
  357. package/src/crypto/port.ts +2 -18
  358. package/src/crypto/webcrypto.ts +1 -12
  359. package/src/declare.ts +8 -39
  360. package/src/define.ts +2 -3
  361. package/src/descriptor/Fronds.ts +6 -31
  362. package/src/descriptor/frond.ts +14 -63
  363. package/src/dispatch/ArgumentResolver.ts +6 -6
  364. package/src/dispatch/DispatchEvent.ts +2 -2
  365. package/src/dispatch/DispatchLifecycle.ts +1 -7
  366. package/src/dispatch/DispatchPort.ts +1 -1
  367. package/src/dispatch/Dispatcher.ts +3 -3
  368. package/src/dispatch/HandlerFacade.ts +231 -0
  369. package/src/dispatch/LocalRoutePolicy.ts +4 -4
  370. package/src/dispatch/OperationRoute.ts +2 -2
  371. package/src/dispatch/OutputView.ts +24 -2
  372. package/src/dispatch/Route.ts +2 -2
  373. package/src/dispatch/RoutePolicy.ts +1 -1
  374. package/src/dispatch/RouteRegistry.ts +2 -2
  375. package/src/dispatch/RouteResolver.ts +2 -4
  376. package/src/dispatch/StorageGuard.ts +70 -18
  377. package/src/dispatch/presenterArguments.ts +25 -0
  378. package/src/dispatch/{RemoteRouteResolver.ts → remoteRoutes.ts} +7 -9
  379. package/src/dispatch/routeNotFound.ts +33 -0
  380. package/src/dispatch/validateInput.ts +28 -0
  381. package/src/effective-operation.ts +21 -50
  382. package/src/emit.ts +5 -63
  383. package/src/entry/facade.ts +44 -0
  384. package/src/entry/transport.ts +16 -0
  385. package/src/frond-config.ts +7 -70
  386. package/src/identity-keys.ts +3 -16
  387. package/src/identity.ts +12 -80
  388. package/src/imports.ts +2 -31
  389. package/src/index.ts +17 -24
  390. package/src/loader.ts +2 -16
  391. package/src/node.ts +2 -11
  392. package/src/prefab/collector.ts +1 -22
  393. package/src/prefab/crud.ts +37 -76
  394. package/src/prefab/mirror.ts +4 -44
  395. package/src/prefab/prefab.ts +2 -21
  396. package/src/prefab/presenter.ts +2 -36
  397. package/src/prefab/repository.ts +7 -83
  398. package/src/scan/adapters.ts +32 -0
  399. package/src/scan/bundling.ts +1 -12
  400. package/src/scan/conventions.ts +6 -40
  401. package/src/scan/emit.ts +4 -38
  402. package/src/scan/handler-parser.ts +27 -96
  403. package/src/scan/result.ts +3 -16
  404. package/src/scan/scanner.ts +27 -126
  405. package/src/scan/statement.ts +4 -30
  406. package/src/source.ts +44 -0
  407. package/src/storage.ts +14 -234
  408. package/src/store.ts +152 -0
  409. package/src/verify.ts +16 -57
  410. package/src/wire/CallLog.ts +30 -0
  411. package/src/{contract → wire}/Invocation.ts +24 -17
  412. package/src/{contract → wire}/RouteAddress.ts +7 -0
  413. package/src/wire/binding.ts +9 -25
  414. package/src/wire/call.ts +30 -133
  415. package/src/wire/drift.ts +5 -30
  416. package/src/wire/errors.ts +4 -24
  417. package/src/wire/http-error.ts +5 -19
  418. package/src/wire/loggerMiddleware.ts +2 -8
  419. package/src/wire/middleware.ts +3 -7
  420. package/src/wire/operation.ts +8 -48
  421. package/src/wire/signature.ts +4 -25
  422. package/dist/boot/HandlerFacade.d.ts.map +0 -1
  423. package/dist/boot/HandlerFacade.js.map +0 -1
  424. package/dist/builtins/config.d.ts +0 -13
  425. package/dist/builtins/config.d.ts.map +0 -1
  426. package/dist/builtins/config.js +0 -21
  427. package/dist/builtins/config.js.map +0 -1
  428. package/dist/builtins/logger.d.ts.map +0 -1
  429. package/dist/builtins/logger.js.map +0 -1
  430. package/dist/contract/Call.d.ts +0 -10
  431. package/dist/contract/Call.d.ts.map +0 -1
  432. package/dist/contract/Call.js +0 -15
  433. package/dist/contract/Call.js.map +0 -1
  434. package/dist/contract/CallLog.d.ts +0 -57
  435. package/dist/contract/CallLog.d.ts.map +0 -1
  436. package/dist/contract/Invocation.d.ts +0 -27
  437. package/dist/contract/Invocation.d.ts.map +0 -1
  438. package/dist/contract/Invocation.js +0 -59
  439. package/dist/contract/Invocation.js.map +0 -1
  440. package/dist/contract/RouteAddress.d.ts.map +0 -1
  441. package/dist/contract/RouteAddress.js.map +0 -1
  442. package/dist/dispatch/InputValidator.d.ts +0 -7
  443. package/dist/dispatch/InputValidator.d.ts.map +0 -1
  444. package/dist/dispatch/InputValidator.js +0 -22
  445. package/dist/dispatch/InputValidator.js.map +0 -1
  446. package/dist/dispatch/OperationExecutor.d.ts +0 -25
  447. package/dist/dispatch/OperationExecutor.d.ts.map +0 -1
  448. package/dist/dispatch/OperationExecutor.js +0 -32
  449. package/dist/dispatch/OperationExecutor.js.map +0 -1
  450. package/dist/dispatch/OutputProjector.d.ts +0 -12
  451. package/dist/dispatch/OutputProjector.d.ts.map +0 -1
  452. package/dist/dispatch/OutputProjector.js +0 -30
  453. package/dist/dispatch/OutputProjector.js.map +0 -1
  454. package/dist/dispatch/PresenterArgumentResolver.d.ts +0 -12
  455. package/dist/dispatch/PresenterArgumentResolver.d.ts.map +0 -1
  456. package/dist/dispatch/PresenterArgumentResolver.js +0 -20
  457. package/dist/dispatch/PresenterArgumentResolver.js.map +0 -1
  458. package/dist/dispatch/RemoteRouteResolver.d.ts +0 -13
  459. package/dist/dispatch/RemoteRouteResolver.d.ts.map +0 -1
  460. package/dist/dispatch/RemoteRouteResolver.js.map +0 -1
  461. package/dist/dispatch/RouteNotFoundError.d.ts +0 -10
  462. package/dist/dispatch/RouteNotFoundError.d.ts.map +0 -1
  463. package/dist/dispatch/RouteNotFoundError.js +0 -24
  464. package/dist/dispatch/RouteNotFoundError.js.map +0 -1
  465. package/dist/entry/DynamicFacade.d.ts +0 -10
  466. package/dist/entry/DynamicFacade.d.ts.map +0 -1
  467. package/dist/entry/DynamicFacade.js +0 -27
  468. package/dist/entry/DynamicFacade.js.map +0 -1
  469. package/dist/entry/FacadeEntry.d.ts +0 -11
  470. package/dist/entry/FacadeEntry.d.ts.map +0 -1
  471. package/dist/entry/FacadeEntry.js +0 -26
  472. package/dist/entry/FacadeEntry.js.map +0 -1
  473. package/dist/entry/TransportEntry.d.ts +0 -13
  474. package/dist/entry/TransportEntry.d.ts.map +0 -1
  475. package/dist/entry/TransportEntry.js +0 -24
  476. package/dist/entry/TransportEntry.js.map +0 -1
  477. package/dist/rows.d.ts +0 -40
  478. package/dist/rows.d.ts.map +0 -1
  479. package/dist/rows.js +0 -146
  480. package/dist/rows.js.map +0 -1
  481. package/src/boot/HandlerFacade.ts +0 -242
  482. package/src/contract/Call.ts +0 -18
  483. package/src/contract/CallLog.ts +0 -55
  484. package/src/dispatch/InputValidator.ts +0 -28
  485. package/src/dispatch/OperationExecutor.ts +0 -60
  486. package/src/dispatch/OutputProjector.ts +0 -32
  487. package/src/dispatch/PresenterArgumentResolver.ts +0 -25
  488. package/src/dispatch/RouteNotFoundError.ts +0 -29
  489. package/src/entry/DynamicFacade.ts +0 -28
  490. package/src/entry/FacadeEntry.ts +0 -32
  491. package/src/entry/TransportEntry.ts +0 -30
  492. package/src/rows.ts +0 -155
  493. /package/dist/{contract → wire}/CallLog.js +0 -0
@@ -1,22 +0,0 @@
1
- import { RowJudge } from '@fougere/schema';
2
- import { ErrorCode, FougereError } from '../wire/errors.js';
3
- /** Validates and decodes the input body declared by one operation contract. */
4
- export class InputValidator {
5
- validate(schema, invocation, entity, operation) {
6
- if (!schema || invocation.body === undefined || invocation.body === null)
7
- return invocation;
8
- const result = RowJudge.of(schema.getFields(), { patch: schema.getOpts().patch })
9
- .check(invocation.body);
10
- if (!result.success) {
11
- throw new FougereError({
12
- code: ErrorCode.VALIDATION_FAILED,
13
- message: result.errors.map((error) => `${error.path}: ${error.message}`).join(', '),
14
- details: result.errors,
15
- entity,
16
- operation,
17
- });
18
- }
19
- return { ...invocation, body: result.data };
20
- }
21
- }
22
- //# sourceMappingURL=InputValidator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputValidator.js","sourceRoot":"","sources":["../../src/dispatch/InputValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,+EAA+E;AAC/E,MAAM,OAAO,cAAc;IACzB,QAAQ,CACN,MAA8B,EAC9B,UAA6B,EAC7B,MAAc,EACd,SAAiB;QAEjB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAE5F,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;aAC9E,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,YAAY,CAAC;gBACrB,IAAI,EAAE,SAAS,CAAC,iBAAiB;gBACjC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnF,OAAO,EAAE,MAAM,CAAC,MAAM;gBACtB,MAAM;gBACN,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;CACF"}
@@ -1,25 +0,0 @@
1
- import type { InvocationContext } from '../contract/Invocation.js';
2
- import type { OperationContract } from '../wire/operation.js';
3
- import { type AppMiddleware } from '../wire/middleware.js';
4
- import type { ArgumentResolver } from './ArgumentResolver.js';
5
- import type { InputValidator } from './InputValidator.js';
6
- import type { OutputProjector } from './OutputProjector.js';
7
- export interface OperationExecution {
8
- entity: string;
9
- frond: string;
10
- operation: string;
11
- contract: OperationContract | undefined;
12
- middlewares: () => AppMiddleware[];
13
- validator: InputValidator;
14
- arguments: ArgumentResolver;
15
- invoke: (args: unknown[]) => unknown | Promise<unknown>;
16
- projector: OutputProjector;
17
- present?: (result: unknown, invocation: InvocationContext) => Promise<unknown>;
18
- }
19
- /** Executes one operation through the same ordered boundary steps on every route. */
20
- export declare class OperationExecutor {
21
- private readonly execution;
22
- constructor(execution: OperationExecution);
23
- execute(input?: Partial<InvocationContext>): Promise<unknown>;
24
- }
25
- //# sourceMappingURL=OperationExecutor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OperationExecutor.d.ts","sourceRoot":"","sources":["../../src/dispatch/OperationExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,WAAW,EAAE,MAAM,aAAa,EAAE,CAAC;IACnC,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAChF;AAED,qFAAqF;AACrF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,kBAAkB;IAEpD,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CA8BpE"}
@@ -1,32 +0,0 @@
1
- import { canonicalInvocation } from '../contract/Invocation.js';
2
- import { runMiddlewares, } from '../wire/middleware.js';
3
- /** Executes one operation through the same ordered boundary steps on every route. */
4
- export class OperationExecutor {
5
- execution;
6
- constructor(execution) {
7
- this.execution = execution;
8
- }
9
- async execute(input) {
10
- const invocation = canonicalInvocation(input);
11
- const context = {
12
- entity: this.execution.entity,
13
- frond: this.execution.frond,
14
- operation: this.execution.operation,
15
- args: [],
16
- state: invocation.state,
17
- invocation,
18
- };
19
- return runMiddlewares(this.execution.middlewares(), context, async () => {
20
- const effective = this.execution.validator.validate(this.execution.contract?.input, invocation, context.entity, context.operation);
21
- context.invocation = effective;
22
- const args = this.execution.contract?.binding
23
- ? await this.execution.arguments.resolve(this.execution.contract.binding, effective)
24
- : [];
25
- const projected = this.execution.projector.project(await this.execution.invoke(args));
26
- return this.execution.present
27
- ? this.execution.present(projected, effective)
28
- : projected;
29
- });
30
- }
31
- }
32
- //# sourceMappingURL=OperationExecutor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OperationExecutor.js","sourceRoot":"","sources":["../../src/dispatch/OperationExecutor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EACL,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAkB/B,qFAAqF;AACrF,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,SAA6B;QAA7B,cAAS,GAAT,SAAS,CAAoB;IAAG,CAAC;IAE9D,KAAK,CAAC,OAAO,CAAC,KAAkC;QAC9C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAqB;YAChC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAC7B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YACnC,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,UAAU;SACX,CAAC;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CACjD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAC9B,UAAU,EACV,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CAAC;YACF,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO;gBAC3C,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;gBACpF,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAChD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAClC,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;gBAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;gBAC9C,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { OutputView } from './OutputView.js';
2
- /**
3
- * Projects one operation result onto the fields its audience may read.
4
- *
5
- * One of the two exits a judge watches; `StorageGuard` is the other.
6
- */
7
- export declare class OutputProjector {
8
- private readonly view;
9
- constructor(view: OutputView);
10
- project(result: unknown): unknown;
11
- }
12
- //# sourceMappingURL=OutputProjector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OutputProjector.d.ts","sourceRoot":"","sources":["../../src/dispatch/OutputProjector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAmBlC"}
@@ -1,30 +0,0 @@
1
- import { Visibility } from '@fougere/schema';
2
- import { preserveArrayProperties } from './ArrayResult.js';
3
- /**
4
- * Projects one operation result onto the fields its audience may read.
5
- *
6
- * One of the two exits a judge watches; `StorageGuard` is the other.
7
- */
8
- export class OutputProjector {
9
- view;
10
- constructor(view) {
11
- this.view = view;
12
- }
13
- project(result) {
14
- if (result === null || result === undefined)
15
- return result;
16
- if (Array.isArray(result)) {
17
- return preserveArrayProperties(result, result.map((item) => this.project(item)));
18
- }
19
- if (typeof result !== 'object')
20
- return result;
21
- const record = result;
22
- const scoped = this.view.closed
23
- ? Object.fromEntries(Object.keys(this.view.fields)
24
- .filter((key) => key in record)
25
- .map((key) => [key, record[key]]))
26
- : record;
27
- return Visibility.of(this.view.fields).encode(scoped);
28
- }
29
- }
30
- //# sourceMappingURL=OutputProjector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OutputProjector.js","sourceRoot":"","sources":["../../src/dispatch/OutputProjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAG3D;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,OAAO,CAAC,MAAe;QACrB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAE3D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAE9C,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAC7B,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;iBAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC;iBAC9B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CACpC;YACH,CAAC,CAAC,MAAM,CAAC;QACX,OAAO,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { InvocationContext } from '../contract/Invocation.js';
2
- import type { PresenterEntry } from '../descriptor/frond.js';
3
- import type { ArgumentResolver } from './ArgumentResolver.js';
4
- import type { PresenterArgs } from './PresenterExecutor.js';
5
- /** Resolves the invocation-dependent arguments of every computed presenter field. */
6
- export declare class PresenterArgumentResolver {
7
- private readonly argumentsResolver;
8
- private readonly collectorTypes;
9
- constructor(argumentsResolver: ArgumentResolver, collectorTypes: Set<string>);
10
- resolve(meta: PresenterEntry, invocation: InvocationContext): Promise<PresenterArgs>;
11
- }
12
- //# sourceMappingURL=PresenterArgumentResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PresenterArgumentResolver.d.ts","sourceRoot":"","sources":["../../src/dispatch/PresenterArgumentResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qFAAqF;AACrF,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,iBAAiB,EAAE,gBAAgB,EACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC;IAGxC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;CAW3F"}
@@ -1,20 +0,0 @@
1
- import { computeBindingPlan } from '../wire/binding.js';
2
- /** Resolves the invocation-dependent arguments of every computed presenter field. */
3
- export class PresenterArgumentResolver {
4
- argumentsResolver;
5
- collectorTypes;
6
- constructor(argumentsResolver, collectorTypes) {
7
- this.argumentsResolver = argumentsResolver;
8
- this.collectorTypes = collectorTypes;
9
- }
10
- async resolve(meta, invocation) {
11
- const argumentsByField = {};
12
- for (const field of meta.fieldMeta) {
13
- if (!field.params?.length)
14
- continue;
15
- argumentsByField[field.name] = await this.argumentsResolver.resolve(computeBindingPlan(field.params, this.collectorTypes), invocation);
16
- }
17
- return argumentsByField;
18
- }
19
- }
20
- //# sourceMappingURL=PresenterArgumentResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PresenterArgumentResolver.js","sourceRoot":"","sources":["../../src/dispatch/PresenterArgumentResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,qFAAqF;AACrF,MAAM,OAAO,yBAAyB;IAEjB;IACA;IAFnB,YACmB,iBAAmC,EACnC,cAA2B;QAD3B,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,mBAAc,GAAd,cAAc,CAAa;IAC3C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,IAAoB,EAAE,UAA6B;QAC/D,MAAM,gBAAgB,GAAkB,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM;gBAAE,SAAS;YACpC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACjE,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,EACrD,UAAU,CACX,CAAC;QACJ,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF"}
@@ -1,13 +0,0 @@
1
- import type { RouteAddress } from '../contract/RouteAddress.js';
2
- import type { Route } from './Route.js';
3
- import type { RouteResolver } from './RouteResolver.js';
4
- type RemoteFacade = Record<string, Function>;
5
- export type RemoteFacadeResolver = (entity: string) => RemoteFacade | undefined;
6
- /** Builds a remote route on the first call, after the remote façade can be resolved. */
7
- export declare class RemoteRouteResolver implements RouteResolver {
8
- private readonly facades;
9
- constructor(facades: RemoteFacadeResolver);
10
- resolve(address: RouteAddress): Route | undefined;
11
- }
12
- export {};
13
- //# sourceMappingURL=RemoteRouteResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RemoteRouteResolver.d.ts","sourceRoot":"","sources":["../../src/dispatch/RemoteRouteResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;AAEhF,wFAAwF;AACxF,qBAAa,mBAAoB,YAAW,aAAa;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAE1D,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS;CAQlD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RemoteRouteResolver.js","sourceRoot":"","sources":["../../src/dispatch/RemoteRouteResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOrD,wFAAwF;AACxF,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAG,CAAC;IAE9D,OAAO,CAAC,OAAqB;QAC3B,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,OAAO,SAAS,KAAK,UAAU;YAAE,OAAO,SAAS,CAAC;QACtD,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrF,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- import type { Call } from '../contract/Call.js';
2
- import { FougereError } from '../wire/errors.js';
3
- import type { Route } from './Route.js';
4
- import type { RoutePolicy } from './RoutePolicy.js';
5
- /** Describes an unresolved route from the destinations visible to one dispatcher. */
6
- export declare class RouteNotFoundError extends FougereError {
7
- readonly servedOperations: readonly string[];
8
- constructor(call: Call, routes: readonly Route[], policy?: RoutePolicy);
9
- }
10
- //# sourceMappingURL=RouteNotFoundError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouteNotFoundError.d.ts","sourceRoot":"","sources":["../../src/dispatch/RouteNotFoundError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,qFAAqF;AACrF,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEjC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW;CAmBvE"}
@@ -1,24 +0,0 @@
1
- import { ErrorCode, FougereError } from '../wire/errors.js';
2
- /** Describes an unresolved route from the destinations visible to one dispatcher. */
3
- export class RouteNotFoundError extends FougereError {
4
- servedOperations;
5
- constructor(call, routes, policy) {
6
- const served = routes
7
- .filter((route) => !policy || policy.accepts(route))
8
- .filter((route) => route.address.entity === call.address.entity)
9
- .filter((route) => route.kind === 'system'
10
- || route.address.surface === call.address.surface)
11
- .map((route) => route.address.operation);
12
- const operation = call.address.operation;
13
- const entity = call.address.entity;
14
- const message = entity === 'rpc'
15
- ? `Unknown rpc operation '${operation}'. `
16
- + (served.length ? `It serves ${served.join(', ')}.` : 'It serves nothing.')
17
- : served.length
18
- ? `Unknown operation '${operation}' on '${entity}'. It serves ${served.join(', ')}.`
19
- : `No route serves '${call.address}'`;
20
- super({ code: ErrorCode.NOT_FOUND, message, entity, operation });
21
- this.servedOperations = served;
22
- }
23
- }
24
- //# sourceMappingURL=RouteNotFoundError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouteNotFoundError.js","sourceRoot":"","sources":["../../src/dispatch/RouteNotFoundError.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI5D,qFAAqF;AACrF,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACzC,gBAAgB,CAAoB;IAE7C,YAAY,IAAU,EAAE,MAAwB,EAAE,MAAoB;QACpE,MAAM,MAAM,GAAG,MAAM;aAClB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACnD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aAC/D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;eACrC,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;aACnD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK;YAC9B,CAAC,CAAC,0BAA0B,SAAS,KAAK;kBACtC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC;YAC9E,CAAC,CAAC,MAAM,CAAC,MAAM;gBACb,CAAC,CAAC,sBAAsB,SAAS,SAAS,MAAM,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACpF,CAAC,CAAC,oBAAoB,IAAI,CAAC,OAAO,GAAG,CAAC;QAE1C,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACjC,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- type Operation = (...args: any[]) => unknown;
2
- /** Facade for a remote contract whose operation names are not known before discovery. */
3
- export declare class DynamicFacade {
4
- private readonly operation;
5
- readonly operations: Record<string, Operation>;
6
- constructor(operation: (name: string) => Operation);
7
- private isOperationName;
8
- }
9
- export {};
10
- //# sourceMappingURL=DynamicFacade.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamicFacade.d.ts","sourceRoot":"","sources":["../../src/entry/DynamicFacade.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;AAE7C,yFAAyF;AACzF,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAElB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS;IAenE,OAAO,CAAC,eAAe;CAMxB"}
@@ -1,27 +0,0 @@
1
- /** Facade for a remote contract whose operation names are not known before discovery. */
2
- export class DynamicFacade {
3
- operation;
4
- operations;
5
- constructor(operation) {
6
- this.operation = operation;
7
- this.operations = new Proxy({}, {
8
- get: (_target, name) => this.isOperationName(name) ? this.operation(name) : undefined,
9
- has: (_target, name) => this.isOperationName(name),
10
- getOwnPropertyDescriptor: (_target, name) => this.isOperationName(name)
11
- ? {
12
- value: this.operation(name),
13
- writable: false,
14
- enumerable: true,
15
- configurable: true,
16
- }
17
- : undefined,
18
- });
19
- }
20
- isOperationName(name) {
21
- return typeof name === 'string'
22
- && name !== 'then'
23
- && name !== 'toJSON'
24
- && !Object.hasOwn(Object.prototype, name);
25
- }
26
- }
27
- //# sourceMappingURL=DynamicFacade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamicFacade.js","sourceRoot":"","sources":["../../src/entry/DynamicFacade.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,OAAO,aAAa;IAGK;IAFpB,UAAU,CAA4B;IAE/C,YAA6B,SAAsC;QAAtC,cAAS,GAAT,SAAS,CAA6B;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;YAC9B,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACrF,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAClD,wBAAwB,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACrE,CAAC,CAAC;oBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC3B,QAAQ,EAAE,KAAK;oBACf,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;iBACnB;gBACH,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,IAAqB;QAC3C,OAAO,OAAO,IAAI,KAAK,QAAQ;eAC1B,IAAI,KAAK,MAAM;eACf,IAAI,KAAK,QAAQ;eACjB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -1,11 +0,0 @@
1
- import type { DispatchPort } from '../dispatch/DispatchPort.js';
2
- /** Object-shaped entry that turns facade method calls into canonical dispatches. */
3
- export declare class FacadeEntry {
4
- private readonly dispatcher;
5
- private readonly entity;
6
- private readonly surface?;
7
- readonly operations: Record<string, Function>;
8
- constructor(dispatcher: DispatchPort, entity: string, operationNames?: Iterable<string>, surface?: string | undefined);
9
- private operation;
10
- }
11
- //# sourceMappingURL=FacadeEntry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FacadeEntry.d.ts","sourceRoot":"","sources":["../../src/entry/FacadeEntry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,oFAAoF;AACpF,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAN3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAG3B,UAAU,EAAE,YAAY,EACxB,MAAM,EAAE,MAAM,EAC/B,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAChB,OAAO,CAAC,EAAE,MAAM,YAAA;IAOnC,OAAO,CAAC,SAAS;CAUlB"}
@@ -1,26 +0,0 @@
1
- import { Call } from '../contract/Call.js';
2
- import { RouteAddress } from '../contract/RouteAddress.js';
3
- import { DynamicFacade } from './DynamicFacade.js';
4
- /** Object-shaped entry that turns facade method calls into canonical dispatches. */
5
- export class FacadeEntry {
6
- dispatcher;
7
- entity;
8
- surface;
9
- operations;
10
- constructor(dispatcher, entity, operationNames, surface) {
11
- this.dispatcher = dispatcher;
12
- this.entity = entity;
13
- this.surface = surface;
14
- this.operations = operationNames
15
- ? Object.fromEntries([...operationNames].map((name) => [name, this.operation(name)]))
16
- : new DynamicFacade((name) => this.operation(name)).operations;
17
- }
18
- operation(name) {
19
- return (invocation) => this.dispatcher.dispatch(new Call(new RouteAddress({
20
- entity: this.entity,
21
- operation: name,
22
- ...(this.surface !== undefined ? { surface: this.surface } : {}),
23
- }), invocation));
24
- }
25
- }
26
- //# sourceMappingURL=FacadeEntry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FacadeEntry.js","sourceRoot":"","sources":["../../src/entry/FacadeEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,oFAAoF;AACpF,MAAM,OAAO,WAAW;IAIH;IACA;IAEA;IANV,UAAU,CAA2B;IAE9C,YACmB,UAAwB,EACxB,MAAc,EAC/B,cAAiC,EAChB,OAAgB;QAHhB,eAAU,GAAV,UAAU,CAAc;QACxB,WAAM,GAAN,MAAM,CAAQ;QAEd,YAAO,GAAP,OAAO,CAAS;QAEjC,IAAI,CAAC,UAAU,GAAG,cAAc;YAC9B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrF,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IACnE,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CACtD,IAAI,YAAY,CAAC;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI;YACf,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC,EACF,UAAU,CACX,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,13 +0,0 @@
1
- import type { DispatchPort } from '../dispatch/DispatchPort.js';
2
- import type { FrondCall, Transport } from '../wire/call.js';
3
- import type { InvocationContext } from '../contract/Invocation.js';
4
- /** Object entry for the historical transport contract. */
5
- export declare class TransportEntry {
6
- private readonly dispatcher;
7
- private readonly surface?;
8
- constructor(dispatcher: DispatchPort, surface?: string | undefined);
9
- receive(legacy: FrondCall, invocation: InvocationContext): Promise<unknown>;
10
- }
11
- /** Adapt the historical transport signature to the canonical dispatch port. */
12
- export declare function createTransportEntry(dispatcher: DispatchPort, surface?: string): Transport;
13
- //# sourceMappingURL=TransportEntry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransportEntry.d.ts","sourceRoot":"","sources":["../../src/entry/TransportEntry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,0DAA0D;AAC1D,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBADR,UAAU,EAAE,YAAY,EACxB,OAAO,CAAC,EAAE,MAAM,YAAA;IAGnC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAU5E;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAG1F"}
@@ -1,24 +0,0 @@
1
- import { Call } from '../contract/Call.js';
2
- import { RouteAddress } from '../contract/RouteAddress.js';
3
- /** Object entry for the historical transport contract. */
4
- export class TransportEntry {
5
- dispatcher;
6
- surface;
7
- constructor(dispatcher, surface) {
8
- this.dispatcher = dispatcher;
9
- this.surface = surface;
10
- }
11
- receive(legacy, invocation) {
12
- return this.dispatcher.dispatch(new Call(new RouteAddress({
13
- entity: legacy.entity,
14
- operation: legacy.op,
15
- ...(this.surface !== undefined ? { surface: this.surface } : {}),
16
- }), invocation));
17
- }
18
- }
19
- /** Adapt the historical transport signature to the canonical dispatch port. */
20
- export function createTransportEntry(dispatcher, surface) {
21
- const entry = new TransportEntry(dispatcher, surface);
22
- return entry.receive.bind(entry);
23
- }
24
- //# sourceMappingURL=TransportEntry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransportEntry.js","sourceRoot":"","sources":["../../src/entry/TransportEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,0DAA0D;AAC1D,MAAM,OAAO,cAAc;IAEN;IACA;IAFnB,YACmB,UAAwB,EACxB,OAAgB;QADhB,eAAU,GAAV,UAAU,CAAc;QACxB,YAAO,GAAP,OAAO,CAAS;IAChC,CAAC;IAEJ,OAAO,CAAC,MAAiB,EAAE,UAA6B;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CACtC,IAAI,YAAY,CAAC;YACf,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC,EACF,UAAU,CACX,CAAC,CAAC;IACL,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,UAAwB,EAAE,OAAgB;IAC7E,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
package/dist/rows.d.ts DELETED
@@ -1,40 +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 { type SchemaView } from '@fougere/schema';
19
- import type { StorageFactory } from './storage.js';
20
- /** One row, as every realization hands it over. */
21
- export type Row = Record<string, unknown>;
22
- /**
23
- * A keyed collection of rows — what an adapter supplies, and all of it.
24
- *
25
- * Async on purpose, even where a realization is not: a Map answers instantly and a directory
26
- * does not, and the frame above cannot be written twice. `client` is what the port's own
27
- * escape hatch exposes, `unknown` for the reason it is there.
28
- */
29
- export interface Rows {
30
- get(key: string): Promise<Row | undefined>;
31
- has(key: string): Promise<boolean>;
32
- set(key: string, row: Row): Promise<void>;
33
- delete(key: string): Promise<boolean>;
34
- /** Every row it holds. A realization that cannot answer this cheaply says so in its doc. */
35
- all(): Promise<Row[]>;
36
- /** Handed on as `Storage.client` — the Map, the directory, whatever it is. */
37
- readonly client: unknown;
38
- }
39
- export declare function storageOver(open: (entity: SchemaView, name: string) => Rows): StorageFactory;
40
- //# sourceMappingURL=rows.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../src/rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAA6C,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5D,mDAAmD;AACnD,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAC3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,4FAA4F;IAC5F,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,cAAc,CAiH5F"}
package/dist/rows.js DELETED
@@ -1,146 +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 } from '@fougere/schema';
19
- export function storageOver(open) {
20
- return (entity, name) => {
21
- const fields = entity.getFields();
22
- const rows = open(entity, name);
23
- const pk = Object.entries(fields).find(([, field]) => Role.of(field).isPrimary)?.[0] ?? 'id';
24
- // `Storage.findById(id: string)` — but a key can hold a number, and a Map keyed on
25
- // `1` does not answer `'1'`. SQL never had the question; here the divergence was
26
- // silent and only on this storage.
27
- const keyOf = (value) => String(value);
28
- // Same contract as SQL: a criterion may name a SET, and an empty set matches nothing.
29
- const matches = (row, criteria) => Object.entries(criteria).every(([key, value]) => Array.isArray(value)
30
- ? value.some((v) => Object.is(row[key], v))
31
- : Object.is(row[key], value));
32
- return {
33
- client: rows.client,
34
- async list(options) {
35
- let items = await rows.all();
36
- if (options?.where)
37
- items = items.filter((row) => matches(row, options.where));
38
- // Held before the page is cut, and after the filter: `total` answers "how many
39
- // match", which is what a paginator divides. Reading `store.size` at the end
40
- // answered a different question — every row the store holds, including the ones
41
- // the filter exists to keep out of this caller's sight.
42
- const matching = items.length;
43
- const limit = options?.limit;
44
- const offset = options?.page && limit ? (options.page - 1) * limit : options?.offset ?? 0;
45
- if (offset > 0)
46
- items = items.slice(offset);
47
- const hasMore = limit ? items.length > limit : false;
48
- if (limit)
49
- items = items.slice(0, limit);
50
- const result = items;
51
- result.hasMore = hasMore;
52
- result.endCursor = items.length > 0 ? String(items[items.length - 1][pk] ?? '') : undefined;
53
- if (options?.count)
54
- result.total = matching;
55
- return result;
56
- },
57
- async findById(id) { return await rows.get(keyOf(id)); },
58
- async findBy(criteria) {
59
- return (await rows.all()).find((row) => matches(row, criteria));
60
- },
61
- async findAllBy(criteria) {
62
- return (await rows.all()).filter((row) => matches(row, criteria));
63
- },
64
- // Same contract as SQL: a map keyed by the primary key, a miss being an absent key.
65
- async findByKeys(ids) {
66
- const found = new Map();
67
- for (const id of ids) {
68
- const row = await rows.get(keyOf(id));
69
- if (row)
70
- found.set(String(id), row);
71
- }
72
- return found;
73
- },
74
- // The dual, same contract as SQL: grouped by the value read off the ROW.
75
- async findAllByKeys(field, keys) {
76
- const grouped = new Map();
77
- if (keys.length === 0)
78
- return grouped;
79
- const wanted = new Set(keys.map(String));
80
- for (const row of await rows.all()) {
81
- const key = String(row[field]);
82
- if (!wanted.has(key))
83
- continue;
84
- const held = grouped.get(key);
85
- if (held)
86
- held.push(row);
87
- else
88
- grouped.set(key, [row]);
89
- }
90
- return grouped;
91
- },
92
- // Same contract as SQL: the key and the creation stamps survive an overwrite.
93
- async upsert(input) {
94
- const record = applyCreate(fields, applyUpdate(fields, input));
95
- const id = record[pk];
96
- if (id === undefined)
97
- throw new Error(`${name}.upsert(): no \`${pk}\` — an upsert needs the key it writes at.`);
98
- const held = await rows.get(keyOf(id));
99
- if (held) {
100
- for (const [key, field] of Object.entries(fields)) {
101
- if (key === pk || Lifecycle.of(field).stampedOnce)
102
- record[key] = held[key];
103
- }
104
- }
105
- await rows.set(keyOf(id), record);
106
- return record;
107
- },
108
- async upsertAll(inputs) {
109
- for (const input of inputs)
110
- await this.upsert(input);
111
- return inputs.length;
112
- },
113
- async create(input) {
114
- const record = applyCreate(fields, input);
115
- const id = record[pk];
116
- // `primary(text())` declares no generator, so nothing fills the hole and the
117
- // caller has to. Keying on `undefined` would let the second create overwrite the
118
- // first, in silence — the old version hid this by inventing an `id` field the
119
- // entity never declared.
120
- if (id === undefined) {
121
- throw new Error(`${name}.create: '${pk}' is the primary key and nothing supplied it — this entity declares no generator for it.`);
122
- }
123
- // A create is not an upsert. `Map.set` overwrites, so a second create under the
124
- // same key answered "created" while destroying the previous row — SQL answers a
125
- // constraint violation, and a store that loses data silently is worse than one
126
- // that fails.
127
- if (await rows.has(keyOf(id))) {
128
- throw new Error(`${name}.create: '${pk}' ${JSON.stringify(id)} already exists.`);
129
- }
130
- await rows.set(keyOf(id), record);
131
- return record;
132
- },
133
- async update(id, input) {
134
- const existing = await rows.get(keyOf(id));
135
- if (!existing)
136
- throw new Error(`Not found: ${id}`);
137
- const updated = { ...existing, ...applyUpdate(fields, input), [pk]: existing[pk] };
138
- await rows.set(keyOf(id), updated);
139
- return updated;
140
- },
141
- async delete(id) { return await rows.delete(keyOf(id)); },
142
- output(_schema) { return this; },
143
- };
144
- };
145
- }
146
- //# sourceMappingURL=rows.js.map
package/dist/rows.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../src/rows.ts"],"names":[],"mappings":"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"}