@fougere/core 0.11.0-alpha.0 → 0.12.1-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/EffectiveOperationModel.d.ts.map +1 -1
- package/dist/EffectiveOperationModel.js +18 -0
- package/dist/EffectiveOperationModel.js.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/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 +275 -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 +39 -30
- 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/contract.d.ts +2 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +2 -0
- 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/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/OutputView.d.ts.map +1 -1
- package/dist/dispatch/OutputView.js +7 -0
- package/dist/dispatch/OutputView.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 +37 -22
- package/dist/dispatch/PresenterExecutor.js.map +1 -1
- package/dist/dispatch/Received.d.ts +3 -0
- package/dist/dispatch/Received.d.ts.map +1 -0
- package/dist/dispatch/Received.js +2 -0
- package/dist/dispatch/Received.js.map +1 -0
- 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/dispatch/decoded.d.ts +19 -0
- package/dist/dispatch/decoded.d.ts.map +1 -0
- package/dist/dispatch/decoded.js +36 -0
- package/dist/dispatch/decoded.js.map +1 -0
- package/dist/entry/facade.d.ts +9 -2
- package/dist/entry/facade.d.ts.map +1 -1
- package/dist/entry/facade.js +16 -7
- package/dist/entry/facade.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -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/prefab/CrudConstructor.d.ts.map +1 -1
- package/dist/prefab/CrudConstructor.js +3 -2
- package/dist/prefab/CrudConstructor.js.map +1 -1
- package/dist/prefab/CrudOps.d.ts +2 -2
- package/dist/prefab/CrudOps.d.ts.map +1 -1
- package/dist/prefab/MirrorConstructor.js +1 -1
- package/dist/prefab/MirrorConstructor.js.map +1 -1
- package/dist/prefab/Refreshed.d.ts +7 -2
- package/dist/prefab/Refreshed.d.ts.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 +35 -31
- 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/AppMiddleware.d.ts +10 -1
- package/dist/wire/AppMiddleware.d.ts.map +1 -1
- package/dist/wire/AppMiddleware.js.map +1 -1
- package/dist/wire/AppNext.d.ts +2 -1
- package/dist/wire/AppNext.d.ts.map +1 -1
- package/dist/wire/Facade.d.ts +14 -2
- package/dist/wire/Facade.d.ts.map +1 -1
- package/dist/wire/Facade.js.map +1 -1
- package/dist/wire/FougereError.js +1 -1
- package/dist/wire/FougereError.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/OperationContract.js +1 -1
- package/dist/wire/OperationContract.js.map +1 -1
- package/dist/wire/Page.d.ts +32 -0
- package/dist/wire/Page.d.ts.map +1 -0
- package/dist/wire/Page.js +32 -0
- package/dist/wire/Page.js.map +1 -0
- package/dist/wire/Signature.d.ts +7 -0
- package/dist/wire/Signature.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/EffectiveOperationModel.ts +19 -0
- 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 +392 -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 +57 -32
- package/src/boot/seed.ts +36 -27
- package/src/boot/together.ts +98 -63
- package/src/contract.ts +2 -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/HandlerFacade.ts +27 -17
- package/src/dispatch/OutputView.ts +7 -0
- package/src/dispatch/PresenterExecutor.ts +40 -22
- package/src/dispatch/Received.ts +2 -0
- package/src/dispatch/Release.ts +68 -44
- package/src/dispatch/StorageGuard.ts +90 -69
- package/src/dispatch/decoded.ts +37 -0
- package/src/entry/facade.ts +21 -9
- package/src/index.ts +4 -0
- package/src/node.ts +2 -1
- package/src/prefab/CrudConstructor.ts +3 -2
- package/src/prefab/CrudOps.ts +2 -2
- package/src/prefab/MirrorConstructor.ts +1 -1
- package/src/prefab/Refreshed.ts +7 -2
- package/src/storage/Storage.ts +2 -2
- package/src/storage/Store.ts +45 -27
- package/src/verify.ts +15 -0
- package/src/wire/AppMiddleware.ts +10 -1
- package/src/wire/AppNext.ts +2 -1
- package/src/wire/Facade.ts +14 -2
- package/src/wire/FougereError.ts +1 -1
- package/src/wire/Invocation.ts +2 -1
- package/src/wire/OperationContract.ts +1 -1
- package/src/wire/Page.ts +50 -0
- package/src/wire/Signature.ts +7 -0
- package/src/wire/binding.ts +26 -58
- package/src/wire/drift.ts +48 -21
package/dist/boot/seed.js
CHANGED
|
@@ -2,6 +2,26 @@ import { Role } from '@fougere/schema';
|
|
|
2
2
|
import { facadeKeyOf } from '../wire/Facade.js';
|
|
3
3
|
/** Seeds in dependency order — a `ref()` target is planted before its referrer. */
|
|
4
4
|
export function orderSeeds(fronds) {
|
|
5
|
+
const seeds = fronds.flatMap((frond) => frond.seeds);
|
|
6
|
+
const waiting = whatEachWaitsFor(fronds, seeds);
|
|
7
|
+
const ordered = [];
|
|
8
|
+
const planted = new Set();
|
|
9
|
+
while (waiting.size > 0) {
|
|
10
|
+
const ready = [...waiting.keys()].find((seed) => [...waiting.get(seed)].every((dep) => planted.has(dep)));
|
|
11
|
+
if (!ready)
|
|
12
|
+
break;
|
|
13
|
+
ordered.push(ready);
|
|
14
|
+
planted.add(ready.entityName.toLowerCase());
|
|
15
|
+
waiting.delete(ready);
|
|
16
|
+
}
|
|
17
|
+
return { ordered, cycle: [...waiting.keys()] };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Only what is actually SEEDED can be waited for: a relation to an entity with no seed is
|
|
21
|
+
* already satisfied by whatever put its rows there, and an entity naming itself waits for
|
|
22
|
+
* nobody.
|
|
23
|
+
*/
|
|
24
|
+
function whatEachWaitsFor(fronds, seeds) {
|
|
5
25
|
const refs = new Map();
|
|
6
26
|
for (const frond of fronds) {
|
|
7
27
|
for (const entity of frond.entities) {
|
|
@@ -16,26 +36,11 @@ export function orderSeeds(fronds) {
|
|
|
16
36
|
refs.set(entity.name.toLowerCase(), targets);
|
|
17
37
|
}
|
|
18
38
|
}
|
|
19
|
-
const seeds = fronds.flatMap((frond) => frond.seeds);
|
|
20
39
|
const seeded = new Set(seeds.map((seed) => seed.entityName.toLowerCase()));
|
|
21
|
-
|
|
22
|
-
// is already satisfied by whatever put its rows there.
|
|
23
|
-
const waiting = new Map(seeds.map((seed) => {
|
|
40
|
+
return new Map(seeds.map((seed) => {
|
|
24
41
|
const own = seed.entityName.toLowerCase();
|
|
25
|
-
|
|
26
|
-
return [seed, new Set(targets)];
|
|
42
|
+
return [seed, new Set([...(refs.get(own) ?? [])].filter((target) => seeded.has(target) && target !== own))];
|
|
27
43
|
}));
|
|
28
|
-
const ordered = [];
|
|
29
|
-
const planted = new Set();
|
|
30
|
-
while (waiting.size > 0) {
|
|
31
|
-
const ready = [...waiting.keys()].find((seed) => [...waiting.get(seed)].every((dep) => planted.has(dep)));
|
|
32
|
-
if (!ready)
|
|
33
|
-
break;
|
|
34
|
-
ordered.push(ready);
|
|
35
|
-
planted.add(ready.entityName.toLowerCase());
|
|
36
|
-
waiting.delete(ready);
|
|
37
|
-
}
|
|
38
|
-
return { ordered, cycle: [...waiting.keys()] };
|
|
39
44
|
}
|
|
40
45
|
/**
|
|
41
46
|
* Plant a set of seeds, in the order given.
|
|
@@ -76,10 +81,12 @@ function facadeFor(app, entityName) {
|
|
|
76
81
|
handler = app.resolve(facadeKeyOf(entityName));
|
|
77
82
|
}
|
|
78
83
|
catch { }
|
|
79
|
-
|
|
84
|
+
const list = handler?.list;
|
|
85
|
+
const create = handler?.create;
|
|
86
|
+
if (typeof list === 'function' && typeof create === 'function') {
|
|
80
87
|
return {
|
|
81
|
-
list: () =>
|
|
82
|
-
write: (item) =>
|
|
88
|
+
list: () => list.call(handler),
|
|
89
|
+
write: (item) => create.call(handler, { params: {}, query: {}, input: item, state: {} }),
|
|
83
90
|
};
|
|
84
91
|
}
|
|
85
92
|
const storage = app.storageFor(entityName);
|
package/dist/boot/seed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAchD,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,MAAyB;IAClD,MAAM,
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"together.d.ts","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"AAMA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,kFAAkF;IAClF,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACnG,+FAA+F;IAC/F,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;
|
|
1
|
+
{"version":3,"file":"together.d.ts","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"AAMA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,kFAAkF;IAClF,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACnG,+FAA+F;IAC/F,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAwID,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,QAAQ,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EACnD,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,UAAU,EAAE,GACpB,IAAI,CAqCN"}
|
package/dist/boot/together.js
CHANGED
|
@@ -12,35 +12,44 @@ import { recording, unwind } from './frame.js';
|
|
|
12
12
|
/** Each declared name, resolved to what it designates — or nothing, and why. */
|
|
13
13
|
function resolve(names, declared, world, asked, refused) {
|
|
14
14
|
const before = refused.length;
|
|
15
|
-
const entities = names.entities
|
|
15
|
+
const entities = entitiesNamed(names.entities, world, asked, refused);
|
|
16
|
+
const providers = providersNamed(names.providers, declared, asked, refused);
|
|
17
|
+
return refused.length === before ? { entities, providers } : undefined;
|
|
18
|
+
}
|
|
19
|
+
/** The first list names ENTITIES — a class of this frond goes in the second. */
|
|
20
|
+
function entitiesNamed(named, world, asked, refused) {
|
|
21
|
+
return named.flatMap((member) => {
|
|
16
22
|
const name = lowerFirst(member);
|
|
17
23
|
const schema = world.entityByName.get(name);
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return [{ name, schema }];
|
|
24
|
+
if (schema)
|
|
25
|
+
return [{ name, schema }];
|
|
26
|
+
refused.push({
|
|
27
|
+
...asked,
|
|
28
|
+
code: 'together-entity-unknown',
|
|
29
|
+
message: `Together<[…${member}…]>: no entity named '${member}' is scanned in this app. `
|
|
30
|
+
+ 'The first list names entities; a class of this frond goes in the second.',
|
|
31
|
+
});
|
|
32
|
+
return [];
|
|
28
33
|
});
|
|
29
|
-
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The second list names the classes to REBUILD inside the frame — a service, a mirror, a
|
|
37
|
+
* repository — so that what they write is covered by the unwind.
|
|
38
|
+
*/
|
|
39
|
+
function providersNamed(named, declared, asked, refused) {
|
|
40
|
+
return named.flatMap((member) => {
|
|
30
41
|
const entry = declared.find((provider) => provider.ctor.name === member);
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return [entry];
|
|
42
|
+
if (entry)
|
|
43
|
+
return [entry];
|
|
44
|
+
refused.push({
|
|
45
|
+
...asked,
|
|
46
|
+
code: 'together-provider-unknown',
|
|
47
|
+
message: `Together<[…], [… ${member} …]>: this frond declares no class named '${member}'. `
|
|
48
|
+
+ 'The second list names providers to rebuild inside the frame — a service, a mirror, '
|
|
49
|
+
+ 'a repository — so that what they write is covered by the unwind.',
|
|
50
|
+
});
|
|
51
|
+
return [];
|
|
42
52
|
});
|
|
43
|
-
return refused.length === before ? { entities, providers } : undefined;
|
|
44
53
|
}
|
|
45
54
|
/** A member that cannot write here at all — its frond is hosted elsewhere. */
|
|
46
55
|
function remoteMembers(members, world, asked, refused) {
|
|
@@ -123,42 +132,48 @@ export function registerFrames(scope, wanted, providers, world, refused) {
|
|
|
123
132
|
continue;
|
|
124
133
|
remoteMembers(members, world, asked, refused);
|
|
125
134
|
uncoveredWrites(members, world, asked, refused);
|
|
126
|
-
|
|
127
|
-
const validator = (storage, name, schema) => new StorageGuard(schema.getFields(), name, {}, heldBy(schema, name, world.hosting), releasing(world.hosting)).guard(storage);
|
|
128
|
-
// One engine and a way into it: the engine gives the unwind AND the isolation. The
|
|
129
|
-
// question goes to the source these members live in — a composition answering for the
|
|
130
|
-
// default one would compensate a frame whose own engine holds transactions.
|
|
131
|
-
const source = sources.size === 1 ? [...sources][0] : undefined;
|
|
132
|
-
if (world.transacted && source !== undefined && (world.transacts?.(source) ?? true)) {
|
|
133
|
-
world.log.info(`${key} — transaction, source '${source}'`);
|
|
134
|
-
scope.registerValue(key, {
|
|
135
|
-
run: (fn) => ambient.enterFrame(key, () => world.transacted(source, (factory) => inScope(scope, members, factory, validator, fn))),
|
|
136
|
-
});
|
|
137
|
-
continue;
|
|
138
|
-
}
|
|
139
|
-
// Split, or an engine that hands out no transaction: the frame keeps the before-image
|
|
140
|
-
// of every write and replays the inverses itself. `validator` stays OUTSIDE `recording`, so
|
|
141
|
-
// a write the entity refuses never enters the journal.
|
|
142
|
-
const why = sources.size > 1
|
|
143
|
-
? members.entities.map((m) => `${m.name} in '${world.sourceOf?.(m.name) ?? 'db'}'`).join(', ')
|
|
144
|
-
: 'this storage hands out no transaction';
|
|
145
|
-
world.log.info(`${key} — compensated: ${why} — no isolation`);
|
|
146
|
-
scope.registerValue(key, {
|
|
147
|
-
run: (fn) => ambient.enterFrame(key, async () => {
|
|
148
|
-
const journal = [];
|
|
149
|
-
const record = (storage, name, schema) => validator(recording(storage, name, schema, journal), name, schema);
|
|
150
|
-
try {
|
|
151
|
-
return await inScope(scope, members, world.storageFactory, record, fn);
|
|
152
|
-
}
|
|
153
|
-
catch (cause) {
|
|
154
|
-
return unwind(journal, cause, world.log);
|
|
155
|
-
}
|
|
156
|
-
}),
|
|
157
|
-
});
|
|
135
|
+
scope.registerValue(key, frameOver(key, members, scope, world));
|
|
158
136
|
}
|
|
159
137
|
if (registered > 0 && ambient.degraded) {
|
|
160
138
|
world.log.warn('no async context on this runtime — frames run one at a time, and a frame opened '
|
|
161
139
|
+ 'inside another times out instead of being refused');
|
|
162
140
|
}
|
|
163
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* A transaction when one engine holds every member, a compensation otherwise.
|
|
144
|
+
*
|
|
145
|
+
* One engine and a way into it: the engine gives the unwind AND the isolation. The question goes
|
|
146
|
+
* to the SOURCE these members live in — a composition answering for the default one would
|
|
147
|
+
* compensate a frame whose own engine holds transactions.
|
|
148
|
+
*/
|
|
149
|
+
function frameOver(key, members, scope, world) {
|
|
150
|
+
const sources = new Set(members.entities.map((member) => world.sourceOf?.(member.name) ?? 'db'));
|
|
151
|
+
const validator = (storage, name, schema) => new StorageGuard(schema.getFields(), name, {}, heldBy(schema, name, world.hosting), releasing(world.hosting)).guard(storage);
|
|
152
|
+
const source = sources.size === 1 ? [...sources][0] : undefined;
|
|
153
|
+
if (world.transacted && source !== undefined && (world.transacts?.(source) ?? true)) {
|
|
154
|
+
world.log.info(`${key} — transaction, source '${source}'`);
|
|
155
|
+
return {
|
|
156
|
+
run: (fn) => ambient.enterFrame(key, () => world.transacted(source, (factory) => inScope(scope, members, factory, validator, fn))),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
// Split, or an engine that hands out no transaction: the frame keeps the before-image of every
|
|
160
|
+
// write and replays the inverses itself. `validator` stays OUTSIDE `recording`, so a write the
|
|
161
|
+
// entity refuses never enters the journal.
|
|
162
|
+
const why = sources.size > 1
|
|
163
|
+
? members.entities.map((one) => `${one.name} in '${world.sourceOf?.(one.name) ?? 'db'}'`).join(', ')
|
|
164
|
+
: 'this storage hands out no transaction';
|
|
165
|
+
world.log.info(`${key} — compensated: ${why} — no isolation`);
|
|
166
|
+
return {
|
|
167
|
+
run: (fn) => ambient.enterFrame(key, async () => {
|
|
168
|
+
const journal = [];
|
|
169
|
+
const record = (storage, name, schema) => validator(recording(storage, name, schema, journal), name, schema);
|
|
170
|
+
try {
|
|
171
|
+
return await inScope(scope, members, world.storageFactory, record, fn);
|
|
172
|
+
}
|
|
173
|
+
catch (cause) {
|
|
174
|
+
return unwind(journal, cause, world.log);
|
|
175
|
+
}
|
|
176
|
+
}),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
164
179
|
//# sourceMappingURL=together.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"together.js","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAC;AAI7G,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAa,MAAM,YAAY,CAAC;AA0B1D,gFAAgF;AAChF,SAAS,OAAO,CACd,KAAkD,EAClD,QAAkC,EAClC,KAAiB,EACjB,KAAY,EACZ,OAAqB;IAErB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"together.js","sourceRoot":"","sources":["../../src/boot/together.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export type { Transport } from './wire/Transport.js';
|
|
|
16
16
|
export { MAX_BODY_BYTES } from './wire/SignedCall.js';
|
|
17
17
|
export { RPC_ENTITY } from './wire/RpcAnswer.js';
|
|
18
18
|
export type { CallPage } from './wire/CallPage.js';
|
|
19
|
+
export { pageOf, asPage, type Page } from './wire/Page.js';
|
|
19
20
|
export type { CallRecord } from './wire/CallRecord.js';
|
|
20
21
|
export { driftOf, agrees, explain } from './wire/drift.js';
|
|
21
22
|
export type { CardDrift } from './wire/drift.js';
|
|
@@ -39,6 +40,7 @@ export type { Edge } from './wire/topology/Edge.js';
|
|
|
39
40
|
export type { FrondPlacement } from './wire/topology/FrondPlacement.js';
|
|
40
41
|
export type { TopologyReport } from './wire/topology/TopologyReport.js';
|
|
41
42
|
export { assertIdentityCard } from './wire/card/IdentityCard.js';
|
|
43
|
+
export { decoded } from './dispatch/decoded.js';
|
|
42
44
|
/** The key a class name is filed under — 'Post' → 'post'. */
|
|
43
45
|
export { lowerFirst } from '@fougere/schema';
|
|
44
46
|
/** A call, fully fabricated: the designation and its completed invocation. */
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG1E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.js
CHANGED
|
@@ -19,12 +19,14 @@ export { MAX_BODY_BYTES } from './wire/SignedCall.js';
|
|
|
19
19
|
// The reserved entity, VALUE and not type: a consumer that wants to leave it alone — a
|
|
20
20
|
// call log ignoring its own reader — has to be able to name it.
|
|
21
21
|
export { RPC_ENTITY } from './wire/RpcAnswer.js';
|
|
22
|
+
export { pageOf, asPage } from './wire/Page.js';
|
|
22
23
|
// The comparison of two cards, which a consumer runs about a producer — browser-safe on
|
|
23
24
|
// purpose: a panel showing the drift holds only the two cards, never the app.
|
|
24
25
|
export { driftOf, agrees, explain } from './wire/drift.js';
|
|
25
26
|
/** What `rpc.discover` answers. */
|
|
26
27
|
export { refusalsOf } from './wire/refusals.js';
|
|
27
28
|
export { assertIdentityCard } from './wire/card/IdentityCard.js';
|
|
29
|
+
export { decoded } from './dispatch/decoded.js';
|
|
28
30
|
/** The key a class name is filed under — 'Post' → 'post'. */
|
|
29
31
|
export { lowerFirst } from '@fougere/schema';
|
|
30
32
|
/**
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,qFAAqF;AACrF,uEAAuE;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEtE,mFAAmF;AACnF,sFAAsF;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,uFAAuF;AACvF,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,qFAAqF;AACrF,uEAAuE;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEtE,mFAAmF;AACnF,sFAAsF;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,uFAAuF;AACvF,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAa,MAAM,gBAAgB,CAAC;AAE3D,wFAAwF;AACxF,8EAA8E;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG3D,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAkBhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,6DAA6D;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,MAAoC,EACpC,SAA+C,EAC/C,KAAkC;IAElC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GACjB,OAAO,SAAS,KAAK,QAAQ;QAC3B,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAE,MAA2B,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC;QACnF,CAAC,CAAC,CAAC,MAAmB,EAAE,SAAS,CAAC,CAAC;IACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -32,6 +32,13 @@ export interface FrondDescriptor {
|
|
|
32
32
|
* domain. Set by the boot, never by a declaration.
|
|
33
33
|
*/
|
|
34
34
|
brought?: true;
|
|
35
|
+
/**
|
|
36
|
+
* The frond this one inherits code from — its scope hangs off that one's, so a service, a
|
|
37
|
+
* repository, a port or a middleware declared there answers here too. The same word the
|
|
38
|
+
* config uses, set by the boot from `FougereConfig.fronds` and never by a scan: the disk is
|
|
39
|
+
* flat, and a directory says nothing about who shares its code.
|
|
40
|
+
*/
|
|
41
|
+
extends?: string;
|
|
35
42
|
/** The ops that finish a fact, in order — see `FrondConfig.pipes`. */
|
|
36
43
|
pipes?: Record<string, string[]>;
|
|
37
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrondDescriptor.d.ts","sourceRoot":"","sources":["../../src/descriptor/FrondDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,UAAU,aAAa,KAAG,MAA6C,CAAC;AAE/F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG;QACvD,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC3B,kFAAkF;QAClF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iEAAiE;QACjE,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,6EAA6E;QAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,kFAAkF;QAClF,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5D,CAAC,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"FrondDescriptor.d.ts","sourceRoot":"","sources":["../../src/descriptor/FrondDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,UAAU,aAAa,KAAG,MAA6C,CAAC;AAE/F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG;QACvD,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC3B,kFAAkF;QAClF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iEAAiE;QACjE,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,6EAA6E;QAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,kFAAkF;QAClF,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5D,CAAC,CAAC;CACJ"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A discovered middleware — a class declaring `around(ctx, next)`, which runs before and
|
|
3
|
-
*
|
|
2
|
+
* A discovered middleware — a class declaring `around(ctx, next)`, which runs before and after
|
|
3
|
+
* every operation of its frond, and of the fronds that inherit from it.
|
|
4
|
+
*
|
|
5
|
+
* How far it reaches is not written here: it is where the frond sits in `FougereConfig.fronds`,
|
|
6
|
+
* and stating it twice would put one decision in two places.
|
|
4
7
|
*/
|
|
5
8
|
export interface MiddlewareEntry {
|
|
6
|
-
/** Class name —
|
|
9
|
+
/** Class name — the key it registers under in its frond's scope. */
|
|
7
10
|
name: string;
|
|
8
11
|
/** The middleware class. */
|
|
9
12
|
ctor: new (...args: never[]) => unknown;
|
|
10
|
-
/** How far it reaches: its own frond's entities, or every operation in the process. */
|
|
11
|
-
scope: 'frond' | 'app';
|
|
12
13
|
/** Constructor dependency type names (from AST scan). */
|
|
13
14
|
deps: string[];
|
|
14
15
|
/** Absolute file path (for debugging). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlewareEntry.d.ts","sourceRoot":"","sources":["../../src/descriptor/MiddlewareEntry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"MiddlewareEntry.d.ts","sourceRoot":"","sources":["../../src/descriptor/MiddlewareEntry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;IACxC,yDAAyD;IACzD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -15,5 +15,12 @@ export interface ProviderEntry {
|
|
|
15
15
|
deps: string[];
|
|
16
16
|
/** Absolute file path (for debugging). */
|
|
17
17
|
filePath: string;
|
|
18
|
+
/**
|
|
19
|
+
* It stated `implements AsyncDisposable` — so there is ONE of it per frond, and that frond's
|
|
20
|
+
* scope closes it. The language's own marker, which `App` already answers; a provider that
|
|
21
|
+
* says nothing is built per consumer and closed by nobody, which is right for one that holds
|
|
22
|
+
* nothing.
|
|
23
|
+
*/
|
|
24
|
+
kept?: true;
|
|
18
25
|
}
|
|
19
26
|
//# sourceMappingURL=ProviderEntry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderEntry.d.ts","sourceRoot":"","sources":["../../src/descriptor/ProviderEntry.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;IACxC,yDAAyD;IACzD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ProviderEntry.d.ts","sourceRoot":"","sources":["../../src/descriptor/ProviderEntry.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;IACxC,yDAAyD;IACzD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;CACb"}
|
|
@@ -20,9 +20,15 @@ export declare class HandlerFacade {
|
|
|
20
20
|
private readonly arguments;
|
|
21
21
|
/** A computed field's parameters and the collectors in scope are both boot-time facts. */
|
|
22
22
|
private readonly presenterPlans;
|
|
23
|
+
private collectorResolver;
|
|
23
24
|
constructor(handler: HandlerEntry, scope: Container, facade: Facade);
|
|
24
25
|
/** One operation, through the same ordered boundary steps on every route. */
|
|
25
26
|
execute(op: string, input?: Partial<InvocationContext>): Promise<unknown>;
|
|
27
|
+
/**
|
|
28
|
+
* What the handler answers, once the middlewares let the call through: the input judged, the
|
|
29
|
+
* arguments bound, the row projected onto the view this audience sees.
|
|
30
|
+
*/
|
|
31
|
+
private answer;
|
|
26
32
|
/** The computed fields a presenter adds, over the page the façade just projected. */
|
|
27
33
|
private present;
|
|
28
34
|
private get handlerKey();
|
|
@@ -31,7 +37,6 @@ export declare class HandlerFacade {
|
|
|
31
37
|
private refuseCrudWithoutRepository;
|
|
32
38
|
/** Resolve and cache the output view declared for one operation. */
|
|
33
39
|
private viewOf;
|
|
34
|
-
private collectorResolver;
|
|
35
40
|
/** The handler itself, resolved on first call — never at boot. */
|
|
36
41
|
private resolveHandler;
|
|
37
42
|
private isBaseImplementation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandlerFacade.d.ts","sourceRoot":"","sources":["../../src/dispatch/HandlerFacade.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AASpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAOlE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,0DAA0D;AAC1D,qBAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"HandlerFacade.d.ts","sourceRoot":"","sources":["../../src/dispatch/HandlerFacade.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AASpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAOlE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,0DAA0D;AAC1D,qBAAa,aAAa;IAsBtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAvBzB,oEAAoE;IACpE,QAAQ,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;IACrD,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAC7D,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IACF,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAE1D,OAAO,CAAC,iBAAiB,CAGvB;gBAGiB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM;IA6BjC,6EAA6E;IACvE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB/E;;;OAGG;YACW,MAAM;IAmBpB,qFAAqF;IACrF,OAAO,CAAC,OAAO;IAkBf,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,CAAC,MAAM;IASd,wEAAwE;IACxE,OAAO,CAAC,2BAA2B;IAWnC,oEAAoE;IACpE,OAAO,CAAC,MAAM;IAcd,kEAAkE;IAClE,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,oBAAoB;IAM5B,uFAAuF;IACvF,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,qBAAqB;CAgB9B"}
|
|
@@ -25,6 +25,14 @@ export class HandlerFacade {
|
|
|
25
25
|
arguments = new ArgumentResolver((typeName) => this.collectorResolver(typeName));
|
|
26
26
|
/** A computed field's parameters and the collectors in scope are both boot-time facts. */
|
|
27
27
|
presenterPlans;
|
|
28
|
+
collectorResolver = (typeName) => {
|
|
29
|
+
try {
|
|
30
|
+
return this.scope.resolve(collectorKeyOf(typeName));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
28
36
|
constructor(handler, scope, facade) {
|
|
29
37
|
this.handler = handler;
|
|
30
38
|
this.scope = scope;
|
|
@@ -67,18 +75,21 @@ export class HandlerFacade {
|
|
|
67
75
|
state: invocation.state,
|
|
68
76
|
invocation,
|
|
69
77
|
};
|
|
70
|
-
return runMiddlewares(this.facade.middlewares(), context,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
return runMiddlewares(this.facade.middlewares(), context, () => this.answer(op, contract, context, invocation));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* What the handler answers, once the middlewares let the call through: the input judged, the
|
|
82
|
+
* arguments bound, the row projected onto the view this audience sees.
|
|
83
|
+
*/
|
|
84
|
+
async answer(op, contract, context, invocation) {
|
|
85
|
+
const validated = validateInput(contract.input, invocation, this.handler.address, op);
|
|
86
|
+
context.invocation = validated;
|
|
87
|
+
const args = contract.binding ? await this.arguments.resolve(contract.binding, validated) : [];
|
|
88
|
+
const { instance, method } = this.resolveImplementation(op);
|
|
89
|
+
const view = this.viewOf(op);
|
|
90
|
+
const output = view.project(await instance[method](...args));
|
|
91
|
+
const { presenter } = this.facade;
|
|
92
|
+
return view.closed || !presenter ? output : this.present(op, presenter, output, validated);
|
|
82
93
|
}
|
|
83
94
|
/** The computed fields a presenter adds, over the page the façade just projected. */
|
|
84
95
|
present(op, presenter, output, invocation) {
|
|
@@ -119,14 +130,6 @@ export class HandlerFacade {
|
|
|
119
130
|
this.cachedViews.set(op, resolved);
|
|
120
131
|
return resolved;
|
|
121
132
|
}
|
|
122
|
-
collectorResolver = (typeName) => {
|
|
123
|
-
try {
|
|
124
|
-
return this.scope.resolve(collectorKeyOf(typeName));
|
|
125
|
-
}
|
|
126
|
-
catch {
|
|
127
|
-
return undefined;
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
133
|
/** The handler itself, resolved on first call — never at boot. */
|
|
131
134
|
resolveHandler() {
|
|
132
135
|
if (!this.instance)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandlerFacade.js","sourceRoot":"","sources":["../../src/dispatch/HandlerFacade.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAMrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,0DAA0D;AAC1D,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"HandlerFacade.js","sourceRoot":"","sources":["../../src/dispatch/HandlerFacade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputView.d.ts","sourceRoot":"","sources":["../../src/dispatch/OutputView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"OutputView.d.ts","sourceRoot":"","sources":["../../src/dispatch/OutputView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAI1D,oFAAoF;AACpF,qBAAa,UAAU;IAEnB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,MAAM;gBADN,MAAM,EAAE,MAAM,EACd,MAAM,UAAQ;IAGzB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CA0BlC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Visibility } from '@fougere/schema';
|
|
2
2
|
import { preserveArrayProperties } from './ArrayResult.js';
|
|
3
|
+
import { asPage } from '../wire/Page.js';
|
|
3
4
|
/** What one operation result may show. One of the two exits a validator watches. */
|
|
4
5
|
export class OutputView {
|
|
5
6
|
fields;
|
|
@@ -14,6 +15,12 @@ export class OutputView {
|
|
|
14
15
|
if (Array.isArray(result)) {
|
|
15
16
|
return preserveArrayProperties(result, result.map((item) => this.project(item)));
|
|
16
17
|
}
|
|
18
|
+
// A paged op answers an envelope, so what a view applies to is its ROWS. Projecting the
|
|
19
|
+
// envelope itself let every field of every row through — `Visibility.encode` finds none of
|
|
20
|
+
// its own keys on `{ items, total }` and hands the object back.
|
|
21
|
+
const page = asPage(result, this.fields);
|
|
22
|
+
if (page)
|
|
23
|
+
return { ...page, items: page.items.map((item) => this.project(item)) };
|
|
17
24
|
if (typeof result !== 'object')
|
|
18
25
|
return result;
|
|
19
26
|
const record = result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputView.js","sourceRoot":"","sources":["../../src/dispatch/OutputView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"OutputView.js","sourceRoot":"","sources":["../../src/dispatch/OutputView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,oFAAoF;AACpF,MAAM,OAAO,UAAU;IAEV;IACA;IAFX,YACW,MAAc,EACd,SAAS,KAAK;QADd,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;IACtB,CAAC;IAEJ,OAAO,CAAC,MAAe;QACrB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAE3D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,wFAAwF;QACxF,2FAA2F;QAC3F,gEAAgE;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,IAAI;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAElF,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAE9C,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;YACxB,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;iBACrB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC;iBAC9B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CACpC;YACH,CAAC,CAAC,MAAM,CAAC;QAEX,OAAO,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACF"}
|