@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
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Who inherits code from whom, read off `FougereConfig.fronds` and judged before anything is
|
|
3
|
+
* built. It reads no disk and holds no container: the scopes it decides are built later, in
|
|
4
|
+
* `install.ts`, and everything here is a fact about names.
|
|
5
|
+
*
|
|
6
|
+
* Documented: [fronds](https://fougere.dev/docs/infra/fronds).
|
|
7
|
+
*/
|
|
8
|
+
import type { Diagnostic } from '../diagnostic.js';
|
|
9
|
+
import { Fronds } from '../descriptor/Fronds.js';
|
|
10
|
+
import { type FrondsStated } from '../FrondsStated.js';
|
|
11
|
+
/** What the tree says, against what this process actually holds. */
|
|
12
|
+
export declare function nestingOf(stated: FrondsStated | undefined, fronds: Fronds, remotes: Record<string, string> | undefined,
|
|
13
|
+
/** This process carries a subset of the project — `only:`, so an absent name is expected. */
|
|
14
|
+
narrowed?: boolean): {
|
|
15
|
+
under: Map<string, string>;
|
|
16
|
+
refused: Diagnostic[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* The same fronds, each parent before the ones inheriting from it — the order the boot installs
|
|
20
|
+
* them in, since a scope hangs off the one above it.
|
|
21
|
+
*
|
|
22
|
+
* A partition and not a sort: inheriting goes one level, so a frond that inherits has nothing
|
|
23
|
+
* under it and two passes are enough. Stable, and the same array when nothing inherits — which
|
|
24
|
+
* is what `orderSeeds` reads.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parentsFirst(fronds: Fronds, under: Map<string, string>): Fronds;
|
|
27
|
+
/**
|
|
28
|
+
* The same `under` a boot stamps, for a reader that does not boot — `fougere check` and
|
|
29
|
+
* `fougere explain` resolve the model off a scan, and a scan knows nothing of the tree.
|
|
30
|
+
* Without it they report every inherited dependency as a crossing.
|
|
31
|
+
*/
|
|
32
|
+
export declare function nested(fronds: Fronds, stated: FrondsStated | undefined): Fronds;
|
|
33
|
+
//# sourceMappingURL=nesting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nesting.d.ts","sourceRoot":"","sources":["../../src/boot/nesting.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgDrE,oEAAoE;AACpE,wBAAgB,SAAS,CACvB,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;AAC3C,6FAA6F;AAC7F,QAAQ,UAAQ,GACf;IAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAkGvD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAQ/E"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { Fronds } from '../descriptor/Fronds.js';
|
|
2
|
+
import { statesModule } from '../FrondsStated.js';
|
|
3
|
+
import { statedFronds } from '../StatedFrond.js';
|
|
4
|
+
/** A frond that holds what a family shares serves nothing — which is what keeps it here. */
|
|
5
|
+
function refuseServingParent(parent, children, refused) {
|
|
6
|
+
if (parent.handlers.length === 0)
|
|
7
|
+
return false;
|
|
8
|
+
const served = [...new Set(parent.handlers.map((handler) => handler.address))];
|
|
9
|
+
refused.push({
|
|
10
|
+
severity: 'blocking',
|
|
11
|
+
code: 'frond-parent-serves',
|
|
12
|
+
filePath: parent.handlers[0].filePath,
|
|
13
|
+
frond: parent.name,
|
|
14
|
+
subject: parent.name,
|
|
15
|
+
message: `'${parent.name}' has children (${children.join(', ')}) and answers at `
|
|
16
|
+
+ `${served.join(', ')}. A frond its family inherits from holds the code they share and `
|
|
17
|
+
+ 'nothing else — with no façade, nothing can call it and nothing can place it elsewhere. '
|
|
18
|
+
+ 'Move its handlers into a child, or take the children out.',
|
|
19
|
+
});
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
/** Rows belong to a frond something can call — the family case is not traced, so it is refused. */
|
|
23
|
+
function refuseParentEntities(parent, children, refused) {
|
|
24
|
+
if (parent.entities.length === 0)
|
|
25
|
+
return;
|
|
26
|
+
refused.push({
|
|
27
|
+
severity: 'blocking',
|
|
28
|
+
code: 'frond-parent-entities',
|
|
29
|
+
filePath: parent.entities[0].filePath,
|
|
30
|
+
frond: parent.name,
|
|
31
|
+
subject: parent.name,
|
|
32
|
+
message: `'${parent.name}' has children (${children.join(', ')}) and declares `
|
|
33
|
+
+ `${parent.entities.map((entity) => entity.name).join(', ')}. A frond they inherit from `
|
|
34
|
+
+ 'holds code, not rows. Declare the entity in a child and import it from there — '
|
|
35
|
+
+ `\`import X from '@fronds/<child>/entities/X.js'\` reaches it from anywhere.`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/** What the tree says, against what this process actually holds. */
|
|
39
|
+
export function nestingOf(stated, fronds, remotes,
|
|
40
|
+
/** This process carries a subset of the project — `only:`, so an absent name is expected. */
|
|
41
|
+
narrowed = false) {
|
|
42
|
+
const refused = [];
|
|
43
|
+
const under = new Map();
|
|
44
|
+
if (stated === undefined)
|
|
45
|
+
return { under, refused };
|
|
46
|
+
const statements = statedFronds(stated);
|
|
47
|
+
const here = new Map(fronds.map((frond) => [frond.name, frond]));
|
|
48
|
+
const childrenOf = new Map();
|
|
49
|
+
const inherits = new Set();
|
|
50
|
+
for (const statement of statements) {
|
|
51
|
+
if (statement.extends === undefined)
|
|
52
|
+
continue;
|
|
53
|
+
inherits.add(statement.key);
|
|
54
|
+
childrenOf.set(statement.extends, [...(childrenOf.get(statement.extends) ?? []), statement.key]);
|
|
55
|
+
}
|
|
56
|
+
for (const statement of statements) {
|
|
57
|
+
if (statement.extends === undefined || !inherits.has(statement.extends))
|
|
58
|
+
continue;
|
|
59
|
+
refused.push({
|
|
60
|
+
severity: 'blocking',
|
|
61
|
+
code: 'frond-extends-chain',
|
|
62
|
+
filePath: 'fougere.config.ts',
|
|
63
|
+
subject: statement.path,
|
|
64
|
+
message: `'${statement.key}' inherits from '${statement.extends}', which inherits from `
|
|
65
|
+
+ `'${statedFronds(stated).find((one) => one.key === statement.extends)?.extends}'. `
|
|
66
|
+
+ 'Inheriting goes one level: a scope hangs off the one above it, and a chain would make '
|
|
67
|
+
+ 'a frond depend on code its own family never named. Move what they share into one '
|
|
68
|
+
+ 'frond they both inherit from.',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
// A frond a family inherits from needs no entry of its own — `extends` is said by the
|
|
72
|
+
// inheritor — so what it may not be is asked of the NAMES, not of the entries.
|
|
73
|
+
for (const [parent, children] of childrenOf) {
|
|
74
|
+
const frond = here.get(parent);
|
|
75
|
+
if (frond === undefined)
|
|
76
|
+
continue;
|
|
77
|
+
const placed = stated[parent];
|
|
78
|
+
const address = typeof placed === 'string' ? placed : placed?.remote;
|
|
79
|
+
if (address !== undefined || (remotes && parent in remotes)) {
|
|
80
|
+
refused.push({
|
|
81
|
+
severity: 'blocking',
|
|
82
|
+
code: 'frond-parent-remote',
|
|
83
|
+
filePath: frond.source.path,
|
|
84
|
+
frond: frond.name,
|
|
85
|
+
subject: parent,
|
|
86
|
+
message: `'${parent}' is inherited from by ${children.join(', ')} and is placed at `
|
|
87
|
+
+ `${address ?? remotes?.[parent]}. A frond they inherit from stands in every process `
|
|
88
|
+
+ 'that holds one of them, so it has no address of its own. Give the address to one of '
|
|
89
|
+
+ 'them, or have them inherit from somewhere else.',
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (!refuseServingParent(frond, children, refused))
|
|
93
|
+
refuseParentEntities(frond, children, refused);
|
|
94
|
+
}
|
|
95
|
+
for (const statement of statements) {
|
|
96
|
+
const frond = here.get(statement.key);
|
|
97
|
+
if (frond === undefined) {
|
|
98
|
+
// Three ways a stated name is absent from this process and says nothing wrong: a module
|
|
99
|
+
// key, which the host imports; an address, whose frond answers elsewhere by definition;
|
|
100
|
+
// and a frond `only:` left out, since the config describes the PROJECT and the flag one
|
|
101
|
+
// process. What is left is a name nothing carries — a typo, and the config is where it
|
|
102
|
+
// was made, so that is where the message points.
|
|
103
|
+
const elsewhere = statement.value !== undefined || (remotes && statement.key in remotes);
|
|
104
|
+
if (!statesModule(statement.key) && !elsewhere && here.size > 0 && !narrowed) {
|
|
105
|
+
refused.push({
|
|
106
|
+
severity: 'blocking',
|
|
107
|
+
code: 'frond-unknown',
|
|
108
|
+
filePath: 'fougere.config.ts',
|
|
109
|
+
subject: statement.path,
|
|
110
|
+
message: `'${statement.path}' names no frond this project holds. It has `
|
|
111
|
+
+ `${[...here.keys()].join(', ') || 'none'}. Check the spelling, or drop the entry.`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (statement.extends !== undefined && !here.has(statement.extends)) {
|
|
117
|
+
refused.push({
|
|
118
|
+
severity: 'blocking',
|
|
119
|
+
code: 'frond-family-split',
|
|
120
|
+
filePath: frond.source.path,
|
|
121
|
+
frond: frond.name,
|
|
122
|
+
subject: statement.path,
|
|
123
|
+
message: `'${statement.key}' inherits from '${statement.extends}', which this process does `
|
|
124
|
+
+ 'not carry. A frond cannot leave the code it resolves behind — carry the two '
|
|
125
|
+
+ `together, or take '${statement.key}' out from under '${statement.extends}'.`,
|
|
126
|
+
});
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (statement.extends !== undefined)
|
|
130
|
+
under.set(statement.key, statement.extends);
|
|
131
|
+
}
|
|
132
|
+
return { under, refused };
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* The same fronds, each parent before the ones inheriting from it — the order the boot installs
|
|
136
|
+
* them in, since a scope hangs off the one above it.
|
|
137
|
+
*
|
|
138
|
+
* A partition and not a sort: inheriting goes one level, so a frond that inherits has nothing
|
|
139
|
+
* under it and two passes are enough. Stable, and the same array when nothing inherits — which
|
|
140
|
+
* is what `orderSeeds` reads.
|
|
141
|
+
*/
|
|
142
|
+
export function parentsFirst(fronds, under) {
|
|
143
|
+
if (under.size === 0)
|
|
144
|
+
return fronds;
|
|
145
|
+
return Fronds.hosting([
|
|
146
|
+
...fronds.filter((frond) => !under.has(frond.name)),
|
|
147
|
+
...fronds.filter((frond) => under.has(frond.name)),
|
|
148
|
+
]);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The same `under` a boot stamps, for a reader that does not boot — `fougere check` and
|
|
152
|
+
* `fougere explain` resolve the model off a scan, and a scan knows nothing of the tree.
|
|
153
|
+
* Without it they report every inherited dependency as a crossing.
|
|
154
|
+
*/
|
|
155
|
+
export function nested(fronds, stated) {
|
|
156
|
+
const { under } = nestingOf(stated, fronds, undefined, true);
|
|
157
|
+
for (const frond of fronds) {
|
|
158
|
+
const parent = under.get(frond.name);
|
|
159
|
+
if (parent !== undefined)
|
|
160
|
+
frond.extends = parent;
|
|
161
|
+
}
|
|
162
|
+
return parentsFirst(fronds, under);
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=nesting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nesting.js","sourceRoot":"","sources":["../../src/boot/nesting.ts"],"names":[],"mappings":"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"}
|
package/dist/boot/ownership.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ import type { Diagnostic } from '../diagnostic.js';
|
|
|
5
5
|
export declare function sharedNames(frond: FrondDescriptor, refused: Diagnostic[]): void;
|
|
6
6
|
/** Who owns an entity's storage. */
|
|
7
7
|
export declare function ownersOf(providers: readonly ProviderEntry[], frond: string, refused: Diagnostic[]): Map<string, string>;
|
|
8
|
-
/** `Storage<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in. */
|
|
9
8
|
export declare function storageInUserCode(frond: FrondDescriptor, owners: Map<string, string>, known: (entity: string) => boolean, refused: Diagnostic[]): void;
|
|
10
9
|
/** An owned entity has no automatic CRUD — said at boot, not at the first request. */
|
|
11
10
|
export declare function crudOnOwned(frond: FrondDescriptor, owners: Map<string, string>, refused: Diagnostic[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAKpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAoB/E;AAED,oCAAoC;AACpC,wBAAgB,QAAQ,CACtB,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EAAE,GACpB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCrB;
|
|
1
|
+
{"version":3,"file":"ownership.d.ts","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAKpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAoB/E;AAED,oCAAoC;AACpC,wBAAgB,QAAQ,CACtB,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EAAE,GACpB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCrB;AA2FD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,EAClC,OAAO,EAAE,UAAU,EAAE,GACpB,IAAI,CAaN;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CACzB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,UAAU,EAAE,GACpB,IAAI,CAiBN"}
|
package/dist/boot/ownership.js
CHANGED
|
@@ -75,6 +75,69 @@ function builtOn(ctor) {
|
|
|
75
75
|
return target?.name ? [lowerFirst(target.name)] : [];
|
|
76
76
|
}
|
|
77
77
|
/** `Storage<E>` is not a word of the user's vocabulary — `<E>Repository` is the one way in. */
|
|
78
|
+
/**
|
|
79
|
+
* A provider named `<Entity>Storage` takes the key of that entity's own storage — and the storage
|
|
80
|
+
* is registered second, so the provider is never resolved. The name is already wrong by two other
|
|
81
|
+
* rules, which is why nothing hits it; it is said rather than left silent.
|
|
82
|
+
*/
|
|
83
|
+
function refuseStorageKeyAsProvider(provider, frond, known, refused) {
|
|
84
|
+
// The key the boot registers it under, which a bundler may have renamed — the same reading
|
|
85
|
+
// `ProviderEntry.name` exists for.
|
|
86
|
+
const registered = nameOf(provider);
|
|
87
|
+
const held = entityOfStorageKey(registered, known);
|
|
88
|
+
if (!held)
|
|
89
|
+
return;
|
|
90
|
+
refused.push({
|
|
91
|
+
severity: 'blocking',
|
|
92
|
+
code: 'storage-key-is-provider',
|
|
93
|
+
filePath: provider.filePath,
|
|
94
|
+
frond,
|
|
95
|
+
subject: registered,
|
|
96
|
+
message: `${registered} is a provider, and it is the container key of ${held}'s own storage `
|
|
97
|
+
+ '— the storage is registered second, so the provider is never resolved. Name it for '
|
|
98
|
+
+ 'what it holds; `<Entity>Storage` belongs to the entity.',
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Storage is reached through a repository, and an OWNED entity's not even that way: an aggregate's
|
|
103
|
+
* members are reached through it and nowhere else. The ownership question is asked first, so a
|
|
104
|
+
* member says who owns it rather than being told to write a repository it may not have.
|
|
105
|
+
*/
|
|
106
|
+
function refuseStorageReached(decl, frond, owners, known, refused) {
|
|
107
|
+
const allowed = decl.kind === 'provider' ? builtOn(decl.ctor) : [];
|
|
108
|
+
for (const dep of decl.deps) {
|
|
109
|
+
const entity = entityOfStorageKey(dep, known);
|
|
110
|
+
if (!entity)
|
|
111
|
+
continue;
|
|
112
|
+
const owner = owners.get(entity);
|
|
113
|
+
if (owner && owner !== decl.ctor.name) {
|
|
114
|
+
refused.push({
|
|
115
|
+
severity: 'blocking',
|
|
116
|
+
code: 'aggregate-storage-reached',
|
|
117
|
+
filePath: decl.filePath,
|
|
118
|
+
frond,
|
|
119
|
+
subject: `${decl.ctor.name}(${dep})`,
|
|
120
|
+
message: `${decl.ctor.name} asks for ${dep}, and ${owner} owns ${entity}. Nothing else `
|
|
121
|
+
+ `reaches an owned entity's storage — name the operation on ${owner} and ask for it: `
|
|
122
|
+
+ `constructor(private ${entity}: ${owner}) {}`,
|
|
123
|
+
});
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (allowed.includes(entity))
|
|
127
|
+
continue;
|
|
128
|
+
refused.push({
|
|
129
|
+
severity: 'blocking',
|
|
130
|
+
code: 'storage-outside-repository',
|
|
131
|
+
filePath: decl.filePath,
|
|
132
|
+
frond,
|
|
133
|
+
subject: `${decl.ctor.name}(${dep})`,
|
|
134
|
+
message: `${decl.ctor.name} asks for ${dep}. Storage is reached through a repository, never `
|
|
135
|
+
+ `through the port: constructor(private ${entity}: ${repositoryKeyOf(entity)}) {}. It `
|
|
136
|
+
+ `answers every gesture ${dep} does, whether or not anyone wrote the file — and the day `
|
|
137
|
+
+ `${entity} belongs to an aggregate, this line does not move.`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
78
141
|
export function storageInUserCode(frond, owners, known, refused) {
|
|
79
142
|
const facades = [
|
|
80
143
|
...frond.handlers.map((h) => ({ ...h, kind: 'handler' })),
|
|
@@ -82,58 +145,10 @@ export function storageInUserCode(frond, owners, known, refused) {
|
|
|
82
145
|
...frond.collectors.map((c) => ({ ...c, kind: 'collector' })),
|
|
83
146
|
];
|
|
84
147
|
const holders = frond.providers.map((p) => ({ ...p, kind: 'provider' }));
|
|
85
|
-
for (const provider of holders)
|
|
86
|
-
|
|
87
|
-
// reading `ProviderEntry.name` exists for.
|
|
88
|
-
const registered = nameOf(provider);
|
|
89
|
-
const held = entityOfStorageKey(registered, known);
|
|
90
|
-
if (!held)
|
|
91
|
-
continue;
|
|
92
|
-
refused.push({
|
|
93
|
-
severity: 'blocking',
|
|
94
|
-
code: 'storage-key-is-provider',
|
|
95
|
-
filePath: provider.filePath,
|
|
96
|
-
frond: frond.name,
|
|
97
|
-
subject: registered,
|
|
98
|
-
message: `${registered} is a provider, and it is the container key of ${held}'s own storage `
|
|
99
|
-
+ '— the storage is registered second, so the provider is never resolved. Name it for '
|
|
100
|
-
+ 'what it holds; `<Entity>Storage` belongs to the entity.',
|
|
101
|
-
});
|
|
102
|
-
}
|
|
148
|
+
for (const provider of holders)
|
|
149
|
+
refuseStorageKeyAsProvider(provider, frond.name, known, refused);
|
|
103
150
|
for (const decl of [...facades, ...holders]) {
|
|
104
|
-
|
|
105
|
-
for (const dep of decl.deps) {
|
|
106
|
-
const entity = entityOfStorageKey(dep, known);
|
|
107
|
-
if (!entity)
|
|
108
|
-
continue;
|
|
109
|
-
const owner = owners.get(entity);
|
|
110
|
-
if (owner && owner !== decl.ctor.name) {
|
|
111
|
-
refused.push({
|
|
112
|
-
severity: 'blocking',
|
|
113
|
-
code: 'aggregate-storage-reached',
|
|
114
|
-
filePath: decl.filePath,
|
|
115
|
-
frond: frond.name,
|
|
116
|
-
subject: `${decl.ctor.name}(${dep})`,
|
|
117
|
-
message: `${decl.ctor.name} asks for ${dep}, and ${owner} owns ${entity}. Nothing else `
|
|
118
|
-
+ `reaches an owned entity's storage — name the operation on ${owner} and ask for it: `
|
|
119
|
-
+ `constructor(private ${entity}: ${owner}) {}`,
|
|
120
|
-
});
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
if (allowed.includes(entity))
|
|
124
|
-
continue;
|
|
125
|
-
refused.push({
|
|
126
|
-
severity: 'blocking',
|
|
127
|
-
code: 'storage-outside-repository',
|
|
128
|
-
filePath: decl.filePath,
|
|
129
|
-
frond: frond.name,
|
|
130
|
-
subject: `${decl.ctor.name}(${dep})`,
|
|
131
|
-
message: `${decl.ctor.name} asks for ${dep}. Storage is reached through a repository, never `
|
|
132
|
-
+ `through the port: constructor(private ${entity}: ${repositoryKeyOf(entity)}) {}. It `
|
|
133
|
-
+ `answers every gesture ${dep} does, whether or not anyone wrote the file — and the day `
|
|
134
|
-
+ `${entity} belongs to an aggregate, this line does not move.`,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
151
|
+
refuseStorageReached(decl, frond.name, owners, known, refused);
|
|
137
152
|
}
|
|
138
153
|
}
|
|
139
154
|
/** An owned entity has no automatic CRUD — said at boot, not at the first request. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ownership.js","sourceRoot":"","sources":["../../src/boot/ownership.ts"],"names":[],"mappings":"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"}
|
package/dist/boot/ports.js
CHANGED
|
@@ -80,31 +80,39 @@ export function portBindings(providers, answers, chosen, refused) {
|
|
|
80
80
|
return bound;
|
|
81
81
|
}
|
|
82
82
|
function chain(port, impls, wrappers, stated, refused) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
});
|
|
99
|
-
return [];
|
|
100
|
-
}
|
|
83
|
+
if (stated !== undefined)
|
|
84
|
+
return statedChain(port, [...wrappers, ...impls], stated, refused);
|
|
85
|
+
refuseUndecided(port, impls, wrappers, refused);
|
|
86
|
+
return [...wrappers, ...impls];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The whole chain, outside in — a string is a chain of one, and the last name is what actually
|
|
90
|
+
* answers. What a deployment wraps its realization with is the same kind of decision as which
|
|
91
|
+
* realization it uses, so it is the same key.
|
|
92
|
+
*/
|
|
93
|
+
function statedChain(port, all, stated, refused) {
|
|
94
|
+
const order = typeof stated === 'string' ? [stated] : stated;
|
|
95
|
+
return order.flatMap((name) => {
|
|
96
|
+
const pick = all.find((one) => nameOf(one) === name);
|
|
97
|
+
if (pick)
|
|
101
98
|
return [pick];
|
|
99
|
+
refused.push({
|
|
100
|
+
severity: 'blocking',
|
|
101
|
+
code: 'port-not-extended',
|
|
102
|
+
filePath: all[0]?.filePath ?? 'fougere.config.ts',
|
|
103
|
+
subject: `ports: { ${port}: '${name}' }`,
|
|
104
|
+
message: `${port}: '${name}' does not extend it. What does: ${all.map(nameOf).join(', ')}.`,
|
|
102
105
|
});
|
|
103
|
-
|
|
106
|
+
return [];
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Two realizations, or two wrappers, and nothing saying which — refused rather than settled by
|
|
111
|
+
* scan order, the same reason `remotes` refuses two owners of one entity: whichever won would
|
|
112
|
+
* depend on the order files were read, and the handler would charge the wrong provider silently.
|
|
113
|
+
*/
|
|
114
|
+
function refuseUndecided(port, impls, wrappers, refused) {
|
|
104
115
|
if (impls.length > 1) {
|
|
105
|
-
// Refusing rather than keeping one, for the reason `remotes` refuses two owners
|
|
106
|
-
// of an entity: whichever won would depend on scan order, and the handler would
|
|
107
|
-
// charge the wrong provider without a word.
|
|
108
116
|
refused.push({
|
|
109
117
|
severity: 'blocking',
|
|
110
118
|
code: 'port-implemented-twice',
|
|
@@ -114,10 +122,8 @@ function chain(port, impls, wrappers, stated, refused) {
|
|
|
114
122
|
+ 'answers it. Which realization a deployment uses is not a fact about the code — state it: '
|
|
115
123
|
+ `ports: { ${port}: '${nameOf(impls[0])}' } in fougere.config.ts.`,
|
|
116
124
|
});
|
|
117
|
-
return [...wrappers, ...impls];
|
|
118
125
|
}
|
|
119
126
|
if (wrappers.length > 1) {
|
|
120
|
-
// Same refusal one layer out: two wrappers are an ORDER, and scan order is not one.
|
|
121
127
|
refused.push({
|
|
122
128
|
severity: 'blocking',
|
|
123
129
|
code: 'port-wrapped-twice',
|
|
@@ -129,6 +135,5 @@ function chain(port, impls, wrappers, stated, refused) {
|
|
|
129
135
|
+ 'in fougere.config.ts.',
|
|
130
136
|
});
|
|
131
137
|
}
|
|
132
|
-
return [...wrappers, ...impls];
|
|
133
138
|
}
|
|
134
139
|
//# sourceMappingURL=ports.js.map
|
package/dist/boot/ports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/boot/ports.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/boot/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/boot/remote.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAQ,KAAK,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAG/E,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACvC;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,GACxC,YAAY,
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/boot/remote.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAQ,KAAK,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAG/E,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACvC;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,GACxC,YAAY,CA2Dd;AAED,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnF,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,EAAE,GACnD,MAAM,CAYR"}
|
package/dist/boot/remote.js
CHANGED
|
@@ -35,34 +35,8 @@ export function createRemoteRouter(remotes, makeTransport) {
|
|
|
35
35
|
for (const answered of cards) {
|
|
36
36
|
if (!answered)
|
|
37
37
|
continue;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const card = assertIdentityCard(answer, `Remote '${label}' (${url})`);
|
|
41
|
-
for (const frond of card.fronds) {
|
|
42
|
-
// Facades only. A fact is not routable — nobody calls it, it arrives — so
|
|
43
|
-
// adding one here would answer a call with a transport to a facade that
|
|
44
|
-
// does not exist.
|
|
45
|
-
for (const facade of frond.facades) {
|
|
46
|
-
const first = claimedBy.get(facade.name);
|
|
47
|
-
/** Two remotes claiming one name is refused, not silently arbitrated. */
|
|
48
|
-
if (first !== undefined && first !== label) {
|
|
49
|
-
throw new FougereError({
|
|
50
|
-
code: ErrorCode.INTERNAL_ERROR,
|
|
51
|
-
message: `[claim] Two remotes serve '${facade.name}': '${first}' and '${label}'.\n`
|
|
52
|
-
+ ` A call names an entity, not a frond, so nothing could choose between them.\n`
|
|
53
|
-
+ ` - Keep one of the two out of \`remotes:\`, or\n`
|
|
54
|
-
+ ` - expose one of them under a different entity name.`,
|
|
55
|
-
entity: facade.name,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
claimedBy.set(facade.name, label);
|
|
59
|
-
byEntity.set(facade.name, {
|
|
60
|
-
frond: frond.name,
|
|
61
|
-
transport,
|
|
62
|
-
...(facade.schema ? { schema: Card.fromDescriptor(facade.schema).toSchema() } : {}),
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
38
|
+
pending.delete(answered.label);
|
|
39
|
+
claimFacades(answered, byEntity, claimedBy);
|
|
66
40
|
}
|
|
67
41
|
};
|
|
68
42
|
return {
|
|
@@ -101,4 +75,33 @@ export function createRemoteFacade(entity, router, middlewaresFor) {
|
|
|
101
75
|
};
|
|
102
76
|
return dynamicOperations(opFn);
|
|
103
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Which remote serves which facade. Facades only: a fact is not routable — nobody calls it, it
|
|
80
|
+
* arrives — so adding one here would answer a call with a transport to a facade that does not
|
|
81
|
+
* exist. Two remotes claiming one name is refused, never silently arbitrated.
|
|
82
|
+
*/
|
|
83
|
+
function claimFacades({ label, url, transport, answer }, byEntity, claimedBy) {
|
|
84
|
+
const card = assertIdentityCard(answer, `Remote '${label}' (${url})`);
|
|
85
|
+
for (const frond of card.fronds) {
|
|
86
|
+
for (const facade of frond.facades) {
|
|
87
|
+
const first = claimedBy.get(facade.name);
|
|
88
|
+
if (first !== undefined && first !== label) {
|
|
89
|
+
throw new FougereError({
|
|
90
|
+
code: ErrorCode.INTERNAL_ERROR,
|
|
91
|
+
message: `[claim] Two remotes serve '${facade.name}': '${first}' and '${label}'.\n`
|
|
92
|
+
+ ` A call names an entity, not a frond, so nothing could choose between them.\n`
|
|
93
|
+
+ ` - Keep one of the two out of \`remotes:\`, or\n`
|
|
94
|
+
+ ` - expose one of them under a different entity name.`,
|
|
95
|
+
entity: facade.name,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
claimedBy.set(facade.name, label);
|
|
99
|
+
byEntity.set(facade.name, {
|
|
100
|
+
frond: frond.name,
|
|
101
|
+
transport,
|
|
102
|
+
...(facade.schema ? { schema: Card.fromDescriptor(facade.schema).toSchema() } : {}),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
104
107
|
//# sourceMappingURL=remote.js.map
|
package/dist/boot/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/boot/remote.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAsB,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,IAAI,EAA0C,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAgBvD,MAAM,UAAU,kBAAkB,CAChC,OAA+B,EAC/B,aAAyC;IAEzC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC1C,2EAA2E;IAC3E,8CAA8C;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEhD,uFAAuF;IACvF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,sFAAsF;QACtF,mFAAmF;QACnF,6EAA6E;QAC7E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE;YACtC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5D,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBACzF,0EAA0E;gBAC1E,yEAAyE;gBACzE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,yDAAyD;gBACzD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ;gBAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/boot/remote.ts"],"names":[],"mappings":"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"}
|
package/dist/boot/seed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,iFAAiF;IACjF,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/boot/seed.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,iFAAiF;IACjF,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAiB/D;AAuCD;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,EAAE,EAClB,MAAM,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe,GAC3C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAwBD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAgBrE"}
|