@fougere/core 0.11.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/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/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/bootstrap.d.ts.map +1 -1
- package/dist/boot/bootstrap.js +342 -307
- package/dist/boot/bootstrap.js.map +1 -1
- package/dist/boot/declared.d.ts.map +1 -1
- package/dist/boot/declared.js +3 -0
- 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 +9 -0
- package/dist/boot/install.d.ts.map +1 -1
- package/dist/boot/install.js +271 -185
- 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/ports.js +30 -25
- package/dist/boot/ports.js.map +1 -1
- 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.map +1 -1
- package/dist/boot/together.js +71 -56
- package/dist/boot/together.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/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/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/Release.js +53 -47
- package/dist/dispatch/Release.js.map +1 -1
- package/dist/dispatch/StorageGuard.d.ts +21 -0
- package/dist/dispatch/StorageGuard.d.ts.map +1 -1
- package/dist/dispatch/StorageGuard.js +84 -66
- package/dist/dispatch/StorageGuard.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -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/Invocation.d.ts +1 -1
- package/dist/wire/Invocation.d.ts.map +1 -1
- package/dist/wire/Invocation.js +1 -1
- package/dist/wire/Invocation.js.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/FougereConfig.ts +24 -10
- package/src/FrondConfig.ts +0 -6
- package/src/FrondDeclaration.ts +2 -7
- package/src/FrondsStated.ts +72 -0
- 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/bootstrap.ts +478 -359
- package/src/boot/declared.ts +3 -0
- package/src/boot/frame.ts +42 -11
- package/src/boot/hosted.ts +4 -3
- package/src/boot/install.ts +388 -212
- package/src/boot/nesting.ts +196 -0
- package/src/boot/ownership.ts +79 -51
- package/src/boot/ports.ts +45 -31
- package/src/boot/remote.ts +47 -29
- package/src/boot/seed.ts +36 -27
- package/src/boot/together.ts +98 -63
- package/src/descriptor/FrondDescriptor.ts +7 -0
- package/src/descriptor/MiddlewareEntry.ts +6 -5
- package/src/descriptor/ProviderEntry.ts +7 -0
- package/src/dispatch/HandlerFacade.ts +27 -17
- package/src/dispatch/PresenterExecutor.ts +33 -22
- package/src/dispatch/Release.ts +68 -44
- package/src/dispatch/StorageGuard.ts +90 -69
- package/src/index.ts +3 -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/Invocation.ts +2 -1
- package/src/wire/binding.ts +26 -58
- package/src/wire/drift.ts +48 -21
package/dist/storage/Store.js
CHANGED
|
@@ -52,27 +52,7 @@ export function storageOver(open) {
|
|
|
52
52
|
items = items.filter((values) => matches(values, options.where));
|
|
53
53
|
if (options?.orderBy)
|
|
54
54
|
items = sorted(items, options.orderBy, options.order);
|
|
55
|
-
|
|
56
|
-
// match", which is what a paginator divides. Reading `store.size` at the end
|
|
57
|
-
// answered a different question — everything the store holds, including the ones
|
|
58
|
-
// the filter exists to keep out of this caller's sight.
|
|
59
|
-
const matching = items.length;
|
|
60
|
-
const limit = options?.limit;
|
|
61
|
-
const offset = options?.page && limit ? (options.page - 1) * limit : options?.offset ?? 0;
|
|
62
|
-
if (offset > 0)
|
|
63
|
-
items = items.slice(offset);
|
|
64
|
-
const hasMore = limit ? items.length > limit : false;
|
|
65
|
-
if (limit)
|
|
66
|
-
items = items.slice(0, limit);
|
|
67
|
-
// The cursor is read before the scope cuts: a view that drops the key still
|
|
68
|
-
// pages, the way it does over SQL.
|
|
69
|
-
const endCursor = items.length > 0 ? String(items[items.length - 1][pk] ?? '') : undefined;
|
|
70
|
-
const result = items.map(pick);
|
|
71
|
-
result.hasMore = hasMore;
|
|
72
|
-
result.endCursor = endCursor;
|
|
73
|
-
if (options?.count)
|
|
74
|
-
result.total = matching;
|
|
75
|
-
return result;
|
|
55
|
+
return paged(items, options, pk, pick);
|
|
76
56
|
},
|
|
77
57
|
async findById(id) {
|
|
78
58
|
const values = await store.get(keyOf(id));
|
|
@@ -191,4 +171,32 @@ const rank = (left, right) => {
|
|
|
191
171
|
const [held, against] = [order(left), order(right)];
|
|
192
172
|
return held === against ? 0 : held < against ? -1 : 1;
|
|
193
173
|
};
|
|
174
|
+
/**
|
|
175
|
+
* The page cut out of what matched.
|
|
176
|
+
*
|
|
177
|
+
* `total` is held BEFORE the cut and after the filter — it answers "how many match", which is
|
|
178
|
+
* what a paginator divides. Reading the store's size at the end answered a different question:
|
|
179
|
+
* everything it holds, including the rows the filter exists to keep out of this caller's sight.
|
|
180
|
+
*/
|
|
181
|
+
function paged(matched, options, pk, pick) {
|
|
182
|
+
const matching = matched.length;
|
|
183
|
+
const limit = options?.limit;
|
|
184
|
+
const offset = options?.page && limit ? (options.page - 1) * limit : options?.offset ?? 0;
|
|
185
|
+
let items = offset > 0 ? matched.slice(offset) : matched;
|
|
186
|
+
const hasMore = limit ? items.length > limit : false;
|
|
187
|
+
if (limit)
|
|
188
|
+
items = items.slice(0, limit);
|
|
189
|
+
// The cursor is read before the scope cuts: a view that drops the key still pages, the way it
|
|
190
|
+
// does over SQL.
|
|
191
|
+
const endCursor = items.length > 0
|
|
192
|
+
? String(items[items.length - 1][pk] ?? '')
|
|
193
|
+
: undefined;
|
|
194
|
+
// An array that carries the page's terms on itself — what `ListResult` is.
|
|
195
|
+
const result = items.map(pick);
|
|
196
|
+
result.hasMore = hasMore;
|
|
197
|
+
result.endCursor = endCursor;
|
|
198
|
+
if (options?.count)
|
|
199
|
+
result.total = matching;
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
194
202
|
//# sourceMappingURL=Store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../../src/storage/Store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAmB,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAmB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../../src/storage/Store.ts"],"names":[],"mappings":"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"}
|
package/dist/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD,qGAAqG;AACrG,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD,qGAAqG;AACrG,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD,CAAC;AA0CF;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE;IAAE,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,GAAG,SAAS,EAAE,CAsF/E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE;IAAE,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,GAAG,IAAI,CAKlF"}
|
package/dist/verify.js
CHANGED
|
@@ -3,6 +3,14 @@ import { repositoryKeyOf } from './prefab/RepositoryConstructor.js';
|
|
|
3
3
|
import { storageKeyOf } from './storage/Storage.js';
|
|
4
4
|
import { presenterKeyOf } from './prefab/presenter.js';
|
|
5
5
|
import { collectorKeyOf } from './prefab/collector.js';
|
|
6
|
+
/** Everything above a frond in the tree — what its scope reaches by walking up. */
|
|
7
|
+
function ancestors(frond, byName) {
|
|
8
|
+
const above = new Set();
|
|
9
|
+
for (let at = frond.extends; at !== undefined && !above.has(at); at = byName.get(at)?.extends) {
|
|
10
|
+
above.add(at);
|
|
11
|
+
}
|
|
12
|
+
return above;
|
|
13
|
+
}
|
|
6
14
|
/**
|
|
7
15
|
* The container keys a frond registers in its own scope, keyed as a handler's `deps` spell them —
|
|
8
16
|
* DI resolves by type name, so both sides are PascalCase.
|
|
@@ -36,6 +44,7 @@ function injectablesOf(frond) {
|
|
|
36
44
|
*/
|
|
37
45
|
export function verify(app) {
|
|
38
46
|
const index = new Map();
|
|
47
|
+
const byName = new Map(app.fronds.map((frond) => [frond.name, frond]));
|
|
39
48
|
for (const frond of app.fronds) {
|
|
40
49
|
for (const [key, reg] of registrationsOf(frond))
|
|
41
50
|
index.set(key, reg);
|
|
@@ -63,6 +72,11 @@ export function verify(app) {
|
|
|
63
72
|
// an unresolved dependency is the container's complaint, not this rule's.
|
|
64
73
|
if (!declared || declared.frond === frond.name)
|
|
65
74
|
continue;
|
|
75
|
+
// An ANCESTOR is not across: the frond tree says this one resolves what that one
|
|
76
|
+
// declared, and its scope hangs off it. A sibling, a descendant or a stranger stays
|
|
77
|
+
// refused — inheriting code is not calling a frond.
|
|
78
|
+
if (ancestors(frond, byName).has(declared.frond))
|
|
79
|
+
continue;
|
|
66
80
|
violations.push({
|
|
67
81
|
code: 'cross-frond-dependency',
|
|
68
82
|
severity: 'warning',
|
package/dist/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { InvocationContext } from './InvocationContext.js';
|
|
|
2
2
|
import type { PartialInvocation } from './PartialInvocation.js';
|
|
3
3
|
/** Canonical invocation shared by every entry and transport. */
|
|
4
4
|
export declare class Invocation implements InvocationContext {
|
|
5
|
+
static readonly empty: Invocation;
|
|
5
6
|
readonly params: Record<string, unknown>;
|
|
6
7
|
readonly query: Record<string, unknown>;
|
|
7
8
|
readonly input: unknown;
|
|
@@ -14,7 +15,6 @@ export declare class Invocation implements InvocationContext {
|
|
|
14
15
|
private constructor();
|
|
15
16
|
/** Takes a raw object or an invocation, so a caller never has to know which it holds. */
|
|
16
17
|
static from(context?: PartialInvocation): Invocation;
|
|
17
|
-
static readonly empty: Invocation;
|
|
18
18
|
/** Replaces the input — how the façade hands on the value it parsed. */
|
|
19
19
|
withInput(input: unknown): Invocation;
|
|
20
20
|
/** Replaces the host-owned state, which a middleware enriches before the handler runs. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Invocation.d.ts","sourceRoot":"","sources":["../../src/wire/Invocation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAuBhE,gEAAgE;AAChE,qBAAa,UAAW,YAAW,iBAAiB;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,iFAAiF;IACjF,OAAO;IAcP,yFAAyF;IACzF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"Invocation.d.ts","sourceRoot":"","sources":["../../src/wire/Invocation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAuBhE,gEAAgE;AAChE,qBAAa,UAAW,YAAW,iBAAiB;IAClD,MAAM,CAAC,QAAQ,CAAC,KAAK,aAAqB;IAE1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,iFAAiF;IACjF,OAAO;IAcP,yFAAyF;IACzF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU;IAKpD,wEAAwE;IACxE,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU;IAIrC,0FAA0F;IAC1F,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAGtD"}
|
package/dist/wire/Invocation.js
CHANGED
|
@@ -22,6 +22,7 @@ function canonicalRecord(value) {
|
|
|
22
22
|
}
|
|
23
23
|
/** Canonical invocation shared by every entry and transport. */
|
|
24
24
|
export class Invocation {
|
|
25
|
+
static empty = Invocation.from();
|
|
25
26
|
params;
|
|
26
27
|
query;
|
|
27
28
|
input;
|
|
@@ -52,7 +53,6 @@ export class Invocation {
|
|
|
52
53
|
static from(context) {
|
|
53
54
|
return context instanceof Invocation ? context : new Invocation(context ?? {});
|
|
54
55
|
}
|
|
55
|
-
static empty = Invocation.from();
|
|
56
56
|
/** Replaces the input — how the façade hands on the value it parsed. */
|
|
57
57
|
withInput(input) {
|
|
58
58
|
return new Invocation({ ...this, input });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Invocation.js","sourceRoot":"","sources":["../../src/wire/Invocation.ts"],"names":[],"mappings":"AAGA,+FAA+F;AAC/F,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACvE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,oFAAoF;AACpF,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE1F,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,gEAAgE;AAChE,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"Invocation.js","sourceRoot":"","sources":["../../src/wire/Invocation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../src/wire/binding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAKxC,KAAK,WAAW,GACZ;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACzC,qFAAqF;GACnF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACpC;;;;GAIG;GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,2EAA2E;GACzE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;AAczC,qDAAqD;AACrD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EAAE,EACf,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,WAAW,
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../src/wire/binding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAKxC,KAAK,WAAW,GACZ;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACzC,qFAAqF;GACnF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACpC;;;;GAIG;GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,2EAA2E;GACzE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;AAczC,qDAAqD;AACrD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EAAE,EACf,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,WAAW,CAMb"}
|
package/dist/wire/binding.js
CHANGED
|
@@ -11,62 +11,34 @@ function coercionFor(typeName) {
|
|
|
11
11
|
// ── Compute ───────────────────────────────────
|
|
12
12
|
/** Build a BindingPlan from parsed method params. */
|
|
13
13
|
export function computeBindingPlan(params, collectorTypeNames) {
|
|
14
|
-
return params.map((param) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
// 2. InvocationContext — inject the full context
|
|
45
|
-
if (typeName === 'InvocationContext') {
|
|
46
|
-
return {
|
|
47
|
-
name: param.name,
|
|
48
|
-
source: { kind: 'context' },
|
|
49
|
-
optional: param.optional ?? false,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
// 3. Primitives — matched by name from params > query
|
|
53
|
-
if (PRIMITIVES.has(typeName)) {
|
|
54
|
-
return {
|
|
55
|
-
name: param.name,
|
|
56
|
-
source: {
|
|
57
|
-
kind: 'param',
|
|
58
|
-
name: param.name,
|
|
59
|
-
coerce: coercionFor(typeName),
|
|
60
|
-
},
|
|
61
|
-
optional: param.optional ?? false,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
// 4. Everything else — input
|
|
65
|
-
return {
|
|
66
|
-
name: param.name,
|
|
67
|
-
source: { kind: 'input' },
|
|
68
|
-
optional: param.optional ?? false,
|
|
69
|
-
};
|
|
70
|
-
});
|
|
14
|
+
return params.map((param) => ({
|
|
15
|
+
name: param.name,
|
|
16
|
+
source: sourceOf(param, collectorTypeNames),
|
|
17
|
+
optional: param.optional ?? false,
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Where ONE parameter gets its value, in the order the branches must be asked.
|
|
22
|
+
*
|
|
23
|
+
* A fact and a link name themselves, so they come FIRST: asked later, the last branch would hand
|
|
24
|
+
* the caller's input under the name of something that happened.
|
|
25
|
+
*/
|
|
26
|
+
function sourceOf(param, collectorTypeNames) {
|
|
27
|
+
const typeName = param.type.name;
|
|
28
|
+
// `lowerFirst`, never `toLowerCase()`: the collector set is keyed the way the scan spells it,
|
|
29
|
+
// and the two agree on one word only — `AuthorUser` looked up as `authoruser` missed
|
|
30
|
+
// `authorUser` and fell through to the request input.
|
|
31
|
+
const typeKey = lowerFirst(typeName);
|
|
32
|
+
const announced = typeName === 'Fact' || typeName === 'Pipe' ? param.type.generics?.[0]?.name : undefined;
|
|
33
|
+
if (announced) {
|
|
34
|
+
return { kind: typeName === 'Pipe' ? 'pipe' : 'fact', factName: lowerFirst(announced) };
|
|
35
|
+
}
|
|
36
|
+
if (collectorTypeNames.has(typeKey))
|
|
37
|
+
return { kind: 'collector', typeName: typeKey };
|
|
38
|
+
if (typeName === 'InvocationContext')
|
|
39
|
+
return { kind: 'context' };
|
|
40
|
+
if (PRIMITIVES.has(typeName))
|
|
41
|
+
return { kind: 'param', name: param.name, coerce: coercionFor(typeName) };
|
|
42
|
+
return { kind: 'input' };
|
|
71
43
|
}
|
|
72
44
|
//# sourceMappingURL=binding.js.map
|
package/dist/wire/binding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/wire/binding.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA4B7C,iDAAiD;AAEjD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAE5D,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iDAAiD;AAEjD,qDAAqD;AACrD,MAAM,UAAU,kBAAkB,CAChC,MAAe,EACf,kBAA+B;IAE/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/wire/binding.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA4B7C,iDAAiD;AAEjD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAE5D,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iDAAiD;AAEjD,qDAAqD;AACrD,MAAM,UAAU,kBAAkB,CAChC,MAAe,EACf,kBAA+B;IAE/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;QAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;KAClC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,KAAY,EAAE,kBAA+B;IAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,8FAA8F;IAC9F,qFAAqF;IACrF,sDAAsD;IACtD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1G,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC1F,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACrF,IAAI,QAAQ,KAAK,mBAAmB;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACjE,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IAExG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
|
package/dist/wire/drift.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/wire/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAyB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,uFAAuF;AACvF,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAChD,kEAAkE;IAClE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAChD,4EAA4E;IAC5E,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;
|
|
1
|
+
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/wire/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAyB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,uFAAuF;AACvF,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAChD,kEAAkE;IAClE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAChD,4EAA4E;IAC5E,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AA6BD,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAO1F;AAgDD,uDAAuD;AACvD,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAKhD;AAED,8CAA8C;AAC9C,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAYlD"}
|
package/dist/wire/drift.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Card } from '@fougere/schema';
|
|
2
|
-
/** Every facade of a card, by name. */
|
|
3
2
|
function facadesOf(card, frond) {
|
|
4
3
|
const found = new Map();
|
|
5
4
|
for (const one of card.fronds) {
|
|
@@ -23,11 +22,15 @@ function factsOf(card, frond) {
|
|
|
23
22
|
}
|
|
24
23
|
/** What a consumer's synced copy no longer matches in what the producer serves. */
|
|
25
24
|
export function driftOf(mine, theirs, frond) {
|
|
26
|
-
const mineFacades = facadesOf(mine, frond);
|
|
27
|
-
const served = facadesOf(theirs, frond);
|
|
28
25
|
const drift = { frond, missingDoors: [], missingOps: [], shapes: [], facts: [] };
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
driftInDoors(facadesOf(mine, frond), facadesOf(theirs, frond), drift);
|
|
27
|
+
driftInFacts(factsOf(mine, frond), factsOf(theirs, frond), drift);
|
|
28
|
+
return drift;
|
|
29
|
+
}
|
|
30
|
+
/** A door that is gone, an operation it no longer answers, or a row that changed shape. */
|
|
31
|
+
function driftInDoors(mine, theirs, drift) {
|
|
32
|
+
for (const [name, facade] of mine) {
|
|
33
|
+
const there = theirs.get(name);
|
|
31
34
|
if (!there) {
|
|
32
35
|
drift.missingDoors.push(name);
|
|
33
36
|
continue;
|
|
@@ -35,30 +38,30 @@ export function driftOf(mine, theirs, frond) {
|
|
|
35
38
|
const missing = [...facade.ops].filter((op) => !there.ops.has(op));
|
|
36
39
|
if (missing.length > 0)
|
|
37
40
|
drift.missingOps.push({ facade: name, ops: missing.sort() });
|
|
38
|
-
if (facade.schema
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
if (!facade.schema || !there.schema)
|
|
42
|
+
continue;
|
|
43
|
+
// `Card.diff` never guesses a rename — a field gone plus a field appeared lands in
|
|
44
|
+
// `ambiguous`, and only a declaration settles it. Here nobody can declare one, so the
|
|
45
|
+
// pair is reported as it is and a human reads it.
|
|
46
|
+
const moved = Card.fromDescriptor(facade.schema).diff(Card.fromDescriptor(there.schema));
|
|
47
|
+
if (moved.changes.length > 0)
|
|
48
|
+
drift.shapes.push({ facade: name, changes: moved.changes });
|
|
46
49
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
}
|
|
51
|
+
/** A fact nobody announces any more, or one whose payload moved under its readers. */
|
|
52
|
+
function driftInFacts(mine, theirs, drift) {
|
|
53
|
+
for (const [name, shape] of mine) {
|
|
54
|
+
if (!theirs.has(name)) {
|
|
51
55
|
drift.facts.push({ fact: name, changes: 'gone' });
|
|
52
56
|
continue;
|
|
53
57
|
}
|
|
54
|
-
const there =
|
|
58
|
+
const there = theirs.get(name);
|
|
55
59
|
if (!shape || !there)
|
|
56
60
|
continue;
|
|
57
61
|
const moved = Card.fromDescriptor(shape).diff(Card.fromDescriptor(there));
|
|
58
62
|
if (moved.changes.length > 0)
|
|
59
63
|
drift.facts.push({ fact: name, changes: moved.changes });
|
|
60
64
|
}
|
|
61
|
-
return drift;
|
|
62
65
|
}
|
|
63
66
|
/** Whether anything at all separates the two cards. */
|
|
64
67
|
export function agrees(drift) {
|
package/dist/wire/drift.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/wire/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAsC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/wire/drift.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fougere/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0-alpha.0",
|
|
4
4
|
"description": "The core — scan, call contract, façades, remote stand-ins.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fougere",
|
|
@@ -61,12 +61,12 @@
|
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@typescript/typescript6": "^6.0.2",
|
|
63
63
|
"dequal": "^2.0.3",
|
|
64
|
-
"@fougere/
|
|
65
|
-
"@fougere/
|
|
64
|
+
"@fougere/container": "0.12.0-alpha.0",
|
|
65
|
+
"@fougere/schema": "0.12.0-alpha.0"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/node": "^22.0.0",
|
|
69
|
-
"@fougere/compiler": "0.
|
|
69
|
+
"@fougere/compiler": "0.12.0-alpha.0"
|
|
70
70
|
},
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
package/src/FougereConfig.ts
CHANGED
|
@@ -7,6 +7,8 @@ import type { NameOf } from './NameOf.js';
|
|
|
7
7
|
import type { PortChoice } from './PortChoice.js';
|
|
8
8
|
import { getModuleLoader } from './loader.js';
|
|
9
9
|
import type { AdapterConfig } from './AdapterConfig.js';
|
|
10
|
+
import { mergeStated, statesModule, type FrondsStated } from './FrondsStated.js';
|
|
11
|
+
import { statedFronds } from './StatedFrond.js';
|
|
10
12
|
|
|
11
13
|
export interface FougereConfig {
|
|
12
14
|
/** Database configuration — the DEFAULT source, the one an entity lands in unnamed. */
|
|
@@ -21,13 +23,10 @@ export interface FougereConfig {
|
|
|
21
23
|
/** How much every logger says. */
|
|
22
24
|
logLevel?: LogLevel;
|
|
23
25
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* The KEY is not narrowed to `NameOf<'frond'>`, and that is a choice: constraining it means
|
|
27
|
-
* making every key optional, which puts `| undefined` on the values and changes what six
|
|
28
|
-
* readers here already treat as present. The name is checked at boot instead.
|
|
26
|
+
* What this app is made of, and who inherits code from whom. The key is a frond name or a
|
|
27
|
+
* module specifier; nesting says only that a child resolves what its parent declared.
|
|
29
28
|
*/
|
|
30
|
-
|
|
29
|
+
fronds?: FrondsStated;
|
|
31
30
|
/** What answers a port — a name, or the chain from the outside in. */
|
|
32
31
|
ports?: PortChoice;
|
|
33
32
|
/** Auth declaration — picks a provider package and forwards options to it. */
|
|
@@ -59,18 +58,33 @@ export async function loadConfig(root: string, options?: { fresh?: boolean }): P
|
|
|
59
58
|
return loadConfigFrom(root, options?.fresh);
|
|
60
59
|
}
|
|
61
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Where each frond answers — a string leaf of `fronds:`, which is the one place a config says
|
|
63
|
+
* it. `CreateAppOptions.remotes` still takes this shape: the option is what the whole boot
|
|
64
|
+
* reads, and translating here is what keeps it from learning about the tree.
|
|
65
|
+
*/
|
|
66
|
+
export function remotesOf(config: FougereConfig): Record<string, string> {
|
|
67
|
+
const addresses: Record<string, string> = {};
|
|
68
|
+
for (const stated of statedFronds(config.fronds)) {
|
|
69
|
+
if (stated.value !== undefined && !statesModule(stated.key)) addresses[stated.key] = stated.value;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return addresses;
|
|
73
|
+
}
|
|
74
|
+
|
|
62
75
|
// ── Merging ──────────────────────────────────────
|
|
63
76
|
|
|
64
77
|
/**
|
|
65
78
|
* Override a config with another, the invariant of every cascade level: scalar keys replace, but
|
|
66
|
-
*
|
|
67
|
-
* others.
|
|
79
|
+
* the one that says what this app is made of MERGES — an override adds or redirects a frond
|
|
80
|
+
* without erasing the others.
|
|
68
81
|
*/
|
|
69
82
|
function mergeGlobal(base: FougereConfig, override: Partial<FougereConfig>): FougereConfig {
|
|
70
83
|
const merged: FougereConfig = { ...base, ...override };
|
|
71
|
-
if (base.
|
|
72
|
-
merged.
|
|
84
|
+
if (base.fronds || override.fronds) {
|
|
85
|
+
merged.fronds = mergeStated(base.fronds ?? {}, override.fronds ?? {});
|
|
73
86
|
}
|
|
87
|
+
|
|
74
88
|
return merged;
|
|
75
89
|
}
|
|
76
90
|
|
package/src/FrondConfig.ts
CHANGED
|
@@ -20,12 +20,6 @@ export interface FrondConfig {
|
|
|
20
20
|
* ran first, and scan order is not an answer.
|
|
21
21
|
*/
|
|
22
22
|
pipes?: Record<NameOf<'entity'>, NameOf<'handler'>[]>;
|
|
23
|
-
/**
|
|
24
|
-
* How far a middleware reaches, by class name. A middleware answers for its own frond
|
|
25
|
-
* without being named here; `'app'` is the exception, and it is stated by the frond
|
|
26
|
-
* that decides for the others.
|
|
27
|
-
*/
|
|
28
|
-
middlewares?: Record<NameOf<'middleware'>, 'frond' | 'app'>;
|
|
29
23
|
/** Per-operation overrides. Key = operation name (method name on a handler). */
|
|
30
24
|
operations?: Record<string, OperationOverride>;
|
|
31
25
|
}
|
package/src/FrondDeclaration.ts
CHANGED
|
@@ -69,12 +69,8 @@ export interface FrondDeclaration {
|
|
|
69
69
|
collectors?: (Ctor | DeclaredSubject)[];
|
|
70
70
|
providers?: Declared[];
|
|
71
71
|
seeds?: { entityName: string; data: SeedEntry['data'] }[];
|
|
72
|
-
/**
|
|
73
|
-
|
|
74
|
-
* where `frond.config.ts` states it by class name — a statement has no config file to
|
|
75
|
-
* put it in.
|
|
76
|
-
*/
|
|
77
|
-
middlewares?: (Ctor | (DeclaredSubject & { scope?: MiddlewareEntry['scope'] }))[];
|
|
72
|
+
/** What runs around this frond's operations, and around those of the fronds under it. */
|
|
73
|
+
middlewares?: (Ctor | DeclaredSubject)[];
|
|
78
74
|
/** The ops that finish a fact, in order — the same key `frond.config.ts` states. */
|
|
79
75
|
pipes?: Record<string, string[]>;
|
|
80
76
|
/** Per-surface entity lists — the same key `frond.config.ts` states. */
|
|
@@ -169,7 +165,6 @@ export function frond(name: string, declared: FrondDeclaration = {}): FrondDescr
|
|
|
169
165
|
const middlewares: MiddlewareEntry[] = (declared.middlewares ?? []).map((m) => ({
|
|
170
166
|
name: ctorOf(m).name,
|
|
171
167
|
ctor: ctorOf(m),
|
|
172
|
-
scope: (typeof m === 'function' ? undefined : m.scope) ?? 'frond',
|
|
173
168
|
deps: depsOf(m),
|
|
174
169
|
filePath: '',
|
|
175
170
|
}));
|