@fougere/core 0.9.3-alpha.0 → 0.10.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 (986) 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} +1 -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} +1 -1
  120. package/dist/{source.js.map → Source.js.map} +1 -1
  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/apply.d.ts +1 -1
  165. package/dist/boot/apply.js +1 -1
  166. package/dist/boot/apply.js.map +1 -1
  167. package/dist/boot/bootstrap.d.ts +2 -1
  168. package/dist/boot/bootstrap.d.ts.map +1 -1
  169. package/dist/boot/bootstrap.js +77 -42
  170. package/dist/boot/bootstrap.js.map +1 -1
  171. package/dist/boot/card.d.ts +2 -2
  172. package/dist/boot/card.d.ts.map +1 -1
  173. package/dist/boot/card.js +11 -8
  174. package/dist/boot/card.js.map +1 -1
  175. package/dist/boot/declared.d.ts +2 -2
  176. package/dist/boot/declared.d.ts.map +1 -1
  177. package/dist/boot/declared.js +1 -1
  178. package/dist/boot/declared.js.map +1 -1
  179. package/dist/boot/frame.d.ts +1 -1
  180. package/dist/boot/frame.js +1 -1
  181. package/dist/boot/hosted.d.ts +1 -1
  182. package/dist/boot/hosted.d.ts.map +1 -1
  183. package/dist/boot/install.d.ts +11 -7
  184. package/dist/boot/install.d.ts.map +1 -1
  185. package/dist/boot/install.js +30 -25
  186. package/dist/boot/install.js.map +1 -1
  187. package/dist/boot/ownership.d.ts +7 -5
  188. package/dist/boot/ownership.d.ts.map +1 -1
  189. package/dist/boot/ownership.js +81 -40
  190. package/dist/boot/ownership.js.map +1 -1
  191. package/dist/boot/ports.d.ts +4 -3
  192. package/dist/boot/ports.d.ts.map +1 -1
  193. package/dist/boot/ports.js +48 -37
  194. package/dist/boot/ports.js.map +1 -1
  195. package/dist/boot/remote.d.ts +3 -8
  196. package/dist/boot/remote.d.ts.map +1 -1
  197. package/dist/boot/remote.js +19 -15
  198. package/dist/boot/remote.js.map +1 -1
  199. package/dist/boot/runner.d.ts +2 -2
  200. package/dist/boot/runner.d.ts.map +1 -1
  201. package/dist/boot/seed.d.ts +4 -3
  202. package/dist/boot/seed.d.ts.map +1 -1
  203. package/dist/boot/seed.js +6 -6
  204. package/dist/boot/seed.js.map +1 -1
  205. package/dist/boot/statement-drift.d.ts +4 -3
  206. package/dist/boot/statement-drift.d.ts.map +1 -1
  207. package/dist/boot/statement-drift.js.map +1 -1
  208. package/dist/boot/together.d.ts +8 -4
  209. package/dist/boot/together.d.ts.map +1 -1
  210. package/dist/boot/together.js +60 -27
  211. package/dist/boot/together.js.map +1 -1
  212. package/dist/builtin/Carry.d.ts +29 -0
  213. package/dist/builtin/Carry.d.ts.map +1 -0
  214. package/dist/builtin/Carry.js +46 -0
  215. package/dist/builtin/Carry.js.map +1 -0
  216. package/dist/builtin/LogLevel.d.ts +2 -0
  217. package/dist/builtin/LogLevel.d.ts.map +1 -0
  218. package/dist/builtin/LogLevel.js +2 -0
  219. package/dist/builtin/LogLevel.js.map +1 -0
  220. package/dist/builtin/LogRecord.d.ts +12 -0
  221. package/dist/builtin/LogRecord.d.ts.map +1 -0
  222. package/dist/builtin/LogRecord.js +2 -0
  223. package/dist/builtin/LogRecord.js.map +1 -0
  224. package/dist/builtin/LogSink.d.ts +4 -0
  225. package/dist/builtin/LogSink.d.ts.map +1 -0
  226. package/dist/builtin/LogSink.js +2 -0
  227. package/dist/builtin/LogSink.js.map +1 -0
  228. package/dist/builtin/Logger.d.ts +27 -0
  229. package/dist/builtin/Logger.d.ts.map +1 -0
  230. package/dist/builtin/{logger.js → Logger.js} +1 -47
  231. package/dist/builtin/Logger.js.map +1 -0
  232. package/dist/builtin/LoggerOptions.d.ts +14 -0
  233. package/dist/builtin/LoggerOptions.d.ts.map +1 -0
  234. package/dist/builtin/LoggerOptions.js +2 -0
  235. package/dist/builtin/LoggerOptions.js.map +1 -0
  236. package/dist/builtin/Rendered.d.ts +21 -0
  237. package/dist/builtin/Rendered.d.ts.map +1 -0
  238. package/dist/builtin/Rendered.js +2 -0
  239. package/dist/builtin/Rendered.js.map +1 -0
  240. package/dist/contract.d.ts +34 -13
  241. package/dist/contract.d.ts.map +1 -1
  242. package/dist/contract.js +9 -6
  243. package/dist/contract.js.map +1 -1
  244. package/dist/crypto/CryptoPort.d.ts +12 -0
  245. package/dist/crypto/CryptoPort.d.ts.map +1 -0
  246. package/dist/crypto/CryptoPort.js +2 -0
  247. package/dist/crypto/CryptoPort.js.map +1 -0
  248. package/dist/crypto/PublicJwk.d.ts +8 -0
  249. package/dist/crypto/PublicJwk.d.ts.map +1 -0
  250. package/dist/crypto/PublicJwk.js +2 -0
  251. package/dist/crypto/PublicJwk.js.map +1 -0
  252. package/dist/crypto/Signer.d.ts +5 -0
  253. package/dist/crypto/Signer.d.ts.map +1 -0
  254. package/dist/crypto/Signer.js +2 -0
  255. package/dist/crypto/Signer.js.map +1 -0
  256. package/dist/crypto/Verifier.d.ts +6 -0
  257. package/dist/crypto/Verifier.d.ts.map +1 -0
  258. package/dist/crypto/Verifier.js +2 -0
  259. package/dist/crypto/Verifier.js.map +1 -0
  260. package/dist/crypto/node.d.ts +4 -1
  261. package/dist/crypto/node.d.ts.map +1 -1
  262. package/dist/crypto/node.js.map +1 -1
  263. package/dist/crypto/webcrypto.d.ts +4 -1
  264. package/dist/crypto/webcrypto.d.ts.map +1 -1
  265. package/dist/crypto/webcrypto.js.map +1 -1
  266. package/dist/define.d.ts +1 -1
  267. package/dist/descriptor/CollectorEntry.d.ts +12 -0
  268. package/dist/descriptor/CollectorEntry.d.ts.map +1 -0
  269. package/dist/descriptor/CollectorEntry.js +2 -0
  270. package/dist/descriptor/CollectorEntry.js.map +1 -0
  271. package/dist/descriptor/EntityEntry.d.ts +13 -0
  272. package/dist/descriptor/EntityEntry.d.ts.map +1 -0
  273. package/dist/descriptor/EntityEntry.js +2 -0
  274. package/dist/descriptor/EntityEntry.js.map +1 -0
  275. package/dist/descriptor/ExtensionEntry.d.ts +20 -0
  276. package/dist/descriptor/ExtensionEntry.d.ts.map +1 -0
  277. package/dist/descriptor/ExtensionEntry.js +2 -0
  278. package/dist/descriptor/ExtensionEntry.js.map +1 -0
  279. package/dist/descriptor/FrondDescriptor.d.ts +61 -0
  280. package/dist/descriptor/FrondDescriptor.d.ts.map +1 -0
  281. package/dist/descriptor/{frond.js → FrondDescriptor.js} +1 -1
  282. package/dist/descriptor/FrondDescriptor.js.map +1 -0
  283. package/dist/descriptor/FrondSource.d.ts +8 -0
  284. package/dist/descriptor/FrondSource.d.ts.map +1 -0
  285. package/dist/descriptor/FrondSource.js +2 -0
  286. package/dist/descriptor/FrondSource.js.map +1 -0
  287. package/dist/descriptor/Fronds.d.ts +2 -1
  288. package/dist/descriptor/Fronds.d.ts.map +1 -1
  289. package/dist/descriptor/Fronds.js.map +1 -1
  290. package/dist/descriptor/HandlerEntry.d.ts +27 -0
  291. package/dist/descriptor/HandlerEntry.d.ts.map +1 -0
  292. package/dist/descriptor/HandlerEntry.js +2 -0
  293. package/dist/descriptor/HandlerEntry.js.map +1 -0
  294. package/dist/descriptor/MiddlewareEntry.d.ts +17 -0
  295. package/dist/descriptor/MiddlewareEntry.d.ts.map +1 -0
  296. package/dist/descriptor/MiddlewareEntry.js +2 -0
  297. package/dist/descriptor/MiddlewareEntry.js.map +1 -0
  298. package/dist/descriptor/PresenterEntry.d.ts +23 -0
  299. package/dist/descriptor/PresenterEntry.d.ts.map +1 -0
  300. package/dist/descriptor/PresenterEntry.js +2 -0
  301. package/dist/descriptor/PresenterEntry.js.map +1 -0
  302. package/dist/descriptor/PresenterFieldMeta.d.ts +14 -0
  303. package/dist/descriptor/PresenterFieldMeta.d.ts.map +1 -0
  304. package/dist/descriptor/PresenterFieldMeta.js +2 -0
  305. package/dist/descriptor/PresenterFieldMeta.js.map +1 -0
  306. package/dist/descriptor/ProviderEntry.d.ts +19 -0
  307. package/dist/descriptor/ProviderEntry.d.ts.map +1 -0
  308. package/dist/descriptor/ProviderEntry.js +2 -0
  309. package/dist/descriptor/ProviderEntry.js.map +1 -0
  310. package/dist/descriptor/SeedEntry.d.ts +11 -0
  311. package/dist/descriptor/SeedEntry.d.ts.map +1 -0
  312. package/dist/descriptor/SeedEntry.js +2 -0
  313. package/dist/descriptor/SeedEntry.js.map +1 -0
  314. package/dist/descriptor/SeedFactory.d.ts +3 -0
  315. package/dist/descriptor/SeedFactory.d.ts.map +1 -0
  316. package/dist/descriptor/SeedFactory.js +2 -0
  317. package/dist/descriptor/SeedFactory.js.map +1 -0
  318. package/dist/descriptor/bases.d.ts +17 -0
  319. package/dist/descriptor/bases.d.ts.map +1 -0
  320. package/dist/descriptor/bases.js +26 -0
  321. package/dist/descriptor/bases.js.map +1 -0
  322. package/dist/descriptor/index.d.ts +22 -6
  323. package/dist/descriptor/index.d.ts.map +1 -1
  324. package/dist/descriptor/index.js +19 -5
  325. package/dist/descriptor/index.js.map +1 -1
  326. package/dist/descriptor/surface.d.ts +3 -2
  327. package/dist/descriptor/surface.d.ts.map +1 -1
  328. package/dist/descriptor/surface.js +1 -1
  329. package/dist/descriptor/surface.js.map +1 -1
  330. package/dist/diagnostic.d.ts +33 -0
  331. package/dist/diagnostic.d.ts.map +1 -0
  332. package/dist/diagnostic.js +12 -0
  333. package/dist/diagnostic.js.map +1 -0
  334. package/dist/dispatch/ArgumentResolver.d.ts +2 -5
  335. package/dist/dispatch/ArgumentResolver.d.ts.map +1 -1
  336. package/dist/dispatch/ArgumentResolver.js.map +1 -1
  337. package/dist/dispatch/CollectorLookup.d.ts +3 -0
  338. package/dist/dispatch/CollectorLookup.d.ts.map +1 -0
  339. package/dist/dispatch/CollectorLookup.js +2 -0
  340. package/dist/dispatch/CollectorLookup.js.map +1 -0
  341. package/dist/dispatch/CollectorResolver.d.ts +5 -0
  342. package/dist/dispatch/CollectorResolver.d.ts.map +1 -0
  343. package/dist/dispatch/CollectorResolver.js +2 -0
  344. package/dist/dispatch/CollectorResolver.js.map +1 -0
  345. package/dist/dispatch/DispatchEvent.d.ts +3 -4
  346. package/dist/dispatch/DispatchEvent.d.ts.map +1 -1
  347. package/dist/dispatch/DispatchEvent.js.map +1 -1
  348. package/dist/dispatch/DispatchLifecycle.d.ts +2 -1
  349. package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -1
  350. package/dist/dispatch/DispatchLifecycle.js.map +1 -1
  351. package/dist/dispatch/DispatchObserver.d.ts +3 -0
  352. package/dist/dispatch/DispatchObserver.d.ts.map +1 -0
  353. package/dist/dispatch/DispatchObserver.js +2 -0
  354. package/dist/dispatch/DispatchObserver.js.map +1 -0
  355. package/dist/dispatch/DispatchPort.d.ts +1 -1
  356. package/dist/dispatch/DispatchStage.d.ts +2 -0
  357. package/dist/dispatch/DispatchStage.d.ts.map +1 -0
  358. package/dist/dispatch/DispatchStage.js +2 -0
  359. package/dist/dispatch/DispatchStage.js.map +1 -0
  360. package/dist/dispatch/Dispatcher.d.ts +1 -1
  361. package/dist/dispatch/Facade.d.ts +25 -0
  362. package/dist/dispatch/Facade.d.ts.map +1 -0
  363. package/dist/dispatch/Facade.js +2 -0
  364. package/dist/dispatch/Facade.js.map +1 -0
  365. package/dist/dispatch/GuardReport.d.ts +9 -0
  366. package/dist/dispatch/GuardReport.d.ts.map +1 -0
  367. package/dist/dispatch/GuardReport.js +2 -0
  368. package/dist/dispatch/GuardReport.js.map +1 -0
  369. package/dist/dispatch/HandlerFacade.d.ts +9 -28
  370. package/dist/dispatch/HandlerFacade.d.ts.map +1 -1
  371. package/dist/dispatch/HandlerFacade.js +19 -19
  372. package/dist/dispatch/HandlerFacade.js.map +1 -1
  373. package/dist/dispatch/InFlight.d.ts.map +1 -1
  374. package/dist/dispatch/InFlight.js +2 -1
  375. package/dist/dispatch/InFlight.js.map +1 -1
  376. package/dist/dispatch/LocalRoutePolicy.d.ts +1 -1
  377. package/dist/dispatch/LocalRoutePolicy.d.ts.map +1 -1
  378. package/dist/dispatch/LocalRoutePolicy.js +2 -1
  379. package/dist/dispatch/LocalRoutePolicy.js.map +1 -1
  380. package/dist/dispatch/OperationRoute.d.ts +2 -2
  381. package/dist/dispatch/OperationRoute.d.ts.map +1 -1
  382. package/dist/dispatch/OperationRoute.js.map +1 -1
  383. package/dist/dispatch/PresenterArgs.d.ts +2 -0
  384. package/dist/dispatch/PresenterArgs.d.ts.map +1 -0
  385. package/dist/dispatch/PresenterArgs.js +2 -0
  386. package/dist/dispatch/PresenterArgs.js.map +1 -0
  387. package/dist/dispatch/PresenterExecutor.d.ts +1 -1
  388. package/dist/dispatch/PresenterExecutor.d.ts.map +1 -1
  389. package/dist/dispatch/PresenterExecutor.js +2 -1
  390. package/dist/dispatch/PresenterExecutor.js.map +1 -1
  391. package/dist/dispatch/Route.d.ts +3 -2
  392. package/dist/dispatch/Route.d.ts.map +1 -1
  393. package/dist/dispatch/RouteExecution.d.ts +3 -0
  394. package/dist/dispatch/RouteExecution.d.ts.map +1 -0
  395. package/dist/dispatch/RouteExecution.js +2 -0
  396. package/dist/dispatch/RouteExecution.js.map +1 -0
  397. package/dist/dispatch/RoutePolicy.d.ts +1 -1
  398. package/dist/dispatch/StorageGuard.d.ts +6 -12
  399. package/dist/dispatch/StorageGuard.d.ts.map +1 -1
  400. package/dist/dispatch/StorageGuard.js +12 -11
  401. package/dist/dispatch/StorageGuard.js.map +1 -1
  402. package/dist/dispatch/presenterArguments.d.ts +3 -3
  403. package/dist/dispatch/presenterArguments.d.ts.map +1 -1
  404. package/dist/dispatch/routeNotFound.d.ts +2 -2
  405. package/dist/dispatch/routeNotFound.d.ts.map +1 -1
  406. package/dist/dispatch/routeNotFound.js +2 -1
  407. package/dist/dispatch/routeNotFound.js.map +1 -1
  408. package/dist/dispatch/validateInput.d.ts +1 -1
  409. package/dist/dispatch/validateInput.d.ts.map +1 -1
  410. package/dist/dispatch/validateInput.js +2 -1
  411. package/dist/dispatch/validateInput.js.map +1 -1
  412. package/dist/entry/facade.js +1 -1
  413. package/dist/entry/transport.d.ts +1 -1
  414. package/dist/entry/transport.d.ts.map +1 -1
  415. package/dist/entry/transport.js +1 -1
  416. package/dist/index.d.ts +92 -33
  417. package/dist/index.d.ts.map +1 -1
  418. package/dist/index.js +17 -13
  419. package/dist/index.js.map +1 -1
  420. package/dist/node.d.ts +2 -2
  421. package/dist/node.d.ts.map +1 -1
  422. package/dist/node.js +2 -2
  423. package/dist/node.js.map +1 -1
  424. package/dist/prefab/AggregateConstructor.d.ts +8 -0
  425. package/dist/prefab/AggregateConstructor.d.ts.map +1 -0
  426. package/dist/prefab/AggregateConstructor.js +2 -0
  427. package/dist/prefab/AggregateConstructor.js.map +1 -0
  428. package/dist/prefab/AggregateOf.d.ts +7 -0
  429. package/dist/prefab/AggregateOf.d.ts.map +1 -0
  430. package/dist/prefab/AggregateOf.js +2 -0
  431. package/dist/prefab/AggregateOf.js.map +1 -0
  432. package/dist/prefab/AggregateShape.d.ts +9 -0
  433. package/dist/prefab/AggregateShape.d.ts.map +1 -0
  434. package/dist/prefab/AggregateShape.js +2 -0
  435. package/dist/prefab/AggregateShape.js.map +1 -0
  436. package/dist/prefab/{crud.d.ts → CrudConstructor.d.ts} +5 -21
  437. package/dist/prefab/CrudConstructor.d.ts.map +1 -0
  438. package/dist/prefab/{crud.js → CrudConstructor.js} +1 -1
  439. package/dist/prefab/CrudConstructor.js.map +1 -0
  440. package/dist/prefab/CrudOpName.d.ts +3 -0
  441. package/dist/prefab/CrudOpName.d.ts.map +1 -0
  442. package/dist/prefab/CrudOpName.js +2 -0
  443. package/dist/prefab/CrudOpName.js.map +1 -0
  444. package/dist/prefab/CrudOps.d.ts +20 -0
  445. package/dist/prefab/CrudOps.d.ts.map +1 -0
  446. package/dist/prefab/CrudOps.js +2 -0
  447. package/dist/prefab/CrudOps.js.map +1 -0
  448. package/dist/prefab/CrudViews.d.ts +5 -0
  449. package/dist/prefab/CrudViews.d.ts.map +1 -0
  450. package/dist/prefab/CrudViews.js +2 -0
  451. package/dist/prefab/CrudViews.js.map +1 -0
  452. package/dist/prefab/MirrorConstructor.d.ts +9 -0
  453. package/dist/prefab/MirrorConstructor.d.ts.map +1 -0
  454. package/dist/prefab/{mirror.js → MirrorConstructor.js} +1 -1
  455. package/dist/prefab/MirrorConstructor.js.map +1 -0
  456. package/dist/prefab/MirrorOf.d.ts +19 -0
  457. package/dist/prefab/MirrorOf.d.ts.map +1 -0
  458. package/dist/prefab/MirrorOf.js +2 -0
  459. package/dist/prefab/MirrorOf.js.map +1 -0
  460. package/dist/prefab/Refreshed.d.ts +10 -0
  461. package/dist/prefab/Refreshed.d.ts.map +1 -0
  462. package/dist/prefab/Refreshed.js +2 -0
  463. package/dist/prefab/Refreshed.js.map +1 -0
  464. package/dist/prefab/RepositoryConstructor.d.ts +15 -0
  465. package/dist/prefab/RepositoryConstructor.d.ts.map +1 -0
  466. package/dist/prefab/{repository.js → RepositoryConstructor.js} +1 -1
  467. package/dist/prefab/RepositoryConstructor.js.map +1 -0
  468. package/dist/prefab/RepositoryOf.d.ts +7 -0
  469. package/dist/prefab/RepositoryOf.d.ts.map +1 -0
  470. package/dist/prefab/RepositoryOf.js +2 -0
  471. package/dist/prefab/RepositoryOf.js.map +1 -0
  472. package/dist/scan.d.ts +3 -22
  473. package/dist/scan.d.ts.map +1 -1
  474. package/dist/storage/{criterion.d.ts → Comparison.d.ts} +2 -3
  475. package/dist/storage/Comparison.d.ts.map +1 -0
  476. package/dist/storage/{criterion.js → Comparison.js} +1 -2
  477. package/dist/storage/Comparison.js.map +1 -0
  478. package/dist/storage/ComparisonName.d.ts +3 -0
  479. package/dist/storage/ComparisonName.d.ts.map +1 -0
  480. package/dist/storage/ComparisonName.js +2 -0
  481. package/dist/storage/ComparisonName.js.map +1 -0
  482. package/dist/storage/ListOptions.d.ts +23 -0
  483. package/dist/storage/ListOptions.d.ts.map +1 -0
  484. package/dist/storage/ListOptions.js +2 -0
  485. package/dist/storage/ListOptions.js.map +1 -0
  486. package/dist/storage/ListResult.d.ts +10 -0
  487. package/dist/storage/ListResult.d.ts.map +1 -0
  488. package/dist/storage/ListResult.js +2 -0
  489. package/dist/storage/ListResult.js.map +1 -0
  490. package/dist/storage/SelectOption.d.ts +6 -0
  491. package/dist/storage/SelectOption.d.ts.map +1 -0
  492. package/dist/storage/SelectOption.js +2 -0
  493. package/dist/storage/SelectOption.js.map +1 -0
  494. package/dist/storage/{port.d.ts → Storage.d.ts} +4 -47
  495. package/dist/storage/Storage.d.ts.map +1 -0
  496. package/dist/storage/{port.js → Storage.js} +1 -1
  497. package/dist/storage/Storage.js.map +1 -0
  498. package/dist/storage/StorageFactory.d.ts +8 -0
  499. package/dist/storage/StorageFactory.d.ts.map +1 -0
  500. package/dist/storage/StorageFactory.js +2 -0
  501. package/dist/storage/StorageFactory.js.map +1 -0
  502. package/dist/storage/{store.d.ts → Store.d.ts} +3 -5
  503. package/dist/storage/Store.d.ts.map +1 -0
  504. package/dist/storage/{store.js → Store.js} +3 -4
  505. package/dist/storage/Store.js.map +1 -0
  506. package/dist/storage/Together.d.ts +8 -0
  507. package/dist/storage/Together.d.ts.map +1 -0
  508. package/dist/storage/Together.js +2 -0
  509. package/dist/storage/Together.js.map +1 -0
  510. package/dist/storage/Values.d.ts +3 -0
  511. package/dist/storage/Values.d.ts.map +1 -0
  512. package/dist/storage/Values.js +2 -0
  513. package/dist/storage/Values.js.map +1 -0
  514. package/dist/verify.d.ts +6 -15
  515. package/dist/verify.d.ts.map +1 -1
  516. package/dist/verify.js +5 -5
  517. package/dist/verify.js.map +1 -1
  518. package/dist/wire/Addresses.d.ts +16 -0
  519. package/dist/wire/Addresses.d.ts.map +1 -0
  520. package/dist/wire/Addresses.js +2 -0
  521. package/dist/wire/Addresses.js.map +1 -0
  522. package/dist/wire/Answer.d.ts +3 -0
  523. package/dist/wire/Answer.d.ts.map +1 -0
  524. package/dist/wire/Answer.js +2 -0
  525. package/dist/wire/Answer.js.map +1 -0
  526. package/dist/wire/AnyHandler.d.ts +3 -0
  527. package/dist/wire/AnyHandler.d.ts.map +1 -0
  528. package/dist/wire/AnyHandler.js +2 -0
  529. package/dist/wire/AnyHandler.js.map +1 -0
  530. package/dist/wire/AppMiddleware.d.ts +8 -0
  531. package/dist/wire/AppMiddleware.d.ts.map +1 -0
  532. package/dist/wire/{middleware.js → AppMiddleware.js} +1 -2
  533. package/dist/wire/AppMiddleware.js.map +1 -0
  534. package/dist/wire/AppNext.d.ts +2 -0
  535. package/dist/wire/AppNext.d.ts.map +1 -0
  536. package/dist/wire/AppNext.js +2 -0
  537. package/dist/wire/AppNext.js.map +1 -0
  538. package/dist/wire/Call.d.ts +10 -0
  539. package/dist/wire/Call.d.ts.map +1 -0
  540. package/dist/wire/Call.js +12 -0
  541. package/dist/wire/Call.js.map +1 -0
  542. package/dist/wire/CallPage.d.ts +9 -0
  543. package/dist/wire/CallPage.d.ts.map +1 -0
  544. package/dist/wire/CallPage.js +2 -0
  545. package/dist/wire/CallPage.js.map +1 -0
  546. package/dist/wire/{CallLog.d.ts → CallRecord.d.ts} +3 -10
  547. package/dist/wire/CallRecord.d.ts.map +1 -0
  548. package/dist/wire/CallRecord.js +2 -0
  549. package/dist/wire/CallRecord.js.map +1 -0
  550. package/dist/wire/{emit.d.ts → Emit.d.ts} +1 -18
  551. package/dist/wire/Emit.d.ts.map +1 -0
  552. package/dist/wire/{emit.js → Emit.js} +1 -6
  553. package/dist/wire/Emit.js.map +1 -0
  554. package/dist/wire/ErrorCode.d.ts +23 -0
  555. package/dist/wire/ErrorCode.d.ts.map +1 -0
  556. package/dist/wire/ErrorCode.js +30 -0
  557. package/dist/wire/ErrorCode.js.map +1 -0
  558. package/dist/wire/Facade.d.ts +10 -0
  559. package/dist/wire/Facade.d.ts.map +1 -0
  560. package/dist/wire/Facade.js +9 -0
  561. package/dist/wire/Facade.js.map +1 -0
  562. package/dist/wire/FacadeName.d.ts +14 -0
  563. package/dist/wire/FacadeName.d.ts.map +1 -0
  564. package/dist/wire/FacadeName.js +2 -0
  565. package/dist/wire/FacadeName.js.map +1 -0
  566. package/dist/wire/Fact.d.ts +9 -0
  567. package/dist/wire/Fact.d.ts.map +1 -0
  568. package/dist/wire/Fact.js +2 -0
  569. package/dist/wire/Fact.js.map +1 -0
  570. package/dist/wire/FougereError.d.ts +35 -0
  571. package/dist/wire/FougereError.d.ts.map +1 -0
  572. package/dist/wire/{errors.js → FougereError.js} +9 -32
  573. package/dist/wire/FougereError.js.map +1 -0
  574. package/dist/wire/FougereErrorOptions.d.ts +10 -0
  575. package/dist/wire/FougereErrorOptions.d.ts.map +1 -0
  576. package/dist/wire/FougereErrorOptions.js +2 -0
  577. package/dist/wire/FougereErrorOptions.js.map +1 -0
  578. package/dist/wire/FougereHandlers.d.ts +10 -0
  579. package/dist/wire/FougereHandlers.d.ts.map +1 -0
  580. package/dist/wire/FougereHandlers.js +2 -0
  581. package/dist/wire/FougereHandlers.js.map +1 -0
  582. package/dist/wire/FougereOperations.d.ts +4 -0
  583. package/dist/wire/FougereOperations.d.ts.map +1 -0
  584. package/dist/wire/FougereOperations.js +2 -0
  585. package/dist/wire/FougereOperations.js.map +1 -0
  586. package/dist/wire/FrondCall.d.ts +10 -0
  587. package/dist/wire/FrondCall.d.ts.map +1 -0
  588. package/dist/wire/FrondCall.js +2 -0
  589. package/dist/wire/FrondCall.js.map +1 -0
  590. package/dist/wire/HandlerOf.d.ts +10 -0
  591. package/dist/wire/HandlerOf.d.ts.map +1 -0
  592. package/dist/wire/HandlerOf.js +2 -0
  593. package/dist/wire/HandlerOf.js.map +1 -0
  594. package/dist/wire/Invocation.d.ts +2 -10
  595. package/dist/wire/Invocation.d.ts.map +1 -1
  596. package/dist/wire/Invocation.js.map +1 -1
  597. package/dist/wire/InvocationContext.d.ts +10 -0
  598. package/dist/wire/InvocationContext.d.ts.map +1 -0
  599. package/dist/wire/InvocationContext.js +2 -0
  600. package/dist/wire/InvocationContext.js.map +1 -0
  601. package/dist/wire/{middleware.d.ts → OperationContext.d.ts} +2 -9
  602. package/dist/wire/OperationContext.d.ts.map +1 -0
  603. package/dist/wire/OperationContext.js +2 -0
  604. package/dist/wire/OperationContext.js.map +1 -0
  605. package/dist/wire/{operation.d.ts → OperationContract.d.ts} +15 -12
  606. package/dist/wire/OperationContract.d.ts.map +1 -0
  607. package/dist/wire/{operation.js → OperationContract.js} +1 -1
  608. package/dist/wire/OperationContract.js.map +1 -0
  609. package/dist/wire/OperationKind.d.ts +2 -0
  610. package/dist/wire/OperationKind.d.ts.map +1 -0
  611. package/dist/wire/OperationKind.js +2 -0
  612. package/dist/wire/OperationKind.js.map +1 -0
  613. package/dist/wire/OperationKindInference.d.ts +8 -0
  614. package/dist/wire/OperationKindInference.d.ts.map +1 -0
  615. package/dist/wire/OperationKindInference.js +2 -0
  616. package/dist/wire/OperationKindInference.js.map +1 -0
  617. package/dist/wire/OperationsMap.d.ts +7 -0
  618. package/dist/wire/OperationsMap.d.ts.map +1 -0
  619. package/dist/wire/OperationsMap.js +7 -0
  620. package/dist/wire/OperationsMap.js.map +1 -0
  621. package/dist/wire/Param.d.ts +8 -0
  622. package/dist/wire/Param.d.ts.map +1 -0
  623. package/dist/wire/Param.js +2 -0
  624. package/dist/wire/Param.js.map +1 -0
  625. package/dist/wire/PartialInvocation.d.ts +3 -0
  626. package/dist/wire/PartialInvocation.d.ts.map +1 -0
  627. package/dist/wire/PartialInvocation.js +2 -0
  628. package/dist/wire/PartialInvocation.js.map +1 -0
  629. package/dist/wire/Pipe.d.ts +10 -0
  630. package/dist/wire/Pipe.d.ts.map +1 -0
  631. package/dist/wire/Pipe.js +2 -0
  632. package/dist/wire/Pipe.js.map +1 -0
  633. package/dist/wire/Refused.d.ts +10 -0
  634. package/dist/wire/Refused.d.ts.map +1 -0
  635. package/dist/wire/Refused.js +2 -0
  636. package/dist/wire/Refused.js.map +1 -0
  637. package/dist/wire/RouteAddress.d.ts +1 -7
  638. package/dist/wire/RouteAddress.d.ts.map +1 -1
  639. package/dist/wire/RouteAddress.js.map +1 -1
  640. package/dist/wire/RouteAddressInput.d.ts +6 -0
  641. package/dist/wire/RouteAddressInput.d.ts.map +1 -0
  642. package/dist/wire/RouteAddressInput.js +2 -0
  643. package/dist/wire/RouteAddressInput.js.map +1 -0
  644. package/dist/wire/RouteKind.d.ts +3 -0
  645. package/dist/wire/RouteKind.d.ts.map +1 -0
  646. package/dist/wire/RouteKind.js +2 -0
  647. package/dist/wire/RouteKind.js.map +1 -0
  648. package/dist/wire/Rows.d.ts +8 -0
  649. package/dist/wire/Rows.d.ts.map +1 -0
  650. package/dist/wire/Rows.js +2 -0
  651. package/dist/wire/Rows.js.map +1 -0
  652. package/dist/wire/RpcAnswer.d.ts +6 -0
  653. package/dist/wire/RpcAnswer.d.ts.map +1 -0
  654. package/dist/wire/RpcAnswer.js +3 -0
  655. package/dist/wire/RpcAnswer.js.map +1 -0
  656. package/dist/wire/Signature.d.ts +13 -0
  657. package/dist/wire/Signature.d.ts.map +1 -0
  658. package/dist/wire/Signature.js +2 -0
  659. package/dist/wire/Signature.js.map +1 -0
  660. package/dist/wire/SignedCall.d.ts +12 -0
  661. package/dist/wire/SignedCall.d.ts.map +1 -0
  662. package/dist/wire/SignedCall.js +3 -0
  663. package/dist/wire/SignedCall.js.map +1 -0
  664. package/dist/wire/Transport.d.ts +5 -0
  665. package/dist/wire/Transport.d.ts.map +1 -0
  666. package/dist/wire/Transport.js +2 -0
  667. package/dist/wire/Transport.js.map +1 -0
  668. package/dist/wire/{signature.d.ts → TypeRef.d.ts} +1 -17
  669. package/dist/wire/TypeRef.d.ts.map +1 -0
  670. package/dist/wire/TypeRef.js +2 -0
  671. package/dist/wire/TypeRef.js.map +1 -0
  672. package/dist/wire/binding.d.ts +1 -1
  673. package/dist/wire/binding.d.ts.map +1 -1
  674. package/dist/wire/card/CardOp.d.ts +22 -0
  675. package/dist/wire/card/CardOp.d.ts.map +1 -0
  676. package/dist/wire/card/CardOp.js +2 -0
  677. package/dist/wire/card/CardOp.js.map +1 -0
  678. package/dist/wire/card/IdentityCard.d.ts +22 -0
  679. package/dist/wire/card/IdentityCard.d.ts.map +1 -0
  680. package/dist/wire/card/IdentityCard.js +25 -0
  681. package/dist/wire/card/IdentityCard.js.map +1 -0
  682. package/dist/wire/drift.d.ts +6 -6
  683. package/dist/wire/drift.d.ts.map +1 -1
  684. package/dist/wire/drift.js +18 -18
  685. package/dist/wire/drift.js.map +1 -1
  686. package/dist/wire/http-error.d.ts +1 -2
  687. package/dist/wire/http-error.d.ts.map +1 -1
  688. package/dist/wire/http-error.js +4 -3
  689. package/dist/wire/http-error.js.map +1 -1
  690. package/dist/wire/loggerMiddleware.d.ts +2 -2
  691. package/dist/wire/loggerMiddleware.d.ts.map +1 -1
  692. package/dist/wire/refusals.d.ts +33 -0
  693. package/dist/wire/refusals.d.ts.map +1 -0
  694. package/dist/wire/refusals.js +44 -0
  695. package/dist/wire/refusals.js.map +1 -0
  696. package/dist/wire/topology/DeclaredEdge.d.ts +6 -0
  697. package/dist/wire/topology/DeclaredEdge.d.ts.map +1 -0
  698. package/dist/wire/topology/DeclaredEdge.js +2 -0
  699. package/dist/wire/topology/DeclaredEdge.js.map +1 -0
  700. package/dist/wire/topology/DeclaredFrond.d.ts +11 -0
  701. package/dist/wire/topology/DeclaredFrond.d.ts.map +1 -0
  702. package/dist/wire/topology/DeclaredFrond.js +2 -0
  703. package/dist/wire/topology/DeclaredFrond.js.map +1 -0
  704. package/dist/wire/topology/DeclaredTopology.d.ts +12 -0
  705. package/dist/wire/topology/DeclaredTopology.d.ts.map +1 -0
  706. package/dist/wire/topology/DeclaredTopology.js +2 -0
  707. package/dist/wire/topology/DeclaredTopology.js.map +1 -0
  708. package/dist/wire/topology/Edge.d.ts +8 -0
  709. package/dist/wire/topology/Edge.d.ts.map +1 -0
  710. package/dist/wire/topology/Edge.js +2 -0
  711. package/dist/wire/topology/Edge.js.map +1 -0
  712. package/dist/wire/topology/FrondPlacement.d.ts +8 -0
  713. package/dist/wire/topology/FrondPlacement.d.ts.map +1 -0
  714. package/dist/wire/topology/FrondPlacement.js +2 -0
  715. package/dist/wire/topology/FrondPlacement.js.map +1 -0
  716. package/dist/wire/topology/TopologyReport.d.ts +14 -0
  717. package/dist/wire/topology/TopologyReport.d.ts.map +1 -0
  718. package/dist/wire/topology/TopologyReport.js +2 -0
  719. package/dist/wire/topology/TopologyReport.js.map +1 -0
  720. package/package.json +4 -4
  721. package/src/AdapterConfig.ts +11 -0
  722. package/src/AnswerFor.ts +7 -0
  723. package/src/Binding.ts +4 -0
  724. package/src/{identity.ts → CallIdentity.ts} +7 -25
  725. package/src/Constraint.ts +2 -0
  726. package/src/{conventions.ts → Conventions.ts} +20 -9
  727. package/src/ConventionsInput.ts +8 -0
  728. package/src/Ctor.ts +2 -0
  729. package/src/Declared.ts +8 -0
  730. package/src/DeclaredHandler.ts +18 -0
  731. package/src/DeclaredSubject.ts +6 -0
  732. package/src/{graph.ts → DomainCluster.ts} +2 -12
  733. package/src/EffectiveCollector.ts +7 -0
  734. package/src/EffectiveOperation.ts +62 -0
  735. package/src/{effective-operation.ts → EffectiveOperationModel.ts} +28 -125
  736. package/src/EffectiveOperationOptions.ts +7 -0
  737. package/src/EffectiveOperationSemantics.ts +7 -0
  738. package/src/EffectiveOperationsMap.ts +3 -0
  739. package/src/EffectiveParameter.ts +13 -0
  740. package/src/EntityNode.ts +6 -0
  741. package/src/{config-loader.ts → FougereConfig.ts} +15 -20
  742. package/src/FougereNames.ts +2 -0
  743. package/src/FougerePorts.ts +7 -0
  744. package/src/{frond-config.ts → FrondConfig.ts} +8 -46
  745. package/src/{declare.ts → FrondDeclaration.ts} +14 -35
  746. package/src/FrondIdentity.ts +7 -0
  747. package/src/NameOf.ts +12 -0
  748. package/src/OperationOverride.ts +38 -0
  749. package/src/PortChoice.ts +13 -0
  750. package/src/{source.ts → Source.ts} +4 -21
  751. package/src/SourceConfig.ts +10 -0
  752. package/src/SourceView.ts +7 -0
  753. package/src/VerifiedCall.ts +7 -0
  754. package/src/boot/App.ts +71 -0
  755. package/src/boot/AppLifecycle.ts +2 -20
  756. package/src/boot/AuthConfig.ts +14 -0
  757. package/src/boot/AuthContext.ts +12 -0
  758. package/src/boot/AuthRuntime.ts +19 -0
  759. package/src/boot/CreateAppOptions.ts +81 -0
  760. package/src/boot/Emissions.ts +86 -56
  761. package/src/boot/Extension.ts +20 -0
  762. package/src/boot/apply.ts +2 -2
  763. package/src/boot/bootstrap.ts +101 -70
  764. package/src/boot/card.ts +15 -11
  765. package/src/boot/declared.ts +5 -2
  766. package/src/boot/frame.ts +2 -2
  767. package/src/boot/hosted.ts +1 -1
  768. package/src/boot/install.ts +42 -31
  769. package/src/boot/ownership.ts +92 -52
  770. package/src/boot/ports.ts +52 -41
  771. package/src/boot/remote.ts +24 -17
  772. package/src/boot/runner.ts +2 -2
  773. package/src/boot/seed.ts +12 -10
  774. package/src/boot/statement-drift.ts +6 -5
  775. package/src/boot/together.ts +77 -37
  776. package/src/builtin/Carry.ts +49 -0
  777. package/src/builtin/LogLevel.ts +1 -0
  778. package/src/builtin/LogRecord.ts +12 -0
  779. package/src/builtin/LogSink.ts +4 -0
  780. package/src/builtin/{logger.ts → Logger.ts} +5 -98
  781. package/src/builtin/LoggerOptions.ts +14 -0
  782. package/src/builtin/Rendered.ts +21 -0
  783. package/src/contract.ts +35 -16
  784. package/src/crypto/CryptoPort.ts +12 -0
  785. package/src/crypto/PublicJwk.ts +7 -0
  786. package/src/crypto/Signer.ts +4 -0
  787. package/src/crypto/Verifier.ts +5 -0
  788. package/src/crypto/node.ts +4 -1
  789. package/src/crypto/webcrypto.ts +4 -1
  790. package/src/define.ts +1 -1
  791. package/src/descriptor/CollectorEntry.ts +11 -0
  792. package/src/descriptor/EntityEntry.ts +13 -0
  793. package/src/descriptor/ExtensionEntry.ts +15 -0
  794. package/src/descriptor/FrondDescriptor.ts +58 -0
  795. package/src/descriptor/FrondSource.ts +7 -0
  796. package/src/descriptor/Fronds.ts +2 -1
  797. package/src/descriptor/HandlerEntry.ts +27 -0
  798. package/src/descriptor/MiddlewareEntry.ts +16 -0
  799. package/src/descriptor/PresenterEntry.ts +23 -0
  800. package/src/descriptor/PresenterFieldMeta.ts +14 -0
  801. package/src/descriptor/ProviderEntry.ts +18 -0
  802. package/src/descriptor/SeedEntry.ts +11 -0
  803. package/src/descriptor/SeedFactory.ts +2 -0
  804. package/src/descriptor/bases.ts +30 -0
  805. package/src/descriptor/index.ts +24 -6
  806. package/src/descriptor/surface.ts +3 -2
  807. package/src/diagnostic.ts +41 -0
  808. package/src/dispatch/ArgumentResolver.ts +2 -7
  809. package/src/dispatch/CollectorLookup.ts +3 -0
  810. package/src/dispatch/CollectorResolver.ts +5 -0
  811. package/src/dispatch/DispatchEvent.ts +3 -6
  812. package/src/dispatch/DispatchLifecycle.ts +2 -1
  813. package/src/dispatch/DispatchObserver.ts +3 -0
  814. package/src/dispatch/DispatchPort.ts +1 -1
  815. package/src/dispatch/DispatchStage.ts +1 -0
  816. package/src/dispatch/Dispatcher.ts +1 -1
  817. package/src/dispatch/Facade.ts +25 -0
  818. package/src/dispatch/GuardReport.ts +9 -0
  819. package/src/dispatch/HandlerFacade.ts +28 -46
  820. package/src/dispatch/InFlight.ts +2 -1
  821. package/src/dispatch/LocalRoutePolicy.ts +3 -2
  822. package/src/dispatch/OperationRoute.ts +2 -3
  823. package/src/dispatch/PresenterArgs.ts +1 -0
  824. package/src/dispatch/PresenterExecutor.ts +3 -3
  825. package/src/dispatch/Route.ts +3 -2
  826. package/src/dispatch/RouteExecution.ts +3 -0
  827. package/src/dispatch/RoutePolicy.ts +1 -1
  828. package/src/dispatch/StorageGuard.ts +13 -19
  829. package/src/dispatch/presenterArguments.ts +3 -3
  830. package/src/dispatch/routeNotFound.ts +3 -2
  831. package/src/dispatch/validateInput.ts +3 -2
  832. package/src/entry/facade.ts +2 -2
  833. package/src/entry/transport.ts +2 -2
  834. package/src/index.ts +96 -52
  835. package/src/node.ts +2 -2
  836. package/src/prefab/AggregateConstructor.ts +9 -0
  837. package/src/prefab/AggregateOf.ts +6 -0
  838. package/src/prefab/AggregateShape.ts +7 -0
  839. package/src/prefab/{crud.ts → CrudConstructor.ts} +10 -18
  840. package/src/prefab/CrudOpName.ts +2 -0
  841. package/src/prefab/CrudOps.ts +24 -0
  842. package/src/prefab/CrudViews.ts +5 -0
  843. package/src/prefab/MirrorConstructor.ts +35 -0
  844. package/src/prefab/MirrorOf.ts +19 -0
  845. package/src/prefab/Refreshed.ts +9 -0
  846. package/src/prefab/{repository.ts → RepositoryConstructor.ts} +8 -24
  847. package/src/prefab/RepositoryOf.ts +7 -0
  848. package/src/scan.ts +3 -23
  849. package/src/storage/{criterion.ts → Comparison.ts} +1 -3
  850. package/src/storage/ComparisonName.ts +3 -0
  851. package/src/storage/ListOptions.ts +29 -0
  852. package/src/storage/ListResult.ts +9 -0
  853. package/src/storage/SelectOption.ts +6 -0
  854. package/src/storage/{port.ts → Storage.ts} +5 -56
  855. package/src/storage/StorageFactory.ts +8 -0
  856. package/src/storage/{store.ts → Store.ts} +5 -7
  857. package/src/storage/Together.ts +6 -0
  858. package/src/storage/Values.ts +2 -0
  859. package/src/verify.ts +12 -21
  860. package/src/wire/Addresses.ts +17 -0
  861. package/src/wire/Answer.ts +3 -0
  862. package/src/wire/AnyHandler.ts +2 -0
  863. package/src/wire/AppMiddleware.ts +24 -0
  864. package/src/wire/AppNext.ts +1 -0
  865. package/src/wire/Call.ts +15 -0
  866. package/src/wire/CallPage.ts +9 -0
  867. package/src/wire/{CallLog.ts → CallRecord.ts} +2 -10
  868. package/src/wire/{emit.ts → Emit.ts} +1 -24
  869. package/src/wire/ErrorCode.ts +33 -0
  870. package/src/wire/Facade.ts +28 -0
  871. package/src/wire/FacadeName.ts +13 -0
  872. package/src/wire/Fact.ts +8 -0
  873. package/src/wire/{errors.ts → FougereError.ts} +14 -53
  874. package/src/wire/FougereErrorOptions.ts +10 -0
  875. package/src/wire/FougereHandlers.ts +8 -0
  876. package/src/wire/FougereOperations.ts +2 -0
  877. package/src/wire/FrondCall.ts +9 -0
  878. package/src/wire/HandlerOf.ts +10 -0
  879. package/src/wire/Invocation.ts +2 -11
  880. package/src/wire/InvocationContext.ts +9 -0
  881. package/src/wire/OperationContext.ts +18 -0
  882. package/src/wire/{operation.ts → OperationContract.ts} +14 -23
  883. package/src/wire/OperationKind.ts +1 -0
  884. package/src/wire/OperationKindInference.ts +8 -0
  885. package/src/wire/OperationsMap.ts +14 -0
  886. package/src/wire/Param.ts +8 -0
  887. package/src/wire/PartialInvocation.ts +3 -0
  888. package/src/wire/Pipe.ts +9 -0
  889. package/src/wire/Refused.ts +13 -0
  890. package/src/wire/RouteAddress.ts +1 -8
  891. package/src/wire/RouteAddressInput.ts +5 -0
  892. package/src/wire/RouteKind.ts +2 -0
  893. package/src/wire/Rows.ts +7 -0
  894. package/src/wire/RpcAnswer.ts +7 -0
  895. package/src/wire/Signature.ts +13 -0
  896. package/src/wire/SignedCall.ts +12 -0
  897. package/src/wire/Transport.ts +5 -0
  898. package/src/wire/{signature.ts → TypeRef.ts} +0 -18
  899. package/src/wire/binding.ts +1 -1
  900. package/src/wire/card/CardOp.ts +22 -0
  901. package/src/wire/card/IdentityCard.ts +41 -0
  902. package/src/wire/drift.ts +22 -22
  903. package/src/wire/http-error.ts +4 -3
  904. package/src/wire/loggerMiddleware.ts +2 -2
  905. package/src/wire/refusals.ts +55 -0
  906. package/src/wire/topology/DeclaredEdge.ts +5 -0
  907. package/src/wire/topology/DeclaredFrond.ts +10 -0
  908. package/src/wire/topology/DeclaredTopology.ts +12 -0
  909. package/src/wire/topology/Edge.ts +7 -0
  910. package/src/wire/topology/FrondPlacement.ts +7 -0
  911. package/src/wire/topology/TopologyReport.ts +14 -0
  912. package/dist/boot/auth.d.ts +0 -43
  913. package/dist/boot/auth.d.ts.map +0 -1
  914. package/dist/boot/auth.js +0 -2
  915. package/dist/boot/auth.js.map +0 -1
  916. package/dist/boot/types.d.ts +0 -147
  917. package/dist/boot/types.d.ts.map +0 -1
  918. package/dist/boot/types.js +0 -2
  919. package/dist/boot/types.js.map +0 -1
  920. package/dist/builtin/logger.d.ts +0 -96
  921. package/dist/builtin/logger.d.ts.map +0 -1
  922. package/dist/builtin/logger.js.map +0 -1
  923. package/dist/config-loader.d.ts.map +0 -1
  924. package/dist/config-loader.js.map +0 -1
  925. package/dist/conventions.d.ts.map +0 -1
  926. package/dist/conventions.js.map +0 -1
  927. package/dist/crypto/port.d.ts +0 -26
  928. package/dist/crypto/port.d.ts.map +0 -1
  929. package/dist/crypto/port.js +0 -3
  930. package/dist/crypto/port.js.map +0 -1
  931. package/dist/declare.d.ts.map +0 -1
  932. package/dist/declare.js.map +0 -1
  933. package/dist/descriptor/frond.d.ts +0 -187
  934. package/dist/descriptor/frond.d.ts.map +0 -1
  935. package/dist/descriptor/frond.js.map +0 -1
  936. package/dist/effective-operation.d.ts +0 -113
  937. package/dist/effective-operation.d.ts.map +0 -1
  938. package/dist/effective-operation.js.map +0 -1
  939. package/dist/frond-config.d.ts +0 -71
  940. package/dist/frond-config.d.ts.map +0 -1
  941. package/dist/frond-config.js.map +0 -1
  942. package/dist/graph.d.ts.map +0 -1
  943. package/dist/graph.js.map +0 -1
  944. package/dist/identity.d.ts.map +0 -1
  945. package/dist/identity.js.map +0 -1
  946. package/dist/prefab/crud.d.ts.map +0 -1
  947. package/dist/prefab/crud.js.map +0 -1
  948. package/dist/prefab/mirror.d.ts +0 -33
  949. package/dist/prefab/mirror.d.ts.map +0 -1
  950. package/dist/prefab/mirror.js.map +0 -1
  951. package/dist/prefab/repository.d.ts +0 -40
  952. package/dist/prefab/repository.d.ts.map +0 -1
  953. package/dist/prefab/repository.js.map +0 -1
  954. package/dist/source.d.ts.map +0 -1
  955. package/dist/storage/criterion.d.ts.map +0 -1
  956. package/dist/storage/criterion.js.map +0 -1
  957. package/dist/storage/port.d.ts.map +0 -1
  958. package/dist/storage/port.js.map +0 -1
  959. package/dist/storage/store.d.ts.map +0 -1
  960. package/dist/storage/store.js.map +0 -1
  961. package/dist/wire/CallLog.d.ts.map +0 -1
  962. package/dist/wire/CallLog.js +0 -2
  963. package/dist/wire/CallLog.js.map +0 -1
  964. package/dist/wire/call.d.ts +0 -130
  965. package/dist/wire/call.d.ts.map +0 -1
  966. package/dist/wire/call.js +0 -47
  967. package/dist/wire/call.js.map +0 -1
  968. package/dist/wire/emit.d.ts.map +0 -1
  969. package/dist/wire/emit.js.map +0 -1
  970. package/dist/wire/errors.d.ts +0 -58
  971. package/dist/wire/errors.d.ts.map +0 -1
  972. package/dist/wire/errors.js.map +0 -1
  973. package/dist/wire/middleware.d.ts.map +0 -1
  974. package/dist/wire/middleware.js.map +0 -1
  975. package/dist/wire/operation.d.ts.map +0 -1
  976. package/dist/wire/operation.js.map +0 -1
  977. package/dist/wire/signature.d.ts.map +0 -1
  978. package/dist/wire/signature.js +0 -2
  979. package/dist/wire/signature.js.map +0 -1
  980. package/src/boot/auth.ts +0 -45
  981. package/src/boot/types.ts +0 -148
  982. package/src/crypto/port.ts +0 -29
  983. package/src/descriptor/frond.ts +0 -195
  984. package/src/prefab/mirror.ts +0 -60
  985. package/src/wire/call.ts +0 -178
  986. package/src/wire/middleware.ts +0 -43
@@ -1,27 +1,31 @@
1
1
  /** Putting one frond into the app being built: its scope, what it serves, what it takes. */
2
2
  import type { Container } from '@fougere/container';
3
3
  import { lowerFirst, type Fields, type SchemaView } from '@fougere/schema';
4
- import type { Logger } from '../builtin/logger.js';
4
+ import type { Logger } from '../builtin/Logger.js';
5
5
  import type { Dispatcher } from '../dispatch/Dispatcher.js';
6
6
  import type { RouteRegistry } from '../dispatch/RouteRegistry.js';
7
7
  import type { Emissions } from './Emissions.js';
8
- import type { EffectiveOperationsMap, EffectiveOperationModel } from '../effective-operation.js';
9
- import { nameOf, type ProviderEntry } from '../descriptor/frond.js';
10
- import type { EntityEntry, FrondDescriptor, HandlerEntry } from '../descriptor/frond.js';
11
- import type { OperationsMap } from '../wire/operation.js';
12
- import type { AppMiddleware } from '../wire/middleware.js';
13
- import type { CreateAppOptions } from './types.js';
8
+ import type { EffectiveOperationModel } from '../EffectiveOperationModel.js';
9
+ import type { EffectiveOperationsMap } from '../EffectiveOperationsMap.js';
10
+ import { nameOf } from '../descriptor/FrondDescriptor.js';
11
+ import type { EntityEntry } from '../descriptor/EntityEntry.js';
12
+ import type { FrondDescriptor } from '../descriptor/FrondDescriptor.js';
13
+ import type { HandlerEntry } from '../descriptor/HandlerEntry.js';
14
+ import type { OperationsMap } from '../wire/OperationsMap.js';
15
+ import type { AppMiddleware } from '../wire/AppMiddleware.js';
16
+ import type { CreateAppOptions } from './CreateAppOptions.js';
14
17
  import { registerFrames } from './together.js';
18
+ import type { Diagnostic } from '../diagnostic.js';
15
19
  import { HandlerFacade } from '../dispatch/HandlerFacade.js';
16
20
  import { targetOf } from '../prefab/prefab.js';
17
- import { ownersOf, refuseSharedName, refuseStorageInUserCode, refuseCrudOnOwned } from './ownership.js';
21
+ import { ownersOf, sharedNames, storageInUserCode, crudOnOwned } from './ownership.js';
18
22
  import { StorageGuard } from '../dispatch/StorageGuard.js';
19
23
  import { portBindings, seamChains, wrapping, SEAMS } from './ports.js';
20
- import { facadeKeyOf, contractsKeyOf } from '../wire/call.js';
21
- import { inheritsCrud, subjectOf } from '../prefab/crud.js';
22
- import { repositoryKeyOf } from '../prefab/repository.js';
23
- import { storageKeyOf } from '../storage/port.js';
24
- import { declares } from '../source.js';
24
+ import { contractsKeyOf, facadeKeyOf } from '../wire/Facade.js';
25
+ import { inheritsCrud, subjectOf } from '../prefab/CrudConstructor.js';
26
+ import { repositoryKeyOf } from '../prefab/RepositoryConstructor.js';
27
+ import { storageKeyOf } from '../storage/Storage.js';
28
+ import { declares } from '../Source.js';
25
29
  import { presenterKeyOf } from '../prefab/presenter.js';
26
30
  import { collectorKeyOf } from '../prefab/collector.js';
27
31
  import { RouteAddress } from '../wire/RouteAddress.js';
@@ -39,12 +43,14 @@ export interface Assembly {
39
43
  routeRegistry: RouteRegistry;
40
44
  emissions: Emissions;
41
45
  dispatcher: Dispatcher;
42
- /** A door under a named surface answers only what that surface serves. */
46
+ /** A facade under a named surface answers only what that surface serves. */
43
47
  localDispatcher: Dispatcher;
44
48
  /** Filled per façade key, read back by `operationsFor` and the identity card. */
45
49
  effectiveByKey: Map<string, EffectiveOperationsMap>;
46
50
  /** Every `ports:` key some frond actually settled — what is left is a typo. */
47
51
  boundPorts: Set<string>;
52
+ /** Where a check writes what does not hold — collected across fronds, refused together. */
53
+ refused: Diagnostic[];
48
54
  /** What the model resolved before the boot performed any side effect. */
49
55
  operationModel: EffectiveOperationModel;
50
56
  entityByName: Map<string, SchemaView>;
@@ -61,7 +67,7 @@ export interface Assembly {
61
67
  export async function installFrond(frond: FrondDescriptor, assembly: Assembly): Promise<void> {
62
68
  const {
63
69
  container, routeRegistry, emissions, dispatcher, localDispatcher, effectiveByKey,
64
- boundPorts, operationModel, entityByName, frondOf, contractsOf, getMiddlewares, use,
70
+ boundPorts, refused, operationModel, entityByName, frondOf, contractsOf, getMiddlewares, use,
65
71
  log, options,
66
72
  } = assembly;
67
73
 
@@ -69,7 +75,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
69
75
  // register nothing locally — resolve() falls through to the remote façade.
70
76
  if (options.remotes && frond.name in options.remotes) {
71
77
  log.child(frond.name).info('declared remote — not hosted locally');
72
- // Its doors answer elsewhere, but what they LISTEN to was read here.
78
+ // Its facades answer elsewhere, but what they LISTEN to was read here.
73
79
  for (const handler of frond.handlers) {
74
80
  const key = facadeKeyOf(handler.address, handler.surface);
75
81
  const operations = operationModel.forHandler(handler);
@@ -99,7 +105,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
99
105
  if (frond.reads?.length && options.sourcesFactory) {
100
106
  // Resolved across the WHOLE app, not this frond's own entities: a cross-source
101
107
  // query joins entities from different fronds by definition — `Progress` here,
102
- // `Book` next door — so restricting the list to its own would make it useless.
108
+ // `Book` next facade — so restricting the list to its own would make it useless.
103
109
  // Naming one IS the authorization; that is what the declaration is for.
104
110
  const named = frond.reads
105
111
  .map((name) => entityByName.get(lowerFirst(name)))
@@ -117,10 +123,10 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
117
123
 
118
124
  // Who owns what, and the rule that makes owning mean something. Before anything is
119
125
  // registered, so a bad line is named by this refusal rather than by the container's.
120
- refuseSharedName(frond);
121
- const owners = ownersOf(frond.providers);
122
- refuseStorageInUserCode(frond, owners, (entity) => entityByName.has(entity));
123
- refuseCrudOnOwned(frond, owners);
126
+ sharedNames(frond, refused);
127
+ const owners = ownersOf(frond.providers, frond.name, refused);
128
+ storageInUserCode(frond, owners, (entity) => entityByName.has(entity), refused);
129
+ crudOnOwned(frond, owners, refused);
124
130
 
125
131
  for (const provider of frond.providers) {
126
132
  scope.register(nameOf(provider), provider.ctor, { deps: provider.deps });
@@ -128,7 +134,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
128
134
  // What this frond puts in front of one of the framework's own ports. Its own, like every
129
135
  // provider — a link goes where its frond goes, which is what a frond behind `remotes:`
130
136
  // takes with it.
131
- const seams = seamChains(frond.providers, options.ports);
137
+ const seams = seamChains(frond.providers, options.ports, refused);
132
138
  for (const [seam, links] of seams) {
133
139
  boundPorts.add(seam);
134
140
  frondLog.debug(`seam ${seam} → ${links.map((one) => one.ctor.name).join(' → ')} → the realization`);
@@ -137,7 +143,10 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
137
143
  // reaches the realization instead of the base class it is declared against.
138
144
  // Registered AFTER the loop above so a port key always wins over the base's
139
145
  // own registration — same precedence as a declared repository over its default.
140
- for (const [port, chain] of portBindings(frond.providers, (n) => scope.has(n), options.ports)) {
146
+ for (const [port, chain] of portBindings(frond.providers, (n) => scope.has(n), options.ports, refused)) {
147
+ // A chain a refusal emptied — `ports:` named a class that extends nothing. Already
148
+ // reported, and there is no realization left to put a key in front of.
149
+ if (chain.length === 0) continue;
141
150
  // A seam is bound where its realization is BUILT, not under a container key — nothing
142
151
  // resolves `Storage`, and `<Entity>Storage` is what a handler asks for.
143
152
  if (SEAMS.has(port)) continue;
@@ -182,7 +191,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
182
191
 
183
192
  // The declared chain first, then the guard OUTSIDE it: the guard hands on the value
184
193
  // it parsed, so a wrapper reads what the entity says a row is rather than what
185
- // arrived. Same order the client door has held since `StorageGuard` existed.
194
+ // arrived. Same order the client facade has held since `StorageGuard` existed.
186
195
  const linked = wrapping('Storage', seams.get('Storage') ?? [], scoped, (dep) => scope.resolve(dep));
187
196
  // Storage is a way out like the client surface — see `StorageGuard`.
188
197
  const guarded = new StorageGuard(entity.entityClass.getFields(), entity.name).guard(linked);
@@ -194,7 +203,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
194
203
  // existed to make `repo.storage` true in both, back when `.storage` was the way in.
195
204
  //
196
205
  // Not registered for an OWNED entity: an aggregate's members are reached through it
197
- // and nowhere else, and the default would be a second door under a name a handler
206
+ // and nowhere else, and the default would be a second facade under a name a handler
198
207
  // can spell. Every member is skipped, not just the one the key is named after —
199
208
  // that asymmetry was the whole hole.
200
209
  const repoKey = repositoryKeyOf(entity.name);
@@ -223,7 +232,8 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
223
232
  // so nothing is registered for a frame nobody wants.
224
233
  registerFrames(
225
234
  scope,
226
- [...frond.handlers, ...frond.providers, ...frond.presenters, ...frond.collectors].flatMap((d) => d.deps),
235
+ [...frond.handlers, ...frond.providers, ...frond.presenters, ...frond.collectors]
236
+ .flatMap((d) => d.deps.map((key) => ({ key, filePath: d.filePath }))),
227
237
  frond.providers,
228
238
  {
229
239
  entityByName,
@@ -235,6 +245,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
235
245
  transacted: options.transacted,
236
246
  log: frondLog,
237
247
  },
248
+ refused,
238
249
  );
239
250
 
240
251
  // Register presenters in scope — PascalCase type name (e.g. 'PostPresenter')
@@ -278,7 +289,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
278
289
  const surfaceHandlers = frond.handlers.filter((h) => h.surface);
279
290
  const defaultHandlerMap = new Map(defaultHandlers.map((h) => [h.address, h]));
280
291
 
281
- /** Build the door of a handler and register it under the audience it serves. */
292
+ /** Build the facade of a handler and register it under the audience it serves. */
282
293
  const buildFacade = (
283
294
  entity: EntityEntry | undefined,
284
295
  handler: HandlerEntry,
@@ -304,7 +315,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
304
315
  });
305
316
  // Emissions use the same contracts and execution path as direct calls.
306
317
  emissions.note(facade.contracts, facadeKey);
307
- // The terms alongside the door, under the same audience — a surface that serves
318
+ // The terms alongside the facade, under the same audience — a surface that serves
308
319
  // fewer ops describes fewer ops.
309
320
  container.registerValue(contractsKeyOf(handler.address, handler.surface), facade.contracts);
310
321
  effectiveByKey.set(facadeKey, facade.effectiveOperations);
@@ -381,7 +392,7 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
381
392
  //
382
393
  // Pointing at nothing is legal HERE TOO. This loop used to `continue` when no entity
383
394
  // carried the handler's name, so `handlers/public/SearchHandler.ts` with no `Search`
384
- // entity got no door at all and no line saying why — while the very same handler at
395
+ // entity got no facade at all and no line saying why — while the very same handler at
385
396
  // the default surface is built and logged. One rule, both surfaces.
386
397
  for (const handler of surfaceHandlers) {
387
398
  const entity = frond.entities.find((e) => e.name === handler.address);
@@ -390,14 +401,14 @@ export async function installFrond(frond: FrondDescriptor, assembly: Assembly):
390
401
  // Register scoped storage if output override differs from entity — under the REPOSITORY
391
402
  // key, which is what a Crud handler asks for, and under the port's own for a holder
392
403
  // that legitimately names it. Registering only the latter left a named surface with
393
- // no door at all once the façade stopped spelling the storage.
404
+ // no facade at all once the façade stopped spelling the storage.
394
405
  if (entity && options.storageFactory) {
395
406
  const baseStorage = options.storageFactory(entity.entityClass, entity.name);
396
407
  const outputSchema = handler.outputOverride ?? (handler.ctor as any).__output;
397
408
  const scoped = outputSchema && outputSchema !== entity.entityClass
398
409
  ? baseStorage.output(outputSchema)
399
410
  : baseStorage;
400
- // The view is handed over so a filter on a field this door hides is SAID. The
411
+ // The view is handed over so a filter on a field this facade hides is SAID. The
401
412
  // guard holds no logger — a warning is the boot's to voice, as a seed's report is.
402
413
  const guarded = new StorageGuard(entity.entityClass.getFields(), entity.name, {
403
414
  ...(outputSchema && outputSchema !== entity.entityClass
@@ -1,34 +1,44 @@
1
1
  import { lowerFirst } from '@fougere/schema';
2
- import { nameOf, type FrondDescriptor, type ProviderEntry } from '../descriptor/frond.js';
3
- import { inheritsCrud } from '../prefab/crud.js';
2
+ import { nameOf, type FrondDescriptor } from '../descriptor/FrondDescriptor.js';
3
+ import { type ProviderEntry } from '../descriptor/ProviderEntry.js';
4
+ import { inheritsCrud } from '../prefab/CrudConstructor.js';
4
5
  import { targetOf } from '../prefab/prefab.js';
5
- import { ownedBy, repositoryKeyOf } from '../prefab/repository.js';
6
- import { entityOfStorageKey } from '../storage/port.js';
6
+ import { ownedBy, repositoryKeyOf } from '../prefab/RepositoryConstructor.js';
7
+ import { entityOfStorageKey } from '../storage/Storage.js';
8
+ import type { Diagnostic } from '../diagnostic.js';
7
9
 
8
10
  /** One name, one file: two providers under one key and the second silently replaces the first. */
9
- export function refuseSharedName(frond: FrondDescriptor): void {
11
+ export function sharedNames(frond: FrondDescriptor, refused: Diagnostic[]): void {
10
12
  const declared = new Map<string, string>();
11
13
 
12
14
  for (const provider of frond.providers) {
13
15
  const name = nameOf(provider);
14
16
  const first = declared.get(name);
15
17
  if (first !== undefined) {
16
- throw new Error(
17
- `[provider] two files declare ${name}:\n`
18
- + ` ${first}\n`
19
- + ` ${provider.filePath}\n`
20
- + ` A frond registers both under one key, so the second replaces the first and whoever `
21
- + `asks for ${name} is handed whichever was scanned last.\n`
22
- + ' Rename one of the two.',
23
- );
18
+ refused.push({
19
+ severity: 'blocking',
20
+ code: 'provider-name-taken',
21
+ filePath: provider.filePath,
22
+ frond: frond.name,
23
+ subject: name,
24
+ message: `${first} already declares ${name}. A frond registers both under one key, so the `
25
+ + `second replaces the first and whoever asks for ${name} is handed whichever was `
26
+ + 'scanned last. Rename one of the two.',
27
+ });
24
28
  }
25
29
  declared.set(name, provider.filePath);
26
30
  }
27
31
  }
28
32
 
29
33
  /** Who owns an entity's storage. */
30
- export function ownersOf(providers: readonly ProviderEntry[]): Map<string, string> {
34
+ export function ownersOf(
35
+ providers: readonly ProviderEntry[],
36
+ frond: string,
37
+ refused: Diagnostic[],
38
+ ): Map<string, string> {
31
39
  const owners = new Map<string, string>();
40
+ /** Claimed twice, so it has no owner — and no owner is nobody to judge a reader against. */
41
+ const contested = new Set<string>();
32
42
  for (const provider of providers) {
33
43
  const owned = ownedBy(provider.ctor);
34
44
  if (owned.length < 2) continue;
@@ -39,14 +49,26 @@ export function ownersOf(providers: readonly ProviderEntry[]): Map<string, strin
39
49
  // Refused rather than settled, for the reason `ports:` refuses two implementations
40
50
  // and `remotes` two owners of an entity: whichever won would depend on scan order,
41
51
  // and one of the two aggregates would be silently unenforced.
42
- throw new Error(
43
- `[aggregate] ${first} and ${provider.ctor.name} both own ${name}. `
44
- + 'An entity has one owner: merge the two, or take it out of one of them.',
45
- );
52
+ refused.push({
53
+ severity: 'blocking',
54
+ code: 'entity-owned-twice',
55
+ filePath: provider.filePath,
56
+ frond,
57
+ subject: name,
58
+ message: `${first} and ${provider.ctor.name} both own ${name}. An entity has one owner: `
59
+ + 'merge the two, or take it out of one of them.',
60
+ });
61
+ contested.add(name);
62
+ continue;
46
63
  }
47
64
  owners.set(name, provider.ctor.name);
48
65
  }
49
66
  }
67
+ // The second claimant is BUILT ON what it claims, so `storageInUserCode` would read it as
68
+ // reaching around the first — two more refusals naming the same declaration, in the one
69
+ // case where the answer to "who owns this" is already the diagnostic above.
70
+ for (const name of contested) owners.delete(name);
71
+
50
72
  return owners;
51
73
  }
52
74
 
@@ -62,12 +84,13 @@ function builtOn(ctor: unknown): string[] {
62
84
  }
63
85
 
64
86
  /** `Storage<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in. */
65
- export function refuseStorageInUserCode(
87
+ export function storageInUserCode(
66
88
  frond: FrondDescriptor,
67
89
  owners: Map<string, string>,
68
90
  known: (entity: string) => boolean,
91
+ refused: Diagnostic[],
69
92
  ): void {
70
- const doors = [
93
+ const facades = [
71
94
  ...frond.handlers.map((h) => ({ ...h, kind: 'handler' })),
72
95
  ...frond.presenters.map((p) => ({ ...p, kind: 'presenter' })),
73
96
  ...frond.collectors.map((c) => ({ ...c, kind: 'collector' })),
@@ -81,15 +104,19 @@ export function refuseStorageInUserCode(
81
104
  const held = entityOfStorageKey(registered, known);
82
105
  if (!held) continue;
83
106
 
84
- throw new Error(
85
- `[storage] ${registered} is a provider, and it is the container key of ${held}'s `
86
- + `own storage — the storage is registered second, so the provider is never resolved.\n`
87
- + ` Name it for what it holds; \`<Entity>Storage\` belongs to the entity.\n`
88
- + ` ${provider.filePath}`,
89
- );
107
+ refused.push({
108
+ severity: 'blocking',
109
+ code: 'storage-key-is-provider',
110
+ filePath: provider.filePath,
111
+ frond: frond.name,
112
+ subject: registered,
113
+ message: `${registered} is a provider, and it is the container key of ${held}'s own storage `
114
+ + '— the storage is registered second, so the provider is never resolved. Name it for '
115
+ + 'what it holds; `<Entity>Storage` belongs to the entity.',
116
+ });
90
117
  }
91
118
 
92
- for (const decl of [...doors, ...holders]) {
119
+ for (const decl of [...facades, ...holders]) {
93
120
  const allowed = decl.kind === 'provider' ? builtOn(decl.ctor) : [];
94
121
  for (const dep of decl.deps) {
95
122
  const entity = entityOfStorageKey(dep, known);
@@ -97,42 +124,55 @@ export function refuseStorageInUserCode(
97
124
 
98
125
  const owner = owners.get(entity);
99
126
  if (owner && owner !== decl.ctor.name) {
100
- throw new Error(
101
- `[aggregate] ${decl.ctor.name} asks for ${dep}, and ${owner} owns ${entity}.\n`
102
- + ` Nothing else reaches an owned entity's storage — name the operation on `
103
- + `${owner} and ask for it:\n`
104
- + ` constructor(private ${entity}: ${owner}) {}\n`
105
- + ` ${decl.filePath}`,
106
- );
127
+ refused.push({
128
+ severity: 'blocking',
129
+ code: 'aggregate-storage-reached',
130
+ filePath: decl.filePath,
131
+ frond: frond.name,
132
+ subject: `${decl.ctor.name}(${dep})`,
133
+ message: `${decl.ctor.name} asks for ${dep}, and ${owner} owns ${entity}. Nothing else `
134
+ + `reaches an owned entity's storage — name the operation on ${owner} and ask for it: `
135
+ + `constructor(private ${entity}: ${owner}) {}`,
136
+ });
137
+ continue;
107
138
  }
108
139
  if (allowed.includes(entity)) continue;
109
140
 
110
- throw new Error(
111
- `${decl.ctor.name} asks for ${dep}. Storage is reached through a repository, `
112
- + `never through the port:\n`
113
- + ` constructor(private ${entity}: ${repositoryKeyOf(entity)}) {}\n`
114
- + ` It answers every gesture ${dep} does, whether or not anyone wrote the file — `
115
- + `and the day ${entity} belongs to an aggregate, this line does not move.\n`
116
- + ` ${decl.filePath}`,
117
- );
141
+ refused.push({
142
+ severity: 'blocking',
143
+ code: 'storage-outside-repository',
144
+ filePath: decl.filePath,
145
+ frond: frond.name,
146
+ subject: `${decl.ctor.name}(${dep})`,
147
+ message: `${decl.ctor.name} asks for ${dep}. Storage is reached through a repository, never `
148
+ + `through the port: constructor(private ${entity}: ${repositoryKeyOf(entity)}) {}. It `
149
+ + `answers every gesture ${dep} does, whether or not anyone wrote the file — and the day `
150
+ + `${entity} belongs to an aggregate, this line does not move.`,
151
+ });
118
152
  }
119
153
  }
120
154
  }
121
155
 
122
156
  /** An owned entity has no automatic CRUD — said at boot, not at the first request. */
123
- export function refuseCrudOnOwned(frond: FrondDescriptor, owners: Map<string, string>): void {
157
+ export function crudOnOwned(
158
+ frond: FrondDescriptor,
159
+ owners: Map<string, string>,
160
+ refused: Diagnostic[],
161
+ ): void {
124
162
  for (const handler of frond.handlers) {
125
163
  const owner = owners.get(handler.address);
126
164
  if (!owner || handler.deps.length > 0 || !inheritsCrud(handler.ctor)) continue;
127
165
 
128
- throw new Error(
129
- `[aggregate] ${handler.ctor.name} takes the five gestures on ${handler.address}, `
130
- + `which ${owner} owns.\n`
131
- + ` An owned entity has no automatic CRUD: nothing writes it but its owner, so there `
132
- + `is no storage to hand this handler.\n`
133
- + ` Name the operations on ${owner} and call them:\n`
134
- + ` constructor(private ${handler.address}: ${owner}) {}\n`
135
- + ` ${handler.filePath}`,
136
- );
166
+ refused.push({
167
+ severity: 'blocking',
168
+ code: 'crud-on-owned-entity',
169
+ filePath: handler.filePath,
170
+ frond: frond.name,
171
+ subject: handler.ctor.name,
172
+ message: `${handler.ctor.name} takes the five gestures on ${handler.address}, which ${owner} `
173
+ + 'owns. An owned entity has no automatic CRUD: nothing writes it but its owner, so there '
174
+ + `is no storage to hand this handler. Name the operations on ${owner} and call them: `
175
+ + `constructor(private ${handler.address}: ${owner}) {}`,
176
+ });
137
177
  }
138
178
  }
package/src/boot/ports.ts CHANGED
@@ -1,4 +1,7 @@
1
- import { nameOf, type ProviderEntry } from '../descriptor/frond.js';
1
+ import { nameOf } from '../descriptor/FrondDescriptor.js';
2
+ import { type ProviderEntry } from '../descriptor/ProviderEntry.js';
3
+ import { basesOf } from '../descriptor/bases.js';
4
+ import type { Diagnostic } from '../diagnostic.js';
2
5
 
3
6
  /**
4
7
  * The framework's own ports — a class core exports that a user class may stand in front of.
@@ -24,23 +27,29 @@ export const SEAMS = new Set(['Storage']);
24
27
  export function seamChains(
25
28
  providers: ProviderEntry[],
26
29
  chosen: Record<string, string | readonly string[]> | undefined,
30
+ refused: Diagnostic[],
27
31
  ): Map<string, ProviderEntry[]> {
28
32
  const wrappers = new Map<string, ProviderEntry[]>();
29
33
  for (const provider of providers) {
30
34
  const seam = (Object.getPrototypeOf(provider.ctor) as { name?: string } | null)?.name;
31
35
  if (!seam || !SEAMS.has(seam)) continue;
32
36
  if (!provider.deps.includes(seam)) {
33
- throw new Error(
34
- `[ports] ${nameOf(provider)} extends ${seam}, and a seam's realization is handed in `
35
- + `rather than declared — so a class extending one can only stand IN FRONT of it, `
36
- + `which it says by asking for it: constructor(private inner: ${seam}).`,
37
- );
37
+ refused.push({
38
+ severity: 'blocking',
39
+ code: 'seam-not-wrapped',
40
+ filePath: provider.filePath,
41
+ subject: nameOf(provider),
42
+ message: `${nameOf(provider)} extends ${seam}, and a seam's realization is handed in rather `
43
+ + 'than declared — so a class extending one can only stand IN FRONT of it, which it says '
44
+ + `by asking for it: constructor(private inner: ${seam}).`,
45
+ });
46
+ continue;
38
47
  }
39
48
  wrappers.set(seam, [...(wrappers.get(seam) ?? []), provider]);
40
49
  }
41
50
 
42
51
  const bound = new Map<string, ProviderEntry[]>();
43
- for (const [seam, all] of wrappers) bound.set(seam, chain(seam, [], all, chosen?.[seam]));
52
+ for (const [seam, all] of wrappers) bound.set(seam, chain(seam, [], all, chosen?.[seam], refused));
44
53
 
45
54
  return bound;
46
55
  }
@@ -77,22 +86,9 @@ export function portBindings(
77
86
  providers: ProviderEntry[],
78
87
  answers: (name: string) => boolean,
79
88
  chosen: Record<string, string | readonly string[]> | undefined,
89
+ refused: Diagnostic[],
80
90
  ): Map<string, ProviderEntry[]> {
81
- // port class name → the classes that extend it, in scan order.
82
- const candidates = new Map<string, ProviderEntry[]>();
83
- for (const provider of providers) {
84
- const base = Object.getPrototypeOf(provider.ctor) as { name?: string } | null;
85
- const port = base?.name;
86
- // ONE condition: something already answers under that name. Providers are
87
- // registered into this scope just above, and the builtins sit in its parent, so
88
- // this covers a neighbour service and `Logger` alike — a framework class is a
89
- // port like any other, which is what makes a default overridable.
90
- //
91
- // It is also what excludes a prefab: a repository extends the class
92
- // `Repository(Post)` returned (`RepositoryBase`), and no key is ever that name.
93
- if (!port || !answers(port)) continue;
94
- candidates.set(port, [...(candidates.get(port) ?? []), provider]);
95
- }
91
+ const candidates = basesOf(providers, answers);
96
92
 
97
93
  const bound = new Map<string, ProviderEntry[]>();
98
94
  for (const [port, all] of candidates) {
@@ -102,7 +98,7 @@ export function portBindings(
102
98
  const impls = all.filter((one) => !wraps(one));
103
99
  const stated = chosen?.[port];
104
100
 
105
- bound.set(port, chain(port, impls, wrappers, stated));
101
+ bound.set(port, chain(port, impls, wrappers, stated, refused));
106
102
  }
107
103
 
108
104
  return bound;
@@ -113,6 +109,7 @@ function chain(
113
109
  impls: ProviderEntry[],
114
110
  wrappers: ProviderEntry[],
115
111
  stated: string | readonly string[] | undefined,
112
+ refused: Diagnostic[],
116
113
  ): ProviderEntry[] {
117
114
  // The whole chain, outside in — a string is a chain of one, and the last name is what
118
115
  // actually answers. What a deployment wraps its realization with is the same kind of
@@ -121,16 +118,21 @@ function chain(
121
118
  const order = typeof stated === 'string' ? [stated] : stated;
122
119
  const all = [...wrappers, ...impls];
123
120
 
124
- return order.map((name) => {
121
+ return order.flatMap((name) => {
125
122
  const pick = all.find((one) => nameOf(one) === name);
126
123
  if (!pick) {
127
- throw new Error(
128
- `[ports] ${port}: '${name}' does not extend it. `
129
- + `What does: ${all.map(nameOf).join(', ')}.`,
130
- );
124
+ refused.push({
125
+ severity: 'blocking',
126
+ code: 'port-not-extended',
127
+ filePath: all[0]?.filePath ?? 'fougere.config.ts',
128
+ subject: `ports: { ${port}: '${name}' }`,
129
+ message: `${port}: '${name}' does not extend it. What does: ${all.map(nameOf).join(', ')}.`,
130
+ });
131
+
132
+ return [];
131
133
  }
132
134
 
133
- return pick;
135
+ return [pick];
134
136
  });
135
137
  }
136
138
 
@@ -138,22 +140,31 @@ function chain(
138
140
  // Refusing rather than keeping one, for the reason `remotes` refuses two owners
139
141
  // of an entity: whichever won would depend on scan order, and the handler would
140
142
  // charge the wrong provider without a word.
141
- throw new Error(
142
- `[ports] ${impls.map(nameOf).join(' and ')} both extend ${port}, `
143
- + 'and nothing says which one answers it. Which realization a deployment uses is '
144
- + `not a fact about the code — state it: ports: { ${port}: '${nameOf(impls[0]!)}' } `
145
- + 'in fougere.config.ts.',
146
- );
143
+ refused.push({
144
+ severity: 'blocking',
145
+ code: 'port-implemented-twice',
146
+ filePath: impls[0]!.filePath,
147
+ subject: port,
148
+ message: `${impls.map(nameOf).join(' and ')} both extend ${port}, and nothing says which one `
149
+ + 'answers it. Which realization a deployment uses is not a fact about the code — state it: '
150
+ + `ports: { ${port}: '${nameOf(impls[0]!)}' } in fougere.config.ts.`,
151
+ });
152
+
153
+ return [...wrappers, ...impls];
147
154
  }
148
155
 
149
156
  if (wrappers.length > 1) {
150
157
  // Same refusal one layer out: two wrappers are an ORDER, and scan order is not one.
151
- throw new Error(
152
- `[ports] ${wrappers.map(nameOf).join(' and ')} both wrap ${port}, `
153
- + 'and nothing says which stands in front. State the chain, outside in: '
154
- + `ports: { ${port}: [${[...wrappers, ...impls].map((one) => `'${nameOf(one)}'`).join(', ')}] } `
155
- + 'in fougere.config.ts.',
156
- );
158
+ refused.push({
159
+ severity: 'blocking',
160
+ code: 'port-wrapped-twice',
161
+ filePath: wrappers[0]!.filePath,
162
+ subject: port,
163
+ message: `${wrappers.map(nameOf).join(' and ')} both wrap ${port}, and nothing says which `
164
+ + 'stands in front. State the chain, outside in: '
165
+ + `ports: { ${port}: [${[...wrappers, ...impls].map((one) => `'${nameOf(one)}'`).join(', ')}] } `
166
+ + 'in fougere.config.ts.',
167
+ });
157
168
  }
158
169
 
159
170
  return [...wrappers, ...impls];