@fougere/core 0.10.0-alpha.0 → 0.12.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallIdentity.d.ts.map +1 -1
- package/dist/CallIdentity.js +2 -0
- package/dist/CallIdentity.js.map +1 -1
- package/dist/Constraint.d.ts +1 -1
- package/dist/Constraint.d.ts.map +1 -1
- package/dist/FougereConfig.d.ts +10 -6
- package/dist/FougereConfig.d.ts.map +1 -1
- package/dist/FougereConfig.js +19 -4
- package/dist/FougereConfig.js.map +1 -1
- package/dist/FrondConfig.d.ts +0 -6
- package/dist/FrondConfig.d.ts.map +1 -1
- package/dist/FrondConfig.js.map +1 -1
- package/dist/FrondDeclaration.d.ts +2 -9
- package/dist/FrondDeclaration.d.ts.map +1 -1
- package/dist/FrondDeclaration.js +0 -1
- package/dist/FrondDeclaration.js.map +1 -1
- package/dist/FrondsStated.d.ts +54 -0
- package/dist/FrondsStated.d.ts.map +1 -0
- package/dist/FrondsStated.js +26 -0
- package/dist/FrondsStated.js.map +1 -0
- package/dist/Source.d.ts.map +1 -1
- package/dist/Source.js +4 -3
- package/dist/Source.js.map +1 -1
- package/dist/StatedFrond.d.ts +21 -0
- package/dist/StatedFrond.d.ts.map +1 -0
- package/dist/StatedFrond.js +34 -0
- package/dist/StatedFrond.js.map +1 -0
- package/dist/StatedModules.d.ts +19 -0
- package/dist/StatedModules.d.ts.map +1 -0
- package/dist/StatedModules.js +37 -0
- package/dist/StatedModules.js.map +1 -0
- package/dist/boot/CreateAppOptions.d.ts +19 -2
- package/dist/boot/CreateAppOptions.d.ts.map +1 -1
- package/dist/boot/Emissions.d.ts +9 -0
- package/dist/boot/Emissions.d.ts.map +1 -1
- package/dist/boot/Emissions.js +11 -5
- package/dist/boot/Emissions.js.map +1 -1
- package/dist/boot/Hosting.d.ts +38 -0
- package/dist/boot/Hosting.d.ts.map +1 -0
- package/dist/boot/Hosting.js +2 -0
- package/dist/boot/Hosting.js.map +1 -0
- package/dist/boot/Peer.d.ts +16 -0
- package/dist/boot/Peer.d.ts.map +1 -0
- package/dist/boot/Peer.js +2 -0
- package/dist/boot/Peer.js.map +1 -0
- package/dist/boot/bootstrap.d.ts.map +1 -1
- package/dist/boot/bootstrap.js +372 -235
- package/dist/boot/bootstrap.js.map +1 -1
- package/dist/boot/declared.d.ts.map +1 -1
- package/dist/boot/declared.js +38 -3
- package/dist/boot/declared.js.map +1 -1
- package/dist/boot/frame.d.ts +0 -4
- package/dist/boot/frame.d.ts.map +1 -1
- package/dist/boot/frame.js +31 -14
- package/dist/boot/frame.js.map +1 -1
- package/dist/boot/hosted.d.ts.map +1 -1
- package/dist/boot/hosted.js +4 -3
- package/dist/boot/hosted.js.map +1 -1
- package/dist/boot/install.d.ts +19 -0
- package/dist/boot/install.d.ts.map +1 -1
- package/dist/boot/install.js +273 -178
- package/dist/boot/install.js.map +1 -1
- package/dist/boot/nesting.d.ts +33 -0
- package/dist/boot/nesting.d.ts.map +1 -0
- package/dist/boot/nesting.js +164 -0
- package/dist/boot/nesting.js.map +1 -0
- package/dist/boot/ownership.d.ts +0 -1
- package/dist/boot/ownership.d.ts.map +1 -1
- package/dist/boot/ownership.js +66 -51
- package/dist/boot/ownership.js.map +1 -1
- package/dist/boot/peerOver.d.ts +4 -0
- package/dist/boot/peerOver.d.ts.map +1 -0
- package/dist/boot/peerOver.js +12 -0
- package/dist/boot/peerOver.js.map +1 -0
- package/dist/boot/ports.js +30 -25
- package/dist/boot/ports.js.map +1 -1
- package/dist/boot/relations.d.ts +54 -0
- package/dist/boot/relations.d.ts.map +1 -0
- package/dist/boot/relations.js +150 -0
- package/dist/boot/relations.js.map +1 -0
- package/dist/boot/remote.d.ts.map +1 -1
- package/dist/boot/remote.js +31 -28
- package/dist/boot/remote.js.map +1 -1
- package/dist/boot/seed.d.ts.map +1 -1
- package/dist/boot/seed.js +27 -20
- package/dist/boot/seed.js.map +1 -1
- package/dist/boot/together.d.ts +3 -0
- package/dist/boot/together.d.ts.map +1 -1
- package/dist/boot/together.js +72 -56
- package/dist/boot/together.js.map +1 -1
- package/dist/contract.d.ts +1 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/descriptor/FrondDescriptor.d.ts +7 -0
- package/dist/descriptor/FrondDescriptor.d.ts.map +1 -1
- package/dist/descriptor/MiddlewareEntry.d.ts +6 -5
- package/dist/descriptor/MiddlewareEntry.d.ts.map +1 -1
- package/dist/descriptor/ProviderEntry.d.ts +7 -0
- package/dist/descriptor/ProviderEntry.d.ts.map +1 -1
- package/dist/dispatch/Dependent.d.ts +19 -0
- package/dist/dispatch/Dependent.d.ts.map +1 -0
- package/dist/dispatch/Dependent.js +2 -0
- package/dist/dispatch/Dependent.js.map +1 -0
- package/dist/dispatch/Dispatcher.d.ts +14 -1
- package/dist/dispatch/Dispatcher.d.ts.map +1 -1
- package/dist/dispatch/Dispatcher.js +36 -8
- package/dist/dispatch/Dispatcher.js.map +1 -1
- package/dist/dispatch/HandlerFacade.d.ts +6 -1
- package/dist/dispatch/HandlerFacade.d.ts.map +1 -1
- package/dist/dispatch/HandlerFacade.js +23 -20
- package/dist/dispatch/HandlerFacade.js.map +1 -1
- package/dist/dispatch/Journal.d.ts +25 -0
- package/dist/dispatch/Journal.d.ts.map +1 -0
- package/dist/dispatch/Journal.js +3 -0
- package/dist/dispatch/Journal.js.map +1 -0
- package/dist/dispatch/PresenterExecutor.d.ts +6 -0
- package/dist/dispatch/PresenterExecutor.d.ts.map +1 -1
- package/dist/dispatch/PresenterExecutor.js +30 -22
- package/dist/dispatch/PresenterExecutor.js.map +1 -1
- package/dist/dispatch/RelationCheck.d.ts +22 -0
- package/dist/dispatch/RelationCheck.d.ts.map +1 -0
- package/dist/dispatch/RelationCheck.js +2 -0
- package/dist/dispatch/RelationCheck.js.map +1 -0
- package/dist/dispatch/Release.d.ts +36 -0
- package/dist/dispatch/Release.d.ts.map +1 -0
- package/dist/dispatch/Release.js +130 -0
- package/dist/dispatch/Release.js.map +1 -0
- package/dist/dispatch/StorageGuard.d.ts +39 -1
- package/dist/dispatch/StorageGuard.d.ts.map +1 -1
- package/dist/dispatch/StorageGuard.js +128 -54
- package/dist/dispatch/StorageGuard.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +2 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +2 -1
- package/dist/node.js.map +1 -1
- package/dist/storage/Storage.js +1 -1
- package/dist/storage/Storage.js.map +1 -1
- package/dist/storage/Store.d.ts.map +1 -1
- package/dist/storage/Store.js +29 -21
- package/dist/storage/Store.js.map +1 -1
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +14 -0
- package/dist/verify.js.map +1 -1
- package/dist/wire/Emit.d.ts +9 -0
- package/dist/wire/Emit.d.ts.map +1 -1
- package/dist/wire/Emit.js +16 -0
- package/dist/wire/Emit.js.map +1 -1
- package/dist/wire/Invocation.d.ts +3 -2
- package/dist/wire/Invocation.d.ts.map +1 -1
- package/dist/wire/Invocation.js +5 -2
- package/dist/wire/Invocation.js.map +1 -1
- package/dist/wire/InvocationContext.d.ts +2 -0
- package/dist/wire/InvocationContext.d.ts.map +1 -1
- package/dist/wire/SignedCall.d.ts +2 -0
- package/dist/wire/SignedCall.d.ts.map +1 -1
- package/dist/wire/binding.d.ts.map +1 -1
- package/dist/wire/binding.js +29 -57
- package/dist/wire/binding.js.map +1 -1
- package/dist/wire/drift.d.ts.map +1 -1
- package/dist/wire/drift.js +22 -19
- package/dist/wire/drift.js.map +1 -1
- package/package.json +4 -4
- package/src/CallIdentity.ts +2 -0
- package/src/Constraint.ts +1 -1
- package/src/FougereConfig.ts +24 -10
- package/src/FrondConfig.ts +0 -6
- package/src/FrondDeclaration.ts +2 -7
- package/src/FrondsStated.ts +72 -0
- package/src/Source.ts +3 -2
- package/src/StatedFrond.ts +51 -0
- package/src/StatedModules.ts +58 -0
- package/src/boot/CreateAppOptions.ts +19 -2
- package/src/boot/Emissions.ts +16 -5
- package/src/boot/Hosting.ts +38 -0
- package/src/boot/Peer.ts +15 -0
- package/src/boot/bootstrap.ts +512 -271
- package/src/boot/declared.ts +38 -3
- package/src/boot/frame.ts +42 -11
- package/src/boot/hosted.ts +4 -3
- package/src/boot/install.ts +400 -203
- package/src/boot/nesting.ts +196 -0
- package/src/boot/ownership.ts +79 -51
- package/src/boot/peerOver.ts +17 -0
- package/src/boot/ports.ts +45 -31
- package/src/boot/relations.ts +172 -0
- package/src/boot/remote.ts +47 -29
- package/src/boot/seed.ts +36 -27
- package/src/boot/together.ts +102 -63
- package/src/contract.ts +1 -0
- package/src/descriptor/FrondDescriptor.ts +7 -0
- package/src/descriptor/MiddlewareEntry.ts +6 -5
- package/src/descriptor/ProviderEntry.ts +7 -0
- package/src/dispatch/Dependent.ts +19 -0
- package/src/dispatch/Dispatcher.ts +43 -7
- package/src/dispatch/HandlerFacade.ts +27 -17
- package/src/dispatch/Journal.ts +26 -0
- package/src/dispatch/PresenterExecutor.ts +33 -22
- package/src/dispatch/RelationCheck.ts +21 -0
- package/src/dispatch/Release.ts +180 -0
- package/src/dispatch/StorageGuard.ts +138 -55
- package/src/index.ts +8 -0
- package/src/node.ts +2 -1
- package/src/storage/Storage.ts +2 -2
- package/src/storage/Store.ts +39 -18
- package/src/verify.ts +15 -0
- package/src/wire/Emit.ts +23 -0
- package/src/wire/Invocation.ts +5 -2
- package/src/wire/InvocationContext.ts +2 -0
- package/src/wire/SignedCall.ts +2 -0
- package/src/wire/binding.ts +26 -58
- package/src/wire/drift.ts +48 -21
package/dist/boot/install.js
CHANGED
|
@@ -11,70 +11,166 @@ import { inheritsCrud, subjectOf } from '../prefab/CrudConstructor.js';
|
|
|
11
11
|
import { repositoryKeyOf } from '../prefab/RepositoryConstructor.js';
|
|
12
12
|
import { storageKeyOf } from '../storage/Storage.js';
|
|
13
13
|
import { declares } from '../Source.js';
|
|
14
|
+
import { heldBy, refuseUnwritableNull, releasing } from './relations.js';
|
|
14
15
|
import { presenterKeyOf } from '../prefab/presenter.js';
|
|
15
16
|
import { collectorKeyOf } from '../prefab/collector.js';
|
|
16
17
|
import { RouteAddress } from '../wire/RouteAddress.js';
|
|
17
18
|
import { servedSurfaces } from '../descriptor/surface.js';
|
|
18
19
|
import { OperationRoute } from '../dispatch/OperationRoute.js';
|
|
19
20
|
import { facadeOperations } from '../entry/facade.js';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
for (const handler of frond.handlers) {
|
|
28
|
-
const key = facadeKeyOf(handler.address, handler.surface);
|
|
29
|
-
const operations = operationModel.forHandler(handler);
|
|
30
|
-
effectiveByKey.set(key, operations);
|
|
31
|
-
emissions.note(contractsOf(operations), key);
|
|
32
|
-
}
|
|
21
|
+
/**
|
|
22
|
+
* A cross-source reader over the entities this frond NAMED — resolved across the whole app,
|
|
23
|
+
* because such a query joins entities of different fronds by definition. Naming one IS the
|
|
24
|
+
* authorization; that is what the declaration is for.
|
|
25
|
+
*/
|
|
26
|
+
async function registerReads(frond, scope, entityByName, sourcesFactory, frondLog) {
|
|
27
|
+
if (!frond.reads?.length)
|
|
33
28
|
return;
|
|
34
|
-
|
|
35
|
-
const scope = container.createScope();
|
|
36
|
-
const frondLog = log.child(frond.name);
|
|
37
|
-
// `reads:` is what makes a cross-source reader exist here, and the list IS its
|
|
38
|
-
// environment — a source holding none of these is never opened. Registered under
|
|
39
|
-
// the type's own name, which is the key `depKeyOf` already derives for a plain
|
|
40
|
-
// parameter: `constructor(private reads: Reads)` and nothing else to say.
|
|
41
|
-
// Declaring `reads:` with nothing to build the reader is a boot that ignores a
|
|
42
|
-
// clause: the handler asking for `Reads` then dies at its first call, on a
|
|
43
|
-
// container message that names neither the clause nor what is missing.
|
|
44
|
-
if (frond.reads?.length && !options.sourcesFactory) {
|
|
29
|
+
if (!sourcesFactory) {
|
|
45
30
|
frondLog.warn(`[reads] ${frond.reads.join(', ')} — declared in frond.config.ts, but this boot passes no `
|
|
46
31
|
+ '`sourcesFactory`, so no reader is registered and a handler asking for `Reads` will fail '
|
|
47
32
|
+ 'at its first call. Pass one (`@fougere/adapter-duckdb`), or drop the clause.');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const named = frond.reads
|
|
36
|
+
.map((name) => entityByName.get(lowerFirst(name)))
|
|
37
|
+
.filter((entity) => entity !== undefined);
|
|
38
|
+
if (named.length !== frond.reads.length) {
|
|
39
|
+
const missing = frond.reads.filter((name) => !entityByName.has(lowerFirst(name)));
|
|
40
|
+
frondLog.warn(`[reads] ${missing.join(', ')} — named in frond.config.ts but scanned nowhere in this app, `
|
|
41
|
+
+ 'so a query naming one would find no table. Check the spelling, or the entity file.');
|
|
42
|
+
}
|
|
43
|
+
scope.registerValue('Reads', await sourcesFactory(named, frond.name));
|
|
44
|
+
frondLog.debug(`cross-source reader over ${named.length} entit(ies)`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* ONE instance per frond scope, built at its first call and closed with its frond.
|
|
48
|
+
*
|
|
49
|
+
* Its only consumer is the dispatch, which lives as long as the app, so its lifetime is not a
|
|
50
|
+
* choice. Resolved at the call and never at boot: a dependency may be registered by an
|
|
51
|
+
* extension's `up`, which rises after every frond is installed.
|
|
52
|
+
*/
|
|
53
|
+
function registerMiddlewares(frond, scope, assembly, frondLog) {
|
|
54
|
+
const { use, middlewaresOf } = assembly;
|
|
55
|
+
// Its own frond means every address its handlers answer to — wider than its entities, since
|
|
56
|
+
// a handler without one runs behind it too. A frond that serves nothing has none, which is
|
|
57
|
+
// why what it declares only ever reaches its family.
|
|
58
|
+
const addresses = new Set(frond.handlers.map((h) => h.address));
|
|
59
|
+
// What the parent took on, its own ancestors included — one level up is the whole chain,
|
|
60
|
+
// because the boot installs parents first and each of them left theirs here. The closures
|
|
61
|
+
// resolve in the scope that built them, so an inherited middleware is handed the services of
|
|
62
|
+
// the frond that declared it.
|
|
63
|
+
const inherited = frond.extends ? middlewaresOf.get(frond.extends) ?? [] : [];
|
|
64
|
+
const mine = [];
|
|
65
|
+
for (const middleware of frond.middlewares) {
|
|
66
|
+
scope.register(middleware.name, middleware.ctor, { deps: middleware.deps, lifetime: 'singleton' });
|
|
67
|
+
mine.push((context, next) => scope.resolve(middleware.name).around(context, next));
|
|
68
|
+
}
|
|
69
|
+
// Ancestors first, so they stand OUTSIDE — `getMiddlewares` hands back insertion order.
|
|
70
|
+
for (const around of [...inherited, ...mine]) {
|
|
71
|
+
for (const address of addresses)
|
|
72
|
+
use(around, address);
|
|
48
73
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
74
|
+
middlewaresOf.set(frond.name, [...inherited, ...mine]);
|
|
75
|
+
if (frond.middlewares.length > 0) {
|
|
76
|
+
frondLog.debug(`${frond.middlewares.length} middleware(s): ${frond.middlewares.map((m) => m.name).join(', ')}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** What wraps a seam here: what the parent already put in front, then this frond's own. */
|
|
80
|
+
function inheritedSeams(frond, seamsOf, declared) {
|
|
81
|
+
const above = frond.extends ? seamsOf.get(frond.extends) : undefined;
|
|
82
|
+
if (!above)
|
|
83
|
+
return declared;
|
|
84
|
+
const all = new Map(declared);
|
|
85
|
+
for (const [seam, links] of above)
|
|
86
|
+
all.set(seam, [...links, ...(declared.get(seam) ?? [])]);
|
|
87
|
+
return all;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* One storage per entity, and the default repository that IS it.
|
|
91
|
+
*
|
|
92
|
+
* The declared chain first, then the guard OUTSIDE it: the guard hands on the value it parsed,
|
|
93
|
+
* so a link reads what the entity says a row is rather than what arrived.
|
|
94
|
+
*/
|
|
95
|
+
function registerStorages(frond, assembly, scope, seams, owners, frondLog) {
|
|
96
|
+
const { options, refused } = assembly;
|
|
97
|
+
if (!options.storageFactory)
|
|
98
|
+
return;
|
|
99
|
+
const unenforced = [];
|
|
100
|
+
const release = releasing(assembly.hosting);
|
|
101
|
+
for (const entity of frond.entities) {
|
|
102
|
+
const key = storageKeyOf(entity.name);
|
|
103
|
+
const source = options.sourceOf?.(entity.name) ?? 'db';
|
|
104
|
+
if (declares(entity.entityClass, 'unique') && options.enforces?.(source, 'unique') === false) {
|
|
105
|
+
unenforced.push(`${entity.name} in '${source}'`);
|
|
106
|
+
}
|
|
107
|
+
const baseStorage = options.storageFactory(entity.entityClass, entity.name);
|
|
108
|
+
// Check if the default handler (no surface) declares an output override
|
|
109
|
+
const defaultHandler = frond.handlers.find((h) => h.address === entity.name && !h.surface);
|
|
110
|
+
const outputSchema = defaultHandler?.outputOverride ?? defaultHandler?.ctor?.__output;
|
|
111
|
+
const scoped = outputSchema && outputSchema !== entity.entityClass
|
|
112
|
+
? baseStorage.output(outputSchema)
|
|
113
|
+
: baseStorage;
|
|
114
|
+
// The declared chain first, then the guard OUTSIDE it: the guard hands on the value
|
|
115
|
+
// it parsed, so a wrapper reads what the entity says a row is rather than what
|
|
116
|
+
// arrived. Same order the client facade has held since `StorageGuard` existed.
|
|
117
|
+
const linked = wrapping('Storage', seams.get('Storage') ?? [], scoped, (dep) => scope.resolve(dep));
|
|
118
|
+
// Storage is a way out like the client surface — see `StorageGuard`.
|
|
119
|
+
refused.push(...refuseUnwritableNull(entity.entityClass, entity.name, entity.filePath));
|
|
120
|
+
const relations = heldBy(entity.entityClass, entity.name, assembly.hosting);
|
|
121
|
+
assembly.relations.push(...relations);
|
|
122
|
+
const guarded = new StorageGuard(entity.entityClass.getFields(), entity.name, {}, relations, release).guard(linked);
|
|
123
|
+
scope.registerValue(key, guarded);
|
|
124
|
+
// The default repository IS the guarded port — it already answers every gesture a
|
|
125
|
+
// declared one forwards, so the two forms have the same shape and a handler reads
|
|
126
|
+
// `repo.list()` either way. The wrapper that used to sit here (`{ storage: guarded }`)
|
|
127
|
+
// existed to make `repo.storage` true in both, back when `.storage` was the way in.
|
|
128
|
+
//
|
|
129
|
+
// Not registered for an OWNED entity: an aggregate's members are reached through it
|
|
130
|
+
// and nowhere else, and the default would be a second facade under a name a handler
|
|
131
|
+
// can spell. Every member is skipped, not just the one the key is named after —
|
|
132
|
+
// that asymmetry was the whole hole.
|
|
133
|
+
const repoKey = repositoryKeyOf(entity.name);
|
|
134
|
+
const owner = owners.get(entity.name);
|
|
135
|
+
if (owner) {
|
|
136
|
+
frondLog.debug(`${entity.name} — owned by ${owner}, no default repository`);
|
|
137
|
+
}
|
|
138
|
+
else if (!scope.has(repoKey)) {
|
|
139
|
+
scope.registerValue(repoKey, guarded);
|
|
61
140
|
}
|
|
62
|
-
scope.registerValue('Reads', await options.sourcesFactory(named, frond.name));
|
|
63
|
-
frondLog.debug(`cross-source reader over ${named.length} entit(ies)`);
|
|
64
141
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
142
|
+
if (frond.entities.length > 0) {
|
|
143
|
+
frondLog.debug(`${frond.entities.length} entity storage(s): ${frond.entities.map((e) => e.name).join(', ')}`);
|
|
144
|
+
}
|
|
145
|
+
// The judge refuses a duplicate it can SEE — the row already stored. Two writes arriving
|
|
146
|
+
// together see the same absence, and only the place they land can refuse the second.
|
|
147
|
+
if (unenforced.length > 0) {
|
|
148
|
+
frondLog.warn(`unique declared, and the source does not enforce it: ${unenforced.join(', ')} — `
|
|
149
|
+
+ 'two concurrent writes can both pass');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Every provider under its own name, then under the PORT each one extends — so
|
|
154
|
+
* `private payment: Payment` reaches the realization instead of the base it is declared
|
|
155
|
+
* against. The port key is registered AFTER, so it always wins over the base's own.
|
|
156
|
+
*
|
|
157
|
+
* Gives back the seam chains: a seam is bound where its realization is BUILT, not under a
|
|
158
|
+
* container key, so `registerStorages` is the one that puts them in front of something.
|
|
159
|
+
*/
|
|
160
|
+
function registerProviders(frond, scope, ports, boundPorts, refused, frondLog) {
|
|
71
161
|
for (const provider of frond.providers) {
|
|
72
|
-
scope
|
|
162
|
+
// `kept` is `implements AsyncDisposable` — one per frond scope, closed when it closes.
|
|
163
|
+
// Without it a provider is built per consumer and closed by nobody, which is what a
|
|
164
|
+
// service holding nothing wants.
|
|
165
|
+
scope.register(nameOf(provider), provider.ctor, {
|
|
166
|
+
deps: provider.deps,
|
|
167
|
+
...(provider.kept ? { lifetime: 'singleton' } : {}),
|
|
168
|
+
});
|
|
73
169
|
}
|
|
74
170
|
// What this frond puts in front of one of the framework's own ports. Its own, like every
|
|
75
171
|
// provider — a link goes where its frond goes, which is what a frond behind `remotes:`
|
|
76
172
|
// takes with it.
|
|
77
|
-
const seams = seamChains(frond.providers,
|
|
173
|
+
const seams = seamChains(frond.providers, ports, refused);
|
|
78
174
|
for (const [seam, links] of seams) {
|
|
79
175
|
boundPorts.add(seam);
|
|
80
176
|
frondLog.debug(`seam ${seam} → ${links.map((one) => one.ctor.name).join(' → ')} → the realization`);
|
|
@@ -83,7 +179,7 @@ export async function installFrond(frond, assembly) {
|
|
|
83
179
|
// reaches the realization instead of the base class it is declared against.
|
|
84
180
|
// Registered AFTER the loop above so a port key always wins over the base's
|
|
85
181
|
// own registration — same precedence as a declared repository over its default.
|
|
86
|
-
for (const [port, chain] of portBindings(frond.providers, (n) => scope.has(n),
|
|
182
|
+
for (const [port, chain] of portBindings(frond.providers, (n) => scope.has(n), ports, refused)) {
|
|
87
183
|
// A chain a refusal emptied — `ports:` named a class that extends nothing. Already
|
|
88
184
|
// reported, and there is no realization left to put a key in front of.
|
|
89
185
|
if (chain.length === 0)
|
|
@@ -111,58 +207,132 @@ export async function installFrond(frond, assembly) {
|
|
|
111
207
|
if (frond.providers.length > 0) {
|
|
112
208
|
frondLog.debug(`${frond.providers.length} provider(s): ${frond.providers.map(nameOf).join(', ')}`);
|
|
113
209
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
210
|
+
return seams;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* A named surface's own storage — the same rows, scoped to what this facade shows.
|
|
214
|
+
*
|
|
215
|
+
* Under the REPOSITORY key, which is what a Crud handler asks for, and under the port's own for
|
|
216
|
+
* a holder that legitimately names it: registering only the latter left a named surface with no
|
|
217
|
+
* facade at all once the façade stopped spelling the storage.
|
|
218
|
+
*/
|
|
219
|
+
function registerSurfaceStorage(entity, handler, surfaceScope, assembly, frondLog) {
|
|
220
|
+
const { options } = assembly;
|
|
221
|
+
if (!options.storageFactory)
|
|
222
|
+
return;
|
|
223
|
+
const baseStorage = options.storageFactory(entity.entityClass, entity.name);
|
|
224
|
+
const outputSchema = handler.outputOverride ?? handler.ctor.__output;
|
|
225
|
+
const narrowed = outputSchema && outputSchema !== entity.entityClass;
|
|
226
|
+
const scoped = narrowed ? baseStorage.output(outputSchema) : baseStorage;
|
|
227
|
+
// The view is handed over so a filter on a field this facade hides is SAID. The guard holds
|
|
228
|
+
// no logger — a warning is the boot's to voice, as a seed's report is.
|
|
229
|
+
const guarded = new StorageGuard(entity.entityClass.getFields(), entity.name, {
|
|
230
|
+
...(narrowed ? { view: outputSchema.getFields() } : {}),
|
|
231
|
+
outOfView: (message) => frondLog.warn(message),
|
|
232
|
+
}, heldBy(entity.entityClass, entity.name, assembly.hosting), releasing(assembly.hosting)).guard(scoped);
|
|
233
|
+
surfaceScope.registerValue(storageKeyOf(entity.name), guarded);
|
|
234
|
+
surfaceScope.registerValue(repositoryKeyOf(entity.name), guarded);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* A presenter is about an entity — computed fields sit on a shape — so this walks entities.
|
|
238
|
+
* Exposed lazily: the bridge resolves the instance on first access.
|
|
239
|
+
*/
|
|
240
|
+
function exposePresenters(frond, presenterMap, container, scope) {
|
|
241
|
+
for (const entity of frond.entities) {
|
|
242
|
+
if (!presenterMap.has(entity.name))
|
|
243
|
+
continue;
|
|
244
|
+
const presenterKey = presenterKeyOf(entity.name);
|
|
245
|
+
let instance;
|
|
246
|
+
container.registerValue(presenterKey, new Proxy({}, {
|
|
247
|
+
get(_target, prop) {
|
|
248
|
+
instance ??= scope.resolve(presenterKey);
|
|
249
|
+
return instance[prop];
|
|
250
|
+
},
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/** Build the facade of a handler, and register it under the audience it serves. */
|
|
255
|
+
function buildFacadeInto({ frond, assembly, scope, collectorTypeNames, presenterMap, frondLog }, entity, handler, targetScope, facadeKey) {
|
|
256
|
+
const { container, routeRegistry, emissions, dispatcher, localDispatcher, effectiveByKey, operationModel, getMiddlewares, } = assembly;
|
|
257
|
+
if (inheritsCrud(handler.ctor) && !entity) {
|
|
258
|
+
// An installed Crud subject may be absent from the local scan.
|
|
259
|
+
frondLog.debug(`${handler.ctor.name} extends Crud() and no scanned entity is named `
|
|
260
|
+
+ `'${subjectOf(handler.ctor, handler.address)}' — installed entity, or a missing `
|
|
261
|
+
+ `one: no storage will be injected`);
|
|
262
|
+
}
|
|
263
|
+
const facade = new HandlerFacade(handler, targetScope, {
|
|
264
|
+
key: facadeKey,
|
|
265
|
+
frond: frond.name,
|
|
266
|
+
handlers: frond.handlers,
|
|
267
|
+
operations: operationModel.forHandler(handler),
|
|
268
|
+
collectors: collectorTypeNames,
|
|
269
|
+
presenter: presenterMap.get(handler.address),
|
|
270
|
+
presenterScope: scope,
|
|
271
|
+
middlewares: () => getMiddlewares(handler.address),
|
|
272
|
+
});
|
|
273
|
+
// Emissions use the same contracts and execution path as direct calls, and the terms sit
|
|
274
|
+
// under the same audience — a surface that serves fewer ops describes fewer ops.
|
|
275
|
+
emissions.note(facade.contracts, facadeKey);
|
|
276
|
+
container.registerValue(contractsKeyOf(handler.address, handler.surface), facade.contracts);
|
|
277
|
+
effectiveByKey.set(facadeKey, facade.effectiveOperations);
|
|
278
|
+
for (const operation of facade.contracts.keys()) {
|
|
279
|
+
for (const surface of servedSurfaces(frond, handler)) {
|
|
280
|
+
routeRegistry.register(new OperationRoute('local', new RouteAddress({
|
|
281
|
+
entity: handler.address,
|
|
282
|
+
operation,
|
|
283
|
+
...(surface !== undefined ? { surface } : {}),
|
|
284
|
+
}), (call) => facade.execute(operation, call.invocation)));
|
|
158
285
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
286
|
+
}
|
|
287
|
+
container.registerValue(facadeKey, facadeOperations(handler.surface ? localDispatcher : dispatcher, handler.address, routeRegistry.operationNames(handler.address, handler.surface), handler.surface));
|
|
288
|
+
}
|
|
289
|
+
export async function installFrond(frond, assembly) {
|
|
290
|
+
const { container, routeRegistry, emissions, dispatcher, localDispatcher, effectiveByKey, boundPorts, refused, operationModel, entityByName, frondOf, contractsOf, getMiddlewares, use, log, options, } = assembly;
|
|
291
|
+
// Declared remote: keep the scanned metadata (bridges route with it),
|
|
292
|
+
// register nothing locally — resolve() falls through to the remote façade.
|
|
293
|
+
if (options.remotes && frond.name in options.remotes) {
|
|
294
|
+
log.child(frond.name).info('declared remote — not hosted locally');
|
|
295
|
+
// Its facades answer elsewhere, but what they LISTEN to was read here.
|
|
296
|
+
for (const handler of frond.handlers) {
|
|
297
|
+
const key = facadeKeyOf(handler.address, handler.surface);
|
|
298
|
+
const operations = operationModel.forHandler(handler);
|
|
299
|
+
effectiveByKey.set(key, operations);
|
|
300
|
+
emissions.note(contractsOf(operations), key);
|
|
164
301
|
}
|
|
302
|
+
return;
|
|
165
303
|
}
|
|
304
|
+
// A child hangs off its parent, so everything the parent registered answers here too and
|
|
305
|
+
// nothing else has to know: `ScopeContainer.resolve` already walks up. The boot installs
|
|
306
|
+
// parents first, which is what makes the key below resolvable.
|
|
307
|
+
const above = frond.extends ? container.resolve(`frond:${frond.extends}`) : container;
|
|
308
|
+
const scope = above.createScope();
|
|
309
|
+
const frondLog = log.child(frond.name);
|
|
310
|
+
// The frond's own voice, a child of the APP logger and never of `log` — which is the
|
|
311
|
+
// boot's, so a service's line would have claimed `boot:` long after the boot was over.
|
|
312
|
+
scope.registerValue('Logger', container.resolve('Logger').child(frond.name));
|
|
313
|
+
// `reads:` is what makes a cross-source reader exist here, and the list IS its
|
|
314
|
+
// environment — a source holding none of these is never opened. Registered under
|
|
315
|
+
// the type's own name, which is the key `depKeyOf` already derives for a plain
|
|
316
|
+
// parameter: `constructor(private reads: Reads)` and nothing else to say.
|
|
317
|
+
// Declaring `reads:` with nothing to build the reader is a boot that ignores a
|
|
318
|
+
// clause: the handler asking for `Reads` then dies at its first call, on a
|
|
319
|
+
// container message that names neither the clause nor what is missing.
|
|
320
|
+
await registerReads(frond, scope, entityByName, options.sourcesFactory, frondLog);
|
|
321
|
+
// Who owns what, and the rule that makes owning mean something. Before anything is
|
|
322
|
+
// registered, so a bad line is named by this refusal rather than by the container's.
|
|
323
|
+
sharedNames(frond, refused);
|
|
324
|
+
const owners = ownersOf(frond.providers, frond.name, refused);
|
|
325
|
+
storageInUserCode(frond, owners, (entity) => entityByName.has(entity), refused);
|
|
326
|
+
crudOnOwned(frond, owners, refused);
|
|
327
|
+
const declared = registerProviders(frond, scope, options.ports, boundPorts, refused, frondLog);
|
|
328
|
+
// An ancestor's links stand OUTSIDE this frond's own, the order `wrapping` reads — and
|
|
329
|
+
// like a middleware, a link cannot be inherited through a container key, since a seam has
|
|
330
|
+
// none: its realization is built rather than resolved.
|
|
331
|
+
const seams = inheritedSeams(frond, assembly.seamsOf, declared);
|
|
332
|
+
assembly.seamsOf.set(frond.name, seams);
|
|
333
|
+
// Register Storage for each entity — PascalCase type name (e.g. 'PostStorage')
|
|
334
|
+
// When a handler declares Crud(Entity, Output), scope the storage via .output(Output)
|
|
335
|
+
registerStorages(frond, assembly, scope, seams, owners, frondLog);
|
|
166
336
|
// Frames, after the ORMs and before anything that may ask for one. A frame is read
|
|
167
337
|
// from the same `deps` every other port is read from — asking for it IS declaring it,
|
|
168
338
|
// so nothing is registered for a frame nobody wants.
|
|
@@ -175,6 +345,7 @@ export async function installFrond(frond, assembly) {
|
|
|
175
345
|
sourceOf: options.sourceOf,
|
|
176
346
|
transacts: options.transacts,
|
|
177
347
|
transacted: options.transacted,
|
|
348
|
+
hosting: assembly.hosting,
|
|
178
349
|
log: frondLog,
|
|
179
350
|
}, refused);
|
|
180
351
|
// Register presenters in scope — PascalCase type name (e.g. 'PostPresenter')
|
|
@@ -197,77 +368,16 @@ export async function installFrond(frond, assembly) {
|
|
|
197
368
|
// Register middlewares in scope, then take them on. Resolved per call and never here:
|
|
198
369
|
// a middleware asking for something request-scoped would otherwise be handed the one
|
|
199
370
|
// instance the boot built — the same reason `getMiddlewares` is read at call time.
|
|
200
|
-
|
|
201
|
-
scope.register(middleware.name, middleware.ctor, { deps: middleware.deps });
|
|
202
|
-
const around = (context, next) => scope.resolve(middleware.name).around(context, next);
|
|
203
|
-
if (middleware.scope === 'app')
|
|
204
|
-
use(around);
|
|
205
|
-
// Its own frond means every address its handlers answer to — wider than its entities,
|
|
206
|
-
// since a handler without one runs behind it too.
|
|
207
|
-
else
|
|
208
|
-
for (const address of new Set(frond.handlers.map((h) => h.address)))
|
|
209
|
-
use(around, address);
|
|
210
|
-
}
|
|
211
|
-
if (frond.middlewares.length > 0) {
|
|
212
|
-
frondLog.debug(`${frond.middlewares.length} middleware(s): ${frond.middlewares.map((m) => `${m.name} (${m.scope})`).join(', ')}`);
|
|
213
|
-
}
|
|
371
|
+
registerMiddlewares(frond, scope, assembly, frondLog);
|
|
214
372
|
// Build handler facades → registered in ROOT container (public contract)
|
|
215
373
|
const defaultHandlers = frond.handlers.filter((h) => !h.surface);
|
|
216
374
|
const surfaceHandlers = frond.handlers.filter((h) => h.surface);
|
|
217
375
|
const defaultHandlerMap = new Map(defaultHandlers.map((h) => [h.address, h]));
|
|
218
|
-
|
|
219
|
-
const buildFacade = (entity, handler, targetScope, facadeKey) =>
|
|
220
|
-
if (inheritsCrud(handler.ctor) && !entity) {
|
|
221
|
-
// An installed Crud subject may be absent from the local scan.
|
|
222
|
-
frondLog.debug(`${handler.ctor.name} extends Crud() and no scanned entity is named `
|
|
223
|
-
+ `'${subjectOf(handler.ctor, handler.address)}' — installed entity, or a missing `
|
|
224
|
-
+ `one: no storage will be injected`);
|
|
225
|
-
}
|
|
226
|
-
const facade = new HandlerFacade(handler, targetScope, {
|
|
227
|
-
key: facadeKey,
|
|
228
|
-
frond: frond.name,
|
|
229
|
-
handlers: frond.handlers,
|
|
230
|
-
operations: operationModel.forHandler(handler),
|
|
231
|
-
collectors: collectorTypeNames,
|
|
232
|
-
presenter: presenterMap.get(handler.address),
|
|
233
|
-
presenterScope: scope,
|
|
234
|
-
middlewares: () => getMiddlewares(handler.address),
|
|
235
|
-
});
|
|
236
|
-
// Emissions use the same contracts and execution path as direct calls.
|
|
237
|
-
emissions.note(facade.contracts, facadeKey);
|
|
238
|
-
// The terms alongside the facade, under the same audience — a surface that serves
|
|
239
|
-
// fewer ops describes fewer ops.
|
|
240
|
-
container.registerValue(contractsKeyOf(handler.address, handler.surface), facade.contracts);
|
|
241
|
-
effectiveByKey.set(facadeKey, facade.effectiveOperations);
|
|
242
|
-
const surfaces = servedSurfaces(frond, handler);
|
|
243
|
-
for (const operation of facade.contracts.keys()) {
|
|
244
|
-
for (const surface of surfaces) {
|
|
245
|
-
const address = new RouteAddress({
|
|
246
|
-
entity: handler.address,
|
|
247
|
-
operation,
|
|
248
|
-
...(surface !== undefined ? { surface } : {}),
|
|
249
|
-
});
|
|
250
|
-
routeRegistry.register(new OperationRoute('local', address, (call) => facade.execute(operation, call.invocation)));
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
const operations = facadeOperations(handler.surface ? localDispatcher : dispatcher, handler.address, routeRegistry.operationNames(handler.address, handler.surface), handler.surface);
|
|
254
|
-
container.registerValue(facadeKey, operations);
|
|
255
|
-
};
|
|
376
|
+
const building = { frond, assembly, scope, collectorTypeNames, presenterMap, frondLog };
|
|
377
|
+
const buildFacade = (entity, handler, targetScope, facadeKey) => buildFacadeInto(building, entity, handler, targetScope, facadeKey);
|
|
256
378
|
// A presenter is about an entity — computed fields sit on a shape — so this walks
|
|
257
379
|
// entities. Exposing the instance lazily; the bridge resolves it on first access.
|
|
258
|
-
|
|
259
|
-
if (!presenterMap.has(entity.name))
|
|
260
|
-
continue;
|
|
261
|
-
const presenterKey = presenterKeyOf(entity.name);
|
|
262
|
-
let presenterInstance;
|
|
263
|
-
container.registerValue(presenterKey, new Proxy({}, {
|
|
264
|
-
get(_target, prop) {
|
|
265
|
-
if (!presenterInstance)
|
|
266
|
-
presenterInstance = scope.resolve(presenterKey);
|
|
267
|
-
return presenterInstance[prop];
|
|
268
|
-
},
|
|
269
|
-
}));
|
|
270
|
-
}
|
|
380
|
+
exposePresenters(frond, presenterMap, container, scope);
|
|
271
381
|
// A facade is about a handler, so this walks HANDLERS. It walked entities before,
|
|
272
382
|
// which made an entity a precondition for being callable at all: a handler naming
|
|
273
383
|
// none was scanned, then never built, and nothing said so.
|
|
@@ -307,23 +417,8 @@ export async function installFrond(frond, assembly) {
|
|
|
307
417
|
// key, which is what a Crud handler asks for, and under the port's own for a holder
|
|
308
418
|
// that legitimately names it. Registering only the latter left a named surface with
|
|
309
419
|
// no facade at all once the façade stopped spelling the storage.
|
|
310
|
-
if (entity
|
|
311
|
-
|
|
312
|
-
const outputSchema = handler.outputOverride ?? handler.ctor.__output;
|
|
313
|
-
const scoped = outputSchema && outputSchema !== entity.entityClass
|
|
314
|
-
? baseStorage.output(outputSchema)
|
|
315
|
-
: baseStorage;
|
|
316
|
-
// The view is handed over so a filter on a field this facade hides is SAID. The
|
|
317
|
-
// guard holds no logger — a warning is the boot's to voice, as a seed's report is.
|
|
318
|
-
const guarded = new StorageGuard(entity.entityClass.getFields(), entity.name, {
|
|
319
|
-
...(outputSchema && outputSchema !== entity.entityClass
|
|
320
|
-
? { view: outputSchema.getFields() }
|
|
321
|
-
: {}),
|
|
322
|
-
outOfView: (message) => frondLog.warn(message),
|
|
323
|
-
}).guard(scoped);
|
|
324
|
-
surfaceScope.registerValue(storageKeyOf(entity.name), guarded);
|
|
325
|
-
surfaceScope.registerValue(repositoryKeyOf(entity.name), guarded);
|
|
326
|
-
}
|
|
420
|
+
if (entity)
|
|
421
|
+
registerSurfaceStorage(entity, handler, surfaceScope, assembly, frondLog);
|
|
327
422
|
const facadeKey = facadeKeyOf(handler.address, handler.surface);
|
|
328
423
|
buildFacade(entity, handler, surfaceScope, facadeKey);
|
|
329
424
|
frondLog.debug(`${facadeKey} [${Object.keys(container.resolve(facadeKey)).join(', ')}]`
|
package/dist/boot/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/boot/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/boot/install.ts"],"names":[],"mappings":"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"}
|