@fougere/core 0.9.3-alpha.0 → 0.11.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 (1031) hide show
  1. package/dist/AdapterConfig.d.ts +10 -0
  2. package/dist/AdapterConfig.d.ts.map +1 -0
  3. package/dist/AdapterConfig.js +3 -0
  4. package/dist/AdapterConfig.js.map +1 -0
  5. package/dist/AnswerFor.d.ts +5 -0
  6. package/dist/AnswerFor.d.ts.map +1 -0
  7. package/dist/AnswerFor.js +2 -0
  8. package/dist/AnswerFor.js.map +1 -0
  9. package/dist/Binding.d.ts +4 -0
  10. package/dist/Binding.d.ts.map +1 -0
  11. package/dist/Binding.js +2 -0
  12. package/dist/Binding.js.map +1 -0
  13. package/dist/{identity.d.ts → CallIdentity.d.ts} +4 -17
  14. package/dist/CallIdentity.d.ts.map +1 -0
  15. package/dist/{identity.js → CallIdentity.js} +3 -6
  16. package/dist/CallIdentity.js.map +1 -0
  17. package/dist/Constraint.d.ts +3 -0
  18. package/dist/Constraint.d.ts.map +1 -0
  19. package/dist/Constraint.js +2 -0
  20. package/dist/Constraint.js.map +1 -0
  21. package/dist/{conventions.d.ts → Conventions.d.ts} +14 -8
  22. package/dist/Conventions.d.ts.map +1 -0
  23. package/dist/{conventions.js → Conventions.js} +7 -3
  24. package/dist/Conventions.js.map +1 -0
  25. package/dist/ConventionsInput.d.ts +8 -0
  26. package/dist/ConventionsInput.d.ts.map +1 -0
  27. package/dist/ConventionsInput.js +2 -0
  28. package/dist/ConventionsInput.js.map +1 -0
  29. package/dist/Ctor.d.ts +3 -0
  30. package/dist/Ctor.d.ts.map +1 -0
  31. package/dist/Ctor.js +2 -0
  32. package/dist/Ctor.js.map +1 -0
  33. package/dist/Declared.d.ts +8 -0
  34. package/dist/Declared.d.ts.map +1 -0
  35. package/dist/Declared.js +2 -0
  36. package/dist/Declared.js.map +1 -0
  37. package/dist/DeclaredHandler.d.ts +18 -0
  38. package/dist/DeclaredHandler.d.ts.map +1 -0
  39. package/dist/DeclaredHandler.js +2 -0
  40. package/dist/DeclaredHandler.js.map +1 -0
  41. package/dist/DeclaredSubject.d.ts +7 -0
  42. package/dist/DeclaredSubject.d.ts.map +1 -0
  43. package/dist/DeclaredSubject.js +2 -0
  44. package/dist/DeclaredSubject.js.map +1 -0
  45. package/dist/{graph.d.ts → DomainCluster.d.ts} +3 -12
  46. package/dist/DomainCluster.d.ts.map +1 -0
  47. package/dist/{graph.js → DomainCluster.js} +1 -1
  48. package/dist/DomainCluster.js.map +1 -0
  49. package/dist/EffectiveCollector.d.ts +8 -0
  50. package/dist/EffectiveCollector.d.ts.map +1 -0
  51. package/dist/EffectiveCollector.js +2 -0
  52. package/dist/EffectiveCollector.js.map +1 -0
  53. package/dist/EffectiveOperation.d.ts +65 -0
  54. package/dist/EffectiveOperation.d.ts.map +1 -0
  55. package/dist/EffectiveOperation.js +2 -0
  56. package/dist/EffectiveOperation.js.map +1 -0
  57. package/dist/EffectiveOperationModel.d.ts +24 -0
  58. package/dist/EffectiveOperationModel.d.ts.map +1 -0
  59. package/dist/{effective-operation.js → EffectiveOperationModel.js} +9 -23
  60. package/dist/EffectiveOperationModel.js.map +1 -0
  61. package/dist/EffectiveOperationOptions.d.ts +7 -0
  62. package/dist/EffectiveOperationOptions.d.ts.map +1 -0
  63. package/dist/EffectiveOperationOptions.js +2 -0
  64. package/dist/EffectiveOperationOptions.js.map +1 -0
  65. package/dist/EffectiveOperationSemantics.d.ts +8 -0
  66. package/dist/EffectiveOperationSemantics.d.ts.map +1 -0
  67. package/dist/EffectiveOperationSemantics.js +8 -0
  68. package/dist/EffectiveOperationSemantics.js.map +1 -0
  69. package/dist/EffectiveOperationsMap.d.ts +3 -0
  70. package/dist/EffectiveOperationsMap.d.ts.map +1 -0
  71. package/dist/EffectiveOperationsMap.js +2 -0
  72. package/dist/EffectiveOperationsMap.js.map +1 -0
  73. package/dist/EffectiveParameter.d.ts +14 -0
  74. package/dist/EffectiveParameter.d.ts.map +1 -0
  75. package/dist/EffectiveParameter.js +2 -0
  76. package/dist/EffectiveParameter.js.map +1 -0
  77. package/dist/EntityNode.d.ts +7 -0
  78. package/dist/EntityNode.d.ts.map +1 -0
  79. package/dist/EntityNode.js +2 -0
  80. package/dist/EntityNode.js.map +1 -0
  81. package/dist/{config-loader.d.ts → FougereConfig.d.ts} +16 -16
  82. package/dist/FougereConfig.d.ts.map +1 -0
  83. package/dist/{config-loader.js → FougereConfig.js} +1 -2
  84. package/dist/FougereConfig.js.map +1 -0
  85. package/dist/FougereNames.d.ts +4 -0
  86. package/dist/FougereNames.d.ts.map +1 -0
  87. package/dist/FougereNames.js +2 -0
  88. package/dist/FougereNames.js.map +1 -0
  89. package/dist/FougerePorts.d.ts +9 -0
  90. package/dist/FougerePorts.d.ts.map +1 -0
  91. package/dist/FougerePorts.js +2 -0
  92. package/dist/FougerePorts.js.map +1 -0
  93. package/dist/FrondConfig.d.ts +36 -0
  94. package/dist/FrondConfig.d.ts.map +1 -0
  95. package/dist/{frond-config.js → FrondConfig.js} +1 -1
  96. package/dist/FrondConfig.js.map +1 -0
  97. package/dist/{declare.d.ts → FrondDeclaration.d.ts} +7 -29
  98. package/dist/FrondDeclaration.d.ts.map +1 -0
  99. package/dist/{declare.js → FrondDeclaration.js} +2 -3
  100. package/dist/FrondDeclaration.js.map +1 -0
  101. package/dist/FrondIdentity.d.ts +8 -0
  102. package/dist/FrondIdentity.d.ts.map +1 -0
  103. package/dist/FrondIdentity.js +2 -0
  104. package/dist/FrondIdentity.js.map +1 -0
  105. package/dist/NameOf.d.ts +10 -0
  106. package/dist/NameOf.d.ts.map +1 -0
  107. package/dist/NameOf.js +2 -0
  108. package/dist/NameOf.js.map +1 -0
  109. package/dist/OperationOverride.d.ts +38 -0
  110. package/dist/OperationOverride.d.ts.map +1 -0
  111. package/dist/OperationOverride.js +2 -0
  112. package/dist/OperationOverride.js.map +1 -0
  113. package/dist/PortChoice.d.ts +13 -0
  114. package/dist/PortChoice.d.ts.map +1 -0
  115. package/dist/PortChoice.js +2 -0
  116. package/dist/PortChoice.js.map +1 -0
  117. package/dist/{source.d.ts → Source.d.ts} +5 -24
  118. package/dist/Source.d.ts.map +1 -0
  119. package/dist/{source.js → Source.js} +5 -4
  120. package/dist/Source.js.map +1 -0
  121. package/dist/SourceConfig.d.ts +10 -0
  122. package/dist/SourceConfig.d.ts.map +1 -0
  123. package/dist/SourceConfig.js +2 -0
  124. package/dist/SourceConfig.js.map +1 -0
  125. package/dist/SourceView.d.ts +13 -0
  126. package/dist/SourceView.d.ts.map +1 -0
  127. package/dist/SourceView.js +2 -0
  128. package/dist/SourceView.js.map +1 -0
  129. package/dist/VerifiedCall.d.ts +8 -0
  130. package/dist/VerifiedCall.d.ts.map +1 -0
  131. package/dist/VerifiedCall.js +2 -0
  132. package/dist/VerifiedCall.js.map +1 -0
  133. package/dist/boot/App.d.ts +71 -0
  134. package/dist/boot/App.d.ts.map +1 -0
  135. package/dist/boot/App.js +2 -0
  136. package/dist/boot/App.js.map +1 -0
  137. package/dist/boot/AppLifecycle.d.ts +2 -19
  138. package/dist/boot/AppLifecycle.d.ts.map +1 -1
  139. package/dist/boot/AppLifecycle.js.map +1 -1
  140. package/dist/boot/AuthConfig.d.ts +14 -0
  141. package/dist/boot/AuthConfig.d.ts.map +1 -0
  142. package/dist/boot/AuthConfig.js +2 -0
  143. package/dist/boot/AuthConfig.js.map +1 -0
  144. package/dist/boot/AuthContext.d.ts +12 -0
  145. package/dist/boot/AuthContext.d.ts.map +1 -0
  146. package/dist/boot/AuthContext.js +2 -0
  147. package/dist/boot/AuthContext.js.map +1 -0
  148. package/dist/boot/AuthRuntime.d.ts +19 -0
  149. package/dist/boot/AuthRuntime.d.ts.map +1 -0
  150. package/dist/boot/AuthRuntime.js +2 -0
  151. package/dist/boot/AuthRuntime.js.map +1 -0
  152. package/dist/boot/CreateAppOptions.d.ts +81 -0
  153. package/dist/boot/CreateAppOptions.d.ts.map +1 -0
  154. package/dist/boot/CreateAppOptions.js +2 -0
  155. package/dist/boot/CreateAppOptions.js.map +1 -0
  156. package/dist/boot/Emissions.d.ts +11 -7
  157. package/dist/boot/Emissions.d.ts.map +1 -1
  158. package/dist/boot/Emissions.js +83 -45
  159. package/dist/boot/Emissions.js.map +1 -1
  160. package/dist/boot/Extension.d.ts +20 -0
  161. package/dist/boot/Extension.d.ts.map +1 -0
  162. package/dist/boot/Extension.js +2 -0
  163. package/dist/boot/Extension.js.map +1 -0
  164. package/dist/boot/Hosting.d.ts +38 -0
  165. package/dist/boot/Hosting.d.ts.map +1 -0
  166. package/dist/boot/Hosting.js +2 -0
  167. package/dist/boot/Hosting.js.map +1 -0
  168. package/dist/boot/Peer.d.ts +16 -0
  169. package/dist/boot/Peer.d.ts.map +1 -0
  170. package/dist/boot/Peer.js +2 -0
  171. package/dist/boot/Peer.js.map +1 -0
  172. package/dist/boot/apply.d.ts +1 -1
  173. package/dist/boot/apply.js +1 -1
  174. package/dist/boot/apply.js.map +1 -1
  175. package/dist/boot/bootstrap.d.ts +2 -1
  176. package/dist/boot/bootstrap.d.ts.map +1 -1
  177. package/dist/boot/bootstrap.js +196 -59
  178. package/dist/boot/bootstrap.js.map +1 -1
  179. package/dist/boot/card.d.ts +2 -2
  180. package/dist/boot/card.d.ts.map +1 -1
  181. package/dist/boot/card.js +11 -8
  182. package/dist/boot/card.js.map +1 -1
  183. package/dist/boot/declared.d.ts +2 -2
  184. package/dist/boot/declared.d.ts.map +1 -1
  185. package/dist/boot/declared.js +36 -4
  186. package/dist/boot/declared.js.map +1 -1
  187. package/dist/boot/frame.d.ts +1 -1
  188. package/dist/boot/frame.js +1 -1
  189. package/dist/boot/hosted.d.ts +1 -1
  190. package/dist/boot/hosted.d.ts.map +1 -1
  191. package/dist/boot/install.d.ts +21 -7
  192. package/dist/boot/install.d.ts.map +1 -1
  193. package/dist/boot/install.js +41 -27
  194. package/dist/boot/install.js.map +1 -1
  195. package/dist/boot/ownership.d.ts +7 -5
  196. package/dist/boot/ownership.d.ts.map +1 -1
  197. package/dist/boot/ownership.js +81 -40
  198. package/dist/boot/ownership.js.map +1 -1
  199. package/dist/boot/peerOver.d.ts +4 -0
  200. package/dist/boot/peerOver.d.ts.map +1 -0
  201. package/dist/boot/peerOver.js +12 -0
  202. package/dist/boot/peerOver.js.map +1 -0
  203. package/dist/boot/ports.d.ts +4 -3
  204. package/dist/boot/ports.d.ts.map +1 -1
  205. package/dist/boot/ports.js +48 -37
  206. package/dist/boot/ports.js.map +1 -1
  207. package/dist/boot/relations.d.ts +54 -0
  208. package/dist/boot/relations.d.ts.map +1 -0
  209. package/dist/boot/relations.js +150 -0
  210. package/dist/boot/relations.js.map +1 -0
  211. package/dist/boot/remote.d.ts +3 -8
  212. package/dist/boot/remote.d.ts.map +1 -1
  213. package/dist/boot/remote.js +19 -15
  214. package/dist/boot/remote.js.map +1 -1
  215. package/dist/boot/runner.d.ts +2 -2
  216. package/dist/boot/runner.d.ts.map +1 -1
  217. package/dist/boot/seed.d.ts +4 -3
  218. package/dist/boot/seed.d.ts.map +1 -1
  219. package/dist/boot/seed.js +6 -6
  220. package/dist/boot/seed.js.map +1 -1
  221. package/dist/boot/statement-drift.d.ts +4 -3
  222. package/dist/boot/statement-drift.d.ts.map +1 -1
  223. package/dist/boot/statement-drift.js.map +1 -1
  224. package/dist/boot/together.d.ts +11 -4
  225. package/dist/boot/together.d.ts.map +1 -1
  226. package/dist/boot/together.js +62 -28
  227. package/dist/boot/together.js.map +1 -1
  228. package/dist/builtin/Carry.d.ts +29 -0
  229. package/dist/builtin/Carry.d.ts.map +1 -0
  230. package/dist/builtin/Carry.js +46 -0
  231. package/dist/builtin/Carry.js.map +1 -0
  232. package/dist/builtin/LogLevel.d.ts +2 -0
  233. package/dist/builtin/LogLevel.d.ts.map +1 -0
  234. package/dist/builtin/LogLevel.js +2 -0
  235. package/dist/builtin/LogLevel.js.map +1 -0
  236. package/dist/builtin/LogRecord.d.ts +12 -0
  237. package/dist/builtin/LogRecord.d.ts.map +1 -0
  238. package/dist/builtin/LogRecord.js +2 -0
  239. package/dist/builtin/LogRecord.js.map +1 -0
  240. package/dist/builtin/LogSink.d.ts +4 -0
  241. package/dist/builtin/LogSink.d.ts.map +1 -0
  242. package/dist/builtin/LogSink.js +2 -0
  243. package/dist/builtin/LogSink.js.map +1 -0
  244. package/dist/builtin/Logger.d.ts +27 -0
  245. package/dist/builtin/Logger.d.ts.map +1 -0
  246. package/dist/builtin/{logger.js → Logger.js} +1 -47
  247. package/dist/builtin/Logger.js.map +1 -0
  248. package/dist/builtin/LoggerOptions.d.ts +14 -0
  249. package/dist/builtin/LoggerOptions.d.ts.map +1 -0
  250. package/dist/builtin/LoggerOptions.js +2 -0
  251. package/dist/builtin/LoggerOptions.js.map +1 -0
  252. package/dist/builtin/Rendered.d.ts +21 -0
  253. package/dist/builtin/Rendered.d.ts.map +1 -0
  254. package/dist/builtin/Rendered.js +2 -0
  255. package/dist/builtin/Rendered.js.map +1 -0
  256. package/dist/contract.d.ts +35 -13
  257. package/dist/contract.d.ts.map +1 -1
  258. package/dist/contract.js +9 -6
  259. package/dist/contract.js.map +1 -1
  260. package/dist/crypto/CryptoPort.d.ts +12 -0
  261. package/dist/crypto/CryptoPort.d.ts.map +1 -0
  262. package/dist/crypto/CryptoPort.js +2 -0
  263. package/dist/crypto/CryptoPort.js.map +1 -0
  264. package/dist/crypto/PublicJwk.d.ts +8 -0
  265. package/dist/crypto/PublicJwk.d.ts.map +1 -0
  266. package/dist/crypto/PublicJwk.js +2 -0
  267. package/dist/crypto/PublicJwk.js.map +1 -0
  268. package/dist/crypto/Signer.d.ts +5 -0
  269. package/dist/crypto/Signer.d.ts.map +1 -0
  270. package/dist/crypto/Signer.js +2 -0
  271. package/dist/crypto/Signer.js.map +1 -0
  272. package/dist/crypto/Verifier.d.ts +6 -0
  273. package/dist/crypto/Verifier.d.ts.map +1 -0
  274. package/dist/crypto/Verifier.js +2 -0
  275. package/dist/crypto/Verifier.js.map +1 -0
  276. package/dist/crypto/node.d.ts +4 -1
  277. package/dist/crypto/node.d.ts.map +1 -1
  278. package/dist/crypto/node.js.map +1 -1
  279. package/dist/crypto/webcrypto.d.ts +4 -1
  280. package/dist/crypto/webcrypto.d.ts.map +1 -1
  281. package/dist/crypto/webcrypto.js.map +1 -1
  282. package/dist/define.d.ts +1 -1
  283. package/dist/descriptor/CollectorEntry.d.ts +12 -0
  284. package/dist/descriptor/CollectorEntry.d.ts.map +1 -0
  285. package/dist/descriptor/CollectorEntry.js +2 -0
  286. package/dist/descriptor/CollectorEntry.js.map +1 -0
  287. package/dist/descriptor/EntityEntry.d.ts +13 -0
  288. package/dist/descriptor/EntityEntry.d.ts.map +1 -0
  289. package/dist/descriptor/EntityEntry.js +2 -0
  290. package/dist/descriptor/EntityEntry.js.map +1 -0
  291. package/dist/descriptor/ExtensionEntry.d.ts +20 -0
  292. package/dist/descriptor/ExtensionEntry.d.ts.map +1 -0
  293. package/dist/descriptor/ExtensionEntry.js +2 -0
  294. package/dist/descriptor/ExtensionEntry.js.map +1 -0
  295. package/dist/descriptor/FrondDescriptor.d.ts +61 -0
  296. package/dist/descriptor/FrondDescriptor.d.ts.map +1 -0
  297. package/dist/descriptor/{frond.js → FrondDescriptor.js} +1 -1
  298. package/dist/descriptor/FrondDescriptor.js.map +1 -0
  299. package/dist/descriptor/FrondSource.d.ts +8 -0
  300. package/dist/descriptor/FrondSource.d.ts.map +1 -0
  301. package/dist/descriptor/FrondSource.js +2 -0
  302. package/dist/descriptor/FrondSource.js.map +1 -0
  303. package/dist/descriptor/Fronds.d.ts +2 -1
  304. package/dist/descriptor/Fronds.d.ts.map +1 -1
  305. package/dist/descriptor/Fronds.js.map +1 -1
  306. package/dist/descriptor/HandlerEntry.d.ts +27 -0
  307. package/dist/descriptor/HandlerEntry.d.ts.map +1 -0
  308. package/dist/descriptor/HandlerEntry.js +2 -0
  309. package/dist/descriptor/HandlerEntry.js.map +1 -0
  310. package/dist/descriptor/MiddlewareEntry.d.ts +17 -0
  311. package/dist/descriptor/MiddlewareEntry.d.ts.map +1 -0
  312. package/dist/descriptor/MiddlewareEntry.js +2 -0
  313. package/dist/descriptor/MiddlewareEntry.js.map +1 -0
  314. package/dist/descriptor/PresenterEntry.d.ts +23 -0
  315. package/dist/descriptor/PresenterEntry.d.ts.map +1 -0
  316. package/dist/descriptor/PresenterEntry.js +2 -0
  317. package/dist/descriptor/PresenterEntry.js.map +1 -0
  318. package/dist/descriptor/PresenterFieldMeta.d.ts +14 -0
  319. package/dist/descriptor/PresenterFieldMeta.d.ts.map +1 -0
  320. package/dist/descriptor/PresenterFieldMeta.js +2 -0
  321. package/dist/descriptor/PresenterFieldMeta.js.map +1 -0
  322. package/dist/descriptor/ProviderEntry.d.ts +19 -0
  323. package/dist/descriptor/ProviderEntry.d.ts.map +1 -0
  324. package/dist/descriptor/ProviderEntry.js +2 -0
  325. package/dist/descriptor/ProviderEntry.js.map +1 -0
  326. package/dist/descriptor/SeedEntry.d.ts +11 -0
  327. package/dist/descriptor/SeedEntry.d.ts.map +1 -0
  328. package/dist/descriptor/SeedEntry.js +2 -0
  329. package/dist/descriptor/SeedEntry.js.map +1 -0
  330. package/dist/descriptor/SeedFactory.d.ts +3 -0
  331. package/dist/descriptor/SeedFactory.d.ts.map +1 -0
  332. package/dist/descriptor/SeedFactory.js +2 -0
  333. package/dist/descriptor/SeedFactory.js.map +1 -0
  334. package/dist/descriptor/bases.d.ts +17 -0
  335. package/dist/descriptor/bases.d.ts.map +1 -0
  336. package/dist/descriptor/bases.js +26 -0
  337. package/dist/descriptor/bases.js.map +1 -0
  338. package/dist/descriptor/index.d.ts +22 -6
  339. package/dist/descriptor/index.d.ts.map +1 -1
  340. package/dist/descriptor/index.js +19 -5
  341. package/dist/descriptor/index.js.map +1 -1
  342. package/dist/descriptor/surface.d.ts +3 -2
  343. package/dist/descriptor/surface.d.ts.map +1 -1
  344. package/dist/descriptor/surface.js +1 -1
  345. package/dist/descriptor/surface.js.map +1 -1
  346. package/dist/diagnostic.d.ts +33 -0
  347. package/dist/diagnostic.d.ts.map +1 -0
  348. package/dist/diagnostic.js +12 -0
  349. package/dist/diagnostic.js.map +1 -0
  350. package/dist/dispatch/ArgumentResolver.d.ts +2 -5
  351. package/dist/dispatch/ArgumentResolver.d.ts.map +1 -1
  352. package/dist/dispatch/ArgumentResolver.js.map +1 -1
  353. package/dist/dispatch/CollectorLookup.d.ts +3 -0
  354. package/dist/dispatch/CollectorLookup.d.ts.map +1 -0
  355. package/dist/dispatch/CollectorLookup.js +2 -0
  356. package/dist/dispatch/CollectorLookup.js.map +1 -0
  357. package/dist/dispatch/CollectorResolver.d.ts +5 -0
  358. package/dist/dispatch/CollectorResolver.d.ts.map +1 -0
  359. package/dist/dispatch/CollectorResolver.js +2 -0
  360. package/dist/dispatch/CollectorResolver.js.map +1 -0
  361. package/dist/dispatch/Dependent.d.ts +19 -0
  362. package/dist/dispatch/Dependent.d.ts.map +1 -0
  363. package/dist/dispatch/Dependent.js +2 -0
  364. package/dist/dispatch/Dependent.js.map +1 -0
  365. package/dist/dispatch/DispatchEvent.d.ts +3 -4
  366. package/dist/dispatch/DispatchEvent.d.ts.map +1 -1
  367. package/dist/dispatch/DispatchEvent.js.map +1 -1
  368. package/dist/dispatch/DispatchLifecycle.d.ts +2 -1
  369. package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -1
  370. package/dist/dispatch/DispatchLifecycle.js.map +1 -1
  371. package/dist/dispatch/DispatchObserver.d.ts +3 -0
  372. package/dist/dispatch/DispatchObserver.d.ts.map +1 -0
  373. package/dist/dispatch/DispatchObserver.js +2 -0
  374. package/dist/dispatch/DispatchObserver.js.map +1 -0
  375. package/dist/dispatch/DispatchPort.d.ts +1 -1
  376. package/dist/dispatch/DispatchStage.d.ts +2 -0
  377. package/dist/dispatch/DispatchStage.d.ts.map +1 -0
  378. package/dist/dispatch/DispatchStage.js +2 -0
  379. package/dist/dispatch/DispatchStage.js.map +1 -0
  380. package/dist/dispatch/Dispatcher.d.ts +15 -2
  381. package/dist/dispatch/Dispatcher.d.ts.map +1 -1
  382. package/dist/dispatch/Dispatcher.js +36 -8
  383. package/dist/dispatch/Dispatcher.js.map +1 -1
  384. package/dist/dispatch/Facade.d.ts +25 -0
  385. package/dist/dispatch/Facade.d.ts.map +1 -0
  386. package/dist/dispatch/Facade.js +2 -0
  387. package/dist/dispatch/Facade.js.map +1 -0
  388. package/dist/dispatch/GuardReport.d.ts +9 -0
  389. package/dist/dispatch/GuardReport.d.ts.map +1 -0
  390. package/dist/dispatch/GuardReport.js +2 -0
  391. package/dist/dispatch/GuardReport.js.map +1 -0
  392. package/dist/dispatch/HandlerFacade.d.ts +9 -28
  393. package/dist/dispatch/HandlerFacade.d.ts.map +1 -1
  394. package/dist/dispatch/HandlerFacade.js +19 -19
  395. package/dist/dispatch/HandlerFacade.js.map +1 -1
  396. package/dist/dispatch/InFlight.d.ts.map +1 -1
  397. package/dist/dispatch/InFlight.js +2 -1
  398. package/dist/dispatch/InFlight.js.map +1 -1
  399. package/dist/dispatch/Journal.d.ts +25 -0
  400. package/dist/dispatch/Journal.d.ts.map +1 -0
  401. package/dist/dispatch/Journal.js +3 -0
  402. package/dist/dispatch/Journal.js.map +1 -0
  403. package/dist/dispatch/LocalRoutePolicy.d.ts +1 -1
  404. package/dist/dispatch/LocalRoutePolicy.d.ts.map +1 -1
  405. package/dist/dispatch/LocalRoutePolicy.js +2 -1
  406. package/dist/dispatch/LocalRoutePolicy.js.map +1 -1
  407. package/dist/dispatch/OperationRoute.d.ts +2 -2
  408. package/dist/dispatch/OperationRoute.d.ts.map +1 -1
  409. package/dist/dispatch/OperationRoute.js.map +1 -1
  410. package/dist/dispatch/PresenterArgs.d.ts +2 -0
  411. package/dist/dispatch/PresenterArgs.d.ts.map +1 -0
  412. package/dist/dispatch/PresenterArgs.js +2 -0
  413. package/dist/dispatch/PresenterArgs.js.map +1 -0
  414. package/dist/dispatch/PresenterExecutor.d.ts +1 -1
  415. package/dist/dispatch/PresenterExecutor.d.ts.map +1 -1
  416. package/dist/dispatch/PresenterExecutor.js +2 -1
  417. package/dist/dispatch/PresenterExecutor.js.map +1 -1
  418. package/dist/dispatch/RelationCheck.d.ts +22 -0
  419. package/dist/dispatch/RelationCheck.d.ts.map +1 -0
  420. package/dist/dispatch/RelationCheck.js +2 -0
  421. package/dist/dispatch/RelationCheck.js.map +1 -0
  422. package/dist/dispatch/Release.d.ts +36 -0
  423. package/dist/dispatch/Release.d.ts.map +1 -0
  424. package/dist/dispatch/Release.js +124 -0
  425. package/dist/dispatch/Release.js.map +1 -0
  426. package/dist/dispatch/Route.d.ts +3 -2
  427. package/dist/dispatch/Route.d.ts.map +1 -1
  428. package/dist/dispatch/RouteExecution.d.ts +3 -0
  429. package/dist/dispatch/RouteExecution.d.ts.map +1 -0
  430. package/dist/dispatch/RouteExecution.js +2 -0
  431. package/dist/dispatch/RouteExecution.js.map +1 -0
  432. package/dist/dispatch/RoutePolicy.d.ts +1 -1
  433. package/dist/dispatch/StorageGuard.d.ts +24 -13
  434. package/dist/dispatch/StorageGuard.d.ts.map +1 -1
  435. package/dist/dispatch/StorageGuard.js +69 -12
  436. package/dist/dispatch/StorageGuard.js.map +1 -1
  437. package/dist/dispatch/presenterArguments.d.ts +3 -3
  438. package/dist/dispatch/presenterArguments.d.ts.map +1 -1
  439. package/dist/dispatch/routeNotFound.d.ts +2 -2
  440. package/dist/dispatch/routeNotFound.d.ts.map +1 -1
  441. package/dist/dispatch/routeNotFound.js +2 -1
  442. package/dist/dispatch/routeNotFound.js.map +1 -1
  443. package/dist/dispatch/validateInput.d.ts +1 -1
  444. package/dist/dispatch/validateInput.d.ts.map +1 -1
  445. package/dist/dispatch/validateInput.js +2 -1
  446. package/dist/dispatch/validateInput.js.map +1 -1
  447. package/dist/entry/facade.js +1 -1
  448. package/dist/entry/transport.d.ts +1 -1
  449. package/dist/entry/transport.d.ts.map +1 -1
  450. package/dist/entry/transport.js +1 -1
  451. package/dist/index.d.ts +97 -33
  452. package/dist/index.d.ts.map +1 -1
  453. package/dist/index.js +20 -13
  454. package/dist/index.js.map +1 -1
  455. package/dist/node.d.ts +2 -2
  456. package/dist/node.d.ts.map +1 -1
  457. package/dist/node.js +2 -2
  458. package/dist/node.js.map +1 -1
  459. package/dist/prefab/AggregateConstructor.d.ts +8 -0
  460. package/dist/prefab/AggregateConstructor.d.ts.map +1 -0
  461. package/dist/prefab/AggregateConstructor.js +2 -0
  462. package/dist/prefab/AggregateConstructor.js.map +1 -0
  463. package/dist/prefab/AggregateOf.d.ts +7 -0
  464. package/dist/prefab/AggregateOf.d.ts.map +1 -0
  465. package/dist/prefab/AggregateOf.js +2 -0
  466. package/dist/prefab/AggregateOf.js.map +1 -0
  467. package/dist/prefab/AggregateShape.d.ts +9 -0
  468. package/dist/prefab/AggregateShape.d.ts.map +1 -0
  469. package/dist/prefab/AggregateShape.js +2 -0
  470. package/dist/prefab/AggregateShape.js.map +1 -0
  471. package/dist/prefab/{crud.d.ts → CrudConstructor.d.ts} +5 -21
  472. package/dist/prefab/CrudConstructor.d.ts.map +1 -0
  473. package/dist/prefab/{crud.js → CrudConstructor.js} +1 -1
  474. package/dist/prefab/CrudConstructor.js.map +1 -0
  475. package/dist/prefab/CrudOpName.d.ts +3 -0
  476. package/dist/prefab/CrudOpName.d.ts.map +1 -0
  477. package/dist/prefab/CrudOpName.js +2 -0
  478. package/dist/prefab/CrudOpName.js.map +1 -0
  479. package/dist/prefab/CrudOps.d.ts +20 -0
  480. package/dist/prefab/CrudOps.d.ts.map +1 -0
  481. package/dist/prefab/CrudOps.js +2 -0
  482. package/dist/prefab/CrudOps.js.map +1 -0
  483. package/dist/prefab/CrudViews.d.ts +5 -0
  484. package/dist/prefab/CrudViews.d.ts.map +1 -0
  485. package/dist/prefab/CrudViews.js +2 -0
  486. package/dist/prefab/CrudViews.js.map +1 -0
  487. package/dist/prefab/MirrorConstructor.d.ts +9 -0
  488. package/dist/prefab/MirrorConstructor.d.ts.map +1 -0
  489. package/dist/prefab/{mirror.js → MirrorConstructor.js} +1 -1
  490. package/dist/prefab/MirrorConstructor.js.map +1 -0
  491. package/dist/prefab/MirrorOf.d.ts +19 -0
  492. package/dist/prefab/MirrorOf.d.ts.map +1 -0
  493. package/dist/prefab/MirrorOf.js +2 -0
  494. package/dist/prefab/MirrorOf.js.map +1 -0
  495. package/dist/prefab/Refreshed.d.ts +10 -0
  496. package/dist/prefab/Refreshed.d.ts.map +1 -0
  497. package/dist/prefab/Refreshed.js +2 -0
  498. package/dist/prefab/Refreshed.js.map +1 -0
  499. package/dist/prefab/RepositoryConstructor.d.ts +15 -0
  500. package/dist/prefab/RepositoryConstructor.d.ts.map +1 -0
  501. package/dist/prefab/{repository.js → RepositoryConstructor.js} +1 -1
  502. package/dist/prefab/RepositoryConstructor.js.map +1 -0
  503. package/dist/prefab/RepositoryOf.d.ts +7 -0
  504. package/dist/prefab/RepositoryOf.d.ts.map +1 -0
  505. package/dist/prefab/RepositoryOf.js +2 -0
  506. package/dist/prefab/RepositoryOf.js.map +1 -0
  507. package/dist/scan.d.ts +3 -22
  508. package/dist/scan.d.ts.map +1 -1
  509. package/dist/storage/{criterion.d.ts → Comparison.d.ts} +2 -3
  510. package/dist/storage/Comparison.d.ts.map +1 -0
  511. package/dist/storage/{criterion.js → Comparison.js} +1 -2
  512. package/dist/storage/Comparison.js.map +1 -0
  513. package/dist/storage/ComparisonName.d.ts +3 -0
  514. package/dist/storage/ComparisonName.d.ts.map +1 -0
  515. package/dist/storage/ComparisonName.js +2 -0
  516. package/dist/storage/ComparisonName.js.map +1 -0
  517. package/dist/storage/ListOptions.d.ts +23 -0
  518. package/dist/storage/ListOptions.d.ts.map +1 -0
  519. package/dist/storage/ListOptions.js +2 -0
  520. package/dist/storage/ListOptions.js.map +1 -0
  521. package/dist/storage/ListResult.d.ts +10 -0
  522. package/dist/storage/ListResult.d.ts.map +1 -0
  523. package/dist/storage/ListResult.js +2 -0
  524. package/dist/storage/ListResult.js.map +1 -0
  525. package/dist/storage/SelectOption.d.ts +6 -0
  526. package/dist/storage/SelectOption.d.ts.map +1 -0
  527. package/dist/storage/SelectOption.js +2 -0
  528. package/dist/storage/SelectOption.js.map +1 -0
  529. package/dist/storage/{port.d.ts → Storage.d.ts} +4 -47
  530. package/dist/storage/Storage.d.ts.map +1 -0
  531. package/dist/storage/{port.js → Storage.js} +1 -1
  532. package/dist/storage/Storage.js.map +1 -0
  533. package/dist/storage/StorageFactory.d.ts +8 -0
  534. package/dist/storage/StorageFactory.d.ts.map +1 -0
  535. package/dist/storage/StorageFactory.js +2 -0
  536. package/dist/storage/StorageFactory.js.map +1 -0
  537. package/dist/storage/{store.d.ts → Store.d.ts} +3 -5
  538. package/dist/storage/Store.d.ts.map +1 -0
  539. package/dist/storage/{store.js → Store.js} +3 -4
  540. package/dist/storage/Store.js.map +1 -0
  541. package/dist/storage/Together.d.ts +8 -0
  542. package/dist/storage/Together.d.ts.map +1 -0
  543. package/dist/storage/Together.js +2 -0
  544. package/dist/storage/Together.js.map +1 -0
  545. package/dist/storage/Values.d.ts +3 -0
  546. package/dist/storage/Values.d.ts.map +1 -0
  547. package/dist/storage/Values.js +2 -0
  548. package/dist/storage/Values.js.map +1 -0
  549. package/dist/verify.d.ts +6 -15
  550. package/dist/verify.d.ts.map +1 -1
  551. package/dist/verify.js +5 -5
  552. package/dist/verify.js.map +1 -1
  553. package/dist/wire/Addresses.d.ts +16 -0
  554. package/dist/wire/Addresses.d.ts.map +1 -0
  555. package/dist/wire/Addresses.js +2 -0
  556. package/dist/wire/Addresses.js.map +1 -0
  557. package/dist/wire/Answer.d.ts +3 -0
  558. package/dist/wire/Answer.d.ts.map +1 -0
  559. package/dist/wire/Answer.js +2 -0
  560. package/dist/wire/Answer.js.map +1 -0
  561. package/dist/wire/AnyHandler.d.ts +3 -0
  562. package/dist/wire/AnyHandler.d.ts.map +1 -0
  563. package/dist/wire/AnyHandler.js +2 -0
  564. package/dist/wire/AnyHandler.js.map +1 -0
  565. package/dist/wire/AppMiddleware.d.ts +8 -0
  566. package/dist/wire/AppMiddleware.d.ts.map +1 -0
  567. package/dist/wire/{middleware.js → AppMiddleware.js} +1 -2
  568. package/dist/wire/AppMiddleware.js.map +1 -0
  569. package/dist/wire/AppNext.d.ts +2 -0
  570. package/dist/wire/AppNext.d.ts.map +1 -0
  571. package/dist/wire/AppNext.js +2 -0
  572. package/dist/wire/AppNext.js.map +1 -0
  573. package/dist/wire/Call.d.ts +10 -0
  574. package/dist/wire/Call.d.ts.map +1 -0
  575. package/dist/wire/Call.js +12 -0
  576. package/dist/wire/Call.js.map +1 -0
  577. package/dist/wire/CallPage.d.ts +9 -0
  578. package/dist/wire/CallPage.d.ts.map +1 -0
  579. package/dist/wire/CallPage.js +2 -0
  580. package/dist/wire/CallPage.js.map +1 -0
  581. package/dist/wire/{CallLog.d.ts → CallRecord.d.ts} +3 -10
  582. package/dist/wire/CallRecord.d.ts.map +1 -0
  583. package/dist/wire/CallRecord.js +2 -0
  584. package/dist/wire/CallRecord.js.map +1 -0
  585. package/dist/wire/{emit.d.ts → Emit.d.ts} +10 -18
  586. package/dist/wire/Emit.d.ts.map +1 -0
  587. package/dist/wire/{emit.js → Emit.js} +17 -6
  588. package/dist/wire/Emit.js.map +1 -0
  589. package/dist/wire/ErrorCode.d.ts +23 -0
  590. package/dist/wire/ErrorCode.d.ts.map +1 -0
  591. package/dist/wire/ErrorCode.js +30 -0
  592. package/dist/wire/ErrorCode.js.map +1 -0
  593. package/dist/wire/Facade.d.ts +10 -0
  594. package/dist/wire/Facade.d.ts.map +1 -0
  595. package/dist/wire/Facade.js +9 -0
  596. package/dist/wire/Facade.js.map +1 -0
  597. package/dist/wire/FacadeName.d.ts +14 -0
  598. package/dist/wire/FacadeName.d.ts.map +1 -0
  599. package/dist/wire/FacadeName.js +2 -0
  600. package/dist/wire/FacadeName.js.map +1 -0
  601. package/dist/wire/Fact.d.ts +9 -0
  602. package/dist/wire/Fact.d.ts.map +1 -0
  603. package/dist/wire/Fact.js +2 -0
  604. package/dist/wire/Fact.js.map +1 -0
  605. package/dist/wire/FougereError.d.ts +35 -0
  606. package/dist/wire/FougereError.d.ts.map +1 -0
  607. package/dist/wire/{errors.js → FougereError.js} +9 -32
  608. package/dist/wire/FougereError.js.map +1 -0
  609. package/dist/wire/FougereErrorOptions.d.ts +10 -0
  610. package/dist/wire/FougereErrorOptions.d.ts.map +1 -0
  611. package/dist/wire/FougereErrorOptions.js +2 -0
  612. package/dist/wire/FougereErrorOptions.js.map +1 -0
  613. package/dist/wire/FougereHandlers.d.ts +10 -0
  614. package/dist/wire/FougereHandlers.d.ts.map +1 -0
  615. package/dist/wire/FougereHandlers.js +2 -0
  616. package/dist/wire/FougereHandlers.js.map +1 -0
  617. package/dist/wire/FougereOperations.d.ts +4 -0
  618. package/dist/wire/FougereOperations.d.ts.map +1 -0
  619. package/dist/wire/FougereOperations.js +2 -0
  620. package/dist/wire/FougereOperations.js.map +1 -0
  621. package/dist/wire/FrondCall.d.ts +10 -0
  622. package/dist/wire/FrondCall.d.ts.map +1 -0
  623. package/dist/wire/FrondCall.js +2 -0
  624. package/dist/wire/FrondCall.js.map +1 -0
  625. package/dist/wire/HandlerOf.d.ts +10 -0
  626. package/dist/wire/HandlerOf.d.ts.map +1 -0
  627. package/dist/wire/HandlerOf.js +2 -0
  628. package/dist/wire/HandlerOf.js.map +1 -0
  629. package/dist/wire/Invocation.d.ts +4 -11
  630. package/dist/wire/Invocation.d.ts.map +1 -1
  631. package/dist/wire/Invocation.js +4 -1
  632. package/dist/wire/Invocation.js.map +1 -1
  633. package/dist/wire/InvocationContext.d.ts +12 -0
  634. package/dist/wire/InvocationContext.d.ts.map +1 -0
  635. package/dist/wire/InvocationContext.js +2 -0
  636. package/dist/wire/InvocationContext.js.map +1 -0
  637. package/dist/wire/{middleware.d.ts → OperationContext.d.ts} +2 -9
  638. package/dist/wire/OperationContext.d.ts.map +1 -0
  639. package/dist/wire/OperationContext.js +2 -0
  640. package/dist/wire/OperationContext.js.map +1 -0
  641. package/dist/wire/{operation.d.ts → OperationContract.d.ts} +15 -12
  642. package/dist/wire/OperationContract.d.ts.map +1 -0
  643. package/dist/wire/{operation.js → OperationContract.js} +1 -1
  644. package/dist/wire/OperationContract.js.map +1 -0
  645. package/dist/wire/OperationKind.d.ts +2 -0
  646. package/dist/wire/OperationKind.d.ts.map +1 -0
  647. package/dist/wire/OperationKind.js +2 -0
  648. package/dist/wire/OperationKind.js.map +1 -0
  649. package/dist/wire/OperationKindInference.d.ts +8 -0
  650. package/dist/wire/OperationKindInference.d.ts.map +1 -0
  651. package/dist/wire/OperationKindInference.js +2 -0
  652. package/dist/wire/OperationKindInference.js.map +1 -0
  653. package/dist/wire/OperationsMap.d.ts +7 -0
  654. package/dist/wire/OperationsMap.d.ts.map +1 -0
  655. package/dist/wire/OperationsMap.js +7 -0
  656. package/dist/wire/OperationsMap.js.map +1 -0
  657. package/dist/wire/Param.d.ts +8 -0
  658. package/dist/wire/Param.d.ts.map +1 -0
  659. package/dist/wire/Param.js +2 -0
  660. package/dist/wire/Param.js.map +1 -0
  661. package/dist/wire/PartialInvocation.d.ts +3 -0
  662. package/dist/wire/PartialInvocation.d.ts.map +1 -0
  663. package/dist/wire/PartialInvocation.js +2 -0
  664. package/dist/wire/PartialInvocation.js.map +1 -0
  665. package/dist/wire/Pipe.d.ts +10 -0
  666. package/dist/wire/Pipe.d.ts.map +1 -0
  667. package/dist/wire/Pipe.js +2 -0
  668. package/dist/wire/Pipe.js.map +1 -0
  669. package/dist/wire/Refused.d.ts +10 -0
  670. package/dist/wire/Refused.d.ts.map +1 -0
  671. package/dist/wire/Refused.js +2 -0
  672. package/dist/wire/Refused.js.map +1 -0
  673. package/dist/wire/RouteAddress.d.ts +1 -7
  674. package/dist/wire/RouteAddress.d.ts.map +1 -1
  675. package/dist/wire/RouteAddress.js.map +1 -1
  676. package/dist/wire/RouteAddressInput.d.ts +6 -0
  677. package/dist/wire/RouteAddressInput.d.ts.map +1 -0
  678. package/dist/wire/RouteAddressInput.js +2 -0
  679. package/dist/wire/RouteAddressInput.js.map +1 -0
  680. package/dist/wire/RouteKind.d.ts +3 -0
  681. package/dist/wire/RouteKind.d.ts.map +1 -0
  682. package/dist/wire/RouteKind.js +2 -0
  683. package/dist/wire/RouteKind.js.map +1 -0
  684. package/dist/wire/Rows.d.ts +8 -0
  685. package/dist/wire/Rows.d.ts.map +1 -0
  686. package/dist/wire/Rows.js +2 -0
  687. package/dist/wire/Rows.js.map +1 -0
  688. package/dist/wire/RpcAnswer.d.ts +6 -0
  689. package/dist/wire/RpcAnswer.d.ts.map +1 -0
  690. package/dist/wire/RpcAnswer.js +3 -0
  691. package/dist/wire/RpcAnswer.js.map +1 -0
  692. package/dist/wire/Signature.d.ts +13 -0
  693. package/dist/wire/Signature.d.ts.map +1 -0
  694. package/dist/wire/Signature.js +2 -0
  695. package/dist/wire/Signature.js.map +1 -0
  696. package/dist/wire/SignedCall.d.ts +14 -0
  697. package/dist/wire/SignedCall.d.ts.map +1 -0
  698. package/dist/wire/SignedCall.js +3 -0
  699. package/dist/wire/SignedCall.js.map +1 -0
  700. package/dist/wire/Transport.d.ts +5 -0
  701. package/dist/wire/Transport.d.ts.map +1 -0
  702. package/dist/wire/Transport.js +2 -0
  703. package/dist/wire/Transport.js.map +1 -0
  704. package/dist/wire/{signature.d.ts → TypeRef.d.ts} +1 -17
  705. package/dist/wire/TypeRef.d.ts.map +1 -0
  706. package/dist/wire/TypeRef.js +2 -0
  707. package/dist/wire/TypeRef.js.map +1 -0
  708. package/dist/wire/binding.d.ts +1 -1
  709. package/dist/wire/binding.d.ts.map +1 -1
  710. package/dist/wire/card/CardOp.d.ts +22 -0
  711. package/dist/wire/card/CardOp.d.ts.map +1 -0
  712. package/dist/wire/card/CardOp.js +2 -0
  713. package/dist/wire/card/CardOp.js.map +1 -0
  714. package/dist/wire/card/IdentityCard.d.ts +22 -0
  715. package/dist/wire/card/IdentityCard.d.ts.map +1 -0
  716. package/dist/wire/card/IdentityCard.js +25 -0
  717. package/dist/wire/card/IdentityCard.js.map +1 -0
  718. package/dist/wire/drift.d.ts +6 -6
  719. package/dist/wire/drift.d.ts.map +1 -1
  720. package/dist/wire/drift.js +18 -18
  721. package/dist/wire/drift.js.map +1 -1
  722. package/dist/wire/http-error.d.ts +1 -2
  723. package/dist/wire/http-error.d.ts.map +1 -1
  724. package/dist/wire/http-error.js +4 -3
  725. package/dist/wire/http-error.js.map +1 -1
  726. package/dist/wire/loggerMiddleware.d.ts +2 -2
  727. package/dist/wire/loggerMiddleware.d.ts.map +1 -1
  728. package/dist/wire/refusals.d.ts +33 -0
  729. package/dist/wire/refusals.d.ts.map +1 -0
  730. package/dist/wire/refusals.js +44 -0
  731. package/dist/wire/refusals.js.map +1 -0
  732. package/dist/wire/topology/DeclaredEdge.d.ts +6 -0
  733. package/dist/wire/topology/DeclaredEdge.d.ts.map +1 -0
  734. package/dist/wire/topology/DeclaredEdge.js +2 -0
  735. package/dist/wire/topology/DeclaredEdge.js.map +1 -0
  736. package/dist/wire/topology/DeclaredFrond.d.ts +11 -0
  737. package/dist/wire/topology/DeclaredFrond.d.ts.map +1 -0
  738. package/dist/wire/topology/DeclaredFrond.js +2 -0
  739. package/dist/wire/topology/DeclaredFrond.js.map +1 -0
  740. package/dist/wire/topology/DeclaredTopology.d.ts +12 -0
  741. package/dist/wire/topology/DeclaredTopology.d.ts.map +1 -0
  742. package/dist/wire/topology/DeclaredTopology.js +2 -0
  743. package/dist/wire/topology/DeclaredTopology.js.map +1 -0
  744. package/dist/wire/topology/Edge.d.ts +8 -0
  745. package/dist/wire/topology/Edge.d.ts.map +1 -0
  746. package/dist/wire/topology/Edge.js +2 -0
  747. package/dist/wire/topology/Edge.js.map +1 -0
  748. package/dist/wire/topology/FrondPlacement.d.ts +8 -0
  749. package/dist/wire/topology/FrondPlacement.d.ts.map +1 -0
  750. package/dist/wire/topology/FrondPlacement.js +2 -0
  751. package/dist/wire/topology/FrondPlacement.js.map +1 -0
  752. package/dist/wire/topology/TopologyReport.d.ts +14 -0
  753. package/dist/wire/topology/TopologyReport.d.ts.map +1 -0
  754. package/dist/wire/topology/TopologyReport.js +2 -0
  755. package/dist/wire/topology/TopologyReport.js.map +1 -0
  756. package/package.json +4 -4
  757. package/src/AdapterConfig.ts +11 -0
  758. package/src/AnswerFor.ts +7 -0
  759. package/src/Binding.ts +4 -0
  760. package/src/{identity.ts → CallIdentity.ts} +9 -25
  761. package/src/Constraint.ts +2 -0
  762. package/src/{conventions.ts → Conventions.ts} +20 -9
  763. package/src/ConventionsInput.ts +8 -0
  764. package/src/Ctor.ts +2 -0
  765. package/src/Declared.ts +8 -0
  766. package/src/DeclaredHandler.ts +18 -0
  767. package/src/DeclaredSubject.ts +6 -0
  768. package/src/{graph.ts → DomainCluster.ts} +2 -12
  769. package/src/EffectiveCollector.ts +7 -0
  770. package/src/EffectiveOperation.ts +62 -0
  771. package/src/{effective-operation.ts → EffectiveOperationModel.ts} +28 -125
  772. package/src/EffectiveOperationOptions.ts +7 -0
  773. package/src/EffectiveOperationSemantics.ts +7 -0
  774. package/src/EffectiveOperationsMap.ts +3 -0
  775. package/src/EffectiveParameter.ts +13 -0
  776. package/src/EntityNode.ts +6 -0
  777. package/src/{config-loader.ts → FougereConfig.ts} +15 -20
  778. package/src/FougereNames.ts +2 -0
  779. package/src/FougerePorts.ts +7 -0
  780. package/src/{frond-config.ts → FrondConfig.ts} +8 -46
  781. package/src/{declare.ts → FrondDeclaration.ts} +14 -35
  782. package/src/FrondIdentity.ts +7 -0
  783. package/src/NameOf.ts +12 -0
  784. package/src/OperationOverride.ts +38 -0
  785. package/src/PortChoice.ts +13 -0
  786. package/src/{source.ts → Source.ts} +7 -23
  787. package/src/SourceConfig.ts +10 -0
  788. package/src/SourceView.ts +7 -0
  789. package/src/VerifiedCall.ts +7 -0
  790. package/src/boot/App.ts +71 -0
  791. package/src/boot/AppLifecycle.ts +2 -20
  792. package/src/boot/AuthConfig.ts +14 -0
  793. package/src/boot/AuthContext.ts +12 -0
  794. package/src/boot/AuthRuntime.ts +19 -0
  795. package/src/boot/CreateAppOptions.ts +81 -0
  796. package/src/boot/Emissions.ts +86 -56
  797. package/src/boot/Extension.ts +20 -0
  798. package/src/boot/Hosting.ts +38 -0
  799. package/src/boot/Peer.ts +15 -0
  800. package/src/boot/apply.ts +2 -2
  801. package/src/boot/bootstrap.ts +240 -87
  802. package/src/boot/card.ts +15 -11
  803. package/src/boot/declared.ts +40 -5
  804. package/src/boot/frame.ts +2 -2
  805. package/src/boot/hosted.ts +1 -1
  806. package/src/boot/install.ts +65 -33
  807. package/src/boot/ownership.ts +92 -52
  808. package/src/boot/peerOver.ts +17 -0
  809. package/src/boot/ports.ts +52 -41
  810. package/src/boot/relations.ts +172 -0
  811. package/src/boot/remote.ts +24 -17
  812. package/src/boot/runner.ts +2 -2
  813. package/src/boot/seed.ts +12 -10
  814. package/src/boot/statement-drift.ts +6 -5
  815. package/src/boot/together.ts +82 -38
  816. package/src/builtin/Carry.ts +49 -0
  817. package/src/builtin/LogLevel.ts +1 -0
  818. package/src/builtin/LogRecord.ts +12 -0
  819. package/src/builtin/LogSink.ts +4 -0
  820. package/src/builtin/{logger.ts → Logger.ts} +5 -98
  821. package/src/builtin/LoggerOptions.ts +14 -0
  822. package/src/builtin/Rendered.ts +21 -0
  823. package/src/contract.ts +36 -16
  824. package/src/crypto/CryptoPort.ts +12 -0
  825. package/src/crypto/PublicJwk.ts +7 -0
  826. package/src/crypto/Signer.ts +4 -0
  827. package/src/crypto/Verifier.ts +5 -0
  828. package/src/crypto/node.ts +4 -1
  829. package/src/crypto/webcrypto.ts +4 -1
  830. package/src/define.ts +1 -1
  831. package/src/descriptor/CollectorEntry.ts +11 -0
  832. package/src/descriptor/EntityEntry.ts +13 -0
  833. package/src/descriptor/ExtensionEntry.ts +15 -0
  834. package/src/descriptor/FrondDescriptor.ts +58 -0
  835. package/src/descriptor/FrondSource.ts +7 -0
  836. package/src/descriptor/Fronds.ts +2 -1
  837. package/src/descriptor/HandlerEntry.ts +27 -0
  838. package/src/descriptor/MiddlewareEntry.ts +16 -0
  839. package/src/descriptor/PresenterEntry.ts +23 -0
  840. package/src/descriptor/PresenterFieldMeta.ts +14 -0
  841. package/src/descriptor/ProviderEntry.ts +18 -0
  842. package/src/descriptor/SeedEntry.ts +11 -0
  843. package/src/descriptor/SeedFactory.ts +2 -0
  844. package/src/descriptor/bases.ts +30 -0
  845. package/src/descriptor/index.ts +24 -6
  846. package/src/descriptor/surface.ts +3 -2
  847. package/src/diagnostic.ts +41 -0
  848. package/src/dispatch/ArgumentResolver.ts +2 -7
  849. package/src/dispatch/CollectorLookup.ts +3 -0
  850. package/src/dispatch/CollectorResolver.ts +5 -0
  851. package/src/dispatch/Dependent.ts +19 -0
  852. package/src/dispatch/DispatchEvent.ts +3 -6
  853. package/src/dispatch/DispatchLifecycle.ts +2 -1
  854. package/src/dispatch/DispatchObserver.ts +3 -0
  855. package/src/dispatch/DispatchPort.ts +1 -1
  856. package/src/dispatch/DispatchStage.ts +1 -0
  857. package/src/dispatch/Dispatcher.ts +44 -8
  858. package/src/dispatch/Facade.ts +25 -0
  859. package/src/dispatch/GuardReport.ts +9 -0
  860. package/src/dispatch/HandlerFacade.ts +28 -46
  861. package/src/dispatch/InFlight.ts +2 -1
  862. package/src/dispatch/Journal.ts +26 -0
  863. package/src/dispatch/LocalRoutePolicy.ts +3 -2
  864. package/src/dispatch/OperationRoute.ts +2 -3
  865. package/src/dispatch/PresenterArgs.ts +1 -0
  866. package/src/dispatch/PresenterExecutor.ts +3 -3
  867. package/src/dispatch/RelationCheck.ts +21 -0
  868. package/src/dispatch/Release.ts +156 -0
  869. package/src/dispatch/Route.ts +3 -2
  870. package/src/dispatch/RouteExecution.ts +3 -0
  871. package/src/dispatch/RoutePolicy.ts +1 -1
  872. package/src/dispatch/StorageGuard.ts +75 -19
  873. package/src/dispatch/presenterArguments.ts +3 -3
  874. package/src/dispatch/routeNotFound.ts +3 -2
  875. package/src/dispatch/validateInput.ts +3 -2
  876. package/src/entry/facade.ts +2 -2
  877. package/src/entry/transport.ts +2 -2
  878. package/src/index.ts +101 -52
  879. package/src/node.ts +2 -2
  880. package/src/prefab/AggregateConstructor.ts +9 -0
  881. package/src/prefab/AggregateOf.ts +6 -0
  882. package/src/prefab/AggregateShape.ts +7 -0
  883. package/src/prefab/{crud.ts → CrudConstructor.ts} +10 -18
  884. package/src/prefab/CrudOpName.ts +2 -0
  885. package/src/prefab/CrudOps.ts +24 -0
  886. package/src/prefab/CrudViews.ts +5 -0
  887. package/src/prefab/MirrorConstructor.ts +35 -0
  888. package/src/prefab/MirrorOf.ts +19 -0
  889. package/src/prefab/Refreshed.ts +9 -0
  890. package/src/prefab/{repository.ts → RepositoryConstructor.ts} +8 -24
  891. package/src/prefab/RepositoryOf.ts +7 -0
  892. package/src/scan.ts +3 -23
  893. package/src/storage/{criterion.ts → Comparison.ts} +1 -3
  894. package/src/storage/ComparisonName.ts +3 -0
  895. package/src/storage/ListOptions.ts +29 -0
  896. package/src/storage/ListResult.ts +9 -0
  897. package/src/storage/SelectOption.ts +6 -0
  898. package/src/storage/{port.ts → Storage.ts} +5 -56
  899. package/src/storage/StorageFactory.ts +8 -0
  900. package/src/storage/{store.ts → Store.ts} +5 -7
  901. package/src/storage/Together.ts +6 -0
  902. package/src/storage/Values.ts +2 -0
  903. package/src/verify.ts +12 -21
  904. package/src/wire/Addresses.ts +17 -0
  905. package/src/wire/Answer.ts +3 -0
  906. package/src/wire/AnyHandler.ts +2 -0
  907. package/src/wire/AppMiddleware.ts +24 -0
  908. package/src/wire/AppNext.ts +1 -0
  909. package/src/wire/Call.ts +15 -0
  910. package/src/wire/CallPage.ts +9 -0
  911. package/src/wire/{CallLog.ts → CallRecord.ts} +2 -10
  912. package/src/wire/{emit.ts → Emit.ts} +24 -24
  913. package/src/wire/ErrorCode.ts +33 -0
  914. package/src/wire/Facade.ts +28 -0
  915. package/src/wire/FacadeName.ts +13 -0
  916. package/src/wire/Fact.ts +8 -0
  917. package/src/wire/{errors.ts → FougereError.ts} +14 -53
  918. package/src/wire/FougereErrorOptions.ts +10 -0
  919. package/src/wire/FougereHandlers.ts +8 -0
  920. package/src/wire/FougereOperations.ts +2 -0
  921. package/src/wire/FrondCall.ts +9 -0
  922. package/src/wire/HandlerOf.ts +10 -0
  923. package/src/wire/Invocation.ts +5 -12
  924. package/src/wire/InvocationContext.ts +11 -0
  925. package/src/wire/OperationContext.ts +18 -0
  926. package/src/wire/{operation.ts → OperationContract.ts} +14 -23
  927. package/src/wire/OperationKind.ts +1 -0
  928. package/src/wire/OperationKindInference.ts +8 -0
  929. package/src/wire/OperationsMap.ts +14 -0
  930. package/src/wire/Param.ts +8 -0
  931. package/src/wire/PartialInvocation.ts +3 -0
  932. package/src/wire/Pipe.ts +9 -0
  933. package/src/wire/Refused.ts +13 -0
  934. package/src/wire/RouteAddress.ts +1 -8
  935. package/src/wire/RouteAddressInput.ts +5 -0
  936. package/src/wire/RouteKind.ts +2 -0
  937. package/src/wire/Rows.ts +7 -0
  938. package/src/wire/RpcAnswer.ts +7 -0
  939. package/src/wire/Signature.ts +13 -0
  940. package/src/wire/SignedCall.ts +14 -0
  941. package/src/wire/Transport.ts +5 -0
  942. package/src/wire/{signature.ts → TypeRef.ts} +0 -18
  943. package/src/wire/binding.ts +1 -1
  944. package/src/wire/card/CardOp.ts +22 -0
  945. package/src/wire/card/IdentityCard.ts +41 -0
  946. package/src/wire/drift.ts +22 -22
  947. package/src/wire/http-error.ts +4 -3
  948. package/src/wire/loggerMiddleware.ts +2 -2
  949. package/src/wire/refusals.ts +55 -0
  950. package/src/wire/topology/DeclaredEdge.ts +5 -0
  951. package/src/wire/topology/DeclaredFrond.ts +10 -0
  952. package/src/wire/topology/DeclaredTopology.ts +12 -0
  953. package/src/wire/topology/Edge.ts +7 -0
  954. package/src/wire/topology/FrondPlacement.ts +7 -0
  955. package/src/wire/topology/TopologyReport.ts +14 -0
  956. package/dist/boot/auth.d.ts +0 -43
  957. package/dist/boot/auth.d.ts.map +0 -1
  958. package/dist/boot/auth.js +0 -2
  959. package/dist/boot/auth.js.map +0 -1
  960. package/dist/boot/types.d.ts +0 -147
  961. package/dist/boot/types.d.ts.map +0 -1
  962. package/dist/boot/types.js +0 -2
  963. package/dist/boot/types.js.map +0 -1
  964. package/dist/builtin/logger.d.ts +0 -96
  965. package/dist/builtin/logger.d.ts.map +0 -1
  966. package/dist/builtin/logger.js.map +0 -1
  967. package/dist/config-loader.d.ts.map +0 -1
  968. package/dist/config-loader.js.map +0 -1
  969. package/dist/conventions.d.ts.map +0 -1
  970. package/dist/conventions.js.map +0 -1
  971. package/dist/crypto/port.d.ts +0 -26
  972. package/dist/crypto/port.d.ts.map +0 -1
  973. package/dist/crypto/port.js +0 -3
  974. package/dist/crypto/port.js.map +0 -1
  975. package/dist/declare.d.ts.map +0 -1
  976. package/dist/declare.js.map +0 -1
  977. package/dist/descriptor/frond.d.ts +0 -187
  978. package/dist/descriptor/frond.d.ts.map +0 -1
  979. package/dist/descriptor/frond.js.map +0 -1
  980. package/dist/effective-operation.d.ts +0 -113
  981. package/dist/effective-operation.d.ts.map +0 -1
  982. package/dist/effective-operation.js.map +0 -1
  983. package/dist/frond-config.d.ts +0 -71
  984. package/dist/frond-config.d.ts.map +0 -1
  985. package/dist/frond-config.js.map +0 -1
  986. package/dist/graph.d.ts.map +0 -1
  987. package/dist/graph.js.map +0 -1
  988. package/dist/identity.d.ts.map +0 -1
  989. package/dist/identity.js.map +0 -1
  990. package/dist/prefab/crud.d.ts.map +0 -1
  991. package/dist/prefab/crud.js.map +0 -1
  992. package/dist/prefab/mirror.d.ts +0 -33
  993. package/dist/prefab/mirror.d.ts.map +0 -1
  994. package/dist/prefab/mirror.js.map +0 -1
  995. package/dist/prefab/repository.d.ts +0 -40
  996. package/dist/prefab/repository.d.ts.map +0 -1
  997. package/dist/prefab/repository.js.map +0 -1
  998. package/dist/source.d.ts.map +0 -1
  999. package/dist/source.js.map +0 -1
  1000. package/dist/storage/criterion.d.ts.map +0 -1
  1001. package/dist/storage/criterion.js.map +0 -1
  1002. package/dist/storage/port.d.ts.map +0 -1
  1003. package/dist/storage/port.js.map +0 -1
  1004. package/dist/storage/store.d.ts.map +0 -1
  1005. package/dist/storage/store.js.map +0 -1
  1006. package/dist/wire/CallLog.d.ts.map +0 -1
  1007. package/dist/wire/CallLog.js +0 -2
  1008. package/dist/wire/CallLog.js.map +0 -1
  1009. package/dist/wire/call.d.ts +0 -130
  1010. package/dist/wire/call.d.ts.map +0 -1
  1011. package/dist/wire/call.js +0 -47
  1012. package/dist/wire/call.js.map +0 -1
  1013. package/dist/wire/emit.d.ts.map +0 -1
  1014. package/dist/wire/emit.js.map +0 -1
  1015. package/dist/wire/errors.d.ts +0 -58
  1016. package/dist/wire/errors.d.ts.map +0 -1
  1017. package/dist/wire/errors.js.map +0 -1
  1018. package/dist/wire/middleware.d.ts.map +0 -1
  1019. package/dist/wire/middleware.js.map +0 -1
  1020. package/dist/wire/operation.d.ts.map +0 -1
  1021. package/dist/wire/operation.js.map +0 -1
  1022. package/dist/wire/signature.d.ts.map +0 -1
  1023. package/dist/wire/signature.js +0 -2
  1024. package/dist/wire/signature.js.map +0 -1
  1025. package/src/boot/auth.ts +0 -45
  1026. package/src/boot/types.ts +0 -148
  1027. package/src/crypto/port.ts +0 -29
  1028. package/src/descriptor/frond.ts +0 -195
  1029. package/src/prefab/mirror.ts +0 -60
  1030. package/src/wire/call.ts +0 -178
  1031. package/src/wire/middleware.ts +0 -43
@@ -1,51 +1,33 @@
1
1
  import type { Fields } from '@fougere/schema';
2
2
  import type { Container } from '@fougere/container';
3
- import {
4
- runMiddlewares,
5
- type AppMiddleware,
6
- type OperationContext,
7
- } from '../wire/middleware.js';
8
- import type { CollectorResolver } from './ArgumentResolver.js';
3
+ import { runMiddlewares } from '../wire/AppMiddleware.js';
4
+ import { type OperationContext } from '../wire/OperationContext.js';
5
+ import type { CollectorResolver } from './CollectorResolver.js';
9
6
  import { collectorKeyOf } from '../prefab/collector.js';
10
- import { inheritsCrud, subjectOf } from '../prefab/crud.js';
7
+ import { inheritsCrud, subjectOf } from '../prefab/CrudConstructor.js';
11
8
  import { presenterKeyOf } from '../prefab/presenter.js';
12
- import { repositoryKeyOf } from '../prefab/repository.js';
13
- import type { OperationContract, OperationsMap } from '../wire/operation.js';
14
- import type { EffectiveOperation, EffectiveOperationsMap } from '../effective-operation.js';
9
+ import { repositoryKeyOf } from '../prefab/RepositoryConstructor.js';
10
+ import type { OperationContract } from '../wire/OperationContract.js';
11
+ import type { OperationsMap } from '../wire/OperationsMap.js';
12
+ import type { EffectiveOperation } from '../EffectiveOperation.js';
13
+ import type { EffectiveOperationsMap } from '../EffectiveOperationsMap.js';
15
14
  import type { BindingPlan } from '../wire/binding.js';
16
- import { Invocation, type InvocationContext } from '../wire/Invocation.js';
17
- import type { HandlerEntry, PresenterEntry } from '../descriptor/frond.js';
15
+ import { Invocation } from '../wire/Invocation.js';
16
+ import { type InvocationContext } from '../wire/InvocationContext.js';
17
+ import type { HandlerEntry } from '../descriptor/HandlerEntry.js';
18
+ import type { PresenterEntry } from '../descriptor/PresenterEntry.js';
18
19
  import { ArgumentResolver } from './ArgumentResolver.js';
19
20
  import { OutputView } from './OutputView.js';
20
21
  import { PresenterExecutor } from './PresenterExecutor.js';
21
22
  import { presenterArguments, presenterPlans } from './presenterArguments.js';
22
23
  import { validateInput } from './validateInput.js';
24
+ import type { Facade } from './Facade.js';
23
25
 
24
- /** What boot resolved around one handler, beyond the handler and the scope it resolves in. */
25
- export interface Door {
26
- /** The container key this door answers under. */
27
- key: string;
28
- /** The frond this door belongs to — travels on every OperationContext. */
29
- frond: string;
30
- /** Handlers in the owning frond, used to realize a resolved implementation override. */
31
- handlers: readonly HandlerEntry[];
32
- /** The canonical operation table resolved before boot performs any side effect. */
33
- operations: EffectiveOperationsMap;
34
- /** Entity names this frond has a collector for. */
35
- collectors: Set<string>;
36
- /** The presenter over this handler's entity, when the frond declares one. */
37
- presenter: PresenterEntry | undefined;
38
- /** Presenters live in the frond's own scope, whatever sub-scope this door resolves in. */
39
- presenterScope: Container;
40
- /** The middlewares that apply to this address, read at call time and never at boot. */
41
- middlewares: () => AppMiddleware[];
42
- }
43
-
44
- /** Adapts one handler door to executable operations. */
26
+ /** Adapts one handler facade to executable operations. */
45
27
  export class HandlerFacade {
46
28
  /** Rich operation facts shared with check, explain and adapters. */
47
29
  readonly effectiveOperations: EffectiveOperationsMap;
48
- /** Contracts served by this door. */
30
+ /** Contracts served by this facade. */
49
31
  readonly contracts: OperationsMap;
50
32
 
51
33
  private readonly cachedViews = new Map<string, OutputView>();
@@ -61,24 +43,24 @@ export class HandlerFacade {
61
43
  constructor(
62
44
  private readonly handler: HandlerEntry,
63
45
  private readonly scope: Container,
64
- private readonly door: Door,
46
+ private readonly facade: Facade,
65
47
  ) {
66
48
  this.refuseCrudWithoutRepository(handler);
67
49
 
68
- this.presenterPlans = door.presenter
69
- ? presenterPlans(door.presenter, door.collectors)
50
+ this.presenterPlans = facade.presenter
51
+ ? presenterPlans(facade.presenter, facade.collectors)
70
52
  : new Map();
71
53
 
72
54
  scope.register(this.handlerKey, handler.ctor, { deps: this.depsOf(handler) });
73
55
 
74
- this.effectiveOperations = door.operations;
56
+ this.effectiveOperations = facade.operations;
75
57
  this.contracts = new Map(
76
- [...door.operations].map(([name, operation]) => [name, operation as OperationContract] as const),
58
+ [...facade.operations].map(([name, operation]) => [name, operation as OperationContract] as const),
77
59
  );
78
60
  handler.operations = this.contracts;
79
61
 
80
62
  // Register model-selected implementations in the same execution scope.
81
- for (const [name, operation] of door.operations) {
63
+ for (const [name, operation] of facade.operations) {
82
64
  if (this.isBaseImplementation(operation)) continue;
83
65
  const implementation = this.implementationHandler(name);
84
66
  this.refuseCrudWithoutRepository(implementation);
@@ -104,14 +86,14 @@ export class HandlerFacade {
104
86
  const invocation = Invocation.from(input);
105
87
  const context: OperationContext = {
106
88
  entity,
107
- frond: this.door.frond,
89
+ frond: this.facade.frond,
108
90
  operation: op,
109
91
  args: [],
110
92
  state: invocation.state,
111
93
  invocation,
112
94
  };
113
95
 
114
- return runMiddlewares(this.door.middlewares(), context, async () => {
96
+ return runMiddlewares(this.facade.middlewares(), context, async () => {
115
97
  const validated = validateInput(contract.input, invocation, entity, op);
116
98
  context.invocation = validated;
117
99
 
@@ -122,7 +104,7 @@ export class HandlerFacade {
122
104
  const view = this.viewOf(op);
123
105
  const output = view.project(await instance[method](...args));
124
106
 
125
- const { presenter } = this.door;
107
+ const { presenter } = this.facade;
126
108
  return view.closed || !presenter ? output : this.present(op, presenter, output, validated);
127
109
  });
128
110
  }
@@ -136,7 +118,7 @@ export class HandlerFacade {
136
118
  ): Promise<unknown> {
137
119
  const entity = this.handler.address;
138
120
  const executor = new PresenterExecutor(
139
- this.door.presenterScope.resolve(presenterKeyOf(entity)),
121
+ this.facade.presenterScope.resolve(presenterKeyOf(entity)),
140
122
  presenter.fields,
141
123
  entity,
142
124
  op,
@@ -147,7 +129,7 @@ export class HandlerFacade {
147
129
  }
148
130
 
149
131
  private get handlerKey(): string {
150
- return `_handler:${this.door.key}`;
132
+ return `_handler:${this.facade.key}`;
151
133
  }
152
134
 
153
135
  private depsOf(handler: HandlerEntry): string[] {
@@ -206,7 +188,7 @@ export class HandlerFacade {
206
188
  /** The exact handler entry the pure model selected; no name-only retry or fallback. */
207
189
  private implementationHandler(operationName: string): HandlerEntry {
208
190
  const operation = this.effectiveOperations.get(operationName)!;
209
- const matches = this.door.handlers.filter((handler) =>
191
+ const matches = this.facade.handlers.filter((handler) =>
210
192
  handler.ctor.name === operation.implementation.className
211
193
  && handler.address === operation.implementation.address
212
194
  && handler.filePath === operation.implementation.filePath);
@@ -1,4 +1,5 @@
1
- import { FougereError, ErrorCode } from '../wire/errors.js';
1
+ import { ErrorCode } from '../wire/ErrorCode.js';
2
+ import { FougereError } from '../wire/FougereError.js';
2
3
 
3
4
  /** Controls dispatch admission and signals when every accepted call has settled. */
4
5
  export class InFlight {
@@ -0,0 +1,26 @@
1
+ import type { Call } from '../wire/Call.js';
2
+
3
+ /**
4
+ * What writes a release down while it happens, when a package provides one.
5
+ *
6
+ * Core does the same hops in the same order either way — children before their parent, so an
7
+ * interruption leaves fewer children and never an orphan. What a journal adds is that somebody
8
+ * can finish what a stopped process started: the row says a release began, and a sweep redoes
9
+ * it. Redoing is safe because every hop already is — a row taken out twice is taken out once.
10
+ *
11
+ * What writes a release down writes none of its own: the boot leaves out the entities of the
12
+ * fronds an extension BROUGHT, so keeping the row that says a release began does not begin one.
13
+ * Read from what was brought rather than written down, the way `CARRIES_LINE` is.
14
+ *
15
+ * Documented: [entities](https://fougere.dev/docs/schema/entities).
16
+ */
17
+ export interface Journal {
18
+ /** Hold this call until `runAt`, so a sweep dispatches it then and nobody waits for it now. */
19
+ keep(call: Call, runAt: number): Promise<void>;
20
+ /** Take this release on, or say another process is already driving it. */
21
+ open(entity: string, key: string): Promise<'taken' | 'busy'>;
22
+ close(entity: string, key: string): Promise<void>;
23
+ }
24
+
25
+ /** The container key a package registers its journal under. */
26
+ export const JOURNAL = 'Journal';
@@ -1,5 +1,6 @@
1
- import type { Call } from '../wire/call.js';
2
- import { ErrorCode, FougereError } from '../wire/errors.js';
1
+ import type { Call } from '../wire/Call.js';
2
+ import { ErrorCode } from '../wire/ErrorCode.js';
3
+ import { FougereError } from '../wire/FougereError.js';
3
4
  import type { Route } from './Route.js';
4
5
  import type { RoutePolicy } from './RoutePolicy.js';
5
6
  import { routeNotFound, servedOperations } from './routeNotFound.js';
@@ -1,8 +1,7 @@
1
- import type { Call } from '../wire/call.js';
1
+ import type { Call } from '../wire/Call.js';
2
2
  import type { RouteAddress } from '../wire/RouteAddress.js';
3
3
  import type { Route } from './Route.js';
4
-
5
- export type RouteExecution = (call: Call) => unknown | Promise<unknown>;
4
+ import type { RouteExecution } from './RouteExecution.js';
6
5
 
7
6
  /** One executable route, distinguished by its routing kind. */
8
7
  export class OperationRoute implements Route {
@@ -0,0 +1 @@
1
+ export type PresenterArgs = Record<string, unknown[]>;
@@ -1,7 +1,7 @@
1
- import { ErrorCode, FougereError } from '../wire/errors.js';
1
+ import { ErrorCode } from '../wire/ErrorCode.js';
2
+ import { FougereError } from '../wire/FougereError.js';
2
3
  import { preserveArrayProperties } from './ArrayResult.js';
3
-
4
- export type PresenterArgs = Record<string, unknown[]>;
4
+ import type { PresenterArgs } from './PresenterArgs.js';
5
5
 
6
6
  /** Adds a presenter's computed fields after output projection. */
7
7
  export class PresenterExecutor {
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A `ref()` whose target the source does not hold, so the guard reads it before the write.
3
+ *
4
+ * The pair decides, never the engine: SQL keeps a foreign key over rows it can see, and a
5
+ * target in another source gets a column and nothing else. The boot builds one of these for
6
+ * each reference that falls outside its own source, and none for the rest — a co-located
7
+ * relation costs nothing here, because the key already refuses the same row.
8
+ *
9
+ * Documented: [entities](https://fougere.dev/docs/schema/entities).
10
+ */
11
+ export interface RelationCheck {
12
+ /** The field carrying the key — `authorId`. */
13
+ field: string;
14
+ /** What it points at, as the boot files it — `user`. */
15
+ target: string;
16
+ /**
17
+ * Which of these keys no row answers. Takes a set so a page costs one read, and so the
18
+ * single-row case is the same call with one member.
19
+ */
20
+ missing(keys: readonly unknown[]): Promise<readonly unknown[]>;
21
+ }
@@ -0,0 +1,156 @@
1
+ /** What a delete does to the rows that name it, when no foreign key does it instead. */
2
+ import { FieldSet, type SchemaView } from '@fougere/schema';
3
+ import type { Dependent } from './Dependent.js';
4
+ import type { Journal } from './Journal.js';
5
+ import { ErrorCode } from '../wire/ErrorCode.js';
6
+ import { FougereError } from '../wire/FougereError.js';
7
+
8
+ /** The gestures a release reaches a dependent's rows through. */
9
+ export interface Rows {
10
+ findAllByKeys(field: string, keys: readonly string[]): Promise<Map<string, Record<string, unknown>[]>>;
11
+ update(id: string, patch: Record<string, unknown>): Promise<unknown>;
12
+ delete(id: string): Promise<boolean>;
13
+ }
14
+
15
+ /** What the guard hands a release: who depends on an entity, and how to reach their rows. */
16
+ export interface Releasing {
17
+ dependentsOf(entity: string): readonly Dependent[];
18
+ rowsOf(entity: string): Rows | undefined;
19
+ schemaOf(entity: string): SchemaView | undefined;
20
+ /** Written down while it happens, when a package provides one — absent is the plain walk. */
21
+ journal(entity: string): Journal | undefined;
22
+ /** Every declared remote — each one walks its own tree, and is alone able to. */
23
+ peers(): readonly { release(entity: string, key: unknown, visited: readonly string[]): Promise<void> }[];
24
+ }
25
+
26
+ /**
27
+ * The rows that name a key, taken out or emptied, deepest FIRST.
28
+ *
29
+ * Order is the whole guarantee: a child never outlives its parent, so an interruption leaves
30
+ * fewer children and never an orphan. That is what lets a release cross a process without a
31
+ * two-phase commit — and why nothing here needs to be undone, only finished.
32
+ *
33
+ * A row already visited is not visited again, which is what ends a cycle: `Category.parentId`
34
+ * pointing at its own entity walks down and stops when a key repeats.
35
+ *
36
+ * Documented: [entities](https://fougere.dev/docs/schema/entities).
37
+ */
38
+ export async function release(
39
+ entity: string,
40
+ key: unknown,
41
+ world: Releasing,
42
+ visited: readonly string[] = [],
43
+ row?: () => Promise<unknown>,
44
+ ): Promise<void> {
45
+ const mark = `${entity}#${String(key)}`;
46
+ // Already on the trail means SOMEONE upstream is asking every process about this row, so
47
+ // asking again would be the bounce two processes declaring each other would never end. The
48
+ // local walk still runs: being asked is exactly the point, and only this process can do it.
49
+ const asked = visited.includes(mark);
50
+ const trail = asked ? visited : [...visited, mark];
51
+
52
+ // Written down before the first hop, so a process that stops mid-way leaves a row saying so.
53
+ // Absent, the hops are the same and nothing finishes them.
54
+ const journal = world.journal(entity);
55
+ if (journal && await journal.open(entity, String(key)) === 'busy') return;
56
+
57
+ // Every declared remote, and every one of them: a frond behind `remotes:` may have no sources
58
+ // here, so this process cannot see that its rows name ours — only that process can.
59
+ if (!asked) for (const peer of world.peers()) await peer.release(entity, key, trail);
60
+
61
+ try {
62
+ await walk(entity, [key], world, new Set([mark]), trail);
63
+ } catch (refusal) {
64
+ // A refusal is an outcome, not an interruption: the framework decided, and redoing it
65
+ // would only decide again — a run kept open for one would be swept forever. Anything
66
+ // else stopped us mid-tree, and THAT is what a run is for.
67
+ if (refusal instanceof FougereError) await journal?.close(entity, String(key));
68
+ throw refusal;
69
+ }
70
+
71
+ // The row itself, LAST — handed in by whoever owns the gesture, so a run covers the whole
72
+ // thing rather than stopping one statement short of it. Whatever the row answers, the
73
+ // release did its part: what depends on this one is dealt with, and nothing is left to redo.
74
+ try {
75
+ await row?.();
76
+ } finally {
77
+ await journal?.close(entity, String(key));
78
+ }
79
+ }
80
+
81
+ async function walk(
82
+ entity: string,
83
+ keys: readonly unknown[],
84
+ world: Releasing,
85
+ seen: Set<string>,
86
+ trail: readonly string[],
87
+ ): Promise<void> {
88
+ const dependents = world.dependentsOf(entity);
89
+ // Every refusal of this level BEFORE any of its rows move: two fields of one entity are two
90
+ // dependents, and declaration order would otherwise let a cascade beside a `restrict` win.
91
+ // Depth needs no such pass — a level acts only once the level below it came back.
92
+ for (const dependent of dependents.filter((one) => one.onDelete === 'restrict')) {
93
+ const rows = world.rowsOf(dependent.entity);
94
+ if (!rows) continue;
95
+ const found = [...(await rows.findAllByKeys(dependent.field, keys.map(String))).values()].flat();
96
+ if (found.length === 0) continue;
97
+
98
+ throw new FougereError({
99
+ code: ErrorCode.CONFLICT,
100
+ message: `${dependent.entity}.${dependent.field} holds ${found.length} row(s) naming this one, `
101
+ + `and states onDelete 'restrict' — take them out first, or declare what should happen.`,
102
+ entity,
103
+ operation: 'delete',
104
+ });
105
+ }
106
+
107
+ for (const dependent of dependents.filter((one) => one.onDelete !== 'restrict')) {
108
+ const rows = world.rowsOf(dependent.entity);
109
+ // Nothing here holds those rows. The process that does answers the same two readings core
110
+ // serves everywhere, so the ask crosses and the work happens on ITS side of the wire —
111
+ // which is what keeps the declaration identical whatever the topology.
112
+ // Nothing here holds those rows: every declared remote is asked about THIS level, and the
113
+ // one that holds them walks its own tree from there. The trail grows by one mark per level,
114
+ // so a deeper ask is never mistaken for the bounce of a shallower one.
115
+ if (!rows) {
116
+ for (const key of keys) {
117
+ // A level already on the trail is one somebody is asking every process about, so
118
+ // asking again is the bounce — the same reason `release` reads it before crossing.
119
+ if (trail.includes(`${entity}#${String(key)}`)) continue;
120
+ for (const peer of world.peers()) await peer.release(entity, key, trail);
121
+ }
122
+ continue;
123
+ }
124
+
125
+ const naming = await rows.findAllByKeys(dependent.field, keys.map(String));
126
+ const found = [...naming.values()].flat();
127
+ if (found.length === 0) continue;
128
+
129
+ if (dependent.onDelete === 'set null') {
130
+ const primary = keyOf(world, dependent.entity);
131
+ for (const row of found) await rows.update(String(row[primary]), { [dependent.field]: null });
132
+ continue;
133
+ }
134
+
135
+ const primary = keyOf(world, dependent.entity);
136
+ const below = found.map((row) => row[primary]).filter((id) => !taken(seen, dependent.entity, id));
137
+ // Deepest first: what names THESE rows goes before they do, all the way down.
138
+ await walk(dependent.entity, below, world, seen, trail);
139
+ for (const id of below) await rows.delete(String(id));
140
+ }
141
+ }
142
+
143
+ /** True once, and remembers — a key already on the path is what ends a cycle. */
144
+ function taken(seen: Set<string>, entity: string, key: unknown): boolean {
145
+ const mark = `${entity}#${String(key)}`;
146
+ if (seen.has(mark)) return true;
147
+ seen.add(mark);
148
+
149
+ return false;
150
+ }
151
+
152
+ function keyOf(world: Releasing, entity: string): string {
153
+ const schema = world.schemaOf(entity);
154
+
155
+ return (schema && FieldSet.of(schema.getFields()).primary) ?? 'id';
156
+ }
@@ -1,5 +1,6 @@
1
- import type { Call } from '../wire/call.js';
2
- import type { RouteAddress, RouteKind } from '../wire/RouteAddress.js';
1
+ import type { Call } from '../wire/Call.js';
2
+ import type { RouteAddress } from '../wire/RouteAddress.js';
3
+ import type { RouteKind } from '../wire/RouteKind.js';
3
4
 
4
5
  /** Executable destination known by the dispatcher. */
5
6
  export interface Route {
@@ -0,0 +1,3 @@
1
+ import type { Call } from '../wire/Call.js';
2
+
3
+ export type RouteExecution = (call: Call) => unknown | Promise<unknown>;
@@ -1,4 +1,4 @@
1
- import type { Call } from '../wire/call.js';
1
+ import type { Call } from '../wire/Call.js';
2
2
  import type { Route } from './Route.js';
3
3
 
4
4
  /** Restricts which registered routes one dispatch capability may enter. */
@@ -1,7 +1,11 @@
1
1
  import { FieldSet, FieldValueValidator, InputRefusal, type Fields } from '@fougere/schema';
2
- import { COMPARISONS, comparisonOf, unknownIn } from '../storage/criterion.js';
3
- import { assertListOptions } from '../storage/port.js';
4
- import { ErrorCode, FougereError } from '../wire/errors.js';
2
+ import { COMPARISONS, comparisonOf, unknownIn } from '../storage/Comparison.js';
3
+ import { assertListOptions } from '../storage/Storage.js';
4
+ import { ErrorCode } from '../wire/ErrorCode.js';
5
+ import { FougereError } from '../wire/FougereError.js';
6
+ import type { GuardReport } from './GuardReport.js';
7
+ import type { RelationCheck } from './RelationCheck.js';
8
+ import { release, type Releasing } from './Release.js';
5
9
 
6
10
  /** The gestures this guard grafts onto. */
7
11
  interface Writer {
@@ -9,17 +13,10 @@ interface Writer {
9
13
  update(...args: [unknown, Record<string, unknown>, ...unknown[]]): Promise<unknown>;
10
14
  upsert?(...args: [Record<string, unknown>, ...unknown[]]): Promise<unknown>;
11
15
  upsertAll?(...args: [readonly Record<string, unknown>[], ...unknown[]]): Promise<unknown>;
16
+ delete?(id: string): Promise<boolean>;
12
17
  list?(...args: unknown[]): unknown;
13
18
  }
14
19
 
15
- /** What a guard says about a filter it let through. The boot owns the voice. */
16
- export interface GuardReport {
17
- /** The fields this door hands back, when it hands back fewer than the entity has. */
18
- view?: Fields;
19
- /** Said once per field — a filter is not a write, and a warning per call is noise. */
20
- outOfView?: (message: string) => void;
21
- }
22
-
23
20
  /** Judges storage writes and list options without narrowing the storage interface. */
24
21
  export class StorageGuard {
25
22
  /** What has already been said, so a filter in a loop says it once. */
@@ -29,6 +26,8 @@ export class StorageGuard {
29
26
  private readonly fields: Fields,
30
27
  private readonly entity: string,
31
28
  private readonly report: GuardReport = {},
29
+ private readonly relations: readonly RelationCheck[] = [],
30
+ private readonly releasing?: Releasing,
32
31
  ) {}
33
32
 
34
33
  guard<T extends object>(storage: T): T {
@@ -38,13 +37,29 @@ export class StorageGuard {
38
37
  const validation = this;
39
38
  const guarded = Object.create(storage) as T & Writer;
40
39
 
40
+ const remove = writer.delete;
41
+ if (typeof remove === 'function' && validation.releasing) {
42
+ // What names this row goes first, and this row last: an interruption then leaves fewer
43
+ // children rather than an orphan. A key holds the rest, at the rows, in one statement.
44
+ guarded.delete = async function (id) {
45
+ let gone = false;
46
+ await release(validation.entity, id, validation.releasing!, [], async () => {
47
+ gone = await remove.call(this, id);
48
+ });
49
+
50
+ return gone;
51
+ };
52
+ }
53
+
41
54
  guarded.create = async function (...args) {
42
55
  args[0] = validation.validated(args[0], 'create');
56
+ await validation.targetsOf([args[0]], 'create');
43
57
  return writer.create.apply(this, args);
44
58
  };
45
59
 
46
60
  guarded.update = async function (...args) {
47
61
  args[1] = validation.validated(args[1], 'update');
62
+ await validation.targetsOf([args[1]], 'update');
48
63
  return writer.update.apply(this, args);
49
64
  };
50
65
 
@@ -52,6 +67,7 @@ export class StorageGuard {
52
67
  if (typeof upsert === 'function') {
53
68
  guarded.upsert = async function (...args) {
54
69
  args[0] = validation.validated(args[0], 'upsert');
70
+ await validation.targetsOf([args[0]], 'upsert');
55
71
  return upsert.apply(this, args);
56
72
  };
57
73
  }
@@ -62,6 +78,9 @@ export class StorageGuard {
62
78
  // the caller asked for as one, and the refusal is readable from the input alone.
63
79
  guarded.upsertAll = async function (...args) {
64
80
  args[0] = args[0].map((row, index) => validation.validated(row, 'upsertAll', index));
81
+ // The keys of the whole page in one read per relation, for the reason above: a page
82
+ // refused on its fourth row has already written three.
83
+ await validation.targetsOf(args[0], 'upsertAll');
65
84
  return upsertAll.apply(this, args);
66
85
  };
67
86
  }
@@ -81,7 +100,7 @@ export class StorageGuard {
81
100
  }
82
101
 
83
102
  /**
84
- * The values this write carries, validated and handed on PARSED — the rule the client door
103
+ * The values this write carries, validated and handed on PARSED — the rule the client facade
85
104
  * already holds (`InputValidator`), applied to a write that never passed through it. What a
86
105
  * handler is allowed to write is not asked here: only the value is.
87
106
  */
@@ -92,11 +111,11 @@ export class StorageGuard {
92
111
  }
93
112
 
94
113
  /**
95
- * What a read may ask for. The write door judges what LANDS in a row; this one judges
114
+ * What a read may ask for. The write facade judges what LANDS in a row; this one judges
96
115
  * what a caller says about one — and it was the single entrance to the port with no
97
116
  * judge at all, while `params.filter` from a browser reaches it verbatim.
98
117
  *
99
- * A criterion may name a SET, which is the one thing the write door would refuse: an
118
+ * A criterion may name a SET, which is the one thing the write facade would refuse: an
100
119
  * array is judged member by member, since that is what `IN` binds.
101
120
  */
102
121
  private criteria(where: Record<string, unknown>): Record<string, unknown> {
@@ -110,7 +129,7 @@ export class StorageGuard {
110
129
  continue;
111
130
  }
112
131
  // A comparison names its own vocabulary, and a typo in it would otherwise be a
113
- // criterion that filters nothing — the silent truncation this door exists to stop.
132
+ // criterion that filters nothing — the silent truncation this facade exists to stop.
114
133
  const comparison = comparisonOf(field, asked);
115
134
  if (comparison) {
116
135
  const unknown = unknownIn(comparison);
@@ -148,11 +167,11 @@ export class StorageGuard {
148
167
  }
149
168
 
150
169
  /**
151
- * A filter on a field this door does not hand back.
170
+ * A filter on a field this facade does not hand back.
152
171
  *
153
172
  * `output(schema)` narrows what is RETURNED and has never narrowed what is asked, so a
154
173
  * caller can already sort a hidden column into existence one comparison at a time — and
155
- * the admin door copies a browser's filter here verbatim. Said rather than refused: it
174
+ * the admin facade copies a browser's filter here verbatim. Said rather than refused: it
156
175
  * is legal today, GraphQL batches a relation on a key a view may not carry, and a
157
176
  * refusal would break that on the way to fixing this.
158
177
  */
@@ -161,7 +180,7 @@ export class StorageGuard {
161
180
  if (!view || view[field] || this.said.has(field)) return;
162
181
  this.said.add(field);
163
182
  this.report.outOfView?.(
164
- `${this.entity}.list() filtered on '${field}', which this door does not hand back — `
183
+ `${this.entity}.list() filtered on '${field}', which this facade does not hand back — `
165
184
  + 'a filter on a hidden field answers questions about it one call at a time.',
166
185
  );
167
186
  }
@@ -182,7 +201,7 @@ export class StorageGuard {
182
201
  for (const [key, item] of Object.entries(value as Record<string, unknown>)) {
183
202
  const field = this.fields[key];
184
203
  // A key the entity does not declare has no column to land in and no judge to pass:
185
- // on the client door it is a typo, and on this one it is a mapping that went stale.
204
+ // on the client facade it is a typo, and on this one it is a mapping that went stale.
186
205
  if (!field) {
187
206
  errors.push(`${where}${key}: ${InputRefusal.unknownField}`);
188
207
  continue;
@@ -208,6 +227,43 @@ export class StorageGuard {
208
227
 
209
228
  return parsed as T;
210
229
  }
230
+
231
+ /**
232
+ * The rows a `ref()` points at, read before the write lands.
233
+ *
234
+ * Only the references the boot could not leave to a foreign key reach here — a target in
235
+ * the same source is already refused by the key, at the rows, which this cannot be: the
236
+ * target may be deleted between the read and the write. It catches what a key catches in
237
+ * practice, which is a key that was never right: a row copied from another environment,
238
+ * an author deleted months ago, an id from a test.
239
+ *
240
+ * A patch that does not carry the field says nothing about it, so it is skipped rather
241
+ * than read as `null`.
242
+ */
243
+ private async targetsOf(rows: readonly Record<string, unknown>[], operation: string): Promise<void> {
244
+ if (this.relations.length === 0) return;
245
+
246
+ const refused = await Promise.all(this.relations.map(async (relation) => {
247
+ const keys = [...new Set(
248
+ rows.map((row) => row[relation.field]).filter((key) => key !== undefined && key !== null),
249
+ )];
250
+ if (keys.length === 0) return [];
251
+ const missing = await relation.missing(keys);
252
+
253
+ return missing.map((key) => `${relation.field} ${JSON.stringify(key)} — no ${relation.target} holds it`);
254
+ }));
255
+
256
+ const errors = refused.flat();
257
+ if (errors.length === 0) return;
258
+
259
+ throw new FougereError({
260
+ code: ErrorCode.VALIDATION_FAILED,
261
+ message: `Refused on the way out — ${errors.join(', ')}`,
262
+ entity: this.entity,
263
+ operation,
264
+ details: errors,
265
+ });
266
+ }
211
267
  }
212
268
 
213
269
  const unwrap = (one: { value: unknown } | { error: string }): unknown =>
@@ -1,8 +1,8 @@
1
1
  import { computeBindingPlan, type BindingPlan } from '../wire/binding.js';
2
- import type { InvocationContext } from '../wire/Invocation.js';
3
- import type { PresenterEntry } from '../descriptor/frond.js';
2
+ import type { InvocationContext } from '../wire/InvocationContext.js';
3
+ import type { PresenterEntry } from '../descriptor/PresenterEntry.js';
4
4
  import type { ArgumentResolver } from './ArgumentResolver.js';
5
- import type { PresenterArgs } from './PresenterExecutor.js';
5
+ import type { PresenterArgs } from './PresenterArgs.js';
6
6
 
7
7
  /**
8
8
  * Where each computed field's extra arguments come from — read off the declaration, so a
@@ -1,5 +1,6 @@
1
- import type { Call } from '../wire/call.js';
2
- import { ErrorCode, FougereError } from '../wire/errors.js';
1
+ import type { Call } from '../wire/Call.js';
2
+ import { ErrorCode } from '../wire/ErrorCode.js';
3
+ import { FougereError } from '../wire/FougereError.js';
3
4
  import type { Route } from './Route.js';
4
5
  import type { RoutePolicy } from './RoutePolicy.js';
5
6
 
@@ -1,6 +1,7 @@
1
1
  import { InputValidator, dotted, type SchemaView } from '@fougere/schema';
2
- import type { InvocationContext } from '../wire/Invocation.js';
3
- import { ErrorCode, FougereError } from '../wire/errors.js';
2
+ import type { InvocationContext } from '../wire/InvocationContext.js';
3
+ import { ErrorCode } from '../wire/ErrorCode.js';
4
+ import { FougereError } from '../wire/FougereError.js';
4
5
 
5
6
  /** Validates and decodes the input declared by one operation contract. */
6
7
  export function validateInput(