@fougere/core 0.6.0-alpha.0 → 0.7.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/README.md +1 -1
- package/dist/boot/Emissions.d.ts +13 -90
- package/dist/boot/Emissions.d.ts.map +1 -1
- package/dist/boot/Emissions.js +21 -118
- package/dist/boot/Emissions.js.map +1 -1
- package/dist/boot/ambient-port.d.ts +3 -24
- package/dist/boot/ambient-port.d.ts.map +1 -1
- package/dist/boot/ambient.als.d.ts.map +1 -1
- package/dist/boot/ambient.als.js +7 -12
- package/dist/boot/ambient.als.js.map +1 -1
- package/dist/boot/ambient.queue.d.ts +2 -5
- package/dist/boot/ambient.queue.d.ts.map +1 -1
- package/dist/boot/ambient.queue.js.map +1 -1
- package/dist/boot/apply.d.ts +1 -13
- package/dist/boot/apply.d.ts.map +1 -1
- package/dist/boot/apply.js +3 -15
- package/dist/boot/apply.js.map +1 -1
- package/dist/boot/auth.d.ts +2 -12
- package/dist/boot/auth.d.ts.map +1 -1
- package/dist/boot/boot.d.ts +3 -16
- package/dist/boot/boot.d.ts.map +1 -1
- package/dist/boot/boot.js +3 -10
- package/dist/boot/boot.js.map +1 -1
- package/dist/boot/bootstrap.d.ts.map +1 -1
- package/dist/boot/bootstrap.js +61 -127
- package/dist/boot/bootstrap.js.map +1 -1
- package/dist/boot/card.d.ts +1 -17
- package/dist/boot/card.d.ts.map +1 -1
- package/dist/boot/card.js +3 -32
- package/dist/boot/card.js.map +1 -1
- package/dist/boot/frame.d.ts +8 -32
- package/dist/boot/frame.d.ts.map +1 -1
- package/dist/boot/frame.js +20 -54
- package/dist/boot/frame.js.map +1 -1
- package/dist/boot/hosted.d.ts +2 -24
- package/dist/boot/hosted.d.ts.map +1 -1
- package/dist/boot/hosted.js +10 -15
- package/dist/boot/hosted.js.map +1 -1
- package/dist/boot/ownership.d.ts +3 -36
- package/dist/boot/ownership.d.ts.map +1 -1
- package/dist/boot/ownership.js +5 -40
- package/dist/boot/ownership.js.map +1 -1
- package/dist/boot/ports.d.ts +1 -14
- package/dist/boot/ports.d.ts.map +1 -1
- package/dist/boot/ports.js +1 -14
- package/dist/boot/ports.js.map +1 -1
- package/dist/boot/remote.d.ts +5 -38
- package/dist/boot/remote.d.ts.map +1 -1
- package/dist/boot/remote.js +8 -41
- package/dist/boot/remote.js.map +1 -1
- package/dist/boot/runner.d.ts +4 -21
- package/dist/boot/runner.d.ts.map +1 -1
- package/dist/boot/runner.js +4 -17
- package/dist/boot/runner.js.map +1 -1
- package/dist/boot/seed.d.ts +4 -31
- package/dist/boot/seed.d.ts.map +1 -1
- package/dist/boot/seed.js +6 -37
- package/dist/boot/seed.js.map +1 -1
- package/dist/boot/statement-drift.d.ts +2 -21
- package/dist/boot/statement-drift.d.ts.map +1 -1
- package/dist/boot/statement-drift.js +4 -9
- package/dist/boot/statement-drift.js.map +1 -1
- package/dist/boot/together.d.ts +4 -8
- package/dist/boot/together.d.ts.map +1 -1
- package/dist/boot/together.js +15 -50
- package/dist/boot/together.js.map +1 -1
- package/dist/boot/types.d.ts +28 -173
- package/dist/boot/types.d.ts.map +1 -1
- package/dist/builtin/config.d.ts +7 -0
- package/dist/builtin/config.d.ts.map +1 -0
- package/dist/builtin/config.js +15 -0
- package/dist/builtin/config.js.map +1 -0
- package/dist/{builtins → builtin}/logger.d.ts +4 -25
- package/dist/builtin/logger.d.ts.map +1 -0
- package/dist/{builtins → builtin}/logger.js +5 -32
- package/dist/builtin/logger.js.map +1 -0
- package/dist/config-loader.d.ts +9 -67
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +5 -18
- package/dist/config-loader.js.map +1 -1
- package/dist/contract.d.ts +13 -31
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +10 -26
- package/dist/contract.js.map +1 -1
- package/dist/crypto/encoding.d.ts +2 -15
- package/dist/crypto/encoding.d.ts.map +1 -1
- package/dist/crypto/encoding.js +2 -15
- package/dist/crypto/encoding.js.map +1 -1
- package/dist/crypto/node.d.ts.map +1 -1
- package/dist/crypto/node.js +1 -7
- package/dist/crypto/node.js.map +1 -1
- package/dist/crypto/port.d.ts +2 -18
- package/dist/crypto/port.d.ts.map +1 -1
- package/dist/crypto/port.js +1 -17
- package/dist/crypto/port.js.map +1 -1
- package/dist/crypto/webcrypto.d.ts.map +1 -1
- package/dist/crypto/webcrypto.js +1 -12
- package/dist/crypto/webcrypto.js.map +1 -1
- package/dist/declare.d.ts +6 -36
- package/dist/declare.d.ts.map +1 -1
- package/dist/declare.js +4 -29
- package/dist/declare.js.map +1 -1
- package/dist/define.d.ts +2 -3
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +2 -3
- package/dist/define.js.map +1 -1
- package/dist/descriptor/Fronds.d.ts +3 -28
- package/dist/descriptor/Fronds.d.ts.map +1 -1
- package/dist/descriptor/Fronds.js +6 -31
- package/dist/descriptor/Fronds.js.map +1 -1
- package/dist/descriptor/frond.d.ts +14 -63
- package/dist/descriptor/frond.d.ts.map +1 -1
- package/dist/dispatch/ArgumentResolver.d.ts +1 -1
- package/dist/dispatch/ArgumentResolver.d.ts.map +1 -1
- package/dist/dispatch/ArgumentResolver.js +5 -5
- package/dist/dispatch/ArgumentResolver.js.map +1 -1
- package/dist/dispatch/DispatchEvent.d.ts +2 -2
- package/dist/dispatch/DispatchEvent.d.ts.map +1 -1
- package/dist/dispatch/DispatchLifecycle.d.ts +1 -7
- package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -1
- package/dist/dispatch/DispatchLifecycle.js +1 -7
- package/dist/dispatch/DispatchLifecycle.js.map +1 -1
- package/dist/dispatch/DispatchPort.d.ts +1 -1
- package/dist/dispatch/DispatchPort.d.ts.map +1 -1
- package/dist/dispatch/Dispatcher.d.ts +1 -1
- package/dist/dispatch/Dispatcher.d.ts.map +1 -1
- package/dist/dispatch/Dispatcher.js +2 -2
- package/dist/dispatch/Dispatcher.js.map +1 -1
- package/dist/{boot → dispatch}/HandlerFacade.d.ts +25 -38
- package/dist/dispatch/HandlerFacade.d.ts.map +1 -0
- package/dist/{boot → dispatch}/HandlerFacade.js +65 -74
- package/dist/dispatch/HandlerFacade.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 +4 -4
- 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/OutputView.d.ts +3 -2
- package/dist/dispatch/OutputView.d.ts.map +1 -1
- package/dist/dispatch/OutputView.js +19 -1
- package/dist/dispatch/OutputView.js.map +1 -1
- package/dist/dispatch/Route.d.ts +2 -2
- package/dist/dispatch/Route.d.ts.map +1 -1
- package/dist/dispatch/RoutePolicy.d.ts +1 -1
- package/dist/dispatch/RoutePolicy.d.ts.map +1 -1
- package/dist/dispatch/RouteRegistry.d.ts +1 -1
- package/dist/dispatch/RouteRegistry.d.ts.map +1 -1
- package/dist/dispatch/RouteRegistry.js +2 -2
- package/dist/dispatch/RouteRegistry.js.map +1 -1
- package/dist/dispatch/RouteResolver.d.ts +2 -4
- package/dist/dispatch/RouteResolver.d.ts.map +1 -1
- package/dist/dispatch/StorageGuard.d.ts +8 -7
- package/dist/dispatch/StorageGuard.d.ts.map +1 -1
- package/dist/dispatch/StorageGuard.js +61 -18
- package/dist/dispatch/StorageGuard.js.map +1 -1
- package/dist/dispatch/presenterArguments.d.ts +7 -0
- package/dist/dispatch/presenterArguments.d.ts.map +1 -0
- package/dist/dispatch/presenterArguments.js +12 -0
- package/dist/dispatch/presenterArguments.js.map +1 -0
- package/dist/dispatch/remoteRoutes.d.ts +7 -0
- package/dist/dispatch/remoteRoutes.d.ts.map +1 -0
- package/dist/dispatch/{RemoteRouteResolver.js → remoteRoutes.js} +6 -10
- package/dist/dispatch/remoteRoutes.js.map +1 -0
- package/dist/dispatch/routeNotFound.d.ts +9 -0
- package/dist/dispatch/routeNotFound.d.ts.map +1 -0
- package/dist/dispatch/routeNotFound.js +21 -0
- package/dist/dispatch/routeNotFound.js.map +1 -0
- package/dist/dispatch/validateInput.d.ts +5 -0
- package/dist/dispatch/validateInput.d.ts.map +1 -0
- package/dist/dispatch/validateInput.js +20 -0
- package/dist/dispatch/validateInput.js.map +1 -0
- package/dist/effective-operation.d.ts +1 -24
- package/dist/effective-operation.d.ts.map +1 -1
- package/dist/effective-operation.js +21 -50
- package/dist/effective-operation.js.map +1 -1
- package/dist/emit.d.ts +4 -42
- package/dist/emit.d.ts.map +1 -1
- package/dist/emit.js +3 -39
- package/dist/emit.js.map +1 -1
- package/dist/entry/facade.d.ts +8 -0
- package/dist/entry/facade.d.ts.map +1 -0
- package/dist/entry/facade.js +28 -0
- package/dist/entry/facade.js.map +1 -0
- package/dist/entry/transport.d.ts +5 -0
- package/dist/entry/transport.d.ts.map +1 -0
- package/dist/entry/transport.js +11 -0
- package/dist/entry/transport.js.map +1 -0
- package/dist/frond-config.d.ts +7 -70
- package/dist/frond-config.d.ts.map +1 -1
- package/dist/frond-config.js +1 -9
- package/dist/frond-config.js.map +1 -1
- package/dist/identity-keys.d.ts +2 -5
- package/dist/identity-keys.d.ts.map +1 -1
- package/dist/identity-keys.js +3 -16
- package/dist/identity-keys.js.map +1 -1
- package/dist/identity.d.ts +4 -30
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +11 -73
- package/dist/identity.js.map +1 -1
- package/dist/imports.d.ts +1 -7
- package/dist/imports.d.ts.map +1 -1
- package/dist/imports.js +1 -7
- package/dist/imports.js.map +1 -1
- package/dist/index.d.ts +17 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -18
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +1 -8
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +1 -8
- package/dist/loader.js.map +1 -1
- package/dist/node.d.ts +2 -11
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +2 -11
- package/dist/node.js.map +1 -1
- package/dist/prefab/collector.d.ts +1 -22
- package/dist/prefab/collector.d.ts.map +1 -1
- package/dist/prefab/collector.js +1 -22
- package/dist/prefab/collector.js.map +1 -1
- package/dist/prefab/crud.d.ts +16 -32
- package/dist/prefab/crud.d.ts.map +1 -1
- package/dist/prefab/crud.js +31 -58
- package/dist/prefab/crud.js.map +1 -1
- package/dist/prefab/mirror.d.ts +2 -24
- package/dist/prefab/mirror.d.ts.map +1 -1
- package/dist/prefab/mirror.js +2 -20
- package/dist/prefab/mirror.js.map +1 -1
- package/dist/prefab/prefab.d.ts +1 -7
- package/dist/prefab/prefab.d.ts.map +1 -1
- package/dist/prefab/prefab.js +1 -7
- package/dist/prefab/prefab.js.map +1 -1
- package/dist/prefab/presenter.d.ts +2 -36
- package/dist/prefab/presenter.d.ts.map +1 -1
- package/dist/prefab/presenter.js +2 -36
- package/dist/prefab/presenter.js.map +1 -1
- package/dist/prefab/repository.d.ts +5 -73
- package/dist/prefab/repository.d.ts.map +1 -1
- package/dist/prefab/repository.js +3 -16
- package/dist/prefab/repository.js.map +1 -1
- package/dist/scan/adapters.d.ts +3 -0
- package/dist/scan/adapters.d.ts.map +1 -0
- package/dist/scan/adapters.js +25 -0
- package/dist/scan/adapters.js.map +1 -0
- package/dist/scan/bundling.d.ts +1 -12
- package/dist/scan/bundling.d.ts.map +1 -1
- package/dist/scan/bundling.js +1 -12
- package/dist/scan/bundling.js.map +1 -1
- package/dist/scan/conventions.d.ts +6 -40
- package/dist/scan/conventions.d.ts.map +1 -1
- package/dist/scan/conventions.js +5 -34
- package/dist/scan/conventions.js.map +1 -1
- package/dist/scan/emit.d.ts +1 -5
- package/dist/scan/emit.d.ts.map +1 -1
- package/dist/scan/emit.js +4 -38
- package/dist/scan/emit.js.map +1 -1
- package/dist/scan/handler-parser.d.ts +4 -26
- package/dist/scan/handler-parser.d.ts.map +1 -1
- package/dist/scan/handler-parser.js +26 -83
- package/dist/scan/handler-parser.js.map +1 -1
- package/dist/scan/result.d.ts +3 -16
- package/dist/scan/result.d.ts.map +1 -1
- package/dist/scan/scanner.d.ts +2 -27
- package/dist/scan/scanner.d.ts.map +1 -1
- package/dist/scan/scanner.js +28 -127
- package/dist/scan/scanner.js.map +1 -1
- package/dist/scan/statement.d.ts.map +1 -1
- package/dist/scan/statement.js +4 -30
- package/dist/scan/statement.js.map +1 -1
- package/dist/source.d.ts +41 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +10 -0
- package/dist/source.js.map +1 -0
- package/dist/storage.d.ts +13 -210
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +4 -68
- package/dist/storage.js.map +1 -1
- package/dist/store.d.ts +18 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +146 -0
- package/dist/store.js.map +1 -0
- package/dist/verify.d.ts +5 -38
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +17 -37
- package/dist/verify.js.map +1 -1
- package/dist/wire/CallLog.d.ts +32 -0
- package/dist/wire/CallLog.d.ts.map +1 -0
- package/dist/{contract → wire}/CallLog.js.map +1 -1
- package/dist/wire/Invocation.d.ts +32 -0
- package/dist/wire/Invocation.d.ts.map +1 -0
- package/dist/wire/Invocation.js +66 -0
- package/dist/wire/Invocation.js.map +1 -0
- package/dist/{contract → wire}/RouteAddress.d.ts +5 -0
- package/dist/wire/RouteAddress.d.ts.map +1 -0
- package/dist/{contract → wire}/RouteAddress.js +7 -0
- package/dist/wire/RouteAddress.js.map +1 -0
- package/dist/wire/binding.d.ts +5 -21
- package/dist/wire/binding.d.ts.map +1 -1
- package/dist/wire/binding.js +5 -10
- package/dist/wire/binding.js.map +1 -1
- package/dist/wire/call.d.ts +24 -133
- package/dist/wire/call.d.ts.map +1 -1
- package/dist/wire/call.js +15 -41
- package/dist/wire/call.js.map +1 -1
- package/dist/wire/drift.d.ts +3 -28
- package/dist/wire/drift.d.ts.map +1 -1
- package/dist/wire/drift.js +4 -23
- package/dist/wire/drift.js.map +1 -1
- package/dist/wire/errors.d.ts +4 -24
- package/dist/wire/errors.d.ts.map +1 -1
- package/dist/wire/errors.js +4 -24
- package/dist/wire/errors.js.map +1 -1
- package/dist/wire/http-error.d.ts +2 -13
- package/dist/wire/http-error.d.ts.map +1 -1
- package/dist/wire/http-error.js +5 -19
- package/dist/wire/http-error.js.map +1 -1
- package/dist/wire/loggerMiddleware.d.ts +2 -8
- package/dist/wire/loggerMiddleware.d.ts.map +1 -1
- package/dist/wire/loggerMiddleware.js +1 -7
- package/dist/wire/loggerMiddleware.js.map +1 -1
- package/dist/wire/middleware.d.ts +3 -7
- package/dist/wire/middleware.d.ts.map +1 -1
- package/dist/wire/middleware.js +1 -5
- package/dist/wire/middleware.js.map +1 -1
- package/dist/wire/operation.d.ts +7 -43
- package/dist/wire/operation.d.ts.map +1 -1
- package/dist/wire/operation.js +4 -15
- package/dist/wire/operation.js.map +1 -1
- package/dist/wire/signature.d.ts +4 -25
- package/dist/wire/signature.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/boot/Emissions.ts +21 -118
- package/src/boot/ambient-port.ts +3 -24
- package/src/boot/ambient.als.ts +7 -12
- package/src/boot/ambient.queue.ts +2 -5
- package/src/boot/apply.ts +3 -15
- package/src/boot/auth.ts +2 -12
- package/src/boot/boot.ts +5 -20
- package/src/boot/bootstrap.ts +69 -136
- package/src/boot/card.ts +4 -33
- package/src/boot/frame.ts +28 -62
- package/src/boot/hosted.ts +12 -34
- package/src/boot/ownership.ts +5 -39
- package/src/boot/ports.ts +1 -14
- package/src/boot/remote.ts +11 -58
- package/src/boot/runner.ts +5 -22
- package/src/boot/seed.ts +6 -37
- package/src/boot/statement-drift.ts +5 -24
- package/src/boot/together.ts +18 -51
- package/src/boot/types.ts +28 -173
- package/src/{builtins → builtin}/config.ts +1 -7
- package/src/{builtins → builtin}/logger.ts +6 -39
- package/src/config-loader.ts +12 -71
- package/src/contract.ts +15 -39
- package/src/crypto/encoding.ts +2 -15
- package/src/crypto/node.ts +1 -7
- package/src/crypto/port.ts +2 -18
- package/src/crypto/webcrypto.ts +1 -12
- package/src/declare.ts +8 -39
- package/src/define.ts +2 -3
- package/src/descriptor/Fronds.ts +6 -31
- package/src/descriptor/frond.ts +14 -63
- package/src/dispatch/ArgumentResolver.ts +6 -6
- package/src/dispatch/DispatchEvent.ts +2 -2
- package/src/dispatch/DispatchLifecycle.ts +1 -7
- package/src/dispatch/DispatchPort.ts +1 -1
- package/src/dispatch/Dispatcher.ts +3 -3
- package/src/dispatch/HandlerFacade.ts +231 -0
- package/src/dispatch/LocalRoutePolicy.ts +4 -4
- package/src/dispatch/OperationRoute.ts +2 -2
- package/src/dispatch/OutputView.ts +24 -2
- package/src/dispatch/Route.ts +2 -2
- package/src/dispatch/RoutePolicy.ts +1 -1
- package/src/dispatch/RouteRegistry.ts +2 -2
- package/src/dispatch/RouteResolver.ts +2 -4
- package/src/dispatch/StorageGuard.ts +70 -18
- package/src/dispatch/presenterArguments.ts +25 -0
- package/src/dispatch/{RemoteRouteResolver.ts → remoteRoutes.ts} +7 -9
- package/src/dispatch/routeNotFound.ts +33 -0
- package/src/dispatch/validateInput.ts +28 -0
- package/src/effective-operation.ts +21 -50
- package/src/emit.ts +5 -63
- package/src/entry/facade.ts +44 -0
- package/src/entry/transport.ts +16 -0
- package/src/frond-config.ts +7 -70
- package/src/identity-keys.ts +3 -16
- package/src/identity.ts +12 -80
- package/src/imports.ts +2 -31
- package/src/index.ts +17 -24
- package/src/loader.ts +2 -16
- package/src/node.ts +2 -11
- package/src/prefab/collector.ts +1 -22
- package/src/prefab/crud.ts +37 -76
- package/src/prefab/mirror.ts +4 -44
- package/src/prefab/prefab.ts +2 -21
- package/src/prefab/presenter.ts +2 -36
- package/src/prefab/repository.ts +7 -83
- package/src/scan/adapters.ts +32 -0
- package/src/scan/bundling.ts +1 -12
- package/src/scan/conventions.ts +6 -40
- package/src/scan/emit.ts +4 -38
- package/src/scan/handler-parser.ts +27 -96
- package/src/scan/result.ts +3 -16
- package/src/scan/scanner.ts +27 -126
- package/src/scan/statement.ts +4 -30
- package/src/source.ts +44 -0
- package/src/storage.ts +14 -234
- package/src/store.ts +152 -0
- package/src/verify.ts +16 -57
- package/src/wire/CallLog.ts +30 -0
- package/src/{contract → wire}/Invocation.ts +24 -17
- package/src/{contract → wire}/RouteAddress.ts +7 -0
- package/src/wire/binding.ts +9 -25
- package/src/wire/call.ts +30 -133
- package/src/wire/drift.ts +5 -30
- package/src/wire/errors.ts +4 -24
- package/src/wire/http-error.ts +5 -19
- package/src/wire/loggerMiddleware.ts +2 -8
- package/src/wire/middleware.ts +3 -7
- package/src/wire/operation.ts +8 -48
- package/src/wire/signature.ts +4 -25
- package/dist/boot/HandlerFacade.d.ts.map +0 -1
- package/dist/boot/HandlerFacade.js.map +0 -1
- package/dist/builtins/config.d.ts +0 -13
- package/dist/builtins/config.d.ts.map +0 -1
- package/dist/builtins/config.js +0 -21
- package/dist/builtins/config.js.map +0 -1
- package/dist/builtins/logger.d.ts.map +0 -1
- package/dist/builtins/logger.js.map +0 -1
- package/dist/contract/Call.d.ts +0 -10
- package/dist/contract/Call.d.ts.map +0 -1
- package/dist/contract/Call.js +0 -15
- package/dist/contract/Call.js.map +0 -1
- package/dist/contract/CallLog.d.ts +0 -57
- package/dist/contract/CallLog.d.ts.map +0 -1
- package/dist/contract/Invocation.d.ts +0 -27
- package/dist/contract/Invocation.d.ts.map +0 -1
- package/dist/contract/Invocation.js +0 -59
- package/dist/contract/Invocation.js.map +0 -1
- package/dist/contract/RouteAddress.d.ts.map +0 -1
- package/dist/contract/RouteAddress.js.map +0 -1
- package/dist/dispatch/InputValidator.d.ts +0 -7
- package/dist/dispatch/InputValidator.d.ts.map +0 -1
- package/dist/dispatch/InputValidator.js +0 -22
- package/dist/dispatch/InputValidator.js.map +0 -1
- package/dist/dispatch/OperationExecutor.d.ts +0 -25
- package/dist/dispatch/OperationExecutor.d.ts.map +0 -1
- package/dist/dispatch/OperationExecutor.js +0 -32
- package/dist/dispatch/OperationExecutor.js.map +0 -1
- package/dist/dispatch/OutputProjector.d.ts +0 -12
- package/dist/dispatch/OutputProjector.d.ts.map +0 -1
- package/dist/dispatch/OutputProjector.js +0 -30
- package/dist/dispatch/OutputProjector.js.map +0 -1
- package/dist/dispatch/PresenterArgumentResolver.d.ts +0 -12
- package/dist/dispatch/PresenterArgumentResolver.d.ts.map +0 -1
- package/dist/dispatch/PresenterArgumentResolver.js +0 -20
- package/dist/dispatch/PresenterArgumentResolver.js.map +0 -1
- package/dist/dispatch/RemoteRouteResolver.d.ts +0 -13
- package/dist/dispatch/RemoteRouteResolver.d.ts.map +0 -1
- package/dist/dispatch/RemoteRouteResolver.js.map +0 -1
- package/dist/dispatch/RouteNotFoundError.d.ts +0 -10
- package/dist/dispatch/RouteNotFoundError.d.ts.map +0 -1
- package/dist/dispatch/RouteNotFoundError.js +0 -24
- package/dist/dispatch/RouteNotFoundError.js.map +0 -1
- package/dist/entry/DynamicFacade.d.ts +0 -10
- package/dist/entry/DynamicFacade.d.ts.map +0 -1
- package/dist/entry/DynamicFacade.js +0 -27
- package/dist/entry/DynamicFacade.js.map +0 -1
- package/dist/entry/FacadeEntry.d.ts +0 -11
- package/dist/entry/FacadeEntry.d.ts.map +0 -1
- package/dist/entry/FacadeEntry.js +0 -26
- package/dist/entry/FacadeEntry.js.map +0 -1
- package/dist/entry/TransportEntry.d.ts +0 -13
- package/dist/entry/TransportEntry.d.ts.map +0 -1
- package/dist/entry/TransportEntry.js +0 -24
- package/dist/entry/TransportEntry.js.map +0 -1
- package/dist/rows.d.ts +0 -40
- package/dist/rows.d.ts.map +0 -1
- package/dist/rows.js +0 -146
- package/dist/rows.js.map +0 -1
- package/src/boot/HandlerFacade.ts +0 -242
- package/src/contract/Call.ts +0 -18
- package/src/contract/CallLog.ts +0 -55
- package/src/dispatch/InputValidator.ts +0 -28
- package/src/dispatch/OperationExecutor.ts +0 -60
- package/src/dispatch/OutputProjector.ts +0 -32
- package/src/dispatch/PresenterArgumentResolver.ts +0 -25
- package/src/dispatch/RouteNotFoundError.ts +0 -29
- package/src/entry/DynamicFacade.ts +0 -28
- package/src/entry/FacadeEntry.ts +0 -32
- package/src/entry/TransportEntry.ts +0 -30
- package/src/rows.ts +0 -155
- /package/dist/{contract → wire}/CallLog.js +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Call } from '../wire/call.js';
|
|
2
|
+
import { RouteAddress } from '../wire/RouteAddress.js';
|
|
3
|
+
/** Adapts the historical transport signature to the canonical dispatch port. */
|
|
4
|
+
export function createTransportEntry(dispatcher, surface) {
|
|
5
|
+
return (legacy, invocation) => dispatcher.dispatch(new Call(new RouteAddress({
|
|
6
|
+
entity: legacy.entity,
|
|
7
|
+
operation: legacy.op,
|
|
8
|
+
...(surface !== undefined ? { surface } : {}),
|
|
9
|
+
}), invocation));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/entry/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAIvD,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,UAAwB,EAAE,OAAgB;IAC7E,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CACzD,IAAI,YAAY,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,EAAE;QACpB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC,EACF,UAAU,CACX,CAAC,CAAC;AACL,CAAC"}
|
package/dist/frond-config.d.ts
CHANGED
|
@@ -1,44 +1,10 @@
|
|
|
1
1
|
import type { EntityConstructor, SchemaView } from '@fougere/schema';
|
|
2
2
|
import type { BindingPlan } from './wire/binding.js';
|
|
3
|
-
/**
|
|
4
|
-
* Per-operation override. Config takes precedence over conventions (isReadOp, facade lookup).
|
|
5
|
-
*
|
|
6
|
-
* Two families of keys, and they act at different depths:
|
|
7
|
-
*
|
|
8
|
-
* - **Resolution** (`kind`, `handler`, `method`) — intent and implementation, resolved
|
|
9
|
-
* once into core's `EffectiveOperation`; every local or remote door consumes it.
|
|
10
|
-
* - **Projection** (`graphql`) — protocol vocabulary, read only by that adapter.
|
|
11
|
-
* - **Contract** (`input`, `output`, `binding`) — what the op IS. Read by the façade,
|
|
12
|
-
* and this is the third producer of an {@link OperationContract}: a prefab DECLARES its
|
|
13
|
-
* ops (`Crud.__ops`), the scan DERIVES them from source, config STATES them outright.
|
|
14
|
-
* The façade cannot tell the three apart.
|
|
15
|
-
*
|
|
16
|
-
* Stating a contract here makes the scan optional rather than load-bearing. Two cases it
|
|
17
|
-
* answers that nothing else does:
|
|
18
|
-
* - a method inherited from an **installed** base class — the scan resolves nothing there
|
|
19
|
-
* (workspace-only heritage) and says nothing, so the op silently misses the façade;
|
|
20
|
-
* - an operation inherited from a declaration unavailable to the project's type checker.
|
|
21
|
-
*
|
|
22
|
-
* Config wins over both other producers — it is the most explicit statement, made by
|
|
23
|
-
* whoever assembles the app. Precedence: CLI > frond config > fougere config > scan >
|
|
24
|
-
* conventions.
|
|
25
|
-
*/
|
|
3
|
+
/** Per-operation override. */
|
|
26
4
|
export interface OperationOverride {
|
|
27
|
-
/**
|
|
28
|
-
* Force operation kind, over the naming convention (`isReadOp`).
|
|
29
|
-
*
|
|
30
|
-
* The convention reads the NAME, which is a weak signal — an app naming its reads in
|
|
31
|
-
* domain terms (`ofBook`, `roots`, `bySlug`) matches no prefix and every one of them is
|
|
32
|
-
* published as a mutation and a POST. This is the only place that fixes it.
|
|
33
|
-
*/
|
|
5
|
+
/** Force operation kind, over the naming convention (`isReadOp`). */
|
|
34
6
|
kind?: 'query' | 'command';
|
|
35
|
-
/**
|
|
36
|
-
* The GraphQL root field this op answers to. Defaults to the method name.
|
|
37
|
-
*
|
|
38
|
-
* A GraphQL root is flat, so two handlers naming a method `ofBook` claim one field and
|
|
39
|
-
* the build is refused, naming both. Nothing is renamed for you: the root vocabulary is
|
|
40
|
-
* the app's, and a derived name would move the day a distant frond gained an entity.
|
|
41
|
-
*/
|
|
7
|
+
/** The GraphQL root field this op answers to. */
|
|
42
8
|
graphql?: string;
|
|
43
9
|
/**
|
|
44
10
|
* Handler class to delegate to (overrides the default `{Entity}Handler` lookup).
|
|
@@ -47,19 +13,9 @@ export interface OperationOverride {
|
|
|
47
13
|
handler?: EntityConstructor;
|
|
48
14
|
/** Method name on `handler` (defaults to the operation name). */
|
|
49
15
|
method?: string;
|
|
50
|
-
/**
|
|
51
|
-
* CASL ability check (e.g. 'archive Post'). **Declared, not implemented** — no
|
|
52
|
-
* reader interprets it today, in any adapter. Kept as the named slot for the
|
|
53
|
-
* question rather than silently dropped, but do not rely on it: a config that
|
|
54
|
-
* states a policy is not enforced anywhere.
|
|
55
|
-
*
|
|
56
|
-
* Wiring it means adopting a rules engine, which is precisely what the design
|
|
57
|
-
* turns down: an identity-dependent right is judged INSIDE the operation
|
|
58
|
-
* (`publish` reads `post.authorId !== user.id`), and a door-dependent one is a
|
|
59
|
-
* surface. Neither needs a second vocabulary evaluated by a second engine.
|
|
60
|
-
*/
|
|
16
|
+
/** CASL ability check (e.g. */
|
|
61
17
|
policy?: string;
|
|
62
|
-
/** What
|
|
18
|
+
/** What validates the input. The view carries its own mode (`partial()` → patch). */
|
|
63
19
|
input?: SchemaView;
|
|
64
20
|
/**
|
|
65
21
|
* Where each argument is read from — states what the scan would otherwise derive
|
|
@@ -72,18 +28,7 @@ export interface OperationOverride {
|
|
|
72
28
|
export interface FrondConfig {
|
|
73
29
|
/** Class names exposed as the frond's public contract (all surfaces). */
|
|
74
30
|
expose?: string[];
|
|
75
|
-
/**
|
|
76
|
-
* The entities this frond may read ACROSS sources, by name.
|
|
77
|
-
*
|
|
78
|
-
* It is not a permission checked after the fact: the list IS the environment a
|
|
79
|
-
* cross-source query runs in — a source holding none of these is never opened, so
|
|
80
|
-
* its tables do not exist in that connection. `facadeFor` excludes an entity with no
|
|
81
|
-
* door on purpose ("it would publish the auth tables to anyone who asks"), and a SQL
|
|
82
|
-
* door at app scope would hand them over; this is what keeps it shut.
|
|
83
|
-
*
|
|
84
|
-
* Declaring it is what makes `Reads` injectable here. A frond that declares none
|
|
85
|
-
* asks for none, and nothing is attached on its behalf.
|
|
86
|
-
*/
|
|
31
|
+
/** The entities this frond may read ACROSS sources, by name. */
|
|
87
32
|
reads?: string[];
|
|
88
33
|
/** Per-surface entity lists. Overrides default deduction for each named surface. */
|
|
89
34
|
surfaces?: Record<string, string[]>;
|
|
@@ -92,15 +37,7 @@ export interface FrondConfig {
|
|
|
92
37
|
/** Per-operation overrides. Key = operation name (method name on a handler). */
|
|
93
38
|
operations?: Record<string, OperationOverride>;
|
|
94
39
|
}
|
|
95
|
-
/**
|
|
96
|
-
* Define a frond configuration (typed identity helper).
|
|
97
|
-
*
|
|
98
|
-
* ```ts
|
|
99
|
-
* // fronds/auth/frond.config.ts
|
|
100
|
-
* import { defineFrond } from '@fougere/core'
|
|
101
|
-
* export default defineFrond({ expose: ['User', 'AuthHandler'] })
|
|
102
|
-
* ```
|
|
103
|
-
*/
|
|
40
|
+
/** Define a frond configuration (typed identity helper). */
|
|
104
41
|
export declare function defineFrond(config: FrondConfig): FrondConfig;
|
|
105
42
|
/**
|
|
106
43
|
* Load a frond's `frond.config.{ts,js,mjs}` from the given frond directory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frond-config.d.ts","sourceRoot":"","sources":["../src/frond-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD
|
|
1
|
+
{"version":3,"file":"frond-config.d.ts","sourceRoot":"","sources":["../src/frond-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,8BAA8B;AAC9B,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,qFAAqF;IACrF,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAChD;AAID,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE5D;AAMD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CASzF"}
|
package/dist/frond-config.js
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
// ── Helper ───────────────────────────────────────
|
|
4
|
-
/**
|
|
5
|
-
* Define a frond configuration (typed identity helper).
|
|
6
|
-
*
|
|
7
|
-
* ```ts
|
|
8
|
-
* // fronds/auth/frond.config.ts
|
|
9
|
-
* import { defineFrond } from '@fougere/core'
|
|
10
|
-
* export default defineFrond({ expose: ['User', 'AuthHandler'] })
|
|
11
|
-
* ```
|
|
12
|
-
*/
|
|
4
|
+
/** Define a frond configuration (typed identity helper). */
|
|
13
5
|
export function defineFrond(config) {
|
|
14
6
|
return config;
|
|
15
7
|
}
|
package/dist/frond-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frond-config.js","sourceRoot":"","sources":["../src/frond-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"frond-config.js","sourceRoot":"","sources":["../src/frond-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiDrC,oDAAoD;AAEpD,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oDAAoD;AAEpD,MAAM,kBAAkB,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AAEtF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB;IACrD,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/identity-keys.d.ts
CHANGED
|
@@ -4,11 +4,8 @@ export declare function generateKeyPair(): {
|
|
|
4
4
|
publicKey: string;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
|
-
* Bind a name to a public key, signed by the root — the whole of what a receiver
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `ttlDays` bounds the damage of a leaked frond key without a revocation list:
|
|
11
|
-
* re-issuing is a deployment, which is the same gesture that leaked it.
|
|
7
|
+
* Bind a name to a public key, signed by the root — the whole of what a receiver needs to
|
|
8
|
+
* recognize a frond it has never seen.
|
|
12
9
|
*/
|
|
13
10
|
export declare function issueGrant(rootPrivateKey: string, name: string, frondPublicKey: string, ttlDays?: number): string;
|
|
14
11
|
//# sourceMappingURL=identity-keys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-keys.d.ts","sourceRoot":"","sources":["../src/identity-keys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identity-keys.d.ts","sourceRoot":"","sources":["../src/identity-keys.ts"],"names":[],"mappings":"AAIA,uFAAuF;AACvF,wBAAgB,eAAe,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAM3E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,OAAO,SAAK,GACX,MAAM,CAOR"}
|
package/dist/identity-keys.js
CHANGED
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Making keys and issuing grants — the half of identity that runs at a DEPLOYMENT.
|
|
3
|
-
*
|
|
4
|
-
* It sits on the Node entry because it is the CLI speaking: `fougere keys` generates a
|
|
5
|
-
* pair, `fougere grant` binds a name to one, and both happen once, on a machine with a
|
|
6
|
-
* filesystem. Neither is reachable from a request path, so nothing here is on any hot
|
|
7
|
-
* path and `generateKeyPairSync` — the one gesture WebCrypto could not replace without
|
|
8
|
-
* changing what a key IS — never has to leave `node:crypto`.
|
|
9
|
-
*
|
|
10
|
-
* The verifying half is elsewhere (`identity.ts`) because it runs per call, everywhere.
|
|
11
|
-
*/
|
|
1
|
+
/** Making keys and issuing grants — the half of identity that runs at a DEPLOYMENT. */
|
|
12
2
|
import { createPrivateKey, createPublicKey, generateKeyPairSync, sign } from 'node:crypto';
|
|
13
3
|
import { b64url } from './crypto/encoding.js';
|
|
14
4
|
/** A fresh Ed25519 pair, PEM both ways. The root's and a frond's are the same kind. */
|
|
@@ -20,11 +10,8 @@ export function generateKeyPair() {
|
|
|
20
10
|
};
|
|
21
11
|
}
|
|
22
12
|
/**
|
|
23
|
-
* Bind a name to a public key, signed by the root — the whole of what a receiver
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* `ttlDays` bounds the damage of a leaked frond key without a revocation list:
|
|
27
|
-
* re-issuing is a deployment, which is the same gesture that leaked it.
|
|
13
|
+
* Bind a name to a public key, signed by the root — the whole of what a receiver needs to
|
|
14
|
+
* recognize a frond it has never seen.
|
|
28
15
|
*/
|
|
29
16
|
export function issueGrant(rootPrivateKey, name, frondPublicKey, ttlDays = 90) {
|
|
30
17
|
const jwk = createPublicKey(frondPublicKey).export({ format: 'jwk' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-keys.js","sourceRoot":"","sources":["../src/identity-keys.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"identity-keys.js","sourceRoot":"","sources":["../src/identity-keys.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,uFAAuF;AACvF,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjE,OAAO;QACL,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC1E,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;KACxE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,cAAsB,EACtB,IAAY,EACZ,cAAsB,EACtB,OAAO,GAAG,EAAE;IAEZ,MAAM,GAAG,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IACtG,MAAM,YAAY,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;IAC5C,OAAO,GAAG,YAAY,IAAI,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9H,CAAC"}
|
package/dist/identity.d.ts
CHANGED
|
@@ -14,45 +14,19 @@ export interface VerifiedCall {
|
|
|
14
14
|
/** The state it asserted, now proven to come from `caller`. */
|
|
15
15
|
state: Record<string, unknown>;
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Sign one call, whole: who is asking, what is asked, and on whose behalf.
|
|
19
|
-
*
|
|
20
|
-
* The private key is parsed on every call here, which is the convenience form. A process
|
|
21
|
-
* that signs in a request path builds its signer once — `identityFromEnv` does exactly
|
|
22
|
-
* that, and `sign` on the value it returns holds the parsed key.
|
|
23
|
-
*/
|
|
17
|
+
/** Sign one call, whole. */
|
|
24
18
|
export declare function signEnvelope(identity: FrondIdentity, call: SignedCall): Promise<string>;
|
|
25
|
-
/**
|
|
26
|
-
* Establish the caller, or throw. Order matters: the grant is checked against the ROOT
|
|
27
|
-
* first, and only the key it carries verifies the envelope — reading the envelope's own
|
|
28
|
-
* claim of who it is before that would be believing the thing under examination.
|
|
29
|
-
*/
|
|
19
|
+
/** Establish the caller, or throw. */
|
|
30
20
|
export declare function verifyEnvelope(token: string, rootPublicKey: string, presented: SignedCall): Promise<VerifiedCall>;
|
|
31
21
|
/** The two halves a boot needs, and the environment they come from. */
|
|
32
22
|
export interface CallIdentity {
|
|
33
|
-
/**
|
|
34
|
-
* Signs an outgoing call, whole. Absent when this process holds no key — it only answers.
|
|
35
|
-
*
|
|
36
|
-
* A promise because WebCrypto has no synchronous form. On Node the work stays
|
|
37
|
-
* synchronous inside and only the answer is wrapped: measured at 14.28 µs awaited
|
|
38
|
-
* against 14.30 µs called directly, while WebCrypto on the same curve costs 22.72.
|
|
39
|
-
*/
|
|
23
|
+
/** Signs an outgoing call, whole. */
|
|
40
24
|
sign?: (call: SignedCall) => Promise<string>;
|
|
41
25
|
/** Establishes an incoming caller, against the call that actually arrived. */
|
|
42
26
|
verify?: (identity: string, presented: SignedCall) => Promise<VerifiedCall>;
|
|
43
27
|
/** Refuse an unsigned call. True exactly when a root is trusted. */
|
|
44
28
|
requireIdentity: boolean;
|
|
45
29
|
}
|
|
46
|
-
/**
|
|
47
|
-
* What the deployment injected, read once at boot.
|
|
48
|
-
*
|
|
49
|
-
* Three variables, no config key: a private key never belongs in a committed file, and
|
|
50
|
-
* `fougere keys` prints exactly these. A process may hold either half or both — a frond
|
|
51
|
-
* that only answers has no key, one that only calls trusts no root, one in the middle
|
|
52
|
-
* does both.
|
|
53
|
-
*
|
|
54
|
-
* Trusting a root IS asking to refuse: there is no separate flag, because a deployment
|
|
55
|
-
* that names an authority and then accepts unsigned calls has said two things at once.
|
|
56
|
-
*/
|
|
30
|
+
/** What the deployment injected, read once at boot. */
|
|
57
31
|
export declare function identityFromEnv(env?: Record<string, string | undefined>): Promise<CallIdentity>;
|
|
58
32
|
//# sourceMappingURL=identity.d.ts.map
|
package/dist/identity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAOjD,2FAA2F;AAC3F,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAuBD,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AA8BD,4BAA4B;AAC5B,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7F;AAaD,sCAAsC;AACtC,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAEvH;AA+BD,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,8EAA8E;IAC9E,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5E,oEAAoE;IACpE,eAAe,EAAE,OAAO,CAAC;CAC1B;AAOD,uDAAuD;AACvD,wBAAsB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgBrH"}
|
package/dist/identity.js
CHANGED
|
@@ -1,48 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Who is calling — the proof, not the claim.
|
|
3
|
-
*
|
|
4
|
-
* `InvocationContext.state` is what a caller SAYS about itself, and a split receiver
|
|
5
|
-
* used to believe it: identity read straight off the wire, so a reader could post
|
|
6
|
-
* `{ state: { user: { role: 'admin' } } }` and be one. This module is what turns that
|
|
7
|
-
* sack into something a receiver establishes instead of accepts.
|
|
8
|
-
*
|
|
9
|
-
* Two signatures, one public key to distribute:
|
|
10
|
-
*
|
|
11
|
-
* GRANT the root says "this key is `blog`" — issued once, at deployment
|
|
12
|
-
* ENVELOPE `blog` says "here is my whole call" — signed per call
|
|
13
|
-
*
|
|
14
|
-
* The envelope binds the CALL and not only its state: address, params, query, a digest
|
|
15
|
-
* of the body. Signing the state alone proved WHO without proving WHAT, so anyone on the
|
|
16
|
-
* wire could replay a captured envelope against another operation for as long as it
|
|
17
|
-
* stayed valid — `post.list` re-sent as `post.delete`, same signature, still good.
|
|
18
|
-
*
|
|
19
|
-
* A receiver holds the root's public key and nothing else: it validates any frond it
|
|
20
|
-
* has never seen, which is what a per-caller list could not do. The private root key
|
|
21
|
-
* signs grants and never leaves the machine that issued them.
|
|
22
|
-
*
|
|
23
|
-
* Ed25519 and a JWS-shaped grant rather than X.509: node can PARSE a certificate but
|
|
24
|
-
* not ISSUE one, so a real chain would mean openssl or a library. The grant says the
|
|
25
|
-
* same thing — a name bound to a public key, signed by the root — with no dependency.
|
|
26
|
-
*
|
|
27
|
-
* The Ed25519 itself comes through `#crypto`, which has two realizations: `node:crypto`
|
|
28
|
-
* everywhere, WebCrypto under `workerd`. Everything here is therefore async — WebCrypto
|
|
29
|
-
* has no synchronous form — and a key is parsed ONCE, into a `Signer` or a `Verifier`,
|
|
30
|
-
* never per call. Making the keys and issuing grants happen at a deployment and live in
|
|
31
|
-
* `identity-keys.ts`, on the Node entry.
|
|
32
|
-
*/
|
|
1
|
+
/** Who is calling — the proof, not the claim. */
|
|
33
2
|
import { crypto } from '#crypto';
|
|
34
3
|
import { b64url, unb64url, bytesOf, textOf, unb64 } from './crypto/encoding.js';
|
|
35
4
|
/** How long a call envelope stays valid. A signed call is not a session. */
|
|
36
5
|
const ENVELOPE_TTL_MS = 60_000;
|
|
37
6
|
/** Clock skew tolerated on both sides of a validity window. */
|
|
38
7
|
const SKEW_MS = 30_000;
|
|
39
|
-
/** The
|
|
40
|
-
async function digestOf(
|
|
8
|
+
/** The input's fingerprint. Absence and explicit null are different signed calls. */
|
|
9
|
+
async function digestOf(input) {
|
|
41
10
|
// The tag is outside the caller value, so no user object can collide with it. JSON's
|
|
42
11
|
// own omission rule still applies inside `value`, matching what crosses the wire.
|
|
43
|
-
const canonical =
|
|
12
|
+
const canonical = input === undefined
|
|
44
13
|
? { kind: 'undefined' }
|
|
45
|
-
: { kind: 'value', value:
|
|
14
|
+
: { kind: 'value', value: input };
|
|
46
15
|
return b64url(await crypto.sha256(bytesOf(JSON.stringify(canonical))));
|
|
47
16
|
}
|
|
48
17
|
/** What the envelope pins, as one comparable value. */
|
|
@@ -52,7 +21,7 @@ async function boundTo(call) {
|
|
|
52
21
|
op: call.op,
|
|
53
22
|
params: call.params ?? {},
|
|
54
23
|
query: call.query ?? {},
|
|
55
|
-
|
|
24
|
+
input: await digestOf(call.input),
|
|
56
25
|
};
|
|
57
26
|
}
|
|
58
27
|
/** A JWS compact serialization, signed with Ed25519. */
|
|
@@ -60,11 +29,7 @@ async function signJws(header, payload, signer) {
|
|
|
60
29
|
const signingInput = `${b64url(JSON.stringify(header))}.${b64url(JSON.stringify(payload))}`;
|
|
61
30
|
return `${signingInput}.${b64url(await signer.sign(bytesOf(signingInput)))}`;
|
|
62
31
|
}
|
|
63
|
-
/**
|
|
64
|
-
* The payload, once the signature holds. Throws rather than returning a falsy value:
|
|
65
|
-
* every caller here is deciding whether to admit a call, and an unverified payload
|
|
66
|
-
* must never be reachable by forgetting a check.
|
|
67
|
-
*/
|
|
32
|
+
/** The payload, once the signature holds. */
|
|
68
33
|
async function verifyJws(token, verifier, what) {
|
|
69
34
|
const parts = token.split('.');
|
|
70
35
|
if (parts.length !== 3)
|
|
@@ -88,13 +53,7 @@ function headerOf(token) {
|
|
|
88
53
|
throw new Error('Malformed envelope');
|
|
89
54
|
return JSON.parse(textOf(unb64url(encodedHeader)));
|
|
90
55
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Sign one call, whole: who is asking, what is asked, and on whose behalf.
|
|
93
|
-
*
|
|
94
|
-
* The private key is parsed on every call here, which is the convenience form. A process
|
|
95
|
-
* that signs in a request path builds its signer once — `identityFromEnv` does exactly
|
|
96
|
-
* that, and `sign` on the value it returns holds the parsed key.
|
|
97
|
-
*/
|
|
56
|
+
/** Sign one call, whole. */
|
|
98
57
|
export async function signEnvelope(identity, call) {
|
|
99
58
|
return sealWith(await crypto.signerOf(identity.privateKey), identity.grant, call);
|
|
100
59
|
}
|
|
@@ -104,11 +63,7 @@ async function sealWith(signer, grant, call) {
|
|
|
104
63
|
const { sub } = JSON.parse(textOf(unb64url(grant.split('.')[1])));
|
|
105
64
|
return signJws({ alg: 'EdDSA', typ: 'fougere-call', grant }, { iss: sub, state: call.state ?? {}, bound: await boundTo(call), iat: now, exp: now + ENVELOPE_TTL_MS }, signer);
|
|
106
65
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Establish the caller, or throw. Order matters: the grant is checked against the ROOT
|
|
109
|
-
* first, and only the key it carries verifies the envelope — reading the envelope's own
|
|
110
|
-
* claim of who it is before that would be believing the thing under examination.
|
|
111
|
-
*/
|
|
66
|
+
/** Establish the caller, or throw. */
|
|
112
67
|
export async function verifyEnvelope(token, rootPublicKey, presented) {
|
|
113
68
|
return openWith(await crypto.verifierOf(rootPublicKey), token, presented);
|
|
114
69
|
}
|
|
@@ -137,28 +92,11 @@ async function openWith(root, token, presented) {
|
|
|
137
92
|
state: payload.state ?? {},
|
|
138
93
|
};
|
|
139
94
|
}
|
|
140
|
-
/**
|
|
141
|
-
* A PEM, however the deployment chose to carry it.
|
|
142
|
-
*
|
|
143
|
-
* A PEM is multi-line and an environment variable that spans lines survives poorly —
|
|
144
|
-
* docker-compose, systemd and CI secret stores each mangle it differently — so
|
|
145
|
-
* `fougere keys` prints base64. Both forms are read here rather than one being decreed:
|
|
146
|
-
* a human pasting a real PEM is not making a mistake.
|
|
147
|
-
*/
|
|
95
|
+
/** A PEM, however the deployment chose to carry it. */
|
|
148
96
|
function pemOf(value) {
|
|
149
97
|
return value.trimStart().startsWith('-----') ? value : textOf(unb64(value));
|
|
150
98
|
}
|
|
151
|
-
/**
|
|
152
|
-
* What the deployment injected, read once at boot.
|
|
153
|
-
*
|
|
154
|
-
* Three variables, no config key: a private key never belongs in a committed file, and
|
|
155
|
-
* `fougere keys` prints exactly these. A process may hold either half or both — a frond
|
|
156
|
-
* that only answers has no key, one that only calls trusts no root, one in the middle
|
|
157
|
-
* does both.
|
|
158
|
-
*
|
|
159
|
-
* Trusting a root IS asking to refuse: there is no separate flag, because a deployment
|
|
160
|
-
* that names an authority and then accepts unsigned calls has said two things at once.
|
|
161
|
-
*/
|
|
99
|
+
/** What the deployment injected, read once at boot. */
|
|
162
100
|
export async function identityFromEnv(env = envOfProcess()) {
|
|
163
101
|
const root = env.FOUGERE_ROOT_KEY ? pemOf(env.FOUGERE_ROOT_KEY) : undefined;
|
|
164
102
|
const privateKey = env.FOUGERE_KEY ? pemOf(env.FOUGERE_KEY) : undefined;
|
package/dist/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
|
package/dist/imports.d.ts
CHANGED
|
@@ -11,12 +11,6 @@ export interface CrossFrondImport {
|
|
|
11
11
|
target?: string;
|
|
12
12
|
message: string;
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Every relative import that resolves outside its own frond.
|
|
16
|
-
*
|
|
17
|
-
* `preProcessFile` rather than a regex or a full parse: it is TypeScript's own scanner for
|
|
18
|
-
* exactly this question, so `// import x from '../../other'` in a comment is not a finding
|
|
19
|
-
* and a specifier split across lines still is.
|
|
20
|
-
*/
|
|
14
|
+
/** Every relative import that resolves outside its own frond. */
|
|
21
15
|
export declare function crossFrondImports(fronds: readonly Pick<FrondDescriptor, 'name' | 'source'>[]): Promise<CrossFrondImport[]>;
|
|
22
16
|
//# sourceMappingURL=imports.d.ts.map
|
package/dist/imports.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQ7D,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2BD,iEAAiE;AACjE,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,GAC1D,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwC7B"}
|
package/dist/imports.js
CHANGED
|
@@ -33,13 +33,7 @@ async function sourcesUnder(dir) {
|
|
|
33
33
|
}
|
|
34
34
|
return out;
|
|
35
35
|
}
|
|
36
|
-
/**
|
|
37
|
-
* Every relative import that resolves outside its own frond.
|
|
38
|
-
*
|
|
39
|
-
* `preProcessFile` rather than a regex or a full parse: it is TypeScript's own scanner for
|
|
40
|
-
* exactly this question, so `// import x from '../../other'` in a comment is not a finding
|
|
41
|
-
* and a specifier split across lines still is.
|
|
42
|
-
*/
|
|
36
|
+
/** Every relative import that resolves outside its own frond. */
|
|
43
37
|
export async function crossFrondImports(fronds) {
|
|
44
38
|
const typescript = await loadTs();
|
|
45
39
|
// `source.package` is the scoped name the scan already resolved — the remedy this rule
|
package/dist/imports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What a consumer writes, and nothing else.
|
|
3
|
-
*
|
|
4
|
-
* `exports` publishes this barrel and `./contract`, so an import that is not here
|
|
5
|
-
* cannot be reached from outside the package at all — which is what makes this file
|
|
6
|
-
* the contract rather than a convenience. The machinery the boot uses to keep its own
|
|
7
|
-
* promises stays inside: container keys, the binding plan, the mixin's runtime
|
|
8
|
-
* accessors, the config merge. Measured on 2026-08-16, none of them had a single
|
|
9
|
-
* importer anywhere in the workspace.
|
|
10
|
-
*/
|
|
1
|
+
/** What a consumer writes, and nothing else. */
|
|
11
2
|
export { createApp } from './boot/bootstrap.js';
|
|
12
3
|
export { orderSeeds, runSeeds, seeding } from './boot/seed.js';
|
|
13
|
-
export { AppLifecycle,
|
|
4
|
+
export { AppLifecycle, migrating } from './boot/AppLifecycle.js';
|
|
14
5
|
export type { Extension } from './boot/AppLifecycle.js';
|
|
15
6
|
export { defineFougere } from './define.js';
|
|
16
7
|
export type { AdapterConfig, FougereConfig } from './config-loader.js';
|
|
@@ -24,15 +15,15 @@ export { Presenter } from './prefab/presenter.js';
|
|
|
24
15
|
export type { PresenterViews } from './prefab/presenter.js';
|
|
25
16
|
export { Collector } from './prefab/collector.js';
|
|
26
17
|
export { Repository, type RepositoryOf, type RepositoryConstructor, type AggregateOf, type AggregateConstructor } from './prefab/repository.js';
|
|
27
|
-
export { Invocation, canonicalInvocation, EMPTY_INVOCATION } from './
|
|
28
|
-
export type { InvocationContext,
|
|
29
|
-
export { Call } from './
|
|
30
|
-
export { RouteAddress } from './
|
|
31
|
-
export type { RouteAddressInput } from './
|
|
18
|
+
export { Invocation, canonicalInvocation, EMPTY_INVOCATION } from './wire/Invocation.js';
|
|
19
|
+
export type { InvocationContext, PartialInvocation } from './wire/Invocation.js';
|
|
20
|
+
export { Call } from './wire/call.js';
|
|
21
|
+
export { RouteAddress } from './wire/RouteAddress.js';
|
|
22
|
+
export type { RouteAddressInput } from './wire/RouteAddress.js';
|
|
32
23
|
export { DispatchLifecycle } from './dispatch/DispatchLifecycle.js';
|
|
33
24
|
export { Dispatcher } from './dispatch/Dispatcher.js';
|
|
34
25
|
export { DispatchEvent } from './dispatch/DispatchEvent.js';
|
|
35
|
-
export type { CallPage, CallRecord } from './
|
|
26
|
+
export type { CallPage, CallRecord } from './wire/CallLog.js';
|
|
36
27
|
export { driftOf, agrees, explain, type CardDrift } from './wire/drift.js';
|
|
37
28
|
export type { DispatchObserver } from './dispatch/DispatchEvent.js';
|
|
38
29
|
export type { DispatchPort } from './dispatch/DispatchPort.js';
|
|
@@ -55,14 +46,16 @@ export { callValueOf } from './contract.js';
|
|
|
55
46
|
export type { CallValue } from './contract.js';
|
|
56
47
|
export { toHttpError, toPublicError } from './wire/http-error.js';
|
|
57
48
|
export { loggerMiddleware } from './wire/loggerMiddleware.js';
|
|
58
|
-
export { Logger, setLogLevel, logLevel, envLevel, onLog } from './
|
|
59
|
-
export type { LogLevel, LogRecord, LogSink } from './
|
|
49
|
+
export { Logger, setLogLevel, logLevel, envLevel, onLog } from './builtin/logger.js';
|
|
50
|
+
export type { LogLevel, LogRecord, LogSink } from './builtin/logger.js';
|
|
60
51
|
export { applyConfig, type ConfigApplication } from './boot/apply.js';
|
|
61
|
-
export { Config } from './
|
|
62
|
-
export type { Storage, StorageFactory,
|
|
63
|
-
export {
|
|
64
|
-
export {
|
|
65
|
-
export
|
|
52
|
+
export { Config } from './builtin/config.js';
|
|
53
|
+
export type { Storage, StorageFactory, ListOptions, ListResult, Together } from './storage.js';
|
|
54
|
+
export { togetherKeyOf, membersOfTogetherKey } from './storage.js';
|
|
55
|
+
export type { Source, SourceConfig, SourceView } from './source.js';
|
|
56
|
+
export { Sources } from './source.js';
|
|
57
|
+
export { storageOver } from './store.js';
|
|
58
|
+
export type { Store, Values } from './store.js';
|
|
66
59
|
export type { App, CreateAppOptions } from './boot/types.js';
|
|
67
60
|
export type { ScanResult, ScanDiagnostic } from './scan/result.js';
|
|
68
61
|
export type { FrondDescriptor, FrondSource, ProviderEntry, EntityEntry, HandlerEntry, SeedEntry, SeedFactory, PresenterEntry, PresenterFieldMeta, CollectorEntry, } from './descriptor/frond.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|