@fougere/core 0.9.2-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} +26 -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 -17
  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 +29 -0
  176. package/dist/boot/declared.d.ts.map +1 -0
  177. package/dist/boot/declared.js +67 -0
  178. package/dist/boot/declared.js.map +1 -0
  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 -24
  186. package/dist/boot/install.js.map +1 -1
  187. package/dist/boot/ownership.d.ts +8 -4
  188. package/dist/boot/ownership.d.ts.map +1 -1
  189. package/dist/boot/ownership.js +91 -33
  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 +94 -34
  417. package/dist/index.d.ts.map +1 -1
  418. package/dist/index.js +20 -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} +6 -3
  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 -18
  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} +50 -106
  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 -21
  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 +91 -0
  766. package/src/boot/frame.ts +2 -2
  767. package/src/boot/hosted.ts +1 -1
  768. package/src/boot/install.ts +42 -30
  769. package/src/boot/ownership.ts +104 -43
  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 -13
  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 +102 -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} +15 -20
  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 -19
  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 -93
  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 -105
  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 -150
  986. package/src/wire/middleware.ts +0 -43
@@ -1,56 +1,55 @@
1
1
  import type { Container } from '@fougere/container';
2
- import { lowerFirst, type Fields, type SchemaView } from '@fougere/schema';
3
- import { nameOf } from '../descriptor/frond.js';
4
- import type { EntityEntry, HandlerEntry, PresenterEntry } from '../descriptor/frond.js';
2
+ import { lowerFirst, type SchemaView } from '@fougere/schema';
3
+
4
+ import type { HandlerEntry } from '../descriptor/HandlerEntry.js';
5
+ import type { PresenterEntry } from '../descriptor/PresenterEntry.js';
5
6
  import { hostedBy } from './hosted.js';
6
7
  import { installFrond, type Assembly } from './install.js';
7
- import type { AuthRuntime } from './auth.js';
8
- import type { CreateAppOptions, App } from './types.js';
9
- import type { AppMiddleware } from '../wire/middleware.js';
10
- import { Carry, Logger } from '../builtin/logger.js';
11
- import type { LogRecord } from '../builtin/logger.js';
8
+ import { refusalOf, type Diagnostic } from '../diagnostic.js';
9
+ import type { AuthRuntime } from './AuthRuntime.js';
10
+ import type { App } from './App.js';
11
+ import type { CreateAppOptions } from './CreateAppOptions.js';
12
+ import type { AppMiddleware } from '../wire/AppMiddleware.js';
13
+ import { Carry } from '../builtin/Carry.js';
14
+ import { Logger } from '../builtin/Logger.js';
15
+ import type { LogRecord } from '../builtin/LogRecord.js';
12
16
  import LogLine, { CARRIES_LINE } from '../builtin/LogLine.js';
13
- import { emitKeyOf, type Emit } from '../wire/emit.js';
17
+ import { emitKeyOf, type Emit } from '../wire/Emit.js';
14
18
 
15
19
  /** The fact the boot announces, spelled once. */
16
20
  const LOG_LINE = lowerFirst(LogLine.name);
17
21
  import { Config } from '../builtin/config.js';
18
22
  import { createRemoteRouter, createRemoteFacade } from './remote.js';
19
- import { registerFrames } from './together.js';
23
+
20
24
  import { Emissions } from './Emissions.js';
21
- import { HandlerFacade } from '../dispatch/HandlerFacade.js';
22
- import { targetOf } from '../prefab/prefab.js';
23
- import { ownersOf, refuseStorageInUserCode, refuseCrudOnOwned } from './ownership.js';
24
- import type { OperationContract, OperationsMap } from '../wire/operation.js';
25
- import {
26
- resolveEffectiveOperations,
27
- type EffectiveOperationsMap,
28
- } from '../effective-operation.js';
29
- import { StorageGuard } from '../dispatch/StorageGuard.js';
30
- import { portBindings } from './ports.js';
25
+
26
+ import type { OperationContract } from '../wire/OperationContract.js';
27
+ import type { OperationsMap } from '../wire/OperationsMap.js';
28
+ import { resolveEffectiveOperations } from '../EffectiveOperationModel.js';
29
+ import { type EffectiveOperationsMap } from '../EffectiveOperationsMap.js';
30
+
31
31
  import { InFlight } from '../dispatch/InFlight.js';
32
32
  // The keys, each read from where its concept is declared — never respelled here.
33
- import { facadeKeyOf, contractsKeyOf, type RpcAnswer } from '../wire/call.js';
33
+ import { type RpcAnswer } from '../wire/RpcAnswer.js';
34
+ import { facadeKeyOf } from '../wire/Facade.js';
34
35
  import { identityCardOf } from './card.js';
35
36
  import { AppLifecycle, migrating } from './AppLifecycle.js';
36
37
  import { seeding } from './seed.js';
37
- import { inheritsCrud, subjectOf } from '../prefab/crud.js';
38
- import { repositoryKeyOf } from '../prefab/repository.js';
39
- import { storageKeyOf } from '../storage/port.js';
40
- import { declares } from '../source.js';
38
+
39
+ import { storageKeyOf } from '../storage/Storage.js';
40
+
41
41
  import { presenterKeyOf } from '../prefab/presenter.js';
42
- import { collectorKeyOf } from '../prefab/collector.js';
42
+
43
43
  import { RouteAddress } from '../wire/RouteAddress.js';
44
44
  import { DispatchLifecycle } from '../dispatch/DispatchLifecycle.js';
45
45
  import { Dispatcher } from '../dispatch/Dispatcher.js';
46
46
  import { LocalRoutePolicy } from '../dispatch/LocalRoutePolicy.js';
47
- import { servedSurfaces } from '../descriptor/surface.js';
47
+
48
48
  import { OperationRoute } from '../dispatch/OperationRoute.js';
49
49
  import { remoteRoutes } from '../dispatch/remoteRoutes.js';
50
50
  import { RouteRegistry } from '../dispatch/RouteRegistry.js';
51
51
  import { facadeOperations } from '../entry/facade.js';
52
52
 
53
-
54
53
  /** The one wording for "nobody hosts this here", with both ways out. */
55
54
  const notLoaded = (entity: string) =>
56
55
  `Frond for '${entity}' is not loaded.\n` +
@@ -58,29 +57,39 @@ const notLoaded = (entity: string) =>
58
57
  ` - Or declare a remote: remotes: { ${entity}: 'http://...' }`;
59
58
 
60
59
  /** Two fronds cannot claim one name — said at boot, because nothing else says it. */
61
- function assertOneOwnerPerKey(
60
+ function keyClaims(
62
61
  fronds: { name: string; handlers: HandlerEntry[]; presenters: PresenterEntry[] }[],
63
62
  remotes: Record<string, string> | undefined,
63
+ refused: Diagnostic[],
64
64
  ): void {
65
65
  const owner = new Map<string, string>();
66
+ const fileOf = new Map<string, string>();
66
67
 
67
- const claim = (key: string, frond: string, what: string) => {
68
+ const claim = (key: string, frond: string, what: string, filePath: string) => {
68
69
  const first = owner.get(key);
69
70
  if (first !== undefined && first !== frond) {
70
- throw new Error(
71
- `Two fronds claim the key '${key}': '${first}' and '${frond}'.\n`
72
- + ` A ${what} is registered under a key that names no frond, so one would silently replace the other.\n`
73
- + ` - Rename one of the two classes, or\n`
74
- + ` - keep one of the two fronds out of this process (--fronds), or declare it in remotes:`,
75
- );
71
+ refused.push({
72
+ severity: 'blocking',
73
+ code: 'frond-key-taken',
74
+ filePath,
75
+ frond,
76
+ subject: key,
77
+ message: `'${first}' and '${frond}' both claim the key '${key}'. A ${what} is registered `
78
+ + 'under a key that names no frond, so one would silently replace the other. Rename one '
79
+ + 'of the two classes, or keep one frond out of this process (--fronds). '
80
+ + `'${first}' declares it in ${fileOf.get(key)}.`,
81
+ });
82
+
83
+ return;
76
84
  }
77
85
  owner.set(key, frond);
86
+ fileOf.set(key, filePath);
78
87
  };
79
88
 
80
89
  for (const frond of fronds) {
81
90
  if (remotes && frond.name in remotes) continue;
82
- for (const handler of frond.handlers) claim(facadeKeyOf(handler.address, handler.surface), frond.name, 'door');
83
- for (const presenter of frond.presenters) claim(presenterKeyOf(presenter.entityName), frond.name, 'presenter');
91
+ for (const handler of frond.handlers) claim(facadeKeyOf(handler.address, handler.surface), frond.name, 'facade', handler.filePath);
92
+ for (const presenter of frond.presenters) claim(presenterKeyOf(presenter.entityName), frond.name, 'presenter', presenter.filePath);
84
93
  }
85
94
  }
86
95
 
@@ -171,7 +180,9 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
171
180
  if (!options.fronds && !options.scan && !options.auth && brought.length === 0) {
172
181
  throw new Error(
173
182
  'createApp needs `fronds:` (what this app states) or `scan:` (what a scanner found). '
174
- + 'Neither was given, and nothing else declares entities of its own.',
183
+ + 'Neither was given, and nothing else declares entities of its own.\n'
184
+ + ' createApp({ fronds: [blog] })\n'
185
+ + ' createApp({ scan: await scanProject(root) })',
175
186
  );
176
187
  }
177
188
  const operationModel = resolveEffectiveOperations(fronds, {
@@ -189,17 +200,8 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
189
200
  for (const d of diagnostics) if (d.severity === 'warning') log.warn(`[${d.code}] ${d.message}`);
190
201
 
191
202
  /** An ambiguous convention is not a partial scan. */
192
- const invalidOperations = operationModel.resolutionDiagnostics
193
- .filter((diagnostic) => diagnostic.severity === 'blocking');
194
- if (invalidOperations.length > 0) {
195
- const details = invalidOperations.map((d) =>
196
- ` [${d.code}]${d.subject ? ` ${d.subject}` : ''}\n ${d.message}\n ${d.filePath}`,
197
- );
198
- throw new Error(
199
- `Fougere boot refused: ${invalidOperations.length} unresolved operation contract(s):\n`
200
- + details.join('\n'),
201
- );
202
- }
203
+ const unresolved = refusalOf(operationModel.resolutionDiagnostics, 'unresolved operation contract(s)');
204
+ if (unresolved) throw unresolved;
203
205
 
204
206
  // Auth runtime — built once from the lazy AuthConfig produced by a provider factory
205
207
  // (e.g. betterAuth({...})) in fougere.config.ts. The provider receives our db +
@@ -207,7 +209,7 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
207
209
  let authRuntime: AuthRuntime | undefined;
208
210
  if (options.auth) {
209
211
  if (!options.storageFactory) {
210
- throw new Error('createApp: `auth` is set but `storageFactory` is missing — auth providers need it to back their adapter.');
212
+ throw new Error('createApp: `auth` is set but `storageFactory` is missing — auth providers need it to back their adapter. Pass one through CreateAppOptions.storageFactory.');
211
213
  }
212
214
  if (options.db === undefined) {
213
215
  throw new Error('createApp: `auth` is set but `db` is missing — pass the storage handle through CreateAppOptions.db.');
@@ -233,7 +235,7 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
233
235
  ? createRemoteRouter(Object.fromEntries(declaredRemotes), options.remoteTransport)
234
236
  : undefined;
235
237
 
236
- // What is running on this app — counted at the one door every caller goes through,
238
+ // What is running on this app — counted at the one facade every caller goes through,
237
239
  // so releasing it can wait for the work instead of pulling the floor out.
238
240
  const inflight = new InFlight();
239
241
 
@@ -276,7 +278,13 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
276
278
  scopedMiddlewares.set(entity, scoped);
277
279
  }
278
280
 
279
- assertOneOwnerPerKey(fronds, options.remotes);
281
+ /** What every check of this boot writes into — refused together, once they have all run. */
282
+ const refused: Diagnostic[] = [];
283
+ keyClaims(fronds, options.remotes, refused);
284
+ // Said before anything is installed: a key claimed twice makes every later error worse —
285
+ // the route registry collides first, and names a route instead of the two fronds.
286
+ const claimed = refusalOf(refused, 'declaration(s) that do not hold');
287
+ if (claimed) throw claimed;
280
288
 
281
289
  // Every entity of every frond, by name — so a fact can be validated where it LANDS, and
282
290
  // so a `reads:` clause can name a neighbour's.
@@ -295,6 +303,7 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
295
303
  fronds, entityByName, container,
296
304
  // No carry: this is what CARRIES a fact, and a line about carrying one comes back.
297
305
  new Logger('boot:app'),
306
+ refused,
298
307
  options.onEmit,
299
308
  );
300
309
  /** Canonical operation tables, indexed by the same audience key as their facades. */
@@ -313,11 +322,16 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
313
322
  // table, one emission list — so what a frond serves is there for the next one to find.
314
323
  const assembly: Assembly = {
315
324
  container, routeRegistry, emissions, dispatcher, localDispatcher, effectiveByKey,
316
- boundPorts, operationModel, entityByName, frondOf, contractsOf, getMiddlewares, use,
325
+ boundPorts, refused, operationModel, entityByName, frondOf, contractsOf, getMiddlewares, use,
317
326
  log, options,
318
327
  };
319
328
  for (const frond of fronds) await installFrond(frond, assembly);
320
329
 
330
+ // Every check of the install, said at once — a boot that stops at the first makes the
331
+ // next one visible only after a fix and a restart.
332
+ const bootRefusal = refusalOf(refused, 'declaration(s) that do not hold');
333
+ if (bootRefusal) throw bootRefusal;
334
+
321
335
  // A `ports:` key that matched no port anywhere reads as a choice that was made, and
322
336
  // was not. Said once, at the end, because the entry is app-wide while a port is a
323
337
  // frond's — no single frond can tell whether a key is a typo or a neighbour's.
@@ -329,14 +343,19 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
329
343
  );
330
344
  }
331
345
 
332
- // Once every door exists: what is announced here and what is listened to are both known.
346
+ // Once every facade exists: what is announced here and what is listened to are both known.
333
347
  emissions.register();
334
348
 
335
- // Which doors carry a line, read from who SUBSCRIBED so a third party's destination
349
+ // The third phase: what a fact's links and its answer type state. Said after `register`,
350
+ // which is where a pipe order and an `Emit<T, A>` are read.
351
+ const announced = refusalOf(refused, 'declaration(s) that do not hold');
352
+ if (announced) throw announced;
353
+
354
+ // Which facades carry a line, read from who SUBSCRIBED — so a third party's destination
336
355
  // is left alone by the two middlewares that observe every operation.
337
- for (const door of emissions.doorsFor(LOG_LINE)) {
338
- CARRIES_LINE.add(door.replace(/Handler$/, '').replace(/^./, (c) => c.toLowerCase()));
339
- CARRIES_LINE.add(door);
356
+ for (const facade of emissions.facadesFor(LOG_LINE)) {
357
+ CARRIES_LINE.add(facade.replace(/Handler$/, '').replace(/^./, (c) => c.toLowerCase()));
358
+ CARRIES_LINE.add(facade);
340
359
  }
341
360
 
342
361
  /** The last resort, held by the container so every resolution path shares it. */
@@ -353,7 +372,6 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
353
372
  );
354
373
  });
355
374
 
356
-
357
375
  /** Stop taking calls, and resolve once the ones already running are done. */
358
376
  const drain = async (timeoutMs?: number): Promise<void> => {
359
377
  inflight.close();
@@ -386,7 +404,7 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
386
404
  if (found) return found.entityClass;
387
405
  if (remoteRouter) {
388
406
  const route = await remoteRouter.route(entity);
389
- // A remote door that stores nothing publishes ops and no shape. Saying so beats
407
+ // A remote facade that stores nothing publishes ops and no shape. Saying so beats
390
408
  // handing back an empty schema, which would validate every input it was given.
391
409
  if (!route.schema) {
392
410
  throw new Error(
@@ -409,12 +427,12 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
409
427
  }
410
428
  };
411
429
 
412
- /** Said once per pair, so a door that registers in a loop says it once. */
430
+ /** Said once per pair, so a facade that registers in a loop says it once. */
413
431
  const saidAbsent = new Set<string>();
414
432
 
415
433
  /**
416
434
  * A surface is declared in the frond that serves it. When that frond runs in another
417
- * process, this one never asked for its doors, and answering 'no' is the only thing a
435
+ * process, this one never asked for its facades, and answering 'no' is the only thing a
418
436
  * synchronous rule can do — so it says so rather than registering nothing in silence.
419
437
  */
420
438
  const sayNoSurfaceAcross = (entity: string, surface: string): void => {
@@ -422,8 +440,8 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
422
440
  saidAbsent.add(`${surface}:${entity}`);
423
441
  log.warn(
424
442
  `surface '${surface}' serves nothing for '${entity}' — the frond that declares it runs `
425
- + 'elsewhere, and a remote is asked for its doors at the first call, not at boot. '
426
- + 'The default door answers.',
443
+ + 'elsewhere, and a remote is asked for its facades at the first call, not at boot. '
444
+ + 'The default facade answers.',
427
445
  );
428
446
  };
429
447
 
@@ -465,7 +483,7 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
465
483
  }));
466
484
  }
467
485
 
468
- /** The terms beside a door, with the exact same named-surface fallback rule. */
486
+ /** The terms beside a facade, with the exact same named-surface fallback rule. */
469
487
  const operationsFor = (entity: string, surface?: string): EffectiveOperationsMap | undefined => {
470
488
  if (!surface) return effectiveByKey.get(facadeKeyOf(entity));
471
489
 
@@ -479,7 +497,7 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
479
497
 
480
498
  /**
481
499
  * The storage an entity is backed by — the dual of `facadeFor`, which serves its client-facing
482
- * door.
500
+ * facade.
483
501
  */
484
502
  const storageFor = (entity: string): unknown | undefined => {
485
503
  const owner = fronds.owner(entity);
@@ -508,7 +526,7 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
508
526
  const app: App = {
509
527
  container,
510
528
  fronds,
511
- // What this app publishes, straight from fougere.config.ts — the doors read it,
529
+ // What this app publishes, straight from fougere.config.ts — the facades read it,
512
530
  // so an undeclared adapter serves nothing whatever a host mounted.
513
531
  adapters: options.adapters ?? {},
514
532
  // Where a call goes, as DECLARED. Kept because a reader needs it beside what the
@@ -534,7 +552,10 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
534
552
  // depend on wiring order, and `discover` is in here precisely so it cannot be taken.
535
553
  const address = new RouteAddress({ entity: 'rpc', operation: op });
536
554
  if (routeRegistry.find(address)) {
537
- throw new Error(`rpc operation '${op}' is already served; a second declaration would depend on wiring order`);
555
+ throw new Error(
556
+ `[claim] rpc operation '${op}' is already served; a second declaration would depend on wiring order.\n`
557
+ + ' Two extensions declare it — keep one out of `extensions:`.',
558
+ );
538
559
  }
539
560
  routeRegistry.register(new OperationRoute(
540
561
  'system',
@@ -561,10 +582,20 @@ export async function createApp(options: CreateAppOptions): Promise<App> {
561
582
  // The last thing the boot does, and the first thing a release undoes. An extension may
562
583
  // await here — which is what a provider needing to OPEN something could never do.
563
584
  built = app;
585
+
586
+ // What the FRONDS declared, folded in after what the host handed over — a frond's
587
+ // extension is written beside the code it instruments and travels with it, so it mounts
588
+ // on whichever process ends up serving that frond. Added here rather than at the top
589
+ // because the fronds are read below that line, and `up` has not run yet.
590
+ appLifecycle.add(...fronds.flatMap((frond) => (frond.extensions ?? []).map((one) => ({
591
+ name: one.name,
592
+ ...one.extension,
593
+ }))));
594
+
564
595
  await appLifecycle.up(app);
565
596
 
566
597
  // The boot's own lines, and every line after them. Held until here because a boot
567
- // writes most of what a process logs and writes it before any door exists — so the
598
+ // writes most of what a process logs and writes it before any facade exists — so the
568
599
  // lines that say what this app is made of are the ones a destination would miss.
569
600
  // `LogLine` is core's for this reason: naming it costs no optional package.
570
601
  //
package/src/boot/card.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  /** What an app says about ITSELF — the `rpc.discover` answer, built from the app. */
2
2
  import { Card } from '@fougere/schema';
3
- import type { App } from './types.js';
4
- import { factsAnnouncedBy } from '../wire/emit.js';
5
- import type { InvocationContext } from '../wire/Invocation.js';
6
- import { facadeKeyOf, contractsKeyOf, type CardOp, type IdentityCard } from '../wire/call.js';
7
- import type { OperationContract } from '../wire/operation.js';
3
+ import type { App } from './App.js';
4
+ import { factsAnnouncedBy } from '../wire/Emit.js';
5
+ import type { InvocationContext } from '../wire/InvocationContext.js';
6
+ import { type CardOp } from '../wire/card/CardOp.js';
7
+ import { type IdentityCard } from '../wire/card/IdentityCard.js';
8
+ import { facadeKeyOf } from '../wire/Facade.js';
8
9
 
9
10
  type AnyFacade = Record<string, (invocation?: InvocationContext) => Promise<unknown>>;
10
11
 
@@ -16,12 +17,12 @@ export function identityCardOf(app: App, surface?: string): IdentityCard {
16
17
  // What this app SERVES, never what instruments it. A frond an extension BROUGHT is a
17
18
  // subscriber — `@fougere/calls` and `@fougere/observability` each bring one — and it is
18
19
  // in every process that installed the extension, so two remotes then claimed the same
19
- // door and routing refused: `Two remotes serve 'export'`. `FrondDescriptor.brought` is
20
+ // facade and routing refused: `Two remotes serve 'export'`. `FrondDescriptor.brought` is
20
21
  // the mark `calls`' panel and `rpc.topology` already read.
21
22
  fronds: app.fronds.filter((frond) => !frond.brought).map((frond) => {
22
23
  // What the frond answers to, not what it stores. This walked `frond.entities`, so a
23
24
  // handler carrying no entity — a health check, a search across shapes — was built,
24
- // served, and absent from the card: `sync` could not generate its door and a remote
25
+ // served, and absent from the card: `sync` could not generate its facade and a remote
25
26
  // consumer had no way to know it existed. The boot has said "pointing at nothing is
26
27
  // legal" since handlers became the subject; the card had not caught up.
27
28
  const byEntity = new Map(frond.entities.map((entity) => [entity.name, entity]));
@@ -32,14 +33,14 @@ export function identityCardOf(app: App, surface?: string): IdentityCard {
32
33
 
33
34
  return {
34
35
  name: frond.name,
35
- doors: addresses.flatMap((address) => {
36
+ facades: addresses.flatMap((address) => {
36
37
  const ops = facadeOps(app, address, surface);
37
38
  if (ops.length === 0) return [];
38
39
  const entity = byEntity.get(address);
39
40
  return [{
40
41
  name: address,
41
42
  ops,
42
- // Absent when nothing of that name is stored. A door is still a door.
43
+ // Absent when nothing of that name is stored. A facade is still a facade.
43
44
  ...(entity ? { schema: Card.fromSchema(entity.entityClass, address).descriptor } : {}),
44
45
  }];
45
46
  }),
@@ -65,7 +66,8 @@ function facadeOps(app: App, entityName: string, surface?: string): CardOp[] {
65
66
  const effective = app.operationsFor(entityName, surface);
66
67
  if (!effective) {
67
68
  throw new Error(
68
- `Facade '${facadeKeyOf(entityName, surface)}' exists without an effective operation table.`,
69
+ `Facade '${facadeKeyOf(entityName, surface)}' exists without an effective operation table. `
70
+ + 'A facade and its table are built together, so no declaration can produce this.',
69
71
  );
70
72
  }
71
73
 
@@ -73,7 +75,8 @@ function facadeOps(app: App, entityName: string, surface?: string): CardOp[] {
73
75
  const contract = effective.get(name);
74
76
  if (!contract) {
75
77
  throw new Error(
76
- `Facade '${facadeKeyOf(entityName, surface)}' serves '${name}' without an effective contract.`,
78
+ `Facade '${facadeKeyOf(entityName, surface)}' serves '${name}' without an effective contract. `
79
+ + 'A facade and its table are built together, so no declaration can produce this.',
77
80
  );
78
81
  }
79
82
 
@@ -83,6 +86,7 @@ function facadeOps(app: App, entityName: string, surface?: string): CardOp[] {
83
86
  ...(contract?.input && { input: Card.fromSchema(contract.input, name).descriptor }),
84
87
  ...(contract?.output && { output: Card.fromSchema(contract.output, name).descriptor }),
85
88
  ...(contract?.cardinality && { cardinality: contract.cardinality }),
89
+ ...(contract.errors?.length ? { errors: contract.errors } : {}),
86
90
  kind: contract.kind,
87
91
  };
88
92
  });
@@ -0,0 +1,91 @@
1
+ /**
2
+ * What an app says about its NEIGHBOURS — the dual of the identity card, which says what it IS.
3
+ *
4
+ * Documented: [observability](https://fougere.dev/docs/infra/observability).
5
+ */
6
+ import type { FrondDescriptor } from '../descriptor/FrondDescriptor.js';
7
+ import { facadeKeyOf } from '../wire/Facade.js';
8
+ import { type DeclaredEdge } from '../wire/topology/DeclaredEdge.js';
9
+ import { type DeclaredFrond } from '../wire/topology/DeclaredFrond.js';
10
+ import { type DeclaredTopology } from '../wire/topology/DeclaredTopology.js';
11
+
12
+ interface Declaring {
13
+ fronds: readonly FrondDescriptor[];
14
+ remotes: Readonly<Record<string, string>>;
15
+ }
16
+
17
+ /** Read from the config and the scan, never from a call, so nothing has to answer for it. */
18
+ export function declaredTopologyOf({ fronds, remotes }: Declaring): DeclaredTopology {
19
+ const hosted = fronds.filter((frond) => !frond.brought);
20
+
21
+ return { fronds: placements(hosted, remotes), edges: crossings(hosted) };
22
+ }
23
+
24
+ function placements(hosted: readonly FrondDescriptor[], remotes: Readonly<Record<string, string>>): DeclaredFrond[] {
25
+ const here = hosted
26
+ .filter((frond) => !remotes[frond.name])
27
+ .map((frond) => ({ frond: frond.name, placement: 'local' as const }));
28
+
29
+ const elsewhere = Object.entries(remotes)
30
+ .map(([frond, address]) => ({ frond, placement: 'remote' as const, at: hostOf(address) }));
31
+
32
+ return [...here, ...elsewhere];
33
+ }
34
+
35
+ /**
36
+ * Which frond serves each address — indexed FORWARD, so a dependency is recognized by what
37
+ * answers it and never by its spelling. A surface is left out: its key carries a `:`, and no
38
+ * dependency can name one.
39
+ */
40
+ export function servedBy(fronds: readonly FrondDescriptor[]): Map<string, string> {
41
+ const index = new Map<string, string>();
42
+ for (const frond of fronds) {
43
+ if (frond.brought) continue;
44
+ for (const handler of frond.handlers) {
45
+ if (handler.surface) continue;
46
+ index.set(facadeKeyOf(handler.address), frond.name);
47
+ }
48
+ }
49
+
50
+ return index;
51
+ }
52
+
53
+ /**
54
+ * The fronds one class reaches through a façade — the only sanctioned crossing.
55
+ *
56
+ * An address no scanned frond serves is left out rather than guessed: naming the frond behind it
57
+ * means reading its card, and a card is a DISCOVERY, which belongs to the other half of the
58
+ * report. This answers what the CODE declares, and never more.
59
+ */
60
+ export function reachedBy(deps: readonly string[], from: string, index: Map<string, string>): string[] {
61
+ const reached = deps
62
+ .map((dependency) => index.get(dependency))
63
+ .filter((frond): frond is string => frond !== undefined && frond !== from);
64
+
65
+ return [...new Set(reached)];
66
+ }
67
+
68
+ function crossings(hosted: readonly FrondDescriptor[]): DeclaredEdge[] {
69
+ const index = servedBy(hosted);
70
+ const found = new Map<string, DeclaredEdge>();
71
+
72
+ for (const frond of hosted) {
73
+ for (const handler of frond.handlers) {
74
+ for (const to of reachedBy(handler.deps, frond.name, index)) {
75
+ found.set(`${frond.name} ${to}`, { from: frond.name, to });
76
+ }
77
+ }
78
+ }
79
+
80
+ return [...found.values()];
81
+ }
82
+
83
+ function hostOf(address: string): string {
84
+ try {
85
+ const url = new URL(address);
86
+
87
+ return `${url.protocol}//${url.host}`;
88
+ } catch {
89
+ return address;
90
+ }
91
+ }
package/src/boot/frame.ts CHANGED
@@ -4,8 +4,8 @@
4
4
  */
5
5
  import { FieldSet, type SchemaView } from '@fougere/schema';
6
6
  import { dequal } from 'dequal';
7
- import { declares } from '../source.js';
8
- import type { Logger } from '../builtin/logger.js';
7
+ import { declares } from '../Source.js';
8
+ import type { Logger } from '../builtin/Logger.js';
9
9
 
10
10
  /** One write that landed, and how to take it back. */
11
11
  export interface Undo {
@@ -1,5 +1,5 @@
1
1
  /** What this app hosts — what it STATED, or what a scan FOUND. */
2
- import type { FrondDescriptor } from '../descriptor/frond.js';
2
+ import type { FrondDescriptor } from '../descriptor/FrondDescriptor.js';
3
3
  import type { ScanResult } from '../scan.js';
4
4
  import { Fronds } from '../descriptor/Fronds.js';
5
5