@fougere/core 0.9.3-alpha.0 → 0.11.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} +3 -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} +9 -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 -16
- 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} +5 -4
- package/dist/Source.js.map +1 -0
- 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/Hosting.d.ts +38 -0
- package/dist/boot/Hosting.d.ts.map +1 -0
- package/dist/boot/Hosting.js +2 -0
- package/dist/boot/Hosting.js.map +1 -0
- package/dist/boot/Peer.d.ts +16 -0
- package/dist/boot/Peer.d.ts.map +1 -0
- package/dist/boot/Peer.js +2 -0
- package/dist/boot/Peer.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 +196 -59
- 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 +2 -2
- package/dist/boot/declared.d.ts.map +1 -1
- package/dist/boot/declared.js +36 -4
- package/dist/boot/declared.js.map +1 -1
- 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 +21 -7
- package/dist/boot/install.d.ts.map +1 -1
- package/dist/boot/install.js +41 -27
- package/dist/boot/install.js.map +1 -1
- package/dist/boot/ownership.d.ts +7 -5
- package/dist/boot/ownership.d.ts.map +1 -1
- package/dist/boot/ownership.js +81 -40
- package/dist/boot/ownership.js.map +1 -1
- package/dist/boot/peerOver.d.ts +4 -0
- package/dist/boot/peerOver.d.ts.map +1 -0
- package/dist/boot/peerOver.js +12 -0
- package/dist/boot/peerOver.js.map +1 -0
- 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/relations.d.ts +54 -0
- package/dist/boot/relations.d.ts.map +1 -0
- package/dist/boot/relations.js +150 -0
- package/dist/boot/relations.js.map +1 -0
- 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 +11 -4
- package/dist/boot/together.d.ts.map +1 -1
- package/dist/boot/together.js +62 -28
- 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 +35 -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/Dependent.d.ts +19 -0
- package/dist/dispatch/Dependent.d.ts.map +1 -0
- package/dist/dispatch/Dependent.js +2 -0
- package/dist/dispatch/Dependent.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 +15 -2
- package/dist/dispatch/Dispatcher.d.ts.map +1 -1
- package/dist/dispatch/Dispatcher.js +36 -8
- package/dist/dispatch/Dispatcher.js.map +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/Journal.d.ts +25 -0
- package/dist/dispatch/Journal.d.ts.map +1 -0
- package/dist/dispatch/Journal.js +3 -0
- package/dist/dispatch/Journal.js.map +1 -0
- 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/RelationCheck.d.ts +22 -0
- package/dist/dispatch/RelationCheck.d.ts.map +1 -0
- package/dist/dispatch/RelationCheck.js +2 -0
- package/dist/dispatch/RelationCheck.js.map +1 -0
- package/dist/dispatch/Release.d.ts +36 -0
- package/dist/dispatch/Release.d.ts.map +1 -0
- package/dist/dispatch/Release.js +124 -0
- package/dist/dispatch/Release.js.map +1 -0
- 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 +24 -13
- package/dist/dispatch/StorageGuard.d.ts.map +1 -1
- package/dist/dispatch/StorageGuard.js +69 -12
- 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 +97 -33
- 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} +1 -1
- 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} +10 -18
- package/dist/wire/Emit.d.ts.map +1 -0
- package/dist/wire/{emit.js → Emit.js} +17 -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 +4 -11
- package/dist/wire/Invocation.d.ts.map +1 -1
- package/dist/wire/Invocation.js +4 -1
- package/dist/wire/Invocation.js.map +1 -1
- package/dist/wire/InvocationContext.d.ts +12 -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 +14 -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 -17
- 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} +9 -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} +28 -125
- 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 -20
- 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} +7 -23
- 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/Hosting.ts +38 -0
- package/src/boot/Peer.ts +15 -0
- package/src/boot/apply.ts +2 -2
- package/src/boot/bootstrap.ts +240 -87
- package/src/boot/card.ts +15 -11
- package/src/boot/declared.ts +40 -5
- package/src/boot/frame.ts +2 -2
- package/src/boot/hosted.ts +1 -1
- package/src/boot/install.ts +65 -33
- package/src/boot/ownership.ts +92 -52
- package/src/boot/peerOver.ts +17 -0
- package/src/boot/ports.ts +52 -41
- package/src/boot/relations.ts +172 -0
- 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 +82 -38
- 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 +36 -16
- 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/Dependent.ts +19 -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 +44 -8
- 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/Journal.ts +26 -0
- 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/RelationCheck.ts +21 -0
- package/src/dispatch/Release.ts +156 -0
- 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 +75 -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 +101 -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} +10 -18
- 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} +24 -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 +5 -12
- package/src/wire/InvocationContext.ts +11 -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 +14 -0
- package/src/wire/Transport.ts +5 -0
- package/src/wire/{signature.ts → TypeRef.ts} +0 -18
- 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 -113
- 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/source.js.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 -130
- 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 -178
- package/src/wire/middleware.ts +0 -43
package/src/boot/ports.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { nameOf
|
|
1
|
+
import { nameOf } from '../descriptor/FrondDescriptor.js';
|
|
2
|
+
import { type ProviderEntry } from '../descriptor/ProviderEntry.js';
|
|
3
|
+
import { basesOf } from '../descriptor/bases.js';
|
|
4
|
+
import type { Diagnostic } from '../diagnostic.js';
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* The framework's own ports — a class core exports that a user class may stand in front of.
|
|
@@ -24,23 +27,29 @@ export const SEAMS = new Set(['Storage']);
|
|
|
24
27
|
export function seamChains(
|
|
25
28
|
providers: ProviderEntry[],
|
|
26
29
|
chosen: Record<string, string | readonly string[]> | undefined,
|
|
30
|
+
refused: Diagnostic[],
|
|
27
31
|
): Map<string, ProviderEntry[]> {
|
|
28
32
|
const wrappers = new Map<string, ProviderEntry[]>();
|
|
29
33
|
for (const provider of providers) {
|
|
30
34
|
const seam = (Object.getPrototypeOf(provider.ctor) as { name?: string } | null)?.name;
|
|
31
35
|
if (!seam || !SEAMS.has(seam)) continue;
|
|
32
36
|
if (!provider.deps.includes(seam)) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
refused.push({
|
|
38
|
+
severity: 'blocking',
|
|
39
|
+
code: 'seam-not-wrapped',
|
|
40
|
+
filePath: provider.filePath,
|
|
41
|
+
subject: nameOf(provider),
|
|
42
|
+
message: `${nameOf(provider)} extends ${seam}, and a seam's realization is handed in rather `
|
|
43
|
+
+ 'than declared — so a class extending one can only stand IN FRONT of it, which it says '
|
|
44
|
+
+ `by asking for it: constructor(private inner: ${seam}).`,
|
|
45
|
+
});
|
|
46
|
+
continue;
|
|
38
47
|
}
|
|
39
48
|
wrappers.set(seam, [...(wrappers.get(seam) ?? []), provider]);
|
|
40
49
|
}
|
|
41
50
|
|
|
42
51
|
const bound = new Map<string, ProviderEntry[]>();
|
|
43
|
-
for (const [seam, all] of wrappers) bound.set(seam, chain(seam, [], all, chosen?.[seam]));
|
|
52
|
+
for (const [seam, all] of wrappers) bound.set(seam, chain(seam, [], all, chosen?.[seam], refused));
|
|
44
53
|
|
|
45
54
|
return bound;
|
|
46
55
|
}
|
|
@@ -77,22 +86,9 @@ export function portBindings(
|
|
|
77
86
|
providers: ProviderEntry[],
|
|
78
87
|
answers: (name: string) => boolean,
|
|
79
88
|
chosen: Record<string, string | readonly string[]> | undefined,
|
|
89
|
+
refused: Diagnostic[],
|
|
80
90
|
): Map<string, ProviderEntry[]> {
|
|
81
|
-
|
|
82
|
-
const candidates = new Map<string, ProviderEntry[]>();
|
|
83
|
-
for (const provider of providers) {
|
|
84
|
-
const base = Object.getPrototypeOf(provider.ctor) as { name?: string } | null;
|
|
85
|
-
const port = base?.name;
|
|
86
|
-
// ONE condition: something already answers under that name. Providers are
|
|
87
|
-
// registered into this scope just above, and the builtins sit in its parent, so
|
|
88
|
-
// this covers a neighbour service and `Logger` alike — a framework class is a
|
|
89
|
-
// port like any other, which is what makes a default overridable.
|
|
90
|
-
//
|
|
91
|
-
// It is also what excludes a prefab: a repository extends the class
|
|
92
|
-
// `Repository(Post)` returned (`RepositoryBase`), and no key is ever that name.
|
|
93
|
-
if (!port || !answers(port)) continue;
|
|
94
|
-
candidates.set(port, [...(candidates.get(port) ?? []), provider]);
|
|
95
|
-
}
|
|
91
|
+
const candidates = basesOf(providers, answers);
|
|
96
92
|
|
|
97
93
|
const bound = new Map<string, ProviderEntry[]>();
|
|
98
94
|
for (const [port, all] of candidates) {
|
|
@@ -102,7 +98,7 @@ export function portBindings(
|
|
|
102
98
|
const impls = all.filter((one) => !wraps(one));
|
|
103
99
|
const stated = chosen?.[port];
|
|
104
100
|
|
|
105
|
-
bound.set(port, chain(port, impls, wrappers, stated));
|
|
101
|
+
bound.set(port, chain(port, impls, wrappers, stated, refused));
|
|
106
102
|
}
|
|
107
103
|
|
|
108
104
|
return bound;
|
|
@@ -113,6 +109,7 @@ function chain(
|
|
|
113
109
|
impls: ProviderEntry[],
|
|
114
110
|
wrappers: ProviderEntry[],
|
|
115
111
|
stated: string | readonly string[] | undefined,
|
|
112
|
+
refused: Diagnostic[],
|
|
116
113
|
): ProviderEntry[] {
|
|
117
114
|
// The whole chain, outside in — a string is a chain of one, and the last name is what
|
|
118
115
|
// actually answers. What a deployment wraps its realization with is the same kind of
|
|
@@ -121,16 +118,21 @@ function chain(
|
|
|
121
118
|
const order = typeof stated === 'string' ? [stated] : stated;
|
|
122
119
|
const all = [...wrappers, ...impls];
|
|
123
120
|
|
|
124
|
-
return order.
|
|
121
|
+
return order.flatMap((name) => {
|
|
125
122
|
const pick = all.find((one) => nameOf(one) === name);
|
|
126
123
|
if (!pick) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
124
|
+
refused.push({
|
|
125
|
+
severity: 'blocking',
|
|
126
|
+
code: 'port-not-extended',
|
|
127
|
+
filePath: all[0]?.filePath ?? 'fougere.config.ts',
|
|
128
|
+
subject: `ports: { ${port}: '${name}' }`,
|
|
129
|
+
message: `${port}: '${name}' does not extend it. What does: ${all.map(nameOf).join(', ')}.`,
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
return [];
|
|
131
133
|
}
|
|
132
134
|
|
|
133
|
-
return pick;
|
|
135
|
+
return [pick];
|
|
134
136
|
});
|
|
135
137
|
}
|
|
136
138
|
|
|
@@ -138,22 +140,31 @@ function chain(
|
|
|
138
140
|
// Refusing rather than keeping one, for the reason `remotes` refuses two owners
|
|
139
141
|
// of an entity: whichever won would depend on scan order, and the handler would
|
|
140
142
|
// charge the wrong provider without a word.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
refused.push({
|
|
144
|
+
severity: 'blocking',
|
|
145
|
+
code: 'port-implemented-twice',
|
|
146
|
+
filePath: impls[0]!.filePath,
|
|
147
|
+
subject: port,
|
|
148
|
+
message: `${impls.map(nameOf).join(' and ')} both extend ${port}, and nothing says which one `
|
|
149
|
+
+ 'answers it. Which realization a deployment uses is not a fact about the code — state it: '
|
|
150
|
+
+ `ports: { ${port}: '${nameOf(impls[0]!)}' } in fougere.config.ts.`,
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
return [...wrappers, ...impls];
|
|
147
154
|
}
|
|
148
155
|
|
|
149
156
|
if (wrappers.length > 1) {
|
|
150
157
|
// Same refusal one layer out: two wrappers are an ORDER, and scan order is not one.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
158
|
+
refused.push({
|
|
159
|
+
severity: 'blocking',
|
|
160
|
+
code: 'port-wrapped-twice',
|
|
161
|
+
filePath: wrappers[0]!.filePath,
|
|
162
|
+
subject: port,
|
|
163
|
+
message: `${wrappers.map(nameOf).join(' and ')} both wrap ${port}, and nothing says which `
|
|
164
|
+
+ 'stands in front. State the chain, outside in: '
|
|
165
|
+
+ `ports: { ${port}: [${[...wrappers, ...impls].map((one) => `'${nameOf(one)}'`).join(', ')}] } `
|
|
166
|
+
+ 'in fougere.config.ts.',
|
|
167
|
+
});
|
|
157
168
|
}
|
|
158
169
|
|
|
159
170
|
return [...wrappers, ...impls];
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/** Who holds a `ref()`: the source it lives in, this process, or nobody. */
|
|
2
|
+
import { lowerFirst, Role, Shapes, type SchemaView } from '@fougere/schema';
|
|
3
|
+
import type { Dependent } from '../dispatch/Dependent.js';
|
|
4
|
+
import type { RelationCheck } from '../dispatch/RelationCheck.js';
|
|
5
|
+
import type { Hosting } from './Hosting.js';
|
|
6
|
+
import type { Diagnostic } from '../diagnostic.js';
|
|
7
|
+
import type { Releasing, Rows } from '../dispatch/Release.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Does a foreign key hold this reference? Both sides in ONE source that keeps relations — two
|
|
11
|
+
* databases share no constraint, and a frond behind `remotes:` registers no storage here at
|
|
12
|
+
* all. So the PAIR decides, never the engine.
|
|
13
|
+
*
|
|
14
|
+
* And the pair is not enough: an engine's cascade does not pass through the guard, so a hop it
|
|
15
|
+
* owns above a hop it does not would take rows out with nothing left to release THEIR rows. One
|
|
16
|
+
* unkeyed hop anywhere below and the guard takes the whole tree — the engine's own cascade then
|
|
17
|
+
* finds nothing left to do, since the guard walks deepest first and the row goes last.
|
|
18
|
+
*/
|
|
19
|
+
function keyed(namer: string, target: string, hosting: Hosting, seen = new Set<string>()): boolean {
|
|
20
|
+
const pair = hosting.hostedHere(namer)
|
|
21
|
+
&& hosting.hostedHere(target)
|
|
22
|
+
&& hosting.sourceOf(namer) === hosting.sourceOf(target)
|
|
23
|
+
&& hosting.enforces(hosting.sourceOf(namer), 'relation');
|
|
24
|
+
if (!pair || seen.has(namer)) return pair;
|
|
25
|
+
seen.add(namer);
|
|
26
|
+
|
|
27
|
+
return referencesTo(namer, hosting).every(({ entity }) => keyed(entity, namer, hosting, seen));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Every field of every entity that names `target` — read over the whole app, both ways need it. */
|
|
31
|
+
function referencesTo(target: string, hosting: Hosting): { entity: string; field: string; role: Role }[] {
|
|
32
|
+
const found: { entity: string; field: string; role: Role }[] = [];
|
|
33
|
+
|
|
34
|
+
for (const [entity, schema] of hosting.entities()) {
|
|
35
|
+
for (const [field, declared] of Object.entries(schema.getFields())) {
|
|
36
|
+
const role = Role.of(declared);
|
|
37
|
+
if (role.isReference && role.target?.name && lowerFirst(role.target.name) === target) {
|
|
38
|
+
found.push({ entity, field, role });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return found;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** What a target's storage has to answer for a key set to be judged in one read. */
|
|
47
|
+
interface ByKeys {
|
|
48
|
+
findByKeys(keys: readonly string[]): Promise<Map<string, unknown>>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The references a foreign key cannot hold, each as a read the guard makes before the write.
|
|
53
|
+
*
|
|
54
|
+
* Documented: [entities](https://fougere.dev/docs/schema/entities).
|
|
55
|
+
*/
|
|
56
|
+
export function heldBy(entity: SchemaView, name: string, hosting: Hosting): RelationCheck[] {
|
|
57
|
+
const checks: RelationCheck[] = [];
|
|
58
|
+
|
|
59
|
+
for (const [field, declared] of Object.entries(entity.getFields())) {
|
|
60
|
+
const role = Role.of(declared);
|
|
61
|
+
if (!role.isReference || !role.target?.name) continue;
|
|
62
|
+
|
|
63
|
+
const target = lowerFirst(role.target.name);
|
|
64
|
+
if (keyed(name, target, hosting)) continue;
|
|
65
|
+
|
|
66
|
+
checks.push({
|
|
67
|
+
field,
|
|
68
|
+
target,
|
|
69
|
+
missing: async (keys) => {
|
|
70
|
+
const storage = hosting.storageOf(target) as ByKeys | undefined;
|
|
71
|
+
// Nothing here holds those rows — the process that does answers the same reading,
|
|
72
|
+
// so the question crosses rather than being given up on.
|
|
73
|
+
if (!storage) return hosting.peerOf(target)?.missing(target, keys) ?? [];
|
|
74
|
+
const found = await storage.findByKeys(keys.map(String));
|
|
75
|
+
|
|
76
|
+
return keys.filter((key) => !found.has(String(key)));
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return checks;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The rows that name this entity's, and what becomes of them — the dual of `heldBy`.
|
|
86
|
+
*
|
|
87
|
+
* Read over EVERY entity of the app, because a namer is declared wherever its own frond is,
|
|
88
|
+
* and the target learns of it from nowhere else. What a key already holds is left out: the
|
|
89
|
+
* engine answers it at the rows, inside the delete's own transaction.
|
|
90
|
+
*
|
|
91
|
+
* Documented: [entities](https://fougere.dev/docs/schema/entities).
|
|
92
|
+
*/
|
|
93
|
+
export function dependentsOf(target: string, hosting: Hosting): Dependent[] {
|
|
94
|
+
return referencesTo(target, hosting)
|
|
95
|
+
.filter(({ entity }) => !keyed(entity, target, hosting))
|
|
96
|
+
.map(({ entity, field, role }) => ({ entity, field, onDelete: role.onDelete ?? 'restrict' }));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* `set null` on a field that may not hold one — refused where the FIELD is, not in `ref()`.
|
|
101
|
+
*
|
|
102
|
+
* `optional()` wraps a `ref()` and is applied after it, so only the field the entity ended up
|
|
103
|
+
* declaring knows whether null is admitted. Asked here rather than at the target, because the
|
|
104
|
+
* declaration is the namer's and so is the fix.
|
|
105
|
+
*/
|
|
106
|
+
export function refuseUnwritableNull(entity: SchemaView, name: string, filePath: string): Diagnostic[] {
|
|
107
|
+
const refused: Diagnostic[] = [];
|
|
108
|
+
|
|
109
|
+
for (const [field, declared] of Object.entries(entity.getFields())) {
|
|
110
|
+
if (Role.of(declared).onDelete !== 'set null' || Shapes.isNullable(declared.shape)) continue;
|
|
111
|
+
refused.push({
|
|
112
|
+
severity: 'blocking',
|
|
113
|
+
code: 'on-delete-null-refused',
|
|
114
|
+
filePath,
|
|
115
|
+
subject: `${name}.${field}`,
|
|
116
|
+
message: `${name}.${field} states onDelete 'set null', and the field admits no null — so the `
|
|
117
|
+
+ 'row could neither be emptied nor kept. Wrap it in `optional()`, or state `cascade` '
|
|
118
|
+
+ 'to take the row out with its target.',
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return refused;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** The checks nothing in this process can answer — asked once every frond has registered. */
|
|
126
|
+
export function unheldAmong(checks: readonly RelationCheck[], hosting: Hosting): string[] {
|
|
127
|
+
return checks
|
|
128
|
+
.filter((check) => hosting.storageOf(check.target) === undefined)
|
|
129
|
+
.map((check) => `${check.field} → ${check.target}`);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* What a release asks the boot, built once per app — the same `Hosting` the guard reads.
|
|
134
|
+
*
|
|
135
|
+
* `dependentsOf` is answered per call rather than cached: a frond installed after this one
|
|
136
|
+
* brings rows that name an entity already registered, and a table taken at boot would miss
|
|
137
|
+
* exactly the crossings this exists for.
|
|
138
|
+
*/
|
|
139
|
+
export function releasing(hosting: Hosting): Releasing {
|
|
140
|
+
return {
|
|
141
|
+
dependentsOf: (entity) => dependentsOf(entity, hosting),
|
|
142
|
+
rowsOf: (entity) => hosting.storageOf(entity) as Rows | undefined,
|
|
143
|
+
schemaOf: (entity) => hosting.entities().get(entity),
|
|
144
|
+
peers: () => hosting.peers(),
|
|
145
|
+
journal: (entity) => hosting.journal(entity),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* A release this process can START and cannot FINISH.
|
|
151
|
+
*
|
|
152
|
+
* Read from what is HERE and never asked of anyone: an entity states `cascade` or `set null`,
|
|
153
|
+
* and nothing registered a journal — both facts are local, so the line is too. The same shape
|
|
154
|
+
* as `unique declared, and the source does not enforce it`, one rung up: what is declared, and
|
|
155
|
+
* what this process cannot keep.
|
|
156
|
+
*
|
|
157
|
+
* Silent when a key holds every hop: the engine carries those out in one statement, and there
|
|
158
|
+
* is no half-done state for anybody to finish.
|
|
159
|
+
*/
|
|
160
|
+
export function unfinishable(hosting: Hosting): string[] {
|
|
161
|
+
if (hosting.journal('') !== undefined) return [];
|
|
162
|
+
|
|
163
|
+
const found: string[] = [];
|
|
164
|
+
for (const [entity] of hosting.entities()) {
|
|
165
|
+
for (const dependent of dependentsOf(entity, hosting)) {
|
|
166
|
+
if (dependent.onDelete === 'restrict') continue;
|
|
167
|
+
found.push(`${dependent.entity}.${dependent.field} → ${entity} (${dependent.onDelete})`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return found;
|
|
172
|
+
}
|
package/src/boot/remote.ts
CHANGED
|
@@ -3,11 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Documented: [the gradient](https://fougere.dev/docs/infra/gradient).
|
|
5
5
|
*/
|
|
6
|
-
import type { FrondCall
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
6
|
+
import type { FrondCall } from '../wire/FrondCall.js';
|
|
7
|
+
import type { Transport } from '../wire/Transport.js';
|
|
8
|
+
import { RPC_ENTITY } from '../wire/RpcAnswer.js';
|
|
9
|
+
import { assertIdentityCard } from '../wire/card/IdentityCard.js';
|
|
10
|
+
import { runMiddlewares, type AppMiddleware } from '../wire/AppMiddleware.js';
|
|
11
|
+
import { type OperationContext } from '../wire/OperationContext.js';
|
|
12
|
+
import { Invocation } from '../wire/Invocation.js';
|
|
13
|
+
import { type InvocationContext } from '../wire/InvocationContext.js';
|
|
14
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
15
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
11
16
|
import { Card, type SchemaView, type SchemaDescriptor } from '@fougere/schema';
|
|
12
17
|
import { dynamicOperations } from '../entry/facade.js';
|
|
13
18
|
|
|
@@ -35,7 +40,7 @@ export function createRemoteRouter(
|
|
|
35
40
|
const pending = new Map(Object.entries(remotes));
|
|
36
41
|
const transports = new Map<string, Transport>();
|
|
37
42
|
|
|
38
|
-
/** Which remote label claimed a
|
|
43
|
+
/** Which remote label claimed a facade name — so a second claim can name the first. */
|
|
39
44
|
const claimedBy = new Map<string, string>();
|
|
40
45
|
|
|
41
46
|
const discover = async (): Promise<void> => {
|
|
@@ -65,28 +70,28 @@ export function createRemoteRouter(
|
|
|
65
70
|
const card = assertIdentityCard(answer, `Remote '${label}' (${url})`);
|
|
66
71
|
|
|
67
72
|
for (const frond of card.fronds) {
|
|
68
|
-
//
|
|
69
|
-
// adding one here would answer a call with a transport to a
|
|
73
|
+
// Facades only. A fact is not routable — nobody calls it, it arrives — so
|
|
74
|
+
// adding one here would answer a call with a transport to a facade that
|
|
70
75
|
// does not exist.
|
|
71
|
-
for (const
|
|
72
|
-
const first = claimedBy.get(
|
|
76
|
+
for (const facade of frond.facades) {
|
|
77
|
+
const first = claimedBy.get(facade.name);
|
|
73
78
|
/** Two remotes claiming one name is refused, not silently arbitrated. */
|
|
74
79
|
if (first !== undefined && first !== label) {
|
|
75
80
|
throw new FougereError({
|
|
76
81
|
code: ErrorCode.INTERNAL_ERROR,
|
|
77
82
|
message:
|
|
78
|
-
`Two remotes serve '${
|
|
83
|
+
`[claim] Two remotes serve '${facade.name}': '${first}' and '${label}'.\n`
|
|
79
84
|
+ ` A call names an entity, not a frond, so nothing could choose between them.\n`
|
|
80
85
|
+ ` - Keep one of the two out of \`remotes:\`, or\n`
|
|
81
86
|
+ ` - expose one of them under a different entity name.`,
|
|
82
|
-
entity:
|
|
87
|
+
entity: facade.name,
|
|
83
88
|
});
|
|
84
89
|
}
|
|
85
|
-
claimedBy.set(
|
|
86
|
-
byEntity.set(
|
|
90
|
+
claimedBy.set(facade.name, label);
|
|
91
|
+
byEntity.set(facade.name, {
|
|
87
92
|
frond: frond.name,
|
|
88
93
|
transport,
|
|
89
|
-
...(
|
|
94
|
+
...(facade.schema ? { schema: Card.fromDescriptor(facade.schema as SchemaDescriptor).toSchema() } : {}),
|
|
90
95
|
});
|
|
91
96
|
}
|
|
92
97
|
}
|
|
@@ -101,13 +106,15 @@ export function createRemoteRouter(
|
|
|
101
106
|
if (pending.size > 0) {
|
|
102
107
|
throw new FougereError({
|
|
103
108
|
code: ErrorCode.SERVICE_UNAVAILABLE,
|
|
104
|
-
message: `No reachable remote hosts '${entity}' — unreachable: ${[...pending.keys()].join(', ')}
|
|
109
|
+
message: `No reachable remote hosts '${entity}' — unreachable: ${[...pending.keys()].join(', ')}.\n`
|
|
110
|
+
+ ' Named in `remotes:`, and did not answer.',
|
|
105
111
|
entity,
|
|
106
112
|
});
|
|
107
113
|
}
|
|
108
114
|
throw new FougereError({
|
|
109
115
|
code: ErrorCode.NOT_FOUND,
|
|
110
|
-
message: `No declared remote hosts '${entity}'
|
|
116
|
+
message: `No declared remote hosts '${entity}'.\n`
|
|
117
|
+
+ ' Nothing here serves it either — add its frond to `fronds:`/`scan:`, or name the frond that does in `remotes:`.',
|
|
111
118
|
entity,
|
|
112
119
|
});
|
|
113
120
|
},
|
package/src/boot/runner.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** A Transport built from an app — the two ways a call enters this process. */
|
|
2
|
-
import type { App } from './
|
|
3
|
-
import type { Transport } from '../wire/
|
|
2
|
+
import type { App } from './App.js';
|
|
3
|
+
import type { Transport } from '../wire/Transport.js';
|
|
4
4
|
import { createTransportEntry } from '../entry/transport.js';
|
|
5
5
|
|
|
6
6
|
/** Build the local runner — the reference realization of Transport. */
|
package/src/boot/seed.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Role } from '@fougere/schema';
|
|
2
|
-
import { facadeKeyOf } from '../wire/
|
|
3
|
-
import type { FrondDescriptor
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
2
|
+
import { facadeKeyOf } from '../wire/Facade.js';
|
|
3
|
+
import type { FrondDescriptor } from '../descriptor/FrondDescriptor.js';
|
|
4
|
+
import type { SeedEntry } from '../descriptor/SeedEntry.js';
|
|
5
|
+
import type { SeedFactory } from '../descriptor/SeedFactory.js';
|
|
6
|
+
import type { App } from './App.js';
|
|
7
|
+
import type { Extension } from './Extension.js';
|
|
6
8
|
|
|
7
9
|
/** What the ordering satisfied, and what no order can. */
|
|
8
10
|
export interface SeedOrder {
|
|
@@ -56,7 +58,7 @@ export function orderSeeds(fronds: FrondDescriptor[]): SeedOrder {
|
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
/** Where a seed writes, and what it may skip — resolved per entity. */
|
|
59
|
-
interface
|
|
61
|
+
interface SeedFacade {
|
|
60
62
|
list(): Promise<unknown[]>;
|
|
61
63
|
write(item: unknown): Promise<unknown>;
|
|
62
64
|
}
|
|
@@ -75,13 +77,13 @@ export async function runSeeds(
|
|
|
75
77
|
const resolve = <T>(name: string) => app.resolve<T>(name + 'Handler');
|
|
76
78
|
const data = typeof seed.data === 'function' ? await (seed.data as SeedFactory)(resolve) : seed.data;
|
|
77
79
|
|
|
78
|
-
const
|
|
79
|
-
if (!
|
|
80
|
+
const facade = facadeFor(app, seed.entityName);
|
|
81
|
+
if (!facade) {
|
|
80
82
|
report(` ${seed.entityName}: no handler façade nor storage — skipping seed`);
|
|
81
83
|
continue;
|
|
82
84
|
}
|
|
83
85
|
|
|
84
|
-
const existing = await
|
|
86
|
+
const existing = await facade.list();
|
|
85
87
|
if (existing.length > 0) {
|
|
86
88
|
report(` ${seed.entityName}: skipped (${existing.length} exist)`);
|
|
87
89
|
continue;
|
|
@@ -91,7 +93,7 @@ export async function runSeeds(
|
|
|
91
93
|
// key is exactly what a seed gets wrong.
|
|
92
94
|
for (const item of data) {
|
|
93
95
|
try {
|
|
94
|
-
await
|
|
96
|
+
await facade.write(item);
|
|
95
97
|
} catch (cause) {
|
|
96
98
|
throw new Error(
|
|
97
99
|
`Seed '${seed.entityName}' failed on ${JSON.stringify(item)}: ${(cause as Error)?.message ?? cause}`,
|
|
@@ -104,7 +106,7 @@ export async function runSeeds(
|
|
|
104
106
|
}
|
|
105
107
|
|
|
106
108
|
/** A seed is not a client. */
|
|
107
|
-
function
|
|
109
|
+
function facadeFor(app: App, entityName: string): SeedFacade | undefined {
|
|
108
110
|
let handler: Record<string, Function> | undefined;
|
|
109
111
|
try { handler = app.resolve<Record<string, Function>>(facadeKeyOf(entityName)); } catch {}
|
|
110
112
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** Where a STATED contract and the signature it is about have stopped agreeing. */
|
|
2
|
-
import type { FrondDescriptor
|
|
3
|
-
import type {
|
|
2
|
+
import type { FrondDescriptor } from '../descriptor/FrondDescriptor.js';
|
|
3
|
+
import type { HandlerEntry } from '../descriptor/HandlerEntry.js';
|
|
4
|
+
import type { Diagnostic } from '../diagnostic.js';
|
|
4
5
|
import type { BindingPlan } from '../wire/binding.js';
|
|
5
|
-
import type { Signature } from '../wire/
|
|
6
|
+
import type { Signature } from '../wire/Signature.js';
|
|
6
7
|
|
|
7
8
|
/** The parameters a binding plan names, against the ones the method declares. */
|
|
8
9
|
function namesDisagreeing(plan: BindingPlan, signature: Signature): string[] {
|
|
@@ -12,8 +13,8 @@ function namesDisagreeing(plan: BindingPlan, signature: Signature): string[] {
|
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
/** What a frond's stated contracts no longer match. */
|
|
15
|
-
export function statementDrift(frond: FrondDescriptor, handler: HandlerEntry):
|
|
16
|
-
const found:
|
|
16
|
+
export function statementDrift(frond: FrondDescriptor, handler: HandlerEntry): Diagnostic[] {
|
|
17
|
+
const found: Diagnostic[] = [];
|
|
17
18
|
|
|
18
19
|
for (const [name, override] of Object.entries(frond.operationsOverrides ?? {})) {
|
|
19
20
|
if (!override.binding) continue;
|