@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
@@ -0,0 +1,62 @@
1
+ import { EFFECTIVE_OPERATION_SEMANTICS } from './EffectiveOperationSemantics.js';
2
+ import { type BindingPlan } from './wire/binding.js';
3
+ import { type OperationContract } from './wire/OperationContract.js';
4
+ import { type OperationKind } from './wire/OperationKind.js';
5
+ import type { EffectiveParameter } from './EffectiveParameter.js';
6
+ import type { EffectiveCollector } from './EffectiveCollector.js';
7
+
8
+ export interface EffectiveOperation extends OperationContract {
9
+ /** Stable qualified identity: `blog/public/Post.publish`. */
10
+ id: string;
11
+ /** Human-facing identity independent of placement: `Post.publish`. */
12
+ operation: string;
13
+ name: string;
14
+ kind: OperationKind;
15
+ kindSource: 'explicit' | 'convention';
16
+ handler: {
17
+ className: string;
18
+ address: string;
19
+ filePath: string;
20
+ };
21
+ /** The class and method that execute after an optional operation override. */
22
+ implementation: {
23
+ className: string;
24
+ address: string;
25
+ method: string;
26
+ filePath: string;
27
+ };
28
+ /** Every valid operation has a plan, including the empty plan. */
29
+ binding: BindingPlan;
30
+ parameters: EffectiveParameter[];
31
+ collectors: EffectiveCollector[];
32
+ contexts: string[];
33
+ placement: {
34
+ frond: string;
35
+ runtime: 'local' | 'remote';
36
+ remote?: string;
37
+ };
38
+ /**
39
+ * What running this op reaches, and how much of that crosses a process.
40
+ *
41
+ * `placement` says where the op ANSWERS; this says where it GOES. The pair is what every
42
+ * number a process hard-codes is really a function of — how often a trace is sampled, where
43
+ * a latency histogram's bounds should sit, what a load threshold may assume. An op that
44
+ * answers here and hops twice is not the same subject as one that answers here and hops none.
45
+ *
46
+ * Read from the handler, never from the op: a dependency is declared on the constructor, so
47
+ * the crossing belongs to the CLASS. Every op of one handler reaches the same fronds, and
48
+ * saying otherwise would dress a structural fact as a precise effect.
49
+ */
50
+ reach: {
51
+ fronds: { frond: string; runtime: 'local' | 'remote' }[];
52
+ /** How many of them are a process away — zero when everything it reaches runs here. */
53
+ hops: number;
54
+ };
55
+ exposure: {
56
+ surfaces: string[];
57
+ adapters: string[];
58
+ };
59
+ /** Whether output is an explicitly closed per-operation view. */
60
+ outputClosed: boolean;
61
+ semantics: typeof EFFECTIVE_OPERATION_SEMANTICS;
62
+ }
@@ -1,98 +1,46 @@
1
- /** The operation model after every declaration and convention has been resolved. */
2
1
  import { lowerFirst, type SchemaView } from '@fougere/schema';
3
2
  import { statementDrift } from './boot/statement-drift.js';
3
+ import { reachedBy, servedBy } from './boot/declared.js';
4
4
  import { computeBindingPlan, type BindingPlan } from './wire/binding.js';
5
5
  import { targetOf } from './prefab/prefab.js';
6
- import type { CollectorEntry, FrondDescriptor, HandlerEntry } from './descriptor/frond.js';
6
+ import { EFFECTIVE_OPERATION_SEMANTICS } from './EffectiveOperationSemantics.js';
7
+ import type { CollectorEntry } from './descriptor/CollectorEntry.js';
8
+ import type { FrondDescriptor } from './descriptor/FrondDescriptor.js';
9
+ import type { HandlerEntry } from './descriptor/HandlerEntry.js';
7
10
  import { servedSurfaces } from './descriptor/surface.js';
8
- import type { ScanDiagnostic } from './scan.js';
11
+ import type { Diagnostic } from './diagnostic.js';
9
12
  import { verify } from './verify.js';
10
- import {
11
- inferOperationKind,
12
- type OperationContract,
13
- type OperationKind,
14
- type OperationsMap,
15
- type TypeRef,
16
- knownVerbs,
17
- } from './wire/operation.js';
13
+ import { inferOperationKind, knownVerbs, type OperationContract } from './wire/OperationContract.js';
14
+ import { type OperationKind } from './wire/OperationKind.js';
15
+ import { type OperationsMap } from './wire/OperationsMap.js';
16
+ import { type TypeRef } from './wire/TypeRef.js';
17
+ import type { EffectiveParameter } from './EffectiveParameter.js';
18
+ import type { EffectiveOperation } from './EffectiveOperation.js';
19
+ import type { EffectiveOperationsMap } from './EffectiveOperationsMap.js';
20
+ import type { EffectiveOperationOptions } from './EffectiveOperationOptions.js';
18
21
 
19
22
  type Binding = BindingPlan[number];
20
23
 
21
- export interface EffectiveParameter {
22
- /** Position in the TypeScript signature. Never used to infer provenance. */
23
- position: number;
24
- name: string;
25
- type: string | null;
26
- optional: boolean;
27
- nullable: boolean;
28
- /** `?` and `| undefined` both mean canonical absence. */
29
- undefinable: boolean;
30
- /** The resolved provenance of this parameter. */
31
- binding: Binding;
32
- }
33
-
34
- export interface EffectiveCollector {
35
- parameter: string;
36
- typeName: string;
37
- className: string;
38
- frond: string;
39
- filePath: string;
40
- }
41
-
42
- export interface EffectiveOperation extends OperationContract {
43
- /** Stable qualified identity: `blog/public/Post.publish`. */
44
- id: string;
45
- /** Human-facing identity independent of placement: `Post.publish`. */
46
- operation: string;
47
- name: string;
48
- kind: OperationKind;
49
- kindSource: 'explicit' | 'convention';
50
- handler: {
51
- className: string;
52
- address: string;
53
- filePath: string;
54
- };
55
- /** The class and method that execute after an optional operation override. */
56
- implementation: {
57
- className: string;
58
- address: string;
59
- method: string;
60
- filePath: string;
61
- };
62
- /** Every valid operation has a plan, including the empty plan. */
63
- binding: BindingPlan;
64
- parameters: EffectiveParameter[];
65
- collectors: EffectiveCollector[];
66
- contexts: string[];
67
- placement: {
68
- frond: string;
69
- runtime: 'local' | 'remote';
70
- remote?: string;
71
- };
72
- exposure: {
73
- surfaces: string[];
74
- adapters: string[];
75
- };
76
- /** Whether output is an explicitly closed per-operation view. */
77
- outputClosed: boolean;
78
- semantics: typeof EFFECTIVE_OPERATION_SEMANTICS;
24
+ /**
25
+ * Where an op's work goes: the fronds its handler reaches, and how many are a process away.
26
+ *
27
+ * A frond this app never scanned is not among them. The report can say a call LEFT — that is
28
+ * `placement` — but naming what is on the far side of an address means reading its card, and a
29
+ * card is a discovery rather than a declaration.
30
+ */
31
+ function reachOf(
32
+ deps: readonly string[],
33
+ from: string,
34
+ index: Map<string, string>,
35
+ remotes: Record<string, string>,
36
+ ): EffectiveOperation['reach'] {
37
+ const fronds = reachedBy(deps, from, index)
38
+ .sort()
39
+ .map((frond) => ({ frond, runtime: (remotes[frond] ? 'remote' : 'local') as 'local' | 'remote' }));
40
+
41
+ return { fronds, hops: fronds.filter((one) => one.runtime === 'remote').length };
79
42
  }
80
43
 
81
- export type EffectiveOperationsMap = Map<string, EffectiveOperation>;
82
-
83
- /** The absence rules every door normalises to before the handler is invoked. */
84
- export const EFFECTIVE_OPERATION_SEMANTICS = Object.freeze({
85
- optional: 'undefined' as const,
86
- undefined: 'absence' as const,
87
- null: 'explicit-value' as const,
88
- jsonObjectUndefined: 'omitted' as const,
89
- });
90
-
91
- export interface EffectiveOperationOptions {
92
- diagnostics?: readonly ScanDiagnostic[];
93
- remotes?: Record<string, string>;
94
- adapters?: Record<string, boolean | undefined>;
95
- }
96
44
 
97
45
  /**
98
46
  * One resolved program. The handler map preserves object identity from the scan, so the
@@ -100,13 +48,13 @@ export interface EffectiveOperationOptions {
100
48
  */
101
49
  export class EffectiveOperationModel {
102
50
  readonly operations: EffectiveOperation[];
103
- readonly diagnostics: ScanDiagnostic[];
104
- readonly resolutionDiagnostics: ScanDiagnostic[];
51
+ readonly diagnostics: Diagnostic[];
52
+ readonly resolutionDiagnostics: Diagnostic[];
105
53
 
106
54
  constructor(
107
55
  operations: EffectiveOperation[],
108
- diagnostics: ScanDiagnostic[],
109
- resolutionDiagnostics: ScanDiagnostic[],
56
+ diagnostics: Diagnostic[],
57
+ resolutionDiagnostics: Diagnostic[],
110
58
  private readonly byHandler: Map<HandlerEntry, EffectiveOperationsMap>,
111
59
  ) {
112
60
  this.operations = operations;
@@ -126,11 +74,13 @@ export function resolveEffectiveOperations(
126
74
  ): EffectiveOperationModel {
127
75
  const operations: EffectiveOperation[] = [];
128
76
  const byHandler = new Map<HandlerEntry, EffectiveOperationsMap>();
129
- const resolutionDiagnostics: ScanDiagnostic[] = [];
77
+ const resolutionDiagnostics: Diagnostic[] = [];
130
78
  const scanDiagnostics = [...(options.diagnostics ?? [])];
131
79
  const schemas = new Map(
132
80
  fronds.flatMap((frond) => frond.entities.map((entity) => [entity.name, entity.entityClass] as const)),
133
81
  );
82
+ /** Every address a frond answers, so a dependency naming one is read as the crossing it is. */
83
+ const served = servedBy(fronds);
134
84
 
135
85
  // Input ambiguity is produced where schemas are available (the scanner), but it is a
136
86
  // resolution failure. Lift it into the same refusal table as kind/binding/topology.
@@ -285,6 +235,7 @@ export function resolveEffectiveOperations(
285
235
  runtime: remote ? 'remote' : 'local',
286
236
  ...(remote ? { remote } : {}),
287
237
  },
238
+ reach: reachOf(handler.deps, frond.name, served, options.remotes ?? {}),
288
239
  exposure: {
289
240
  surfaces: servedSurfaces(frond, handler).map((surface) => surface ?? 'default'),
290
241
  adapters: exposedAdapters(handler, options.adapters),
@@ -300,19 +251,12 @@ export function resolveEffectiveOperations(
300
251
 
301
252
  // Topology and DI are part of the same effective program. A dependency targeting an
302
253
  // actually remote frond is a refusal, not the warning appropriate to a future split.
303
- for (const violation of verify({ fronds })) {
304
- const remoteBoundary = options.remotes?.[violation.frond] !== undefined
305
- || options.remotes?.[violation.dependsOn.frond] !== undefined;
306
- resolutionDiagnostics.push({
307
- severity: remoteBoundary && violation.rule === 'cross-frond-dependency'
308
- ? 'blocking'
309
- : violation.severity,
310
- code: violation.rule,
311
- filePath: violation.filePath,
312
- frond: violation.frond,
313
- subject: violation.subject,
314
- message: violation.message,
315
- });
254
+ for (const misplaced of verify({ fronds })) {
255
+ const remoteBoundary = options.remotes?.[misplaced.frond] !== undefined
256
+ || options.remotes?.[misplaced.dependsOn.frond] !== undefined;
257
+ resolutionDiagnostics.push(remoteBoundary && misplaced.code === 'cross-frond-dependency'
258
+ ? { ...misplaced, severity: 'blocking' }
259
+ : misplaced);
316
260
  }
317
261
 
318
262
  const resolution = uniqueDiagnostics(resolutionDiagnostics);
@@ -339,7 +283,7 @@ function normalizeBinding(
339
283
  handler: HandlerEntry,
340
284
  frond: FrondDescriptor,
341
285
  name: string,
342
- diagnostics: ScanDiagnostic[],
286
+ diagnostics: Diagnostic[],
343
287
  ): (OperationContract & { binding: BindingPlan }) | undefined {
344
288
  const params = contract.signature?.params ?? [];
345
289
  if (!contract.binding) {
@@ -394,7 +338,7 @@ function validateProvenance(
394
338
  contract: OperationContract & { binding: BindingPlan },
395
339
  parameters: EffectiveParameter[],
396
340
  localCollectors: Map<string, CollectorEntry[]>,
397
- diagnostics: ScanDiagnostic[],
341
+ diagnostics: Diagnostic[],
398
342
  ): boolean {
399
343
  let valid = true;
400
344
  const declared = (handler.ctor as { __ops?: Record<string, OperationContract> }).__ops?.[name];
@@ -502,7 +446,7 @@ function implementationOf(
502
446
  frond: FrondDescriptor,
503
447
  handler: HandlerEntry,
504
448
  name: string,
505
- diagnostics: ScanDiagnostic[],
449
+ diagnostics: Diagnostic[],
506
450
  ): EffectiveOperation['implementation'] | undefined {
507
451
  const override = frond.operationsOverrides?.[name];
508
452
  const candidates = override?.handlerName
@@ -575,7 +519,7 @@ function exposedAdapters(
575
519
  .sort();
576
520
  }
577
521
 
578
- function uniqueDiagnostics(diagnostics: readonly ScanDiagnostic[]): ScanDiagnostic[] {
522
+ function uniqueDiagnostics(diagnostics: readonly Diagnostic[]): Diagnostic[] {
579
523
  const seen = new Set<string>();
580
524
  return diagnostics.filter((diagnostic) => {
581
525
  const key = [diagnostic.code, diagnostic.filePath, diagnostic.subject, diagnostic.message].join('\0');
@@ -0,0 +1,7 @@
1
+ import type { Diagnostic } from './diagnostic.js';
2
+
3
+ export interface EffectiveOperationOptions {
4
+ diagnostics?: readonly Diagnostic[];
5
+ remotes?: Record<string, string>;
6
+ adapters?: Record<string, boolean | undefined>;
7
+ }
@@ -0,0 +1,7 @@
1
+ /** The absence rules every facade normalises to before the handler is invoked. */
2
+ export const EFFECTIVE_OPERATION_SEMANTICS = Object.freeze({
3
+ optional: 'undefined' as const,
4
+ undefined: 'absence' as const,
5
+ null: 'explicit-value' as const,
6
+ jsonObjectUndefined: 'omitted' as const,
7
+ });
@@ -0,0 +1,3 @@
1
+ import type { EffectiveOperation } from './EffectiveOperation.js';
2
+
3
+ export type EffectiveOperationsMap = Map<string, EffectiveOperation>;
@@ -0,0 +1,13 @@
1
+ import type { Binding } from './Binding.js';
2
+ export interface EffectiveParameter {
3
+ /** Position in the TypeScript signature. Never used to infer provenance. */
4
+ position: number;
5
+ name: string;
6
+ type: string | null;
7
+ optional: boolean;
8
+ nullable: boolean;
9
+ /** `?` and `| undefined` both mean canonical absence. */
10
+ undefinable: boolean;
11
+ /** The resolved provenance of this parameter. */
12
+ binding: Binding;
13
+ }
@@ -0,0 +1,6 @@
1
+ export interface EntityNode {
2
+ name: string;
3
+ frond: string;
4
+ refs: string[]; // entity names this entity references
5
+ referencedBy: string[]; // entity names that reference this entity
6
+ }
@@ -1,17 +1,18 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { existsSync } from 'node:fs';
3
- import type { AuthConfig } from './boot/auth.js';
4
- import type { LogLevel } from './builtin/logger.js';
5
- import type { ConventionsInput } from './conventions.js';
3
+ import type { AuthConfig } from './boot/AuthConfig.js';
4
+ import type { LogLevel } from './builtin/LogLevel.js';
5
+ import type { ConventionsInput } from './ConventionsInput.js';
6
+ import type { NameOf } from './NameOf.js';
7
+ import type { PortChoice } from './PortChoice.js';
6
8
  import { getModuleLoader } from './loader.js';
7
-
8
- // ── Types ────────────────────────────────────────
9
+ import type { AdapterConfig } from './AdapterConfig.js';
9
10
 
10
11
  export interface FougereConfig {
11
12
  /** Database configuration — the DEFAULT source, the one an entity lands in unnamed. */
12
13
  db?: 'sqlite' | { dialect: 'sqlite'; path?: string } | false;
13
14
  /** The other places rows live — a name, an engine, and the entities it holds. */
14
- sources?: Record<string, { dialect?: 'sqlite'; path?: string; entities: string[] }>;
15
+ sources?: Record<string, { dialect?: 'sqlite'; path?: string; entities: NameOf<'entity'>[] }>;
15
16
  /**
16
17
  * The names the scan reads instead of deriving them — the import scope, the fronds directory,
17
18
  * the seven convention directories.
@@ -19,29 +20,22 @@ export interface FougereConfig {
19
20
  conventions?: ConventionsInput;
20
21
  /** How much every logger says. */
21
22
  logLevel?: LogLevel;
22
- /** Remote fronds — frondName → base URL. */
23
+ /**
24
+ * Remote fronds — frondName → base URL.
25
+ *
26
+ * The KEY is not narrowed to `NameOf<'frond'>`, and that is a choice: constraining it means
27
+ * making every key optional, which puts `| undefined` on the values and changes what six
28
+ * readers here already treat as present. The name is checked at boot instead.
29
+ */
23
30
  remotes?: Record<string, string>;
24
- /** Which realization answers which port — port class name → implementation class name. */
25
31
  /** What answers a port — a name, or the chain from the outside in. */
26
- ports?: Record<string, string | readonly string[]>;
32
+ ports?: PortChoice;
27
33
  /** Auth declaration — picks a provider package and forwards options to it. */
28
34
  auth?: AuthConfig;
29
35
  /** Which protocol adapters this app serves. */
30
36
  adapters?: AdapterConfig;
31
37
  }
32
38
 
33
- /** Protocol adapters, by the name of the package that provides them. */
34
- export interface AdapterConfig {
35
- /** `@fougere/adapter-rest` — REST under `/api/{frond}/{plural}`. */
36
- rest?: boolean;
37
- /** `@fougere/adapter-graphql` — a GraphQL schema over the same operations. */
38
- graphql?: boolean;
39
- /** A surface of your own; the framework only records that you declared it. */
40
- [adapter: string]: boolean | undefined;
41
- }
42
-
43
- // ── Loading ──────────────────────────────────────
44
-
45
39
  const CONFIG_FILES = ['fougere.config.ts', 'fougere.config.js', 'fougere.config.mjs'];
46
40
 
47
41
  async function loadConfigFrom(dir: string, fresh?: boolean): Promise<FougereConfig> {
@@ -0,0 +1,2 @@
1
+ /** The names the scan found, per kind. Augmented from the generated file, empty otherwise. */
2
+ export interface FougereNames {}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Each port, and the classes that extend it — a RELATION, not two lists.
3
+ *
4
+ * Two unions would accept `ports: { Payment: 'FileStorage' }`: both names exist, and nothing
5
+ * would say that one does not answer the other. What the boot refuses, the type refuses first.
6
+ */
7
+ export interface FougerePorts {}
@@ -1,55 +1,17 @@
1
1
  import { resolve } from 'node:path';
2
+ import type { NameOf } from './NameOf.js';
2
3
  import { existsSync } from 'node:fs';
3
- import type { EntityConstructor, SchemaView } from '@fougere/schema';
4
- import type { BindingPlan } from './wire/binding.js';
5
-
6
- // ── Types ────────────────────────────────────────
7
-
8
- /** Per-operation override. */
9
- export interface OperationOverride {
10
- /** Force operation kind, over the naming convention (`isReadOp`). */
11
- kind?: 'query' | 'command';
12
- /** The GraphQL root field this op answers to. */
13
- graphql?: string;
14
- /**
15
- * Where this op answers over REST — the dual of `graphql:`, and the frond's to say for
16
- * the same reason: how an operation is CALLED belongs beside it, not in whatever host
17
- * mounts the router. The prefix stays the host's: naming is the frond's, mounting is not.
18
- */
19
- rest?: { method?: string; path?: string; status?: number };
20
- /**
21
- * Handler class to delegate to (overrides the default `{Entity}Handler` lookup).
22
- * Class name is used to resolve from DI. E.g. `ArchiveHandler` → `app.resolve('ArchiveHandler')`.
23
- */
24
- handler?: EntityConstructor;
25
- /** Method name on `handler` (defaults to the operation name). */
26
- method?: string;
27
- /** CASL ability check (e.g. */
28
- policy?: string;
29
-
30
- // ── The contract itself — see the note above ──
31
-
32
- /** What validates the input. The view carries its own mode (`partial()` → patch). */
33
- input?: SchemaView;
34
- /**
35
- * Where each argument is read from — states what the scan would otherwise derive
36
- * from the method signature. An empty array is meaningful: "this op takes nothing".
37
- */
38
- binding?: BindingPlan;
39
-
40
- /** Per-operation output view, below prefab declarations and above handler/entity defaults. */
41
- output?: SchemaView;
42
- }
4
+ import type { OperationOverride } from './OperationOverride.js';
43
5
 
44
6
  export interface FrondConfig {
45
7
  /** Class names exposed as the frond's public contract (all surfaces). */
46
- expose?: string[];
8
+ expose?: (NameOf<'handler'> | NameOf<'entity'>)[];
47
9
  /** The entities this frond may read ACROSS sources, by name. */
48
- reads?: string[];
10
+ reads?: NameOf<'entity'>[];
49
11
  /** Per-surface entity lists. Overrides default deduction for each named surface. */
50
- surfaces?: Record<string, string[]>;
12
+ surfaces?: Record<string, NameOf<'entity'>[]>;
51
13
  /** Interface → implementation bindings for DI (e.g. { Database: 'SqliteDatabase' }). */
52
- bindings?: Record<string, string>;
14
+ bindings?: Record<string, NameOf<'provider'>>;
53
15
  /**
54
16
  * The ops that FINISH a fact, in the order they run — by class name, keyed by fact.
55
17
  *
@@ -57,13 +19,13 @@ export interface FrondConfig {
57
19
  * fact itself and it has one owner. Without it two links refuse: nothing would say which
58
20
  * ran first, and scan order is not an answer.
59
21
  */
60
- pipes?: Record<string, string[]>;
22
+ pipes?: Record<NameOf<'entity'>, NameOf<'handler'>[]>;
61
23
  /**
62
24
  * How far a middleware reaches, by class name. A middleware answers for its own frond
63
25
  * without being named here; `'app'` is the exception, and it is stated by the frond
64
26
  * that decides for the others.
65
27
  */
66
- middlewares?: Record<string, 'frond' | 'app'>;
28
+ middlewares?: Record<NameOf<'middleware'>, 'frond' | 'app'>;
67
29
  /** Per-operation overrides. Key = operation name (method name on a handler). */
68
30
  operations?: Record<string, OperationOverride>;
69
31
  }
@@ -1,44 +1,22 @@
1
- /** A frond stated by its author, for an app that will not scan. */
2
1
  import { lowerFirst, type SchemaView } from '@fougere/schema';
3
- import type {
4
- CollectorEntry, EntityEntry, FrondDescriptor, HandlerEntry, MiddlewareEntry,
5
- PresenterEntry, ProviderEntry, SeedEntry,
6
- } from './descriptor/frond.js';
7
- import { DEFAULT_CONVENTIONS } from './conventions.js';
2
+ import type { CollectorEntry } from './descriptor/CollectorEntry.js';
3
+ import type { EntityEntry } from './descriptor/EntityEntry.js';
4
+ import type { FrondDescriptor } from './descriptor/FrondDescriptor.js';
5
+ import type { HandlerEntry } from './descriptor/HandlerEntry.js';
6
+ import type { MiddlewareEntry } from './descriptor/MiddlewareEntry.js';
7
+ import type { PresenterEntry } from './descriptor/PresenterEntry.js';
8
+ import type { ProviderEntry } from './descriptor/ProviderEntry.js';
9
+ import type { SeedEntry } from './descriptor/SeedEntry.js';
10
+ import { DEFAULT_CONVENTIONS } from './Conventions.js';
8
11
  import { getPresenterFields } from './prefab/presenter.js';
9
- import type { OperationContract } from './wire/operation.js';
12
+ import type { OperationContract } from './wire/OperationContract.js';
13
+ import type { DeclaredSubject } from './DeclaredSubject.js';
14
+ import type { DeclaredHandler } from './DeclaredHandler.js';
15
+ import type { Declared } from './Declared.js';
10
16
 
11
17
  /** A class, as a declaration hands it over: the constructor itself. */
12
18
  type Ctor = new (...args: never[]) => unknown;
13
19
 
14
- /** What a subject needs beyond its class, when its constructor names a frame or a port. */
15
- export interface DeclaredSubject {
16
- ctor: Ctor;
17
- deps?: string[];
18
- }
19
-
20
- /** A handler, and the surface it answers on when it is not the default one. */
21
- export interface DeclaredHandler extends DeclaredSubject {
22
- /**
23
- * The scan reads this from the directory (`handlers/public/`), so a statement has to say it: two
24
- * handlers over one entity collide on their address otherwise, and the refusal names the same
25
- * route twice.
26
- */
27
- surface?: string;
28
- /**
29
- * What each method takes and answers — read from SOURCE by the scan, and unreachable
30
- * from a class at runtime. A prefab declares its own (`Crud.__ops`) and needs nothing
31
- * here; a method someone wrote does, or the route it should serve does not exist.
32
- */
33
- operations?: ReadonlyMap<string, OperationContract> | Record<string, OperationContract>;
34
- }
35
-
36
- /** A class on its own, or a class with what it asks for. */
37
- export type Declared = Ctor | (DeclaredSubject & {
38
- /** The container key, when the class's own name cannot be trusted to survive a build. */
39
- name?: string;
40
- });
41
-
42
20
  const ctorOf = (d: Declared): Ctor => (typeof d === 'function' ? d : d.ctor);
43
21
 
44
22
  /**
@@ -57,6 +35,7 @@ function subjectOf(ctor: Ctor, kind: string): { name: string } {
57
35
 
58
36
  return subject;
59
37
  }
38
+
60
39
  const depsOf = (d: Declared): string[] => (typeof d === 'function' ? [] : d.deps ?? []);
61
40
 
62
41
  /**
@@ -0,0 +1,7 @@
1
+ /** What a deployment hands a frond that CALLS: its own key, and the root's word for it. */
2
+ export interface FrondIdentity {
3
+ /** The frond's private key, PEM (PKCS#8). */
4
+ privateKey: string;
5
+ /** The root's statement binding this frond's name to its public key. */
6
+ grant: string;
7
+ }
package/src/NameOf.ts ADDED
@@ -0,0 +1,12 @@
1
+ import type { FougereNames } from './FougereNames.js';
2
+
3
+ /**
4
+ * One kind's union, or `string` where nothing was generated.
5
+ *
6
+ * A conditional and never `Partial<FougereNames>`: an un-augmented interface makes that
7
+ * `Partial<{}>`, which in TypeScript means "anything non-nullish" — the silent hole `adapters:`
8
+ * already has. Falling back to `string` is what a config had before this file existed.
9
+ */
10
+ export type NameOf<K extends string> = FougereNames extends Record<K, infer Found extends string>
11
+ ? Found
12
+ : string;
@@ -0,0 +1,38 @@
1
+ import type { EntityConstructor, SchemaView } from '@fougere/schema';
2
+ import type { BindingPlan } from './wire/binding.js';
3
+
4
+ /** Per-operation override. */
5
+ export interface OperationOverride {
6
+ /** Force operation kind, over the naming convention (`isReadOp`). */
7
+ kind?: 'query' | 'command';
8
+ /** The GraphQL root field this op answers to. */
9
+ graphql?: string;
10
+ /**
11
+ * Where this op answers over REST — the dual of `graphql:`, and the frond's to say for
12
+ * the same reason: how an operation is CALLED belongs beside it, not in whatever host
13
+ * mounts the router. The prefix stays the host's: naming is the frond's, mounting is not.
14
+ */
15
+ rest?: { method?: string; path?: string; status?: number };
16
+ /**
17
+ * Handler class to delegate to (overrides the default `{Entity}Handler` lookup).
18
+ * Class name is used to resolve from DI. E.g. `ArchiveHandler` → `app.resolve('ArchiveHandler')`.
19
+ */
20
+ handler?: EntityConstructor;
21
+ /** Method name on `handler` (defaults to the operation name). */
22
+ method?: string;
23
+ /** CASL ability check (e.g. */
24
+ policy?: string;
25
+
26
+ // ── The contract itself — see the note above ──
27
+
28
+ /** What validates the input. The view carries its own mode (`partial()` → patch). */
29
+ input?: SchemaView;
30
+ /**
31
+ * Where each argument is read from — states what the scan would otherwise derive
32
+ * from the method signature. An empty array is meaningful: "this op takes nothing".
33
+ */
34
+ binding?: BindingPlan;
35
+
36
+ /** Per-operation output view, below prefab declarations and above handler/entity defaults. */
37
+ output?: SchemaView;
38
+ }
@@ -0,0 +1,13 @@
1
+ import type { FougerePorts } from './FougerePorts.js';
2
+ import type { AnswerFor } from './AnswerFor.js';
3
+
4
+ /**
5
+ * The ports of this app, each mapped to what may answer it.
6
+ *
7
+ * `keyof FougerePorts` is `never` before generation, and a mapped type over `never` is `{}` —
8
+ * which would refuse every key rather than accept any. So the empty case widens to the plain
9
+ * record the config had, and only a generated file narrows it.
10
+ */
11
+ export type PortChoice = keyof FougerePorts extends never
12
+ ? Record<string, string | readonly string[]>
13
+ : { [Port in keyof FougerePorts]?: AnswerFor<Port & string> | readonly AnswerFor<Port & string>[] };