@fougere/core 0.2.0-alpha.1 → 0.3.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 +2 -1
- package/dist/boot/AppLifecycle.d.ts +18 -0
- package/dist/boot/AppLifecycle.d.ts.map +1 -0
- package/dist/boot/AppLifecycle.js +42 -0
- package/dist/boot/AppLifecycle.js.map +1 -0
- package/dist/boot/Emissions.d.ts +126 -0
- package/dist/boot/Emissions.d.ts.map +1 -0
- package/dist/boot/Emissions.js +233 -0
- package/dist/boot/Emissions.js.map +1 -0
- package/dist/boot/HandlerFacade.d.ts +72 -0
- package/dist/boot/HandlerFacade.d.ts.map +1 -0
- package/dist/boot/HandlerFacade.js +174 -0
- package/dist/boot/HandlerFacade.js.map +1 -0
- package/dist/boot/Lifecycle.d.ts +4 -0
- package/dist/boot/Lifecycle.d.ts.map +1 -0
- package/dist/boot/Lifecycle.js +3 -0
- package/dist/boot/Lifecycle.js.map +1 -0
- package/dist/boot/ambient-port.d.ts +38 -0
- package/dist/boot/ambient-port.d.ts.map +1 -0
- package/dist/boot/ambient-port.js +2 -0
- package/dist/boot/ambient-port.js.map +1 -0
- package/dist/boot/ambient.als.d.ts +3 -0
- package/dist/boot/ambient.als.d.ts.map +1 -0
- package/dist/boot/ambient.als.js +34 -0
- package/dist/boot/ambient.als.js.map +1 -0
- package/dist/boot/ambient.queue.d.ts +10 -0
- package/dist/boot/ambient.queue.d.ts.map +1 -0
- package/dist/boot/ambient.queue.js +60 -0
- package/dist/boot/ambient.queue.js.map +1 -0
- package/dist/boot/apply.d.ts +22 -0
- package/dist/boot/apply.d.ts.map +1 -0
- package/dist/boot/apply.js +48 -0
- package/dist/boot/apply.js.map +1 -0
- package/dist/boot/auth.d.ts +53 -0
- package/dist/boot/auth.d.ts.map +1 -0
- package/dist/boot/auth.js +2 -0
- package/dist/boot/auth.js.map +1 -0
- package/dist/{binding.d.ts → boot/binding.d.ts} +14 -17
- package/dist/boot/binding.d.ts.map +1 -0
- package/dist/{binding.js → boot/binding.js} +19 -10
- package/dist/boot/binding.js.map +1 -0
- package/dist/{boot.d.ts → boot/boot.d.ts} +25 -5
- package/dist/boot/boot.d.ts.map +1 -0
- package/dist/boot/boot.js +70 -0
- package/dist/boot/boot.js.map +1 -0
- package/dist/boot/bootstrap.d.ts.map +1 -0
- package/dist/boot/bootstrap.js +721 -0
- package/dist/boot/bootstrap.js.map +1 -0
- package/dist/boot/egress.d.ts +8 -0
- package/dist/boot/egress.d.ts.map +1 -0
- package/dist/boot/egress.js +11 -0
- package/dist/boot/egress.js.map +1 -0
- package/dist/boot/frame.d.ts +44 -0
- package/dist/boot/frame.d.ts.map +1 -0
- package/dist/boot/frame.js +181 -0
- package/dist/boot/frame.js.map +1 -0
- package/dist/boot/ownership.d.ts +42 -0
- package/dist/boot/ownership.d.ts.map +1 -0
- package/dist/boot/ownership.js +127 -0
- package/dist/boot/ownership.js.map +1 -0
- package/dist/boot/ports.d.ts +17 -0
- package/dist/boot/ports.d.ts.map +1 -0
- package/dist/boot/ports.js +57 -0
- package/dist/boot/ports.js.map +1 -0
- package/dist/{remote.d.ts → boot/remote.d.ts} +13 -5
- package/dist/boot/remote.d.ts.map +1 -0
- package/dist/{remote.js → boot/remote.js} +24 -26
- package/dist/boot/remote.js.map +1 -0
- package/dist/{seed.d.ts → boot/seed.d.ts} +14 -2
- package/dist/boot/seed.d.ts.map +1 -0
- package/dist/{seed.js → boot/seed.js} +25 -4
- package/dist/boot/seed.js.map +1 -0
- package/dist/boot/together.d.ts +26 -0
- package/dist/boot/together.d.ts.map +1 -0
- package/dist/boot/together.js +163 -0
- package/dist/boot/together.js.map +1 -0
- package/dist/boot/types.d.ts +260 -0
- package/dist/boot/types.d.ts.map +1 -0
- package/dist/boot/types.js.map +1 -0
- package/dist/builtins/config.d.ts +9 -0
- package/dist/builtins/config.d.ts.map +1 -1
- package/dist/builtins/config.js +16 -1
- package/dist/builtins/config.js.map +1 -1
- package/dist/builtins/logger.d.ts +37 -4
- package/dist/builtins/logger.d.ts.map +1 -1
- package/dist/builtins/logger.js +66 -7
- package/dist/builtins/logger.js.map +1 -1
- package/dist/config-loader.d.ts +62 -38
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +15 -54
- package/dist/config-loader.js.map +1 -1
- package/dist/contract/Call.d.ts +10 -0
- package/dist/contract/Call.d.ts.map +1 -0
- package/dist/contract/Call.js +15 -0
- package/dist/contract/Call.js.map +1 -0
- package/dist/contract/Invocation.d.ts +27 -0
- package/dist/contract/Invocation.d.ts.map +1 -0
- package/dist/contract/Invocation.js +59 -0
- package/dist/contract/Invocation.js.map +1 -0
- package/dist/contract/RouteAddress.d.ts +17 -0
- package/dist/contract/RouteAddress.d.ts.map +1 -0
- package/dist/contract/RouteAddress.js +38 -0
- package/dist/contract/RouteAddress.js.map +1 -0
- package/dist/contract.d.ts +25 -19
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +25 -10
- package/dist/contract.js.map +1 -1
- package/dist/crypto/encoding.d.ts +25 -0
- package/dist/crypto/encoding.d.ts.map +1 -0
- package/dist/crypto/encoding.js +58 -0
- package/dist/crypto/encoding.js.map +1 -0
- package/dist/crypto/node.d.ts +4 -0
- package/dist/crypto/node.d.ts.map +1 -0
- package/dist/crypto/node.js +25 -0
- package/dist/crypto/node.js.map +1 -0
- package/dist/crypto/port.d.ts +42 -0
- package/dist/crypto/port.d.ts.map +1 -0
- package/dist/crypto/port.js +19 -0
- package/dist/crypto/port.js.map +1 -0
- package/dist/crypto/webcrypto.d.ts +4 -0
- package/dist/crypto/webcrypto.d.ts.map +1 -0
- package/dist/crypto/webcrypto.js +34 -0
- package/dist/crypto/webcrypto.js.map +1 -0
- package/dist/dispatch/ArgumentResolver.d.ts +10 -0
- package/dist/dispatch/ArgumentResolver.d.ts.map +1 -0
- package/dist/dispatch/ArgumentResolver.js +12 -0
- package/dist/dispatch/ArgumentResolver.js.map +1 -0
- package/dist/dispatch/ArrayResult.d.ts +3 -0
- package/dist/dispatch/ArrayResult.d.ts.map +1 -0
- package/dist/dispatch/ArrayResult.js +11 -0
- package/dist/dispatch/ArrayResult.js.map +1 -0
- package/dist/dispatch/DispatchEvent.d.ts +18 -0
- package/dist/dispatch/DispatchEvent.d.ts.map +1 -0
- package/dist/dispatch/DispatchEvent.js +30 -0
- package/dist/dispatch/DispatchEvent.js.map +1 -0
- package/dist/dispatch/DispatchLifecycle.d.ts +9 -0
- package/dist/dispatch/DispatchLifecycle.d.ts.map +1 -0
- package/dist/dispatch/DispatchLifecycle.js +25 -0
- package/dist/dispatch/DispatchLifecycle.js.map +1 -0
- package/dist/dispatch/DispatchPort.d.ts +6 -0
- package/dist/dispatch/DispatchPort.d.ts.map +1 -0
- package/dist/dispatch/DispatchPort.js +2 -0
- package/dist/dispatch/DispatchPort.js.map +1 -0
- package/dist/dispatch/Dispatcher.d.ts +16 -0
- package/dist/dispatch/Dispatcher.d.ts.map +1 -0
- package/dist/dispatch/Dispatcher.js +44 -0
- package/dist/dispatch/Dispatcher.js.map +1 -0
- package/dist/dispatch/InFlight.d.ts +12 -0
- package/dist/dispatch/InFlight.d.ts.map +1 -0
- package/dist/dispatch/InFlight.js +46 -0
- package/dist/dispatch/InFlight.js.map +1 -0
- package/dist/dispatch/InputValidator.d.ts +7 -0
- package/dist/dispatch/InputValidator.d.ts.map +1 -0
- package/dist/dispatch/InputValidator.js +21 -0
- package/dist/dispatch/InputValidator.js.map +1 -0
- package/dist/dispatch/LocalRoutePolicy.d.ts +11 -0
- package/dist/dispatch/LocalRoutePolicy.d.ts.map +1 -0
- package/dist/dispatch/LocalRoutePolicy.js +32 -0
- package/dist/dispatch/LocalRoutePolicy.js.map +1 -0
- package/dist/dispatch/OperationExecutor.d.ts +25 -0
- package/dist/dispatch/OperationExecutor.d.ts.map +1 -0
- package/dist/dispatch/OperationExecutor.js +32 -0
- package/dist/dispatch/OperationExecutor.js.map +1 -0
- package/dist/dispatch/OperationRoute.d.ts +13 -0
- package/dist/dispatch/OperationRoute.d.ts.map +1 -0
- package/dist/dispatch/OperationRoute.js +15 -0
- package/dist/dispatch/OperationRoute.js.map +1 -0
- package/dist/dispatch/OutputProjector.d.ts +12 -0
- package/dist/dispatch/OutputProjector.d.ts.map +1 -0
- package/dist/dispatch/OutputProjector.js +30 -0
- package/dist/dispatch/OutputProjector.js.map +1 -0
- package/dist/dispatch/OutputView.d.ts +8 -0
- package/dist/dispatch/OutputView.d.ts.map +1 -0
- package/dist/dispatch/OutputView.js +10 -0
- package/dist/dispatch/OutputView.js.map +1 -0
- package/dist/dispatch/PresenterArgumentResolver.d.ts +12 -0
- package/dist/dispatch/PresenterArgumentResolver.d.ts.map +1 -0
- package/dist/dispatch/PresenterArgumentResolver.js +20 -0
- package/dist/dispatch/PresenterArgumentResolver.js.map +1 -0
- package/dist/dispatch/PresenterExecutor.d.ts +11 -0
- package/dist/dispatch/PresenterExecutor.d.ts.map +1 -0
- package/dist/dispatch/PresenterExecutor.js +56 -0
- package/dist/dispatch/PresenterExecutor.js.map +1 -0
- package/dist/dispatch/RemoteRouteResolver.d.ts +13 -0
- package/dist/dispatch/RemoteRouteResolver.d.ts.map +1 -0
- package/dist/dispatch/RemoteRouteResolver.js +18 -0
- package/dist/dispatch/RemoteRouteResolver.js.map +1 -0
- package/dist/dispatch/Route.d.ts +10 -0
- package/dist/dispatch/Route.d.ts.map +1 -0
- package/dist/dispatch/Route.js +2 -0
- package/dist/dispatch/Route.js.map +1 -0
- package/dist/dispatch/RouteNotFoundError.d.ts +10 -0
- package/dist/dispatch/RouteNotFoundError.d.ts.map +1 -0
- package/dist/dispatch/RouteNotFoundError.js +24 -0
- package/dist/dispatch/RouteNotFoundError.js.map +1 -0
- package/dist/dispatch/RoutePolicy.d.ts +8 -0
- package/dist/dispatch/RoutePolicy.d.ts.map +1 -0
- package/dist/dispatch/RoutePolicy.js +2 -0
- package/dist/dispatch/RoutePolicy.js.map +1 -0
- package/dist/dispatch/RouteRegistry.d.ts +18 -0
- package/dist/dispatch/RouteRegistry.d.ts.map +1 -0
- package/dist/dispatch/RouteRegistry.js +62 -0
- package/dist/dispatch/RouteRegistry.js.map +1 -0
- package/dist/dispatch/RouteResolver.d.ts +7 -0
- package/dist/dispatch/RouteResolver.d.ts.map +1 -0
- package/dist/dispatch/RouteResolver.js +2 -0
- package/dist/dispatch/RouteResolver.js.map +1 -0
- package/dist/dispatch/StorageGuard.d.ts +15 -0
- package/dist/dispatch/StorageGuard.d.ts.map +1 -0
- package/dist/dispatch/StorageGuard.js +63 -0
- package/dist/dispatch/StorageGuard.js.map +1 -0
- package/dist/effective-operation.d.ts +90 -0
- package/dist/effective-operation.d.ts.map +1 -0
- package/dist/effective-operation.js +450 -0
- package/dist/effective-operation.js.map +1 -0
- package/dist/emit.js +2 -2
- package/dist/emit.js.map +1 -1
- package/dist/entry/DynamicFacade.d.ts +10 -0
- package/dist/entry/DynamicFacade.d.ts.map +1 -0
- package/dist/entry/DynamicFacade.js +27 -0
- package/dist/entry/DynamicFacade.js.map +1 -0
- package/dist/entry/FacadeEntry.d.ts +11 -0
- package/dist/entry/FacadeEntry.d.ts.map +1 -0
- package/dist/entry/FacadeEntry.js +26 -0
- package/dist/entry/FacadeEntry.js.map +1 -0
- package/dist/entry/TransportEntry.d.ts +13 -0
- package/dist/entry/TransportEntry.d.ts.map +1 -0
- package/dist/entry/TransportEntry.js +24 -0
- package/dist/entry/TransportEntry.js.map +1 -0
- package/dist/frond-config.d.ts +38 -8
- package/dist/frond-config.d.ts.map +1 -1
- package/dist/frond-config.js.map +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +3 -2
- package/dist/graph.js.map +1 -1
- package/dist/identity-keys.d.ts +14 -0
- package/dist/identity-keys.d.ts.map +1 -0
- package/dist/identity-keys.js +37 -0
- package/dist/identity-keys.js.map +1 -0
- package/dist/identity.d.ts +58 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +182 -0
- package/dist/identity.js.map +1 -0
- package/dist/imports.d.ts +1 -1
- package/dist/imports.d.ts.map +1 -1
- package/dist/imports.js +7 -3
- package/dist/imports.js.map +1 -1
- package/dist/index.d.ts +57 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -31
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +16 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +25 -0
- package/dist/loader.js.map +1 -0
- package/dist/node.d.ts +21 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +24 -0
- package/dist/node.js.map +1 -0
- package/dist/orm.d.ts +123 -12
- package/dist/orm.d.ts.map +1 -1
- package/dist/orm.js +35 -2
- package/dist/orm.js.map +1 -1
- package/dist/prefab/collector.d.ts +29 -0
- package/dist/prefab/collector.d.ts.map +1 -0
- package/dist/prefab/collector.js +34 -0
- package/dist/prefab/collector.js.map +1 -0
- package/dist/{crud.d.ts → prefab/crud.d.ts} +7 -8
- package/dist/prefab/crud.d.ts.map +1 -0
- package/dist/{crud.js → prefab/crud.js} +39 -5
- package/dist/prefab/crud.js.map +1 -0
- package/dist/prefab/mirror.d.ts +52 -0
- package/dist/prefab/mirror.d.ts.map +1 -0
- package/dist/prefab/mirror.js +66 -0
- package/dist/prefab/mirror.js.map +1 -0
- package/dist/prefab/prefab.d.ts +15 -0
- package/dist/prefab/prefab.d.ts.map +1 -0
- package/dist/prefab/prefab.js +19 -0
- package/dist/prefab/prefab.js.map +1 -0
- package/dist/{presenter.d.ts → prefab/presenter.d.ts} +6 -17
- package/dist/prefab/presenter.d.ts.map +1 -0
- package/dist/{presenter.js → prefab/presenter.js} +5 -23
- package/dist/prefab/presenter.js.map +1 -0
- package/dist/prefab/repository.d.ts +104 -0
- package/dist/prefab/repository.d.ts.map +1 -0
- package/dist/prefab/repository.js +62 -0
- package/dist/prefab/repository.js.map +1 -0
- package/dist/scan/Fronds.d.ts +45 -0
- package/dist/scan/Fronds.d.ts.map +1 -0
- package/dist/scan/Fronds.js +66 -0
- package/dist/scan/Fronds.js.map +1 -0
- package/dist/scan/conventions.d.ts +74 -0
- package/dist/scan/conventions.d.ts.map +1 -0
- package/dist/scan/conventions.js +82 -0
- package/dist/scan/conventions.js.map +1 -0
- package/dist/scan/emit.d.ts +14 -0
- package/dist/scan/emit.d.ts.map +1 -0
- package/dist/scan/emit.js +211 -0
- package/dist/scan/emit.js.map +1 -0
- package/dist/scan/frond.d.ts +224 -0
- package/dist/scan/frond.d.ts.map +1 -0
- package/dist/scan/frond.js +2 -0
- package/dist/scan/frond.js.map +1 -0
- package/dist/{handler-parser.d.ts → scan/handler-parser.d.ts} +18 -9
- package/dist/scan/handler-parser.d.ts.map +1 -0
- package/dist/scan/handler-parser.js +625 -0
- package/dist/scan/handler-parser.js.map +1 -0
- package/dist/scan/scan-cache.d.ts +16 -0
- package/dist/scan/scan-cache.d.ts.map +1 -0
- package/dist/{scan-cache.js → scan/scan-cache.js} +27 -20
- package/dist/scan/scan-cache.js.map +1 -0
- package/dist/scan/scanner.d.ts +20 -0
- package/dist/scan/scanner.d.ts.map +1 -0
- package/dist/{scanner.js → scan/scanner.js} +186 -167
- package/dist/scan/scanner.js.map +1 -0
- package/dist/verify.d.ts +16 -3
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +21 -18
- package/dist/verify.js.map +1 -1
- package/dist/{call.d.ts → wire/call.d.ts} +70 -1
- package/dist/wire/call.d.ts.map +1 -0
- package/dist/{call.js → wire/call.js} +48 -75
- package/dist/wire/call.js.map +1 -0
- package/dist/{middleware.d.ts → wire/errors.d.ts} +18 -19
- package/dist/wire/errors.d.ts.map +1 -0
- package/dist/{middleware.js → wire/errors.js} +26 -14
- package/dist/wire/errors.js.map +1 -0
- package/dist/{errors.d.ts → wire/http-error.d.ts} +5 -6
- package/dist/wire/http-error.d.ts.map +1 -0
- package/dist/{errors.js → wire/http-error.js} +7 -6
- package/dist/wire/http-error.js.map +1 -0
- package/dist/wire/invocation.d.ts +4 -0
- package/dist/wire/invocation.d.ts.map +1 -0
- package/dist/wire/invocation.js +3 -0
- package/dist/wire/invocation.js.map +1 -0
- package/dist/{middleware/logger.d.ts → wire/loggerMiddleware.d.ts} +3 -3
- package/dist/wire/loggerMiddleware.d.ts.map +1 -0
- package/dist/{middleware/logger.js → wire/loggerMiddleware.js} +2 -2
- package/dist/wire/loggerMiddleware.js.map +1 -0
- package/dist/wire/middleware.d.ts +29 -0
- package/dist/wire/middleware.d.ts.map +1 -0
- package/dist/wire/middleware.js +20 -0
- package/dist/wire/middleware.js.map +1 -0
- package/dist/{operation.d.ts → wire/operation.d.ts} +42 -13
- package/dist/wire/operation.d.ts.map +1 -0
- package/dist/wire/operation.js +167 -0
- package/dist/wire/operation.js.map +1 -0
- package/package.json +24 -7
- package/dist/binding.d.ts.map +0 -1
- package/dist/binding.js.map +0 -1
- package/dist/boot.d.ts.map +0 -1
- package/dist/boot.js +0 -53
- package/dist/boot.js.map +0 -1
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -848
- package/dist/bootstrap.js.map +0 -1
- package/dist/call.d.ts.map +0 -1
- package/dist/call.js.map +0 -1
- package/dist/collector.d.ts +0 -28
- package/dist/collector.d.ts.map +0 -1
- package/dist/collector.js +0 -32
- package/dist/collector.js.map +0 -1
- package/dist/crud.d.ts.map +0 -1
- package/dist/crud.js.map +0 -1
- package/dist/egress.d.ts +0 -78
- package/dist/egress.d.ts.map +0 -1
- package/dist/egress.js +0 -185
- package/dist/egress.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/handler-parser.d.ts.map +0 -1
- package/dist/handler-parser.js +0 -505
- package/dist/handler-parser.js.map +0 -1
- package/dist/invocation.d.ts +0 -20
- package/dist/invocation.d.ts.map +0 -1
- package/dist/invocation.js +0 -15
- package/dist/invocation.js.map +0 -1
- package/dist/middleware/error-handler.d.ts +0 -15
- package/dist/middleware/error-handler.d.ts.map +0 -1
- package/dist/middleware/error-handler.js +0 -29
- package/dist/middleware/error-handler.js.map +0 -1
- package/dist/middleware/logger.d.ts.map +0 -1
- package/dist/middleware/logger.js.map +0 -1
- package/dist/middleware.d.ts.map +0 -1
- package/dist/middleware.js.map +0 -1
- package/dist/operation.d.ts.map +0 -1
- package/dist/operation.js +0 -95
- package/dist/operation.js.map +0 -1
- package/dist/presenter.d.ts.map +0 -1
- package/dist/presenter.js.map +0 -1
- package/dist/remote.d.ts.map +0 -1
- package/dist/remote.js.map +0 -1
- package/dist/repository.d.ts +0 -55
- package/dist/repository.d.ts.map +0 -1
- package/dist/repository.js +0 -26
- package/dist/repository.js.map +0 -1
- package/dist/scan-cache.d.ts +0 -10
- package/dist/scan-cache.d.ts.map +0 -1
- package/dist/scan-cache.js.map +0 -1
- package/dist/scanner.d.ts +0 -34
- package/dist/scanner.d.ts.map +0 -1
- package/dist/scanner.js.map +0 -1
- package/dist/seed.d.ts.map +0 -1
- package/dist/seed.js.map +0 -1
- package/dist/types.d.ts +0 -407
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{bootstrap.d.ts → boot/bootstrap.d.ts} +0 -0
- /package/dist/{types.js → boot/types.js} +0 -0
package/dist/imports.js
CHANGED
|
@@ -3,7 +3,7 @@ import { join, resolve, dirname, relative, isAbsolute } from 'node:path';
|
|
|
3
3
|
let _ts;
|
|
4
4
|
async function loadTs() {
|
|
5
5
|
if (!_ts)
|
|
6
|
-
_ts = (await import('typescript')).default;
|
|
6
|
+
_ts = (await import('@typescript/typescript6')).default;
|
|
7
7
|
return _ts;
|
|
8
8
|
}
|
|
9
9
|
/** Is `child` inside `parent`? Path-based, so it says nothing about either existing. */
|
|
@@ -42,7 +42,11 @@ async function sourcesUnder(dir) {
|
|
|
42
42
|
*/
|
|
43
43
|
export async function crossFrondImports(fronds) {
|
|
44
44
|
const typescript = await loadTs();
|
|
45
|
-
|
|
45
|
+
// `source.package` is the scoped name the scan already resolved — the remedy this rule
|
|
46
|
+
// prints must be the name that actually resolves, not one rebuilt from a prefix here.
|
|
47
|
+
const roots = fronds.map((frond) => ({
|
|
48
|
+
name: frond.name, path: resolve(frond.source.path), package: frond.source.package,
|
|
49
|
+
}));
|
|
46
50
|
const found = [];
|
|
47
51
|
for (const root of roots) {
|
|
48
52
|
for (const filePath of await sourcesUnder(root.path)) {
|
|
@@ -65,7 +69,7 @@ export async function crossFrondImports(fronds) {
|
|
|
65
69
|
message: target
|
|
66
70
|
? `'${specifier}' resolves into frond '${target.name}'. A relative path states that `
|
|
67
71
|
+ `these two fronds share a directory tree — a constraint nothing declares, and one `
|
|
68
|
-
+ `that nothing here can see. Write '
|
|
72
|
+
+ `that nothing here can see. Write '${target.package}/…' instead: it says the `
|
|
69
73
|
+ `same dependency in terms the model reads, and it is the form \`fougere sync\` writes, `
|
|
70
74
|
+ `so it survives '${target.name}' moving out.`
|
|
71
75
|
: `'${specifier}' resolves outside frond '${root.name}', into no frond at all. `
|
package/dist/imports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGzE,IAAI,GAA0B,CAAC;AAC/B,KAAK,UAAU,MAAM;IACnB,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,43 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
*/
|
|
11
|
+
export { createApp } from './boot/bootstrap.js';
|
|
12
|
+
export { orderSeeds, runSeeds, seeding } from './boot/seed.js';
|
|
13
|
+
export { AppLifecycle, AppLifecycle as Lifecycle, migrating } from './boot/AppLifecycle.js';
|
|
14
|
+
export type { Extension } from './boot/AppLifecycle.js';
|
|
4
15
|
export { defineFougere } from './define.js';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
16
|
+
export type { AdapterConfig, FougereConfig } from './config-loader.js';
|
|
17
|
+
export type { FrondConfig, OperationOverride } from './frond-config.js';
|
|
7
18
|
export { buildGraph, clusterEntities, suggestSplit, type EntityNode, type DomainCluster } from './graph.js';
|
|
8
|
-
export { Crud } from './crud.js';
|
|
9
|
-
export type { CrudOps, CrudOpName, CrudViews, CrudConstructor } from './crud.js';
|
|
10
|
-
export {
|
|
11
|
-
export type {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export
|
|
15
|
-
export type
|
|
16
|
-
export { EMPTY_INVOCATION } from './
|
|
17
|
-
export {
|
|
18
|
-
export
|
|
19
|
-
export {
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
23
|
-
export
|
|
24
|
-
export {
|
|
25
|
-
export
|
|
19
|
+
export { Crud } from './prefab/crud.js';
|
|
20
|
+
export type { CrudOps, CrudOpName, CrudViews, CrudConstructor } from './prefab/crud.js';
|
|
21
|
+
export { Mirror } from './prefab/mirror.js';
|
|
22
|
+
export type { MirrorOf, MirrorConstructor, Refreshed } from './prefab/mirror.js';
|
|
23
|
+
export { Presenter } from './prefab/presenter.js';
|
|
24
|
+
export type { PresenterViews } from './prefab/presenter.js';
|
|
25
|
+
export { Collector } from './prefab/collector.js';
|
|
26
|
+
export { Repository, type RepositoryOf, type RepositoryConstructor, type AggregateOf, type AggregateConstructor } from './prefab/repository.js';
|
|
27
|
+
export { Invocation, canonicalInvocation, EMPTY_INVOCATION } from './contract/Invocation.js';
|
|
28
|
+
export type { InvocationContext, InvocationInput } from './contract/Invocation.js';
|
|
29
|
+
export { Call } from './contract/Call.js';
|
|
30
|
+
export { RouteAddress } from './contract/RouteAddress.js';
|
|
31
|
+
export type { RouteAddressInput } from './contract/RouteAddress.js';
|
|
32
|
+
export { DispatchLifecycle } from './dispatch/DispatchLifecycle.js';
|
|
33
|
+
export { Dispatcher } from './dispatch/Dispatcher.js';
|
|
34
|
+
export type { DispatchEvent, DispatchObserver } from './dispatch/DispatchEvent.js';
|
|
35
|
+
export type { DispatchPort } from './dispatch/DispatchPort.js';
|
|
36
|
+
export { inferOperationKind, resolveContracts, resolveIsReadOp, resolveOperationKind, } from './wire/operation.js';
|
|
37
|
+
export type { OperationContract, OperationKind, OperationKindInference, OperationsMap, ParsedParam, ParsedType, } from './wire/operation.js';
|
|
38
|
+
export { EFFECTIVE_OPERATION_SEMANTICS, EffectiveOperationModel, resolveEffectiveOperations, } from './effective-operation.js';
|
|
39
|
+
export type { EffectiveCollector, EffectiveOperation, EffectiveOperationOptions, EffectiveOperationsMap, EffectiveParameter, } from './effective-operation.js';
|
|
40
|
+
export type { ModuleLoader } from './loader.js';
|
|
41
|
+
export { FougereError, ErrorCode, validationErrorsOf, type FougereErrorOptions } from './wire/errors.js';
|
|
42
|
+
export type { OperationContext, AppNext, AppMiddleware } from './wire/middleware.js';
|
|
43
|
+
export { createLocalRunner, createAppRunner, assertIdentityCard } from './wire/call.js';
|
|
44
|
+
export type { FrondCall, Transport, IdentityCard, CardOp, Facade, RpcAnswer, TopologyReport, FrondPlacement, Edge, } from './wire/call.js';
|
|
45
|
+
export { type Emit, type Fact } from './emit.js';
|
|
26
46
|
export { callValueOf } from './contract.js';
|
|
27
47
|
export type { CallValue } from './contract.js';
|
|
28
|
-
export
|
|
29
|
-
export {
|
|
30
|
-
export {
|
|
31
|
-
export {
|
|
32
|
-
export {
|
|
48
|
+
export { toHttpError, toPublicError } from './wire/http-error.js';
|
|
49
|
+
export { loggerMiddleware } from './wire/loggerMiddleware.js';
|
|
50
|
+
export { Logger, setLogLevel, logLevel, envLevel, onLog } from './builtins/logger.js';
|
|
51
|
+
export type { LogLevel, LogRecord, LogSink } from './builtins/logger.js';
|
|
52
|
+
export { applyConfig, type ConfigApplication } from './boot/apply.js';
|
|
33
53
|
export { Config } from './builtins/config.js';
|
|
34
|
-
export type { EntityOrm, OrmFactory, ListOptions, ListResult } from './orm.js';
|
|
35
|
-
export {
|
|
36
|
-
export type { App, CreateAppOptions
|
|
37
|
-
export {
|
|
38
|
-
export {
|
|
39
|
-
export {
|
|
40
|
-
export { Repository, getRepositoryTarget, repositoryKeyOf, type RepositoryOf, type RepositoryConstructor } from './repository.js';
|
|
54
|
+
export type { EntityOrm, OrmFactory, ListOptions, ListResult, Together } from './orm.js';
|
|
55
|
+
export { togetherKeyOf, membersOfTogetherKey } from './orm.js';
|
|
56
|
+
export type { App, CreateAppOptions } from './boot/types.js';
|
|
57
|
+
export type { ScanResult, ScanDiagnostic, FrondDescriptor, FrondSource, ProviderEntry, EntityEntry, HandlerEntry, SeedEntry, SeedFactory, PresenterEntry, PresenterFieldMeta, CollectorEntry, } from './scan/frond.js';
|
|
58
|
+
export type { AuthConfig, AuthContext, AuthRuntime } from './boot/auth.js';
|
|
59
|
+
export { Fronds } from './scan/Fronds.js';
|
|
41
60
|
export { verify, assertSplittable, type Violation } from './verify.js';
|
|
42
|
-
export {
|
|
61
|
+
export type { CrossFrondImport } from './imports.js';
|
|
62
|
+
export { signEnvelope, verifyEnvelope, identityFromEnv } from './identity.js';
|
|
63
|
+
export type { FrondIdentity, VerifiedCall, CallIdentity, SignedCall } from './identity.js';
|
|
43
64
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,37 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
*/
|
|
11
|
+
export { createApp } from './boot/bootstrap.js';
|
|
12
|
+
export { orderSeeds, runSeeds, seeding } from './boot/seed.js';
|
|
13
|
+
export { AppLifecycle, AppLifecycle as Lifecycle, migrating } from './boot/AppLifecycle.js';
|
|
4
14
|
export { defineFougere } from './define.js';
|
|
5
|
-
export { loadConfig, loadCascadedConfig, loadFrondConfigs, mergeGlobal, mergeConfig, configForFrond, resolveConfig } from './config-loader.js';
|
|
6
|
-
export { defineFrond, loadFrondConfig } from './frond-config.js';
|
|
7
15
|
export { buildGraph, clusterEntities, suggestSplit } from './graph.js';
|
|
8
|
-
export { Crud } from './crud.js';
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export { resolveContracts } from './operation.js';
|
|
16
|
+
export { Crud } from './prefab/crud.js';
|
|
17
|
+
export { Mirror } from './prefab/mirror.js';
|
|
18
|
+
export { Presenter } from './prefab/presenter.js';
|
|
19
|
+
export { Collector } from './prefab/collector.js';
|
|
20
|
+
export { Repository } from './prefab/repository.js';
|
|
21
|
+
export { Invocation, canonicalInvocation, EMPTY_INVOCATION } from './contract/Invocation.js';
|
|
22
|
+
export { Call } from './contract/Call.js';
|
|
23
|
+
export { RouteAddress } from './contract/RouteAddress.js';
|
|
24
|
+
export { DispatchLifecycle } from './dispatch/DispatchLifecycle.js';
|
|
25
|
+
export { Dispatcher } from './dispatch/Dispatcher.js';
|
|
26
|
+
export { inferOperationKind, resolveContracts, resolveIsReadOp, resolveOperationKind, } from './wire/operation.js';
|
|
27
|
+
export { EFFECTIVE_OPERATION_SEMANTICS, EffectiveOperationModel, resolveEffectiveOperations, } from './effective-operation.js';
|
|
28
|
+
export { FougereError, ErrorCode, validationErrorsOf } from './wire/errors.js';
|
|
29
|
+
export { createLocalRunner, createAppRunner, assertIdentityCard } from './wire/call.js';
|
|
23
30
|
export { callValueOf } from './contract.js';
|
|
24
|
-
export { toHttpError, toPublicError
|
|
25
|
-
export { loggerMiddleware } from './
|
|
26
|
-
export {
|
|
27
|
-
|
|
31
|
+
export { toHttpError, toPublicError } from './wire/http-error.js';
|
|
32
|
+
export { loggerMiddleware } from './wire/loggerMiddleware.js';
|
|
33
|
+
export { Logger, setLogLevel, logLevel, envLevel, onLog } from './builtins/logger.js';
|
|
34
|
+
// What a re-read config changes in a running process — and what it cannot.
|
|
35
|
+
export { applyConfig } from './boot/apply.js';
|
|
28
36
|
export { Config } from './builtins/config.js';
|
|
29
|
-
export {
|
|
30
|
-
export {
|
|
31
|
-
export { presenterKeyOf } from './presenter.js';
|
|
32
|
-
export { collectorKeyOf } from './collector.js';
|
|
33
|
-
export { Repository, getRepositoryTarget, repositoryKeyOf } from './repository.js';
|
|
37
|
+
export { togetherKeyOf, membersOfTogetherKey } from './orm.js';
|
|
38
|
+
export { Fronds } from './scan/Fronds.js';
|
|
34
39
|
export { verify, assertSplittable } from './verify.js';
|
|
35
|
-
//
|
|
36
|
-
|
|
40
|
+
// Who is calling, established rather than accepted — the proof beside `state`'s claim.
|
|
41
|
+
// `generateKeyPair` and `issueGrant` are NOT here: they make keys at a deployment and
|
|
42
|
+
// need `node:crypto` for a gesture WebCrypto has no equal of. They sit on `/node`.
|
|
43
|
+
export { signEnvelope, verifyEnvelope, identityFromEnv } from './identity.js';
|
|
37
44
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAuC,MAAM,YAAY,CAAC;AAC5G,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA8F,MAAM,wBAAwB,CAAC;AAChJ,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAA4B,MAAM,kBAAkB,CAAC;AAEzG,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMxF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtF,2EAA2E;AAC3E,OAAO,EAAE,WAAW,EAA0B,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAiB/D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAkB,MAAM,aAAa,CAAC;AAGvE,uFAAuF;AACvF,sFAAsF;AACtF,mFAAmF;AACnF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/loader.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module loader — can be swapped (e.g. jiti for TS files in Nuxt context).
|
|
3
|
+
*
|
|
4
|
+
* `fresh` asks for a file that may have changed since it was last read. Every loader
|
|
5
|
+
* caches, so without it a second read of an EDITED file hands back the first one —
|
|
6
|
+
* which is what re-reading a config is for. A loader that cannot honour it may ignore
|
|
7
|
+
* the flag; it then answers with what it already had.
|
|
8
|
+
*/
|
|
9
|
+
export type ModuleLoader = (filePath: string, options?: {
|
|
10
|
+
fresh?: boolean;
|
|
11
|
+
}) => Promise<Record<string, unknown>>;
|
|
12
|
+
/** Override the module loader used by the scanner (e.g. for jiti/tsx support). */
|
|
13
|
+
export declare function setModuleLoader(loader: ModuleLoader): void;
|
|
14
|
+
/** Used by config-loader to load fougere.config.ts via the same TS-aware loader. */
|
|
15
|
+
export declare function getModuleLoader(): ModuleLoader;
|
|
16
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAWtC,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAE1D;AAED,oFAAoF;AACpF,wBAAgB,eAAe,IAAI,YAAY,CAE9C"}
|
package/dist/loader.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a source file becomes a module — one registry, two readers.
|
|
3
|
+
*
|
|
4
|
+
* The scanner loads fronds and `config-loader` loads a config, and both must use the
|
|
5
|
+
* loader the host installed: a TS file needs jiti under Nuxt and plain `import` under
|
|
6
|
+
* tsx. It lived in `scan/scanner.ts`, so reading a config dragged the scanner, its AST
|
|
7
|
+
* parser and the TypeScript compiler behind it.
|
|
8
|
+
*/
|
|
9
|
+
import { pathToFileURL } from 'node:url';
|
|
10
|
+
const defaultLoader = async (filePath, options) => {
|
|
11
|
+
// On the URL, never on the path: `pathToFileURL` percent-encodes a `?` into the
|
|
12
|
+
// filename, and the import then looks for a file whose name ends in `%3Fv=…`.
|
|
13
|
+
const url = pathToFileURL(filePath).href;
|
|
14
|
+
return await import(options?.fresh ? `${url}?v=${Date.now()}` : url);
|
|
15
|
+
};
|
|
16
|
+
let activeLoader = defaultLoader;
|
|
17
|
+
/** Override the module loader used by the scanner (e.g. for jiti/tsx support). */
|
|
18
|
+
export function setModuleLoader(loader) {
|
|
19
|
+
activeLoader = loader;
|
|
20
|
+
}
|
|
21
|
+
/** Used by config-loader to load fougere.config.ts via the same TS-aware loader. */
|
|
22
|
+
export function getModuleLoader() {
|
|
23
|
+
return activeLoader;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAezC,MAAM,aAAa,GAAiB,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAC9D,gFAAgF;IAChF,8EAA8E;IAC9E,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;IACzC,OAAO,MAAM,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,IAAI,YAAY,GAAiB,aAAa,CAAC;AAE/C,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What Fougere does with a filesystem — the half of core that a Worker cannot run.
|
|
3
|
+
*
|
|
4
|
+
* The line is not "build vs runtime": `boot()` and `loadConfig` run in production, on a
|
|
5
|
+
* server, every time. It is whether the thing reaches for a disk. Everything here does,
|
|
6
|
+
* transitively, and nothing on the main entry does — which is what lets a bundler for a
|
|
7
|
+
* runtime without `node:fs` trace the main entry and find no builtin at all.
|
|
8
|
+
*
|
|
9
|
+
* The third entry, `@fougere/core/contract`, answers a different question: what crosses a
|
|
10
|
+
* process boundary. A foreign frond reads it without reading our boot.
|
|
11
|
+
*/
|
|
12
|
+
export { boot } from './boot/boot.js';
|
|
13
|
+
export { scanProject, frondAliases } from './scan/scanner.js';
|
|
14
|
+
export { type Conventions, type ConventionsInput, DEFAULT_CONVENTIONS, resolveConventions, frondPackage, frondDirsOf, providerDirsOf, watchPathsOf, } from './scan/conventions.js';
|
|
15
|
+
export { emitScan, type EmitOptions } from './scan/emit.js';
|
|
16
|
+
export { setModuleLoader, getModuleLoader } from './loader.js';
|
|
17
|
+
export { loadConfig, loadCascadedConfig } from './config-loader.js';
|
|
18
|
+
export { defineFrond } from './frond-config.js';
|
|
19
|
+
export { crossFrondImports } from './imports.js';
|
|
20
|
+
export { generateKeyPair, issueGrant } from './identity-keys.js';
|
|
21
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACL,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,mBAAmB,EAC5D,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,GAC5E,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKjD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What Fougere does with a filesystem — the half of core that a Worker cannot run.
|
|
3
|
+
*
|
|
4
|
+
* The line is not "build vs runtime": `boot()` and `loadConfig` run in production, on a
|
|
5
|
+
* server, every time. It is whether the thing reaches for a disk. Everything here does,
|
|
6
|
+
* transitively, and nothing on the main entry does — which is what lets a bundler for a
|
|
7
|
+
* runtime without `node:fs` trace the main entry and find no builtin at all.
|
|
8
|
+
*
|
|
9
|
+
* The third entry, `@fougere/core/contract`, answers a different question: what crosses a
|
|
10
|
+
* process boundary. A foreign frond reads it without reading our boot.
|
|
11
|
+
*/
|
|
12
|
+
export { boot } from './boot/boot.js';
|
|
13
|
+
export { scanProject, frondAliases } from './scan/scanner.js';
|
|
14
|
+
export { DEFAULT_CONVENTIONS, resolveConventions, frondPackage, frondDirsOf, providerDirsOf, watchPathsOf, } from './scan/conventions.js';
|
|
15
|
+
export { emitScan } from './scan/emit.js';
|
|
16
|
+
export { setModuleLoader, getModuleLoader } from './loader.js';
|
|
17
|
+
export { loadConfig, loadCascadedConfig } from './config-loader.js';
|
|
18
|
+
export { defineFrond } from './frond-config.js';
|
|
19
|
+
export { crossFrondImports } from './imports.js';
|
|
20
|
+
// Making a key and binding a name to it happen once, at a deployment, on a machine with
|
|
21
|
+
// a filesystem — the CLI speaking. Verifying happens per call, everywhere, and stays on
|
|
22
|
+
// the main entry behind `#crypto`.
|
|
23
|
+
export { generateKeyPair, issueGrant } from './identity-keys.js';
|
|
24
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACoC,mBAAmB,EAC5D,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,GAC5E,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAoB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,wFAAwF;AACxF,wFAAwF;AACxF,mCAAmC;AACnC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/orm.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SchemaView } from '@fougere/schema';
|
|
2
2
|
/** Options for list queries — pagination, sorting, counting. */
|
|
3
3
|
export interface ListOptions {
|
|
4
4
|
/** Number of records to return. */
|
|
@@ -31,18 +31,11 @@ export interface ListResult<T> extends Array<T> {
|
|
|
31
31
|
/** Whether more records exist after endCursor. */
|
|
32
32
|
hasMore?: boolean;
|
|
33
33
|
}
|
|
34
|
-
/**
|
|
35
|
-
* The keys `list()` answers to. Anything else is a mistake, and saying so is the point:
|
|
36
|
-
* the façade refuses an unknown key in a CLIENT's input (`Unknown field`) — this applies the
|
|
37
|
-
* same rule to the framework's own arguments. `list({ orderId })` used to be accepted and
|
|
38
|
-
* the filter dropped, so a one-to-many relation quietly returned the whole table.
|
|
39
|
-
*/
|
|
40
|
-
export declare const LIST_OPTION_KEYS: readonly ["limit", "offset", "page", "after", "orderBy", "order", "count", "where", "select"];
|
|
41
34
|
/** Refuse an option the port does not answer to, naming it and what was expected. */
|
|
42
35
|
export declare function assertListOptions(options: object | undefined, entity: string): void;
|
|
43
|
-
/** Select option — restrict returned fields to those of a
|
|
36
|
+
/** Select option — restrict returned fields to those of a SchemaView. */
|
|
44
37
|
export interface SelectOption {
|
|
45
|
-
select?:
|
|
38
|
+
select?: SchemaView;
|
|
46
39
|
}
|
|
47
40
|
/** Per-entity ORM — scoped CRUD operations on a single entity type. */
|
|
48
41
|
export interface EntityOrm<T = Record<string, unknown>> {
|
|
@@ -60,11 +53,61 @@ export interface EntityOrm<T = Record<string, unknown>> {
|
|
|
60
53
|
*/
|
|
61
54
|
findBy(criteria: Partial<T> | Record<string, unknown>, options?: SelectOption): Promise<T | undefined>;
|
|
62
55
|
findAllBy(criteria: Partial<T> | Record<string, unknown>, options?: SelectOption): Promise<T[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Read a SET of rows by their key, in one go — the gesture every other one was
|
|
58
|
+
* being bent into.
|
|
59
|
+
*
|
|
60
|
+
* `findAllBy` compares with `=`, so a list of ids could not be passed to it; the
|
|
61
|
+
* only way to read N rows was `list()` then filter in memory, which is what 14 of
|
|
62
|
+
* 14 handlers of a real app measured on 2026-08-14 were doing. It is invisible on
|
|
63
|
+
* SQLite and it is the whole table the day the rows are not local.
|
|
64
|
+
*
|
|
65
|
+
* It answers a MAP, because the caller holds keys and not positions: a page zips
|
|
66
|
+
* against it by `get(row.authorId)`, a miss is the absence of a key, and a repeated
|
|
67
|
+
* key is one entry. The list form this replaced promised that zip and could not
|
|
68
|
+
* keep it — dropping a miss shifts every later position — so each caller rebuilt
|
|
69
|
+
* the very index the implementation had just thrown away.
|
|
70
|
+
*/
|
|
71
|
+
findByKeys(ids: readonly string[], options?: SelectOption): Promise<Map<string, T>>;
|
|
72
|
+
/**
|
|
73
|
+
* Its dual: the rows that point AT each of these keys, grouped by the one they point at.
|
|
74
|
+
*
|
|
75
|
+
* `findByKeys` answers the side a row designates — one each, at most. This answers the
|
|
76
|
+
* side that designates the row — several each, and a key with none is simply absent.
|
|
77
|
+
* Together they are both directions of a relation, each in one query.
|
|
78
|
+
*
|
|
79
|
+
* Written because the page-shaped gesture only covered one of them: a presenter holding
|
|
80
|
+
* its page and wanting "the items of these lists" had no vocabulary for it and read the
|
|
81
|
+
* whole table instead, measured on a real app. `field` names the foreign key on THIS
|
|
82
|
+
* entity, the one carrying the value.
|
|
83
|
+
*/
|
|
84
|
+
findAllByKeys(field: string, keys: readonly string[], options?: SelectOption): Promise<Map<string, T[]>>;
|
|
63
85
|
create(input: Partial<T>, options?: SelectOption): Promise<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Write the row, or make the existing one look like this — one statement.
|
|
88
|
+
*
|
|
89
|
+
* What an import needs and the port did not have: `create` throws on the second run,
|
|
90
|
+
* so re-reading a source meant deleting first. Measured pulling an API twice.
|
|
91
|
+
*
|
|
92
|
+
* The key and the creation stamps survive an overwrite — a row keeps the moment it
|
|
93
|
+
* appeared. An engine with no upsert clause refuses by name rather than emulating
|
|
94
|
+
* one with a read in front, which would promise an atomicity it has not got.
|
|
95
|
+
*/
|
|
96
|
+
upsert(input: Partial<T>, options?: SelectOption): Promise<T>;
|
|
97
|
+
/**
|
|
98
|
+
* A whole page in one statement — what an import writes through.
|
|
99
|
+
*
|
|
100
|
+
* Row by row, 500 rows were 500 statements (measured); the shape of an import is a
|
|
101
|
+
* page, so the write is one too. Answers how many rows were written rather than the
|
|
102
|
+
* rows: `create` hands back the complete row because a caller acts on it, and an
|
|
103
|
+
* import acts on none of them — re-reading a page for a symmetry nobody uses would
|
|
104
|
+
* double the work.
|
|
105
|
+
*/
|
|
106
|
+
upsertAll(inputs: readonly Partial<T>[], options?: SelectOption): Promise<number>;
|
|
64
107
|
update(id: string, input: Partial<T>, options?: SelectOption): Promise<T>;
|
|
65
108
|
delete(id: string): Promise<boolean>;
|
|
66
109
|
/** Returns a scoped ORM that restricts all read results to the fields of the given schema. */
|
|
67
|
-
output(schema:
|
|
110
|
+
output(schema: SchemaView): EntityOrm<T>;
|
|
68
111
|
/**
|
|
69
112
|
* What this ORM wraps — the Kysely instance for the SQL one, something else elsewhere.
|
|
70
113
|
*
|
|
@@ -82,7 +125,7 @@ export interface EntityOrm<T = Record<string, unknown>> {
|
|
|
82
125
|
* Factory that creates an EntityOrm for a given entity.
|
|
83
126
|
* Called by bootstrap for every scanned entity.
|
|
84
127
|
*/
|
|
85
|
-
export type OrmFactory = (entity:
|
|
128
|
+
export type OrmFactory = (entity: SchemaView, name: string) => EntityOrm;
|
|
86
129
|
/**
|
|
87
130
|
* Container key of an entity's storage — 'reading' → 'ReadingOrm'.
|
|
88
131
|
*
|
|
@@ -93,4 +136,72 @@ export type OrmFactory = (entity: SchemaLike, name: string) => EntityOrm;
|
|
|
93
136
|
* so a rename would have moved one and left the other resolving to nothing.
|
|
94
137
|
*/
|
|
95
138
|
export declare function ormKeyOf(entity: string): string;
|
|
139
|
+
/**
|
|
140
|
+
* `Together<[Account, Ledger]>` — writes that stand or fall as one.
|
|
141
|
+
*
|
|
142
|
+
* `EntityOrm` is the port whose every gesture is ONE statement, and one statement is
|
|
143
|
+
* atomic in every engine. This is the port whose unit is a BLOCK: what the callback did
|
|
144
|
+
* happens entirely, or not at all. Nothing else separates them — the arity of the unit
|
|
145
|
+
* of work is the whole distinction, which is why this lives here and not in a file of
|
|
146
|
+
* its own.
|
|
147
|
+
*
|
|
148
|
+
* ```ts
|
|
149
|
+
* constructor(private together: Together<[Account, Ledger]>) {}
|
|
150
|
+
*
|
|
151
|
+
* await this.together.run(async ([accounts, ledger]) => {
|
|
152
|
+
* await accounts.update(from, { balance: b - amount });
|
|
153
|
+
* await ledger.create({ from, to, amount });
|
|
154
|
+
* });
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* **The second list is providers**, rebuilt inside the frame so that what THEY write is
|
|
158
|
+
* covered too — a `Mirror` writes its pages through `EntityOrm<T>`, so naming it puts
|
|
159
|
+
* them under the same unwind, with no locator and no second injection path:
|
|
160
|
+
*
|
|
161
|
+
* ```ts
|
|
162
|
+
* constructor(private together: Together<[RateCard, Ledger], [RateMirror]>) {}
|
|
163
|
+
*
|
|
164
|
+
* await this.together.run(async ([rates, ledger], [mirror]) => { await mirror.refresh(); });
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
167
|
+
* Two lists rather than one, because in a signature an entity and a provider are both
|
|
168
|
+
* written as a class name and their instance types do not separate them — the type would
|
|
169
|
+
* have to guess, by looking for methods or for a brand, and both answers are worse than
|
|
170
|
+
* saying it. They are two different facts anyway: what the unwind covers, and what is
|
|
171
|
+
* rebuilt to make that true.
|
|
172
|
+
*
|
|
173
|
+
* **All or nothing is the promise; isolation is not.** On one engine the members are
|
|
174
|
+
* rebuilt over a transaction and the engine gives both. Across engines a transaction
|
|
175
|
+
* cannot exist, so the frame keeps the before-image of each write and replays the
|
|
176
|
+
* inverse in reverse order — the unwind holds, the isolation does not, and a reader
|
|
177
|
+
* between two writes sees the half. The boot says which of the two it built rather
|
|
178
|
+
* than letting the author assume the stronger one.
|
|
179
|
+
*/
|
|
180
|
+
export interface Together<E extends readonly unknown[], P extends readonly unknown[] = []> {
|
|
181
|
+
run<R>(fn: (entities: {
|
|
182
|
+
[K in keyof E]: EntityOrm<E[K]>;
|
|
183
|
+
}, providers: P) => Promise<R>): Promise<R>;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The container key of a frame — `[['Account', 'Ledger'], ['RateMirror']]` →
|
|
187
|
+
* 'Account+Ledger|RateMirrorTogether'.
|
|
188
|
+
*
|
|
189
|
+
* The DECLARED order, not a sorted one. The tuples are what the callback destructures, so
|
|
190
|
+
* reordering here would hand `[ledger, accounts]` to a signature that says the opposite —
|
|
191
|
+
* the type and the runtime disagreeing about the same line. Two orders of one frame are
|
|
192
|
+
* therefore two keys and two registrations; they cost nothing, a frame holding no state
|
|
193
|
+
* between runs.
|
|
194
|
+
*/
|
|
195
|
+
export declare function togetherKeyOf(entities: readonly string[], providers?: readonly string[]): string;
|
|
196
|
+
/**
|
|
197
|
+
* The members behind a frame key, or `undefined` when the key is not one.
|
|
198
|
+
*
|
|
199
|
+
* The dual of the line above, and here for the reason `factOfEmitKey` is: the boot reads
|
|
200
|
+
* the key back out of a handler's `deps` to know which frames to build. A key and the way
|
|
201
|
+
* to undo it belong together — the pair that is split is the pair that drifts.
|
|
202
|
+
*/
|
|
203
|
+
export declare function membersOfTogetherKey(key: string): {
|
|
204
|
+
entities: string[];
|
|
205
|
+
providers: string[];
|
|
206
|
+
} | undefined;
|
|
96
207
|
//# sourceMappingURL=orm.d.ts.map
|
package/dist/orm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"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"}
|