@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,6 +1,6 @@
1
1
  /** A Transport built from an app — the two ways a call enters this process. */
2
- import type { App } from './types.js';
3
- import type { Transport } from '../wire/call.js';
2
+ import type { App } from './App.js';
3
+ import type { Transport } from '../wire/Transport.js';
4
4
  import { createTransportEntry } from '../entry/transport.js';
5
5
 
6
6
  /** Build the local runner — the reference realization of Transport. */
package/src/boot/seed.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import { Role } from '@fougere/schema';
2
- import { facadeKeyOf } from '../wire/call.js';
3
- import type { FrondDescriptor, SeedEntry, SeedFactory } from '../descriptor/frond.js';
4
- import type { App } from './types.js';
5
- import type { Extension } from './AppLifecycle.js';
2
+ import { facadeKeyOf } from '../wire/Facade.js';
3
+ import type { FrondDescriptor } from '../descriptor/FrondDescriptor.js';
4
+ import type { SeedEntry } from '../descriptor/SeedEntry.js';
5
+ import type { SeedFactory } from '../descriptor/SeedFactory.js';
6
+ import type { App } from './App.js';
7
+ import type { Extension } from './Extension.js';
6
8
 
7
9
  /** What the ordering satisfied, and what no order can. */
8
10
  export interface SeedOrder {
@@ -56,7 +58,7 @@ export function orderSeeds(fronds: FrondDescriptor[]): SeedOrder {
56
58
  }
57
59
 
58
60
  /** Where a seed writes, and what it may skip — resolved per entity. */
59
- interface SeedDoor {
61
+ interface SeedFacade {
60
62
  list(): Promise<unknown[]>;
61
63
  write(item: unknown): Promise<unknown>;
62
64
  }
@@ -75,13 +77,13 @@ export async function runSeeds(
75
77
  const resolve = <T>(name: string) => app.resolve<T>(name + 'Handler');
76
78
  const data = typeof seed.data === 'function' ? await (seed.data as SeedFactory)(resolve) : seed.data;
77
79
 
78
- const door = doorFor(app, seed.entityName);
79
- if (!door) {
80
+ const facade = facadeFor(app, seed.entityName);
81
+ if (!facade) {
80
82
  report(` ${seed.entityName}: no handler façade nor storage — skipping seed`);
81
83
  continue;
82
84
  }
83
85
 
84
- const existing = await door.list();
86
+ const existing = await facade.list();
85
87
  if (existing.length > 0) {
86
88
  report(` ${seed.entityName}: skipped (${existing.length} exist)`);
87
89
  continue;
@@ -91,7 +93,7 @@ export async function runSeeds(
91
93
  // key is exactly what a seed gets wrong.
92
94
  for (const item of data) {
93
95
  try {
94
- await door.write(item);
96
+ await facade.write(item);
95
97
  } catch (cause) {
96
98
  throw new Error(
97
99
  `Seed '${seed.entityName}' failed on ${JSON.stringify(item)}: ${(cause as Error)?.message ?? cause}`,
@@ -104,7 +106,7 @@ export async function runSeeds(
104
106
  }
105
107
 
106
108
  /** A seed is not a client. */
107
- function doorFor(app: App, entityName: string): SeedDoor | undefined {
109
+ function facadeFor(app: App, entityName: string): SeedFacade | undefined {
108
110
  let handler: Record<string, Function> | undefined;
109
111
  try { handler = app.resolve<Record<string, Function>>(facadeKeyOf(entityName)); } catch {}
110
112
 
@@ -1,8 +1,9 @@
1
1
  /** Where a STATED contract and the signature it is about have stopped agreeing. */
2
- import type { FrondDescriptor, HandlerEntry } from '../descriptor/frond.js';
3
- import type { ScanDiagnostic } from '../scan.js';
2
+ import type { FrondDescriptor } from '../descriptor/FrondDescriptor.js';
3
+ import type { HandlerEntry } from '../descriptor/HandlerEntry.js';
4
+ import type { Diagnostic } from '../diagnostic.js';
4
5
  import type { BindingPlan } from '../wire/binding.js';
5
- import type { Signature } from '../wire/signature.js';
6
+ import type { Signature } from '../wire/Signature.js';
6
7
 
7
8
  /** The parameters a binding plan names, against the ones the method declares. */
8
9
  function namesDisagreeing(plan: BindingPlan, signature: Signature): string[] {
@@ -12,8 +13,8 @@ function namesDisagreeing(plan: BindingPlan, signature: Signature): string[] {
12
13
  }
13
14
 
14
15
  /** What a frond's stated contracts no longer match. */
15
- export function statementDrift(frond: FrondDescriptor, handler: HandlerEntry): ScanDiagnostic[] {
16
- const found: ScanDiagnostic[] = [];
16
+ export function statementDrift(frond: FrondDescriptor, handler: HandlerEntry): Diagnostic[] {
17
+ const found: Diagnostic[] = [];
17
18
 
18
19
  for (const [name, override] of Object.entries(frond.operationsOverrides ?? {})) {
19
20
  if (!override.binding) continue;
@@ -6,11 +6,13 @@
6
6
  import { ambient } from '#ambient';
7
7
  import { upperFirst, lowerFirst, type SchemaView } from '@fougere/schema';
8
8
  import type { Container } from '@fougere/container';
9
- import { membersOfTogetherKey, storageKeyOf, entityOfStorageKey, type Storage, type StorageFactory } from '../storage/port.js';
10
- import type { Logger } from '../builtin/logger.js';
11
- import type { ProviderEntry } from '../descriptor/frond.js';
9
+ import { entityOfStorageKey, membersOfTogetherKey, storageKeyOf, type Storage } from '../storage/Storage.js';
10
+ import { type StorageFactory } from '../storage/StorageFactory.js';
11
+ import type { Logger } from '../builtin/Logger.js';
12
+ import type { ProviderEntry } from '../descriptor/ProviderEntry.js';
12
13
  import { StorageGuard } from '../dispatch/StorageGuard.js';
13
14
  import { recording, unwind, type Undo } from './frame.js';
15
+ import type { Diagnostic } from '../diagnostic.js';
14
16
 
15
17
  /** Everything the boot knows that a frame needs, gathered once for every frond. */
16
18
  export interface FrameWorld {
@@ -33,61 +35,87 @@ interface Members {
33
35
  providers: ProviderEntry[];
34
36
  }
35
37
 
36
- /** Each declared name, resolved to what it designates. */
37
- function resolve(names: { entities: string[]; providers: string[] }, declared: readonly ProviderEntry[], world: FrameWorld): Members {
38
- const entities = names.entities.map((member) => {
38
+ /** Each declared name, resolved to what it designates — or nothing, and why. */
39
+ function resolve(
40
+ names: { entities: string[]; providers: string[] },
41
+ declared: readonly ProviderEntry[],
42
+ world: FrameWorld,
43
+ asked: Asked,
44
+ refused: Diagnostic[],
45
+ ): Members | undefined {
46
+ const before = refused.length;
47
+
48
+ const entities = names.entities.flatMap((member) => {
39
49
  const name = lowerFirst(member);
40
50
  const schema = world.entityByName.get(name);
41
51
  if (!schema) {
42
- throw new Error(
43
- `Together<[…${member}…]>: no entity named '${member}' is scanned in this app. ` +
44
- `The first list names entities; a class of this frond goes in the second.`,
45
- );
52
+ refused.push({
53
+ ...asked,
54
+ code: 'together-entity-unknown',
55
+ message: `Together<[…${member}…]>: no entity named '${member}' is scanned in this app. `
56
+ + 'The first list names entities; a class of this frond goes in the second.',
57
+ });
58
+
59
+ return [];
46
60
  }
47
- return { name, schema };
61
+
62
+ return [{ name, schema }];
48
63
  });
49
64
 
50
- const providers = names.providers.map((member) => {
65
+ const providers = names.providers.flatMap((member) => {
51
66
  const entry = declared.find((provider) => provider.ctor.name === member);
52
67
  if (!entry) {
53
- throw new Error(
54
- `Together<[…], [… ${member} …]>: this frond declares no class named '${member}'. ` +
55
- `The second list names providers to rebuild inside the frame — a service, a mirror, ` +
56
- `a repository so that what they write is covered by the unwind.`,
57
- );
68
+ refused.push({
69
+ ...asked,
70
+ code: 'together-provider-unknown',
71
+ message: `Together<[…], [… ${member} …]>: this frond declares no class named '${member}'. `
72
+ + 'The second list names providers to rebuild inside the frame — a service, a mirror, '
73
+ + 'a repository — so that what they write is covered by the unwind.',
74
+ });
75
+
76
+ return [];
58
77
  }
59
- return entry;
78
+
79
+ return [entry];
60
80
  });
61
81
 
62
- return { entities, providers };
82
+ return refused.length === before ? { entities, providers } : undefined;
63
83
  }
64
84
 
85
+ /** Who asked for the frame, and where they wrote it — the same three fields every refusal here carries. */
86
+ type Asked = { severity: 'blocking'; filePath: string; subject: string };
87
+
65
88
  /** A member that cannot write here at all — its frond is hosted elsewhere. */
66
- function refuseRemote(members: Members, world: FrameWorld, key: string): void {
89
+ function remoteMembers(members: Members, world: FrameWorld, asked: Asked, refused: Diagnostic[]): void {
67
90
  for (const member of members.entities) {
68
91
  const frond = world.frondOf.get(member.name);
69
92
  if (frond && !world.hostedHere(frond)) {
70
- throw new Error(
71
- `Together<[…]> (${key}): '${member.name}' belongs to frond '${frond}', which this ` +
72
- `process declares in remotes: — it registers no storage here, so its writes cannot be ` +
73
- `part of a frame. Host the frond here, or split the work and join the halves with a fact.`,
74
- );
93
+ refused.push({
94
+ ...asked,
95
+ code: 'together-member-remote',
96
+ message: `'${member.name}' belongs to frond '${frond}', which this process declares in `
97
+ + 'remotes: — it registers no storage here, so its writes cannot be part of a frame. '
98
+ + 'Host the frond here, or split the work and join the halves with a fact.',
99
+ });
75
100
  }
76
101
  }
77
102
  }
78
103
 
79
104
  /** A provider member writing an entity the frame does not name. */
80
- function refuseUncoveredWrites(members: Members, key: string, world: FrameWorld): void {
105
+ function uncoveredWrites(members: Members, world: FrameWorld, asked: Asked, refused: Diagnostic[]): void {
81
106
  const covered = new Set(members.entities.map((member) => member.name));
82
107
  for (const provider of members.providers) {
83
108
  for (const dep of provider.deps) {
84
109
  const entity = entityOfStorageKey(dep, (name) => world.entityByName.has(name));
85
110
  if (!entity || covered.has(entity)) continue;
86
- throw new Error(
87
- `Together<[…]> (${key}): ${provider.ctor.name} writes ${entity}, which is not in the ` +
88
- `frame's entity list — its writes would escape the unwind. Add it: ` +
89
- `Together<[…, ${upperFirst(entity)}], [… ${provider.ctor.name} …]>.`,
90
- );
111
+ refused.push({
112
+ ...asked,
113
+ filePath: provider.filePath,
114
+ code: 'together-write-uncovered',
115
+ message: `${provider.ctor.name} writes ${entity}, which is not in the frame's entity list `
116
+ + `— its writes would escape the unwind. Add it: `
117
+ + `Together<[…, ${upperFirst(entity)}], [… ${provider.ctor.name} …]>.`,
118
+ });
91
119
  }
92
120
  }
93
121
  }
@@ -121,22 +149,34 @@ async function inScope<R>(
121
149
  /** Register one frame per key a handler or provider of this frond asked for. */
122
150
  export function registerFrames(
123
151
  scope: Container,
124
- keys: Iterable<string>,
152
+ wanted: Iterable<{ key: string; filePath: string }>,
125
153
  providers: readonly ProviderEntry[],
126
154
  world: FrameWorld,
155
+ refused: Diagnostic[],
127
156
  ): void {
128
157
  let registered = 0;
129
- for (const key of new Set(keys)) {
158
+ const seen = new Set<string>();
159
+ for (const { key, filePath } of wanted) {
160
+ if (seen.has(key)) continue;
161
+ seen.add(key);
130
162
  const names = membersOfTogetherKey(key);
131
163
  if (!names) continue;
132
164
  registered += 1;
165
+ const asked = { severity: 'blocking', filePath, subject: key } as const;
133
166
  if (!world.storageFactory) {
134
- throw new Error(`Together<[${names.entities.join(', ')}]> needs storage, and this boot declares none.`);
167
+ refused.push({
168
+ ...asked,
169
+ code: 'together-needs-storage',
170
+ message: `Together<[${names.entities.join(', ')}]> needs storage, and this boot declares none.`,
171
+ });
172
+ continue;
135
173
  }
136
174
 
137
- const members = resolve(names, providers, world);
138
- refuseRemote(members, world, key);
139
- refuseUncoveredWrites(members, key, world);
175
+ const members = resolve(names, providers, world, asked, refused);
176
+ // Nothing left to build a frame out of, and the refusals above already say what is missing.
177
+ if (!members) continue;
178
+ remoteMembers(members, world, asked, refused);
179
+ uncoveredWrites(members, world, asked, refused);
140
180
 
141
181
  const sources = new Set(members.entities.map((member) => world.sourceOf?.(member.name) ?? 'db'));
142
182
  const validator = (storage: Storage, name: string, schema: SchemaView) =>
@@ -0,0 +1,49 @@
1
+ import type { LogRecord } from './LogRecord.js';
2
+
3
+ /**
4
+ * Where one boot's lines wait, and where they go once they can.
5
+ *
6
+ * PER BOOT and never per process: two apps in one process each have their own
7
+ * destinations, and a slot shared between them sent the second app's lines to the first
8
+ * app's facade — measured on `demos/observability`, where only the first of three printed.
9
+ *
10
+ * A boot writes most of what a process ever logs, and it writes it before any emission is
11
+ * registered, so the lines that say what an app is made of are the ones a destination
12
+ * would miss. Bounded: a boot that never finishes must not grow, and what is dropped is
13
+ * the OLDEST since the lines explaining a refusal are the last.
14
+ */
15
+ export class Carry {
16
+ private held: LogRecord[] = [];
17
+ private take?: (line: LogRecord) => void;
18
+
19
+ static readonly MAX = 500;
20
+
21
+ /** Take it now, or keep it for whoever arrives. */
22
+ push(record: LogRecord): void {
23
+ if (this.take) {
24
+ try {
25
+ this.take(record);
26
+ } catch { /* announcing never breaks logging, for the same reason a sink does not */ }
27
+ return;
28
+ }
29
+ this.held.push(record);
30
+ if (this.held.length > Carry.MAX) this.held.shift();
31
+ }
32
+
33
+ /** Hand what is held over, and everything after it. */
34
+ to(take: (line: LogRecord) => void): () => void {
35
+ this.take = take;
36
+ for (const line of this.held.splice(0)) take(line);
37
+
38
+ return () => { this.take = undefined; };
39
+ }
40
+
41
+ /**
42
+ * Forget what is still held — a boot that refused, or an app that declares no
43
+ * destination. Nothing is printed: the console had every one of these lines when it was
44
+ * written, and the hold exists only to hand them on later.
45
+ */
46
+ forget(): void {
47
+ this.held.length = 0;
48
+ }
49
+ }
@@ -0,0 +1 @@
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
@@ -0,0 +1,12 @@
1
+ import type { LogLevel } from './LogLevel.js';
2
+
3
+ /** One line, before it was formatted for a terminal. */
4
+ export interface LogRecord {
5
+ level: Exclude<LogLevel, 'silent'>;
6
+ /** The logger's own name — 'boot:app', 'boot:app:catalog'. */
7
+ name: string;
8
+ message: string;
9
+ args: unknown[];
10
+ /** Epoch milliseconds. */
11
+ at: number;
12
+ }
@@ -0,0 +1,4 @@
1
+ import type { LogRecord } from './LogRecord.js';
2
+
3
+ /** Where a line goes once it is written — `@fougere/log` ships one, `observability` another. */
4
+ export type LogSink = (record: LogRecord) => void;
@@ -1,68 +1,8 @@
1
- /** Fougere Logger structured, colored, multi-runtime. */
2
-
3
- export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
4
-
5
- /** One line, before it was formatted for a terminal. */
6
- export interface LogRecord {
7
- level: Exclude<LogLevel, 'silent'>;
8
- /** The logger's own name — 'boot:app', 'boot:app:catalog'. */
9
- name: string;
10
- message: string;
11
- args: unknown[];
12
- /** Epoch milliseconds. */
13
- at: number;
14
- }
15
-
16
- /** Where a line goes once it is written — `@fougere/log` ships one, `observability` another. */
17
- export type LogSink = (record: LogRecord) => void;
18
-
19
- /**
20
- * Where one boot's lines wait, and where they go once they can.
21
- *
22
- * PER BOOT and never per process: two apps in one process each have their own
23
- * destinations, and a slot shared between them sent the second app's lines to the first
24
- * app's door — measured on `demos/observability`, where only the first of three printed.
25
- *
26
- * A boot writes most of what a process ever logs, and it writes it before any emission is
27
- * registered, so the lines that say what an app is made of are the ones a destination
28
- * would miss. Bounded: a boot that never finishes must not grow, and what is dropped is
29
- * the OLDEST since the lines explaining a refusal are the last.
30
- */
31
- export class Carry {
32
- private held: LogRecord[] = [];
33
- private take?: (line: LogRecord) => void;
34
-
35
- static readonly MAX = 500;
36
-
37
- /** Take it now, or keep it for whoever arrives. */
38
- push(record: LogRecord): void {
39
- if (this.take) {
40
- try {
41
- this.take(record);
42
- } catch { /* announcing never breaks logging, for the same reason a sink does not */ }
43
- return;
44
- }
45
- this.held.push(record);
46
- if (this.held.length > Carry.MAX) this.held.shift();
47
- }
48
-
49
- /** Hand what is held over, and everything after it. */
50
- to(take: (line: LogRecord) => void): () => void {
51
- this.take = take;
52
- for (const line of this.held.splice(0)) take(line);
53
-
54
- return () => { this.take = undefined; };
55
- }
56
-
57
- /**
58
- * Forget what is still held — a boot that refused, or an app that declares no
59
- * destination. Nothing is printed: the console had every one of these lines when it was
60
- * written, and the hold exists only to hand them on later.
61
- */
62
- forget(): void {
63
- this.held.length = 0;
64
- }
65
- }
1
+ import type { LogLevel } from './LogLevel.js';
2
+ import type { LogRecord } from './LogRecord.js';
3
+ import type { Carry } from './Carry.js';
4
+ import type { LoggerOptions } from './LoggerOptions.js';
5
+ import type { Rendered } from './Rendered.js';
66
6
 
67
7
  const LEVELS: Record<LogLevel, number> = { debug: 0, info: 1, warn: 2, error: 3, silent: 4 };
68
8
 
@@ -125,19 +65,6 @@ function stamp(at: number | Date): string {
125
65
  return `${h}:${m}:${s}.${ms}`;
126
66
  }
127
67
 
128
- export interface LoggerOptions {
129
- /** Logger name / prefix. */
130
- name?: string;
131
- /**
132
- * Where its lines go — one boot's, so two apps in a process do not share a door. A
133
- * logger without one writes to the console and nowhere else, which is what the boot's
134
- * first lines do and what an app declaring no destination does forever.
135
- */
136
- carry?: Carry;
137
- /** Force color on/off. Auto-detected by default. */
138
- color?: boolean;
139
- }
140
-
141
68
  export class Logger {
142
69
  private name: string;
143
70
  private color: boolean;
@@ -176,26 +103,6 @@ export class Logger {
176
103
  }
177
104
  }
178
105
 
179
- /**
180
- * One line, ready for a terminal — the console arguments and which method takes them.
181
- *
182
- * Here rather than inside the class because the boot is not the only writer: a destination
183
- * that prints (`@fougere/log`) hands its own record to the same formatting, so the two
184
- * outputs cannot drift.
185
- *
186
- * One console method per level: `debug` and `info` both went to `console.log`, so nothing
187
- * downstream — a terminal filter, a collector — could tell them apart.
188
- */
189
- export interface Rendered {
190
- level: Exclude<LogLevel, 'silent'>;
191
- name: string;
192
- message: string;
193
- /** Absent on most lines: a message usually carries its own detail. */
194
- args?: unknown[] | null;
195
- /** Epoch milliseconds from a logger, a `Date` from an entity that stamped it. */
196
- at: number | Date;
197
- }
198
-
199
106
  export function formatted(
200
107
  record: Rendered,
201
108
  color = supportsColor(),
@@ -0,0 +1,14 @@
1
+ import type { Carry } from './Carry.js';
2
+
3
+ export interface LoggerOptions {
4
+ /** Logger name / prefix. */
5
+ name?: string;
6
+ /**
7
+ * Where its lines go — one boot's, so two apps in a process do not share a facade. A
8
+ * logger without one writes to the console and nowhere else, which is what the boot's
9
+ * first lines do and what an app declaring no destination does forever.
10
+ */
11
+ carry?: Carry;
12
+ /** Force color on/off. Auto-detected by default. */
13
+ color?: boolean;
14
+ }
@@ -0,0 +1,21 @@
1
+ import type { LogLevel } from './LogLevel.js';
2
+
3
+ /**
4
+ * One line, ready for a terminal — the console arguments and which method takes them.
5
+ *
6
+ * Here rather than inside the class because the boot is not the only writer: a destination
7
+ * that prints (`@fougere/log`) hands its own record to the same formatting, so the two
8
+ * outputs cannot drift.
9
+ *
10
+ * One console method per level: `debug` and `info` both went to `console.log`, so nothing
11
+ * downstream — a terminal filter, a collector — could tell them apart.
12
+ */
13
+ export interface Rendered {
14
+ level: Exclude<LogLevel, 'silent'>;
15
+ name: string;
16
+ message: string;
17
+ /** Absent on most lines: a message usually carries its own detail. */
18
+ args?: unknown[] | null;
19
+ /** Epoch milliseconds from a logger, a `Date` from an entity that stamped it. */
20
+ at: number | Date;
21
+ }
package/src/contract.ts CHANGED
@@ -3,35 +3,57 @@
3
3
  * runtime: the error vocabulary, the invocation shape, the call value, the naming convention.
4
4
  */
5
5
  import { lowerFirst } from '@fougere/schema';
6
- import { Invocation, type InvocationContext } from './wire/Invocation.js';
7
- import type { FrondCall } from './wire/call.js';
6
+ import { Invocation } from './wire/Invocation.js';
7
+ import { type InvocationContext } from './wire/InvocationContext.js';
8
+ import type { FrondCall } from './wire/FrondCall.js';
8
9
 
9
- export { FougereError, ErrorCode, validationErrorsOf } from './wire/errors.js';
10
+ export { ErrorCode } from './wire/ErrorCode.js';
11
+ export { FougereError, validationErrorsOf } from './wire/FougereError.js';
10
12
  // What a read may ask about one field. Here rather than on the main entry because an
11
13
  // adapter reads it to compile a query, and an adapter carries no boot.
12
- export { comparisonOf, comparisonsIn } from './storage/criterion.js';
13
- export type { Comparison } from './storage/criterion.js';
14
+ export { comparisonOf, comparisonsIn } from './storage/Comparison.js';
15
+ export type { Comparison } from './storage/Comparison.js';
14
16
  // A receiver turns a refusal into what may cross a process boundary, and it is not
15
17
  // core's boot — reaching it through the main entry dragged the scanner into a bundle.
16
18
  export { toPublicError } from './wire/http-error.js';
17
19
  export { Invocation } from './wire/Invocation.js';
18
- export type { InvocationContext } from './wire/Invocation.js';
19
- export { Call } from './wire/call.js';
20
+ export type { InvocationContext } from './wire/InvocationContext.js';
21
+ export { Call } from './wire/Call.js';
20
22
  export { RouteAddress } from './wire/RouteAddress.js';
21
- export type { FrondCall, Transport, SignedCall } from './wire/call.js';
22
- export { MAX_BODY_BYTES } from './wire/call.js';
23
+ export type { FrondCall } from './wire/FrondCall.js';
24
+ export type { SignedCall } from './wire/SignedCall.js';
25
+ export type { Transport } from './wire/Transport.js';
26
+ export { MAX_BODY_BYTES } from './wire/SignedCall.js';
23
27
  // The reserved entity, VALUE and not type: a consumer that wants to leave it alone — a
24
28
  // call log ignoring its own reader — has to be able to name it.
25
- export { RPC_ENTITY } from './wire/call.js';
26
- export type { CallPage, CallRecord } from './wire/CallLog.js';
29
+ export { RPC_ENTITY } from './wire/RpcAnswer.js';
30
+ export type { CallPage } from './wire/CallPage.js';
31
+ export type { CallRecord } from './wire/CallRecord.js';
27
32
  // The comparison of two cards, which a consumer runs about a producer — browser-safe on
28
33
  // purpose: a panel showing the drift holds only the two cards, never the app.
29
34
  export { driftOf, agrees, explain } from './wire/drift.js';
30
35
  export type { CardDrift } from './wire/drift.js';
31
36
 
32
37
  /** What `rpc.discover` answers. */
33
- export type { IdentityCard, CardOp, TopologyReport, FrondPlacement, Edge } from './wire/call.js';
34
- export { assertIdentityCard } from './wire/call.js';
38
+ export { refusalsOf, type Refusable } from './wire/refusals.js';
39
+ export type { Addresses } from './wire/Addresses.js';
40
+ export type { Answer } from './wire/Answer.js';
41
+ export type { AnyHandler } from './wire/AnyHandler.js';
42
+ export type { FacadeName } from './wire/FacadeName.js';
43
+ export type { FougereHandlers } from './wire/FougereHandlers.js';
44
+ export type { FougereOperations } from './wire/FougereOperations.js';
45
+ export type { HandlerOf } from './wire/HandlerOf.js';
46
+ export type { Refused } from './wire/Refused.js';
47
+ export type { Rows } from './wire/Rows.js';
48
+ export type { CardOp } from './wire/card/CardOp.js';
49
+ export type { IdentityCard } from './wire/card/IdentityCard.js';
50
+ export type { DeclaredEdge } from './wire/topology/DeclaredEdge.js';
51
+ export type { DeclaredFrond } from './wire/topology/DeclaredFrond.js';
52
+ export type { DeclaredTopology } from './wire/topology/DeclaredTopology.js';
53
+ export type { Edge } from './wire/topology/Edge.js';
54
+ export type { FrondPlacement } from './wire/topology/FrondPlacement.js';
55
+ export type { TopologyReport } from './wire/topology/TopologyReport.js';
56
+ export { assertIdentityCard } from './wire/card/IdentityCard.js';
35
57
 
36
58
  /** The key a class name is filed under — 'Post' → 'post'. */
37
59
  export { lowerFirst } from '@fougere/schema';
@@ -0,0 +1,12 @@
1
+ import type { Signer } from './Signer.js';
2
+ import type { Verifier } from './Verifier.js';
3
+ import type { PublicJwk } from './PublicJwk.js';
4
+
5
+ export interface CryptoPort {
6
+ /** SHA-256. What binds an input to an envelope without carrying the input. */
7
+ sha256(data: Uint8Array): Promise<Uint8Array>;
8
+ /** From a PKCS#8 PEM — what `fougere keys` writes. */
9
+ signerOf(privateKeyPem: string): Promise<Signer>;
10
+ /** From an SPKI PEM (the root's) or a JWK (the one a grant embeds). */
11
+ verifierOf(key: string | PublicJwk): Promise<Verifier>;
12
+ }
@@ -0,0 +1,7 @@
1
+ /** A public key as a grant carries it — `{ kty: 'OKP', crv: 'Ed25519', x }`. */
2
+ export interface PublicJwk {
3
+ kty: string;
4
+ crv?: string;
5
+ x?: string;
6
+ [key: string]: unknown;
7
+ }
@@ -0,0 +1,4 @@
1
+ /** A parsed private key. */
2
+ export interface Signer {
3
+ sign(data: Uint8Array): Promise<Uint8Array>;
4
+ }
@@ -0,0 +1,5 @@
1
+ /** A parsed public key. */
2
+ export interface Verifier {
3
+ /** False, never a throw: a bad signature is an answer, not a failure. */
4
+ verify(data: Uint8Array, signature: Uint8Array): Promise<boolean>;
5
+ }
@@ -1,6 +1,9 @@
1
1
  /** Ed25519 through `node:crypto` — the default realization, and the fast one. */
2
2
  import { createHash, createPrivateKey, createPublicKey, sign, verify } from 'node:crypto';
3
- import type { CryptoPort, PublicJwk, Signer, Verifier } from './port.js';
3
+ import type { CryptoPort } from './CryptoPort.js';
4
+ import type { PublicJwk } from './PublicJwk.js';
5
+ import type { Signer } from './Signer.js';
6
+ import type { Verifier } from './Verifier.js';
4
7
 
5
8
  export const crypto: CryptoPort = {
6
9
  async sha256(data) {
@@ -1,6 +1,9 @@
1
1
  /** Ed25519 through WebCrypto — what a runtime with no `node:` builtin has. */
2
2
  import { derOf } from './encoding.js';
3
- import type { CryptoPort, PublicJwk, Signer, Verifier } from './port.js';
3
+ import type { CryptoPort } from './CryptoPort.js';
4
+ import type { PublicJwk } from './PublicJwk.js';
5
+ import type { Signer } from './Signer.js';
6
+ import type { Verifier } from './Verifier.js';
4
7
 
5
8
  interface WebSubtle {
6
9
  digest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer>;
package/src/define.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { FougereConfig } from './config-loader.js';
1
+ import type { FougereConfig } from './FougereConfig.js';
2
2
 
3
3
  /**
4
4
  * Identity helper for fougere.config.ts — preserves literal types for autocomplete while
@@ -0,0 +1,11 @@
1
+ /** A discovered collector (resolves handler input params from invocation context). */
2
+ export interface CollectorEntry {
3
+ /** Registration key of the TYPE this collector resolves — 'user', 'ability'. */
4
+ typeName: string;
5
+ /** The collector class. */
6
+ ctor: new (...args: never[]) => unknown;
7
+ /** Constructor dependency type names (from AST scan). */
8
+ deps: string[];
9
+ /** Absolute file path (for debugging). */
10
+ filePath: string;
11
+ }