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