@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
|
@@ -1,51 +1,33 @@
|
|
|
1
1
|
import type { Fields } from '@fougere/schema';
|
|
2
2
|
import type { Container } from '@fougere/container';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
type OperationContext,
|
|
7
|
-
} from '../wire/middleware.js';
|
|
8
|
-
import type { CollectorResolver } from './ArgumentResolver.js';
|
|
3
|
+
import { runMiddlewares } from '../wire/AppMiddleware.js';
|
|
4
|
+
import { type OperationContext } from '../wire/OperationContext.js';
|
|
5
|
+
import type { CollectorResolver } from './CollectorResolver.js';
|
|
9
6
|
import { collectorKeyOf } from '../prefab/collector.js';
|
|
10
|
-
import { inheritsCrud, subjectOf } from '../prefab/
|
|
7
|
+
import { inheritsCrud, subjectOf } from '../prefab/CrudConstructor.js';
|
|
11
8
|
import { presenterKeyOf } from '../prefab/presenter.js';
|
|
12
|
-
import { repositoryKeyOf } from '../prefab/
|
|
13
|
-
import type { OperationContract
|
|
14
|
-
import type {
|
|
9
|
+
import { repositoryKeyOf } from '../prefab/RepositoryConstructor.js';
|
|
10
|
+
import type { OperationContract } from '../wire/OperationContract.js';
|
|
11
|
+
import type { OperationsMap } from '../wire/OperationsMap.js';
|
|
12
|
+
import type { EffectiveOperation } from '../EffectiveOperation.js';
|
|
13
|
+
import type { EffectiveOperationsMap } from '../EffectiveOperationsMap.js';
|
|
15
14
|
import type { BindingPlan } from '../wire/binding.js';
|
|
16
|
-
import { Invocation
|
|
17
|
-
import
|
|
15
|
+
import { Invocation } from '../wire/Invocation.js';
|
|
16
|
+
import { type InvocationContext } from '../wire/InvocationContext.js';
|
|
17
|
+
import type { HandlerEntry } from '../descriptor/HandlerEntry.js';
|
|
18
|
+
import type { PresenterEntry } from '../descriptor/PresenterEntry.js';
|
|
18
19
|
import { ArgumentResolver } from './ArgumentResolver.js';
|
|
19
20
|
import { OutputView } from './OutputView.js';
|
|
20
21
|
import { PresenterExecutor } from './PresenterExecutor.js';
|
|
21
22
|
import { presenterArguments, presenterPlans } from './presenterArguments.js';
|
|
22
23
|
import { validateInput } from './validateInput.js';
|
|
24
|
+
import type { Facade } from './Facade.js';
|
|
23
25
|
|
|
24
|
-
/**
|
|
25
|
-
export interface Door {
|
|
26
|
-
/** The container key this door answers under. */
|
|
27
|
-
key: string;
|
|
28
|
-
/** The frond this door belongs to — travels on every OperationContext. */
|
|
29
|
-
frond: string;
|
|
30
|
-
/** Handlers in the owning frond, used to realize a resolved implementation override. */
|
|
31
|
-
handlers: readonly HandlerEntry[];
|
|
32
|
-
/** The canonical operation table resolved before boot performs any side effect. */
|
|
33
|
-
operations: EffectiveOperationsMap;
|
|
34
|
-
/** Entity names this frond has a collector for. */
|
|
35
|
-
collectors: Set<string>;
|
|
36
|
-
/** The presenter over this handler's entity, when the frond declares one. */
|
|
37
|
-
presenter: PresenterEntry | undefined;
|
|
38
|
-
/** Presenters live in the frond's own scope, whatever sub-scope this door resolves in. */
|
|
39
|
-
presenterScope: Container;
|
|
40
|
-
/** The middlewares that apply to this address, read at call time and never at boot. */
|
|
41
|
-
middlewares: () => AppMiddleware[];
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/** Adapts one handler door to executable operations. */
|
|
26
|
+
/** Adapts one handler facade to executable operations. */
|
|
45
27
|
export class HandlerFacade {
|
|
46
28
|
/** Rich operation facts shared with check, explain and adapters. */
|
|
47
29
|
readonly effectiveOperations: EffectiveOperationsMap;
|
|
48
|
-
/** Contracts served by this
|
|
30
|
+
/** Contracts served by this facade. */
|
|
49
31
|
readonly contracts: OperationsMap;
|
|
50
32
|
|
|
51
33
|
private readonly cachedViews = new Map<string, OutputView>();
|
|
@@ -61,24 +43,24 @@ export class HandlerFacade {
|
|
|
61
43
|
constructor(
|
|
62
44
|
private readonly handler: HandlerEntry,
|
|
63
45
|
private readonly scope: Container,
|
|
64
|
-
private readonly
|
|
46
|
+
private readonly facade: Facade,
|
|
65
47
|
) {
|
|
66
48
|
this.refuseCrudWithoutRepository(handler);
|
|
67
49
|
|
|
68
|
-
this.presenterPlans =
|
|
69
|
-
? presenterPlans(
|
|
50
|
+
this.presenterPlans = facade.presenter
|
|
51
|
+
? presenterPlans(facade.presenter, facade.collectors)
|
|
70
52
|
: new Map();
|
|
71
53
|
|
|
72
54
|
scope.register(this.handlerKey, handler.ctor, { deps: this.depsOf(handler) });
|
|
73
55
|
|
|
74
|
-
this.effectiveOperations =
|
|
56
|
+
this.effectiveOperations = facade.operations;
|
|
75
57
|
this.contracts = new Map(
|
|
76
|
-
[...
|
|
58
|
+
[...facade.operations].map(([name, operation]) => [name, operation as OperationContract] as const),
|
|
77
59
|
);
|
|
78
60
|
handler.operations = this.contracts;
|
|
79
61
|
|
|
80
62
|
// Register model-selected implementations in the same execution scope.
|
|
81
|
-
for (const [name, operation] of
|
|
63
|
+
for (const [name, operation] of facade.operations) {
|
|
82
64
|
if (this.isBaseImplementation(operation)) continue;
|
|
83
65
|
const implementation = this.implementationHandler(name);
|
|
84
66
|
this.refuseCrudWithoutRepository(implementation);
|
|
@@ -104,14 +86,14 @@ export class HandlerFacade {
|
|
|
104
86
|
const invocation = Invocation.from(input);
|
|
105
87
|
const context: OperationContext = {
|
|
106
88
|
entity,
|
|
107
|
-
frond: this.
|
|
89
|
+
frond: this.facade.frond,
|
|
108
90
|
operation: op,
|
|
109
91
|
args: [],
|
|
110
92
|
state: invocation.state,
|
|
111
93
|
invocation,
|
|
112
94
|
};
|
|
113
95
|
|
|
114
|
-
return runMiddlewares(this.
|
|
96
|
+
return runMiddlewares(this.facade.middlewares(), context, async () => {
|
|
115
97
|
const validated = validateInput(contract.input, invocation, entity, op);
|
|
116
98
|
context.invocation = validated;
|
|
117
99
|
|
|
@@ -122,7 +104,7 @@ export class HandlerFacade {
|
|
|
122
104
|
const view = this.viewOf(op);
|
|
123
105
|
const output = view.project(await instance[method](...args));
|
|
124
106
|
|
|
125
|
-
const { presenter } = this.
|
|
107
|
+
const { presenter } = this.facade;
|
|
126
108
|
return view.closed || !presenter ? output : this.present(op, presenter, output, validated);
|
|
127
109
|
});
|
|
128
110
|
}
|
|
@@ -136,7 +118,7 @@ export class HandlerFacade {
|
|
|
136
118
|
): Promise<unknown> {
|
|
137
119
|
const entity = this.handler.address;
|
|
138
120
|
const executor = new PresenterExecutor(
|
|
139
|
-
this.
|
|
121
|
+
this.facade.presenterScope.resolve(presenterKeyOf(entity)),
|
|
140
122
|
presenter.fields,
|
|
141
123
|
entity,
|
|
142
124
|
op,
|
|
@@ -147,7 +129,7 @@ export class HandlerFacade {
|
|
|
147
129
|
}
|
|
148
130
|
|
|
149
131
|
private get handlerKey(): string {
|
|
150
|
-
return `_handler:${this.
|
|
132
|
+
return `_handler:${this.facade.key}`;
|
|
151
133
|
}
|
|
152
134
|
|
|
153
135
|
private depsOf(handler: HandlerEntry): string[] {
|
|
@@ -206,7 +188,7 @@ export class HandlerFacade {
|
|
|
206
188
|
/** The exact handler entry the pure model selected; no name-only retry or fallback. */
|
|
207
189
|
private implementationHandler(operationName: string): HandlerEntry {
|
|
208
190
|
const operation = this.effectiveOperations.get(operationName)!;
|
|
209
|
-
const matches = this.
|
|
191
|
+
const matches = this.facade.handlers.filter((handler) =>
|
|
210
192
|
handler.ctor.name === operation.implementation.className
|
|
211
193
|
&& handler.address === operation.implementation.address
|
|
212
194
|
&& handler.filePath === operation.implementation.filePath);
|
package/src/dispatch/InFlight.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
2
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
2
3
|
|
|
3
4
|
/** Controls dispatch admission and signals when every accepted call has settled. */
|
|
4
5
|
export class InFlight {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Call } from '../wire/Call.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* What writes a release down while it happens, when a package provides one.
|
|
5
|
+
*
|
|
6
|
+
* Core does the same hops in the same order either way — children before their parent, so an
|
|
7
|
+
* interruption leaves fewer children and never an orphan. What a journal adds is that somebody
|
|
8
|
+
* can finish what a stopped process started: the row says a release began, and a sweep redoes
|
|
9
|
+
* it. Redoing is safe because every hop already is — a row taken out twice is taken out once.
|
|
10
|
+
*
|
|
11
|
+
* What writes a release down writes none of its own: the boot leaves out the entities of the
|
|
12
|
+
* fronds an extension BROUGHT, so keeping the row that says a release began does not begin one.
|
|
13
|
+
* Read from what was brought rather than written down, the way `CARRIES_LINE` is.
|
|
14
|
+
*
|
|
15
|
+
* Documented: [entities](https://fougere.dev/docs/schema/entities).
|
|
16
|
+
*/
|
|
17
|
+
export interface Journal {
|
|
18
|
+
/** Hold this call until `runAt`, so a sweep dispatches it then and nobody waits for it now. */
|
|
19
|
+
keep(call: Call, runAt: number): Promise<void>;
|
|
20
|
+
/** Take this release on, or say another process is already driving it. */
|
|
21
|
+
open(entity: string, key: string): Promise<'taken' | 'busy'>;
|
|
22
|
+
close(entity: string, key: string): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** The container key a package registers its journal under. */
|
|
26
|
+
export const JOURNAL = 'Journal';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { Call } from '../wire/
|
|
2
|
-
import { ErrorCode
|
|
1
|
+
import type { Call } from '../wire/Call.js';
|
|
2
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
3
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
3
4
|
import type { Route } from './Route.js';
|
|
4
5
|
import type { RoutePolicy } from './RoutePolicy.js';
|
|
5
6
|
import { routeNotFound, servedOperations } from './routeNotFound.js';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { Call } from '../wire/
|
|
1
|
+
import type { Call } from '../wire/Call.js';
|
|
2
2
|
import type { RouteAddress } from '../wire/RouteAddress.js';
|
|
3
3
|
import type { Route } from './Route.js';
|
|
4
|
-
|
|
5
|
-
export type RouteExecution = (call: Call) => unknown | Promise<unknown>;
|
|
4
|
+
import type { RouteExecution } from './RouteExecution.js';
|
|
6
5
|
|
|
7
6
|
/** One executable route, distinguished by its routing kind. */
|
|
8
7
|
export class OperationRoute implements Route {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type PresenterArgs = Record<string, unknown[]>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ErrorCode
|
|
1
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
2
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
2
3
|
import { preserveArrayProperties } from './ArrayResult.js';
|
|
3
|
-
|
|
4
|
-
export type PresenterArgs = Record<string, unknown[]>;
|
|
4
|
+
import type { PresenterArgs } from './PresenterArgs.js';
|
|
5
5
|
|
|
6
6
|
/** Adds a presenter's computed fields after output projection. */
|
|
7
7
|
export class PresenterExecutor {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `ref()` whose target the source does not hold, so the guard reads it before the write.
|
|
3
|
+
*
|
|
4
|
+
* The pair decides, never the engine: SQL keeps a foreign key over rows it can see, and a
|
|
5
|
+
* target in another source gets a column and nothing else. The boot builds one of these for
|
|
6
|
+
* each reference that falls outside its own source, and none for the rest — a co-located
|
|
7
|
+
* relation costs nothing here, because the key already refuses the same row.
|
|
8
|
+
*
|
|
9
|
+
* Documented: [entities](https://fougere.dev/docs/schema/entities).
|
|
10
|
+
*/
|
|
11
|
+
export interface RelationCheck {
|
|
12
|
+
/** The field carrying the key — `authorId`. */
|
|
13
|
+
field: string;
|
|
14
|
+
/** What it points at, as the boot files it — `user`. */
|
|
15
|
+
target: string;
|
|
16
|
+
/**
|
|
17
|
+
* Which of these keys no row answers. Takes a set so a page costs one read, and so the
|
|
18
|
+
* single-row case is the same call with one member.
|
|
19
|
+
*/
|
|
20
|
+
missing(keys: readonly unknown[]): Promise<readonly unknown[]>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/** What a delete does to the rows that name it, when no foreign key does it instead. */
|
|
2
|
+
import { FieldSet, type SchemaView } from '@fougere/schema';
|
|
3
|
+
import type { Dependent } from './Dependent.js';
|
|
4
|
+
import type { Journal } from './Journal.js';
|
|
5
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
6
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
7
|
+
|
|
8
|
+
/** The gestures a release reaches a dependent's rows through. */
|
|
9
|
+
export interface Rows {
|
|
10
|
+
findAllByKeys(field: string, keys: readonly string[]): Promise<Map<string, Record<string, unknown>[]>>;
|
|
11
|
+
update(id: string, patch: Record<string, unknown>): Promise<unknown>;
|
|
12
|
+
delete(id: string): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** What the guard hands a release: who depends on an entity, and how to reach their rows. */
|
|
16
|
+
export interface Releasing {
|
|
17
|
+
dependentsOf(entity: string): readonly Dependent[];
|
|
18
|
+
rowsOf(entity: string): Rows | undefined;
|
|
19
|
+
schemaOf(entity: string): SchemaView | undefined;
|
|
20
|
+
/** Written down while it happens, when a package provides one — absent is the plain walk. */
|
|
21
|
+
journal(entity: string): Journal | undefined;
|
|
22
|
+
/** Every declared remote — each one walks its own tree, and is alone able to. */
|
|
23
|
+
peers(): readonly { release(entity: string, key: unknown, visited: readonly string[]): Promise<void> }[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The rows that name a key, taken out or emptied, deepest FIRST.
|
|
28
|
+
*
|
|
29
|
+
* Order is the whole guarantee: a child never outlives its parent, so an interruption leaves
|
|
30
|
+
* fewer children and never an orphan. That is what lets a release cross a process without a
|
|
31
|
+
* two-phase commit — and why nothing here needs to be undone, only finished.
|
|
32
|
+
*
|
|
33
|
+
* A row already visited is not visited again, which is what ends a cycle: `Category.parentId`
|
|
34
|
+
* pointing at its own entity walks down and stops when a key repeats.
|
|
35
|
+
*
|
|
36
|
+
* Documented: [entities](https://fougere.dev/docs/schema/entities).
|
|
37
|
+
*/
|
|
38
|
+
export async function release(
|
|
39
|
+
entity: string,
|
|
40
|
+
key: unknown,
|
|
41
|
+
world: Releasing,
|
|
42
|
+
visited: readonly string[] = [],
|
|
43
|
+
row?: () => Promise<unknown>,
|
|
44
|
+
): Promise<void> {
|
|
45
|
+
const mark = `${entity}#${String(key)}`;
|
|
46
|
+
// Already on the trail means SOMEONE upstream is asking every process about this row, so
|
|
47
|
+
// asking again would be the bounce two processes declaring each other would never end. The
|
|
48
|
+
// local walk still runs: being asked is exactly the point, and only this process can do it.
|
|
49
|
+
const asked = visited.includes(mark);
|
|
50
|
+
const trail = asked ? visited : [...visited, mark];
|
|
51
|
+
|
|
52
|
+
// Written down before the first hop, so a process that stops mid-way leaves a row saying so.
|
|
53
|
+
// Absent, the hops are the same and nothing finishes them.
|
|
54
|
+
const journal = world.journal(entity);
|
|
55
|
+
if (journal && await journal.open(entity, String(key)) === 'busy') return;
|
|
56
|
+
|
|
57
|
+
// Every declared remote, and every one of them: a frond behind `remotes:` may have no sources
|
|
58
|
+
// here, so this process cannot see that its rows name ours — only that process can.
|
|
59
|
+
if (!asked) for (const peer of world.peers()) await peer.release(entity, key, trail);
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
await walk(entity, [key], world, new Set([mark]), trail);
|
|
63
|
+
} catch (refusal) {
|
|
64
|
+
// A refusal is an outcome, not an interruption: the framework decided, and redoing it
|
|
65
|
+
// would only decide again — a run kept open for one would be swept forever. Anything
|
|
66
|
+
// else stopped us mid-tree, and THAT is what a run is for.
|
|
67
|
+
if (refusal instanceof FougereError) await journal?.close(entity, String(key));
|
|
68
|
+
throw refusal;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// The row itself, LAST — handed in by whoever owns the gesture, so a run covers the whole
|
|
72
|
+
// thing rather than stopping one statement short of it. Whatever the row answers, the
|
|
73
|
+
// release did its part: what depends on this one is dealt with, and nothing is left to redo.
|
|
74
|
+
try {
|
|
75
|
+
await row?.();
|
|
76
|
+
} finally {
|
|
77
|
+
await journal?.close(entity, String(key));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function walk(
|
|
82
|
+
entity: string,
|
|
83
|
+
keys: readonly unknown[],
|
|
84
|
+
world: Releasing,
|
|
85
|
+
seen: Set<string>,
|
|
86
|
+
trail: readonly string[],
|
|
87
|
+
): Promise<void> {
|
|
88
|
+
const dependents = world.dependentsOf(entity);
|
|
89
|
+
// Every refusal of this level BEFORE any of its rows move: two fields of one entity are two
|
|
90
|
+
// dependents, and declaration order would otherwise let a cascade beside a `restrict` win.
|
|
91
|
+
// Depth needs no such pass — a level acts only once the level below it came back.
|
|
92
|
+
for (const dependent of dependents.filter((one) => one.onDelete === 'restrict')) {
|
|
93
|
+
const rows = world.rowsOf(dependent.entity);
|
|
94
|
+
if (!rows) continue;
|
|
95
|
+
const found = [...(await rows.findAllByKeys(dependent.field, keys.map(String))).values()].flat();
|
|
96
|
+
if (found.length === 0) continue;
|
|
97
|
+
|
|
98
|
+
throw new FougereError({
|
|
99
|
+
code: ErrorCode.CONFLICT,
|
|
100
|
+
message: `${dependent.entity}.${dependent.field} holds ${found.length} row(s) naming this one, `
|
|
101
|
+
+ `and states onDelete 'restrict' — take them out first, or declare what should happen.`,
|
|
102
|
+
entity,
|
|
103
|
+
operation: 'delete',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (const dependent of dependents.filter((one) => one.onDelete !== 'restrict')) {
|
|
108
|
+
const rows = world.rowsOf(dependent.entity);
|
|
109
|
+
// Nothing here holds those rows. The process that does answers the same two readings core
|
|
110
|
+
// serves everywhere, so the ask crosses and the work happens on ITS side of the wire —
|
|
111
|
+
// which is what keeps the declaration identical whatever the topology.
|
|
112
|
+
// Nothing here holds those rows: every declared remote is asked about THIS level, and the
|
|
113
|
+
// one that holds them walks its own tree from there. The trail grows by one mark per level,
|
|
114
|
+
// so a deeper ask is never mistaken for the bounce of a shallower one.
|
|
115
|
+
if (!rows) {
|
|
116
|
+
for (const key of keys) {
|
|
117
|
+
// A level already on the trail is one somebody is asking every process about, so
|
|
118
|
+
// asking again is the bounce — the same reason `release` reads it before crossing.
|
|
119
|
+
if (trail.includes(`${entity}#${String(key)}`)) continue;
|
|
120
|
+
for (const peer of world.peers()) await peer.release(entity, key, trail);
|
|
121
|
+
}
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const naming = await rows.findAllByKeys(dependent.field, keys.map(String));
|
|
126
|
+
const found = [...naming.values()].flat();
|
|
127
|
+
if (found.length === 0) continue;
|
|
128
|
+
|
|
129
|
+
if (dependent.onDelete === 'set null') {
|
|
130
|
+
const primary = keyOf(world, dependent.entity);
|
|
131
|
+
for (const row of found) await rows.update(String(row[primary]), { [dependent.field]: null });
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const primary = keyOf(world, dependent.entity);
|
|
136
|
+
const below = found.map((row) => row[primary]).filter((id) => !taken(seen, dependent.entity, id));
|
|
137
|
+
// Deepest first: what names THESE rows goes before they do, all the way down.
|
|
138
|
+
await walk(dependent.entity, below, world, seen, trail);
|
|
139
|
+
for (const id of below) await rows.delete(String(id));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** True once, and remembers — a key already on the path is what ends a cycle. */
|
|
144
|
+
function taken(seen: Set<string>, entity: string, key: unknown): boolean {
|
|
145
|
+
const mark = `${entity}#${String(key)}`;
|
|
146
|
+
if (seen.has(mark)) return true;
|
|
147
|
+
seen.add(mark);
|
|
148
|
+
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function keyOf(world: Releasing, entity: string): string {
|
|
153
|
+
const schema = world.schemaOf(entity);
|
|
154
|
+
|
|
155
|
+
return (schema && FieldSet.of(schema.getFields()).primary) ?? 'id';
|
|
156
|
+
}
|
package/src/dispatch/Route.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { Call } from '../wire/
|
|
2
|
-
import type { RouteAddress
|
|
1
|
+
import type { Call } from '../wire/Call.js';
|
|
2
|
+
import type { RouteAddress } from '../wire/RouteAddress.js';
|
|
3
|
+
import type { RouteKind } from '../wire/RouteKind.js';
|
|
3
4
|
|
|
4
5
|
/** Executable destination known by the dispatcher. */
|
|
5
6
|
export interface Route {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { FieldSet, FieldValueValidator, InputRefusal, type Fields } from '@fougere/schema';
|
|
2
|
-
import { COMPARISONS, comparisonOf, unknownIn } from '../storage/
|
|
3
|
-
import { assertListOptions } from '../storage/
|
|
4
|
-
import { ErrorCode
|
|
2
|
+
import { COMPARISONS, comparisonOf, unknownIn } from '../storage/Comparison.js';
|
|
3
|
+
import { assertListOptions } from '../storage/Storage.js';
|
|
4
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
5
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
6
|
+
import type { GuardReport } from './GuardReport.js';
|
|
7
|
+
import type { RelationCheck } from './RelationCheck.js';
|
|
8
|
+
import { release, type Releasing } from './Release.js';
|
|
5
9
|
|
|
6
10
|
/** The gestures this guard grafts onto. */
|
|
7
11
|
interface Writer {
|
|
@@ -9,17 +13,10 @@ interface Writer {
|
|
|
9
13
|
update(...args: [unknown, Record<string, unknown>, ...unknown[]]): Promise<unknown>;
|
|
10
14
|
upsert?(...args: [Record<string, unknown>, ...unknown[]]): Promise<unknown>;
|
|
11
15
|
upsertAll?(...args: [readonly Record<string, unknown>[], ...unknown[]]): Promise<unknown>;
|
|
16
|
+
delete?(id: string): Promise<boolean>;
|
|
12
17
|
list?(...args: unknown[]): unknown;
|
|
13
18
|
}
|
|
14
19
|
|
|
15
|
-
/** What a guard says about a filter it let through. The boot owns the voice. */
|
|
16
|
-
export interface GuardReport {
|
|
17
|
-
/** The fields this door hands back, when it hands back fewer than the entity has. */
|
|
18
|
-
view?: Fields;
|
|
19
|
-
/** Said once per field — a filter is not a write, and a warning per call is noise. */
|
|
20
|
-
outOfView?: (message: string) => void;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
20
|
/** Judges storage writes and list options without narrowing the storage interface. */
|
|
24
21
|
export class StorageGuard {
|
|
25
22
|
/** What has already been said, so a filter in a loop says it once. */
|
|
@@ -29,6 +26,8 @@ export class StorageGuard {
|
|
|
29
26
|
private readonly fields: Fields,
|
|
30
27
|
private readonly entity: string,
|
|
31
28
|
private readonly report: GuardReport = {},
|
|
29
|
+
private readonly relations: readonly RelationCheck[] = [],
|
|
30
|
+
private readonly releasing?: Releasing,
|
|
32
31
|
) {}
|
|
33
32
|
|
|
34
33
|
guard<T extends object>(storage: T): T {
|
|
@@ -38,13 +37,29 @@ export class StorageGuard {
|
|
|
38
37
|
const validation = this;
|
|
39
38
|
const guarded = Object.create(storage) as T & Writer;
|
|
40
39
|
|
|
40
|
+
const remove = writer.delete;
|
|
41
|
+
if (typeof remove === 'function' && validation.releasing) {
|
|
42
|
+
// What names this row goes first, and this row last: an interruption then leaves fewer
|
|
43
|
+
// children rather than an orphan. A key holds the rest, at the rows, in one statement.
|
|
44
|
+
guarded.delete = async function (id) {
|
|
45
|
+
let gone = false;
|
|
46
|
+
await release(validation.entity, id, validation.releasing!, [], async () => {
|
|
47
|
+
gone = await remove.call(this, id);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
return gone;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
41
54
|
guarded.create = async function (...args) {
|
|
42
55
|
args[0] = validation.validated(args[0], 'create');
|
|
56
|
+
await validation.targetsOf([args[0]], 'create');
|
|
43
57
|
return writer.create.apply(this, args);
|
|
44
58
|
};
|
|
45
59
|
|
|
46
60
|
guarded.update = async function (...args) {
|
|
47
61
|
args[1] = validation.validated(args[1], 'update');
|
|
62
|
+
await validation.targetsOf([args[1]], 'update');
|
|
48
63
|
return writer.update.apply(this, args);
|
|
49
64
|
};
|
|
50
65
|
|
|
@@ -52,6 +67,7 @@ export class StorageGuard {
|
|
|
52
67
|
if (typeof upsert === 'function') {
|
|
53
68
|
guarded.upsert = async function (...args) {
|
|
54
69
|
args[0] = validation.validated(args[0], 'upsert');
|
|
70
|
+
await validation.targetsOf([args[0]], 'upsert');
|
|
55
71
|
return upsert.apply(this, args);
|
|
56
72
|
};
|
|
57
73
|
}
|
|
@@ -62,6 +78,9 @@ export class StorageGuard {
|
|
|
62
78
|
// the caller asked for as one, and the refusal is readable from the input alone.
|
|
63
79
|
guarded.upsertAll = async function (...args) {
|
|
64
80
|
args[0] = args[0].map((row, index) => validation.validated(row, 'upsertAll', index));
|
|
81
|
+
// The keys of the whole page in one read per relation, for the reason above: a page
|
|
82
|
+
// refused on its fourth row has already written three.
|
|
83
|
+
await validation.targetsOf(args[0], 'upsertAll');
|
|
65
84
|
return upsertAll.apply(this, args);
|
|
66
85
|
};
|
|
67
86
|
}
|
|
@@ -81,7 +100,7 @@ export class StorageGuard {
|
|
|
81
100
|
}
|
|
82
101
|
|
|
83
102
|
/**
|
|
84
|
-
* The values this write carries, validated and handed on PARSED — the rule the client
|
|
103
|
+
* The values this write carries, validated and handed on PARSED — the rule the client facade
|
|
85
104
|
* already holds (`InputValidator`), applied to a write that never passed through it. What a
|
|
86
105
|
* handler is allowed to write is not asked here: only the value is.
|
|
87
106
|
*/
|
|
@@ -92,11 +111,11 @@ export class StorageGuard {
|
|
|
92
111
|
}
|
|
93
112
|
|
|
94
113
|
/**
|
|
95
|
-
* What a read may ask for. The write
|
|
114
|
+
* What a read may ask for. The write facade judges what LANDS in a row; this one judges
|
|
96
115
|
* what a caller says about one — and it was the single entrance to the port with no
|
|
97
116
|
* judge at all, while `params.filter` from a browser reaches it verbatim.
|
|
98
117
|
*
|
|
99
|
-
* A criterion may name a SET, which is the one thing the write
|
|
118
|
+
* A criterion may name a SET, which is the one thing the write facade would refuse: an
|
|
100
119
|
* array is judged member by member, since that is what `IN` binds.
|
|
101
120
|
*/
|
|
102
121
|
private criteria(where: Record<string, unknown>): Record<string, unknown> {
|
|
@@ -110,7 +129,7 @@ export class StorageGuard {
|
|
|
110
129
|
continue;
|
|
111
130
|
}
|
|
112
131
|
// A comparison names its own vocabulary, and a typo in it would otherwise be a
|
|
113
|
-
// criterion that filters nothing — the silent truncation this
|
|
132
|
+
// criterion that filters nothing — the silent truncation this facade exists to stop.
|
|
114
133
|
const comparison = comparisonOf(field, asked);
|
|
115
134
|
if (comparison) {
|
|
116
135
|
const unknown = unknownIn(comparison);
|
|
@@ -148,11 +167,11 @@ export class StorageGuard {
|
|
|
148
167
|
}
|
|
149
168
|
|
|
150
169
|
/**
|
|
151
|
-
* A filter on a field this
|
|
170
|
+
* A filter on a field this facade does not hand back.
|
|
152
171
|
*
|
|
153
172
|
* `output(schema)` narrows what is RETURNED and has never narrowed what is asked, so a
|
|
154
173
|
* caller can already sort a hidden column into existence one comparison at a time — and
|
|
155
|
-
* the admin
|
|
174
|
+
* the admin facade copies a browser's filter here verbatim. Said rather than refused: it
|
|
156
175
|
* is legal today, GraphQL batches a relation on a key a view may not carry, and a
|
|
157
176
|
* refusal would break that on the way to fixing this.
|
|
158
177
|
*/
|
|
@@ -161,7 +180,7 @@ export class StorageGuard {
|
|
|
161
180
|
if (!view || view[field] || this.said.has(field)) return;
|
|
162
181
|
this.said.add(field);
|
|
163
182
|
this.report.outOfView?.(
|
|
164
|
-
`${this.entity}.list() filtered on '${field}', which this
|
|
183
|
+
`${this.entity}.list() filtered on '${field}', which this facade does not hand back — `
|
|
165
184
|
+ 'a filter on a hidden field answers questions about it one call at a time.',
|
|
166
185
|
);
|
|
167
186
|
}
|
|
@@ -182,7 +201,7 @@ export class StorageGuard {
|
|
|
182
201
|
for (const [key, item] of Object.entries(value as Record<string, unknown>)) {
|
|
183
202
|
const field = this.fields[key];
|
|
184
203
|
// A key the entity does not declare has no column to land in and no judge to pass:
|
|
185
|
-
// on the client
|
|
204
|
+
// on the client facade it is a typo, and on this one it is a mapping that went stale.
|
|
186
205
|
if (!field) {
|
|
187
206
|
errors.push(`${where}${key}: ${InputRefusal.unknownField}`);
|
|
188
207
|
continue;
|
|
@@ -208,6 +227,43 @@ export class StorageGuard {
|
|
|
208
227
|
|
|
209
228
|
return parsed as T;
|
|
210
229
|
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* The rows a `ref()` points at, read before the write lands.
|
|
233
|
+
*
|
|
234
|
+
* Only the references the boot could not leave to a foreign key reach here — a target in
|
|
235
|
+
* the same source is already refused by the key, at the rows, which this cannot be: the
|
|
236
|
+
* target may be deleted between the read and the write. It catches what a key catches in
|
|
237
|
+
* practice, which is a key that was never right: a row copied from another environment,
|
|
238
|
+
* an author deleted months ago, an id from a test.
|
|
239
|
+
*
|
|
240
|
+
* A patch that does not carry the field says nothing about it, so it is skipped rather
|
|
241
|
+
* than read as `null`.
|
|
242
|
+
*/
|
|
243
|
+
private async targetsOf(rows: readonly Record<string, unknown>[], operation: string): Promise<void> {
|
|
244
|
+
if (this.relations.length === 0) return;
|
|
245
|
+
|
|
246
|
+
const refused = await Promise.all(this.relations.map(async (relation) => {
|
|
247
|
+
const keys = [...new Set(
|
|
248
|
+
rows.map((row) => row[relation.field]).filter((key) => key !== undefined && key !== null),
|
|
249
|
+
)];
|
|
250
|
+
if (keys.length === 0) return [];
|
|
251
|
+
const missing = await relation.missing(keys);
|
|
252
|
+
|
|
253
|
+
return missing.map((key) => `${relation.field} ${JSON.stringify(key)} — no ${relation.target} holds it`);
|
|
254
|
+
}));
|
|
255
|
+
|
|
256
|
+
const errors = refused.flat();
|
|
257
|
+
if (errors.length === 0) return;
|
|
258
|
+
|
|
259
|
+
throw new FougereError({
|
|
260
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
261
|
+
message: `Refused on the way out — ${errors.join(', ')}`,
|
|
262
|
+
entity: this.entity,
|
|
263
|
+
operation,
|
|
264
|
+
details: errors,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
211
267
|
}
|
|
212
268
|
|
|
213
269
|
const unwrap = (one: { value: unknown } | { error: string }): unknown =>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { computeBindingPlan, type BindingPlan } from '../wire/binding.js';
|
|
2
|
-
import type { InvocationContext } from '../wire/
|
|
3
|
-
import type { PresenterEntry } from '../descriptor/
|
|
2
|
+
import type { InvocationContext } from '../wire/InvocationContext.js';
|
|
3
|
+
import type { PresenterEntry } from '../descriptor/PresenterEntry.js';
|
|
4
4
|
import type { ArgumentResolver } from './ArgumentResolver.js';
|
|
5
|
-
import type { PresenterArgs } from './
|
|
5
|
+
import type { PresenterArgs } from './PresenterArgs.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Where each computed field's extra arguments come from — read off the declaration, so a
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { Call } from '../wire/
|
|
2
|
-
import { ErrorCode
|
|
1
|
+
import type { Call } from '../wire/Call.js';
|
|
2
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
3
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
3
4
|
import type { Route } from './Route.js';
|
|
4
5
|
import type { RoutePolicy } from './RoutePolicy.js';
|
|
5
6
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InputValidator, dotted, type SchemaView } from '@fougere/schema';
|
|
2
|
-
import type { InvocationContext } from '../wire/
|
|
3
|
-
import { ErrorCode
|
|
2
|
+
import type { InvocationContext } from '../wire/InvocationContext.js';
|
|
3
|
+
import { ErrorCode } from '../wire/ErrorCode.js';
|
|
4
|
+
import { FougereError } from '../wire/FougereError.js';
|
|
4
5
|
|
|
5
6
|
/** Validates and decodes the input declared by one operation contract. */
|
|
6
7
|
export function validateInput(
|