@fougere/core 0.8.2-alpha.0 → 0.8.4-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/boot/Emissions.d.ts.map +1 -1
- package/dist/boot/Emissions.js +3 -3
- package/dist/boot/Emissions.js.map +1 -1
- package/dist/boot/auth.d.ts +1 -1
- package/dist/boot/auth.d.ts.map +1 -1
- package/dist/boot/bootstrap.d.ts.map +1 -1
- package/dist/boot/bootstrap.js +339 -595
- package/dist/boot/bootstrap.js.map +1 -1
- package/dist/boot/card.js +1 -1
- package/dist/boot/card.js.map +1 -1
- package/dist/boot/hosted.d.ts +1 -1
- package/dist/boot/hosted.d.ts.map +1 -1
- package/dist/boot/install.d.ts +40 -0
- package/dist/boot/install.d.ts.map +1 -0
- package/dist/boot/install.js +298 -0
- package/dist/boot/install.js.map +1 -0
- package/dist/boot/ownership.d.ts +1 -1
- package/dist/boot/ownership.d.ts.map +1 -1
- package/dist/boot/ownership.js +14 -1
- package/dist/boot/ownership.js.map +1 -1
- package/dist/boot/seed.d.ts +7 -1
- package/dist/boot/seed.d.ts.map +1 -1
- package/dist/boot/seed.js +7 -2
- package/dist/boot/seed.js.map +1 -1
- package/dist/boot/statement-drift.d.ts +1 -1
- package/dist/boot/statement-drift.d.ts.map +1 -1
- package/dist/boot/together.d.ts +1 -1
- package/dist/boot/together.d.ts.map +1 -1
- package/dist/boot/together.js +1 -1
- package/dist/boot/together.js.map +1 -1
- package/dist/boot/types.d.ts +2 -2
- package/dist/boot/types.d.ts.map +1 -1
- package/dist/config-loader.d.ts +1 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/contract.d.ts +2 -2
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/conventions.d.ts.map +1 -0
- package/dist/conventions.js.map +1 -0
- package/dist/crypto/encoding.d.ts +0 -1
- package/dist/crypto/encoding.d.ts.map +1 -1
- package/dist/crypto/encoding.js +0 -7
- package/dist/crypto/encoding.js.map +1 -1
- package/dist/declare.js +1 -1
- package/dist/declare.js.map +1 -1
- package/dist/descriptor/index.d.ts +15 -0
- package/dist/descriptor/index.d.ts.map +1 -0
- package/dist/descriptor/index.js +14 -0
- package/dist/descriptor/index.js.map +1 -0
- package/dist/descriptor/surface.d.ts +8 -0
- package/dist/descriptor/surface.d.ts.map +1 -0
- package/dist/descriptor/surface.js +16 -0
- package/dist/descriptor/surface.js.map +1 -0
- package/dist/dispatch/HandlerFacade.d.ts +2 -0
- package/dist/dispatch/HandlerFacade.d.ts.map +1 -1
- package/dist/dispatch/HandlerFacade.js +7 -2
- package/dist/dispatch/HandlerFacade.js.map +1 -1
- package/dist/dispatch/StorageGuard.d.ts.map +1 -1
- package/dist/dispatch/StorageGuard.js +9 -23
- package/dist/dispatch/StorageGuard.js.map +1 -1
- package/dist/dispatch/presenterArguments.d.ts +7 -1
- package/dist/dispatch/presenterArguments.d.ts.map +1 -1
- package/dist/dispatch/presenterArguments.js +15 -4
- package/dist/dispatch/presenterArguments.js.map +1 -1
- package/dist/dispatch/validateInput.d.ts.map +1 -1
- package/dist/dispatch/validateInput.js +2 -2
- package/dist/dispatch/validateInput.js.map +1 -1
- package/dist/effective-operation.d.ts +1 -1
- package/dist/effective-operation.d.ts.map +1 -1
- package/dist/effective-operation.js +2 -12
- package/dist/effective-operation.js.map +1 -1
- package/dist/index.d.ts +7 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +2 -12
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +2 -12
- package/dist/node.js.map +1 -1
- package/dist/prefab/crud.d.ts +1 -1
- package/dist/prefab/crud.d.ts.map +1 -1
- package/dist/prefab/mirror.d.ts +10 -11
- package/dist/prefab/mirror.d.ts.map +1 -1
- package/dist/prefab/mirror.js +1 -27
- package/dist/prefab/mirror.js.map +1 -1
- package/dist/prefab/repository.d.ts +1 -1
- package/dist/prefab/repository.d.ts.map +1 -1
- package/dist/{scan/result.d.ts → scan.d.ts} +2 -2
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +2 -0
- package/dist/scan.js.map +1 -0
- package/dist/source.d.ts +1 -1
- package/dist/source.d.ts.map +1 -1
- package/dist/storage/criterion.d.ts.map +1 -0
- package/dist/{criterion.js → storage/criterion.js} +2 -2
- package/dist/storage/criterion.js.map +1 -0
- package/dist/{storage.d.ts → storage/port.d.ts} +6 -3
- package/dist/storage/port.d.ts.map +1 -0
- package/dist/{storage.js → storage/port.js} +13 -6
- package/dist/storage/port.js.map +1 -0
- package/dist/{store.d.ts → storage/store.d.ts} +1 -1
- package/dist/storage/store.d.ts.map +1 -0
- package/dist/{store.js → storage/store.js} +33 -17
- package/dist/storage/store.js.map +1 -0
- package/dist/verify.js +1 -1
- package/dist/verify.js.map +1 -1
- package/dist/wire/emit.d.ts.map +1 -0
- package/dist/wire/emit.js.map +1 -0
- package/dist/wire/errors.js +2 -2
- package/dist/wire/errors.js.map +1 -1
- package/package.json +10 -4
- package/src/boot/Emissions.ts +3 -3
- package/src/boot/auth.ts +1 -1
- package/src/boot/bootstrap.ts +386 -674
- package/src/boot/card.ts +1 -1
- package/src/boot/hosted.ts +1 -1
- package/src/boot/install.ts +390 -0
- package/src/boot/ownership.ts +17 -2
- package/src/boot/seed.ts +18 -3
- package/src/boot/statement-drift.ts +1 -1
- package/src/boot/together.ts +1 -1
- package/src/boot/types.ts +2 -2
- package/src/config-loader.ts +1 -1
- package/src/contract.ts +2 -2
- package/src/crypto/encoding.ts +0 -7
- package/src/declare.ts +1 -1
- package/src/descriptor/index.ts +15 -0
- package/src/descriptor/surface.ts +23 -0
- package/src/dispatch/HandlerFacade.ts +9 -2
- package/src/dispatch/StorageGuard.ts +8 -21
- package/src/dispatch/presenterArguments.ts +21 -9
- package/src/dispatch/validateInput.ts +2 -2
- package/src/effective-operation.ts +3 -14
- package/src/index.ts +10 -9
- package/src/node.ts +2 -16
- package/src/prefab/crud.ts +1 -1
- package/src/prefab/mirror.ts +12 -38
- package/src/prefab/repository.ts +1 -1
- package/src/{scan/result.ts → scan.ts} +1 -1
- package/src/source.ts +1 -1
- package/src/{criterion.ts → storage/criterion.ts} +2 -2
- package/src/{storage.ts → storage/port.ts} +20 -5
- package/src/{store.ts → storage/store.ts} +35 -16
- package/src/verify.ts +1 -1
- package/src/wire/call.ts +1 -1
- package/src/wire/errors.ts +2 -2
- package/dist/boot/boot.d.ts +0 -45
- package/dist/boot/boot.d.ts.map +0 -1
- package/dist/boot/boot.js +0 -63
- package/dist/boot/boot.js.map +0 -1
- package/dist/criterion.d.ts.map +0 -1
- package/dist/criterion.js.map +0 -1
- package/dist/declarations.d.ts +0 -29
- package/dist/declarations.d.ts.map +0 -1
- package/dist/declarations.js +0 -69
- package/dist/declarations.js.map +0 -1
- package/dist/emit.d.ts.map +0 -1
- package/dist/emit.js.map +0 -1
- package/dist/imports.d.ts +0 -16
- package/dist/imports.d.ts.map +0 -1
- package/dist/imports.js +0 -78
- package/dist/imports.js.map +0 -1
- package/dist/placement.d.ts +0 -25
- package/dist/placement.d.ts.map +0 -1
- package/dist/placement.js +0 -69
- package/dist/placement.js.map +0 -1
- package/dist/scan/adapters.d.ts +0 -3
- package/dist/scan/adapters.d.ts.map +0 -1
- package/dist/scan/adapters.js +0 -25
- package/dist/scan/adapters.js.map +0 -1
- package/dist/scan/bundling.d.ts +0 -3
- package/dist/scan/bundling.d.ts.map +0 -1
- package/dist/scan/bundling.js +0 -15
- package/dist/scan/bundling.js.map +0 -1
- package/dist/scan/contract.d.ts +0 -27
- package/dist/scan/contract.d.ts.map +0 -1
- package/dist/scan/contract.js +0 -46
- package/dist/scan/contract.js.map +0 -1
- package/dist/scan/conventions.d.ts.map +0 -1
- package/dist/scan/conventions.js.map +0 -1
- package/dist/scan/emit.d.ts +0 -10
- package/dist/scan/emit.d.ts.map +0 -1
- package/dist/scan/emit.js +0 -144
- package/dist/scan/emit.js.map +0 -1
- package/dist/scan/handler-parser.d.ts +0 -26
- package/dist/scan/handler-parser.d.ts.map +0 -1
- package/dist/scan/handler-parser.js +0 -607
- package/dist/scan/handler-parser.js.map +0 -1
- package/dist/scan/result.d.ts.map +0 -1
- package/dist/scan/result.js +0 -2
- package/dist/scan/result.js.map +0 -1
- package/dist/scan/scanner.d.ts +0 -12
- package/dist/scan/scanner.d.ts.map +0 -1
- package/dist/scan/scanner.js +0 -569
- package/dist/scan/scanner.js.map +0 -1
- package/dist/scan/statement.d.ts +0 -4
- package/dist/scan/statement.d.ts.map +0 -1
- package/dist/scan/statement.js +0 -135
- package/dist/scan/statement.js.map +0 -1
- package/dist/storage.d.ts.map +0 -1
- package/dist/storage.js.map +0 -1
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js.map +0 -1
- package/src/boot/boot.ts +0 -110
- package/src/declarations.ts +0 -102
- package/src/imports.ts +0 -94
- package/src/placement.ts +0 -86
- package/src/scan/adapters.ts +0 -32
- package/src/scan/bundling.ts +0 -14
- package/src/scan/contract.ts +0 -80
- package/src/scan/emit.ts +0 -160
- package/src/scan/handler-parser.ts +0 -695
- package/src/scan/scanner.ts +0 -694
- package/src/scan/statement.ts +0 -159
- /package/dist/{scan/conventions.d.ts → conventions.d.ts} +0 -0
- /package/dist/{scan/conventions.js → conventions.js} +0 -0
- /package/dist/{criterion.d.ts → storage/criterion.d.ts} +0 -0
- /package/dist/{emit.d.ts → wire/emit.d.ts} +0 -0
- /package/dist/{emit.js → wire/emit.js} +0 -0
- /package/src/{scan/conventions.ts → conventions.ts} +0 -0
- /package/src/{emit.ts → wire/emit.ts} +0 -0
package/dist/scan/statement.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/** The scan, written as the STATEMENT an author would have written. */
|
|
2
|
-
import { relative } from 'node:path';
|
|
3
|
-
import { nameOf } from '../descriptor/frond.js';
|
|
4
|
-
import { operationsOf } from './contract.js';
|
|
5
|
-
/**
|
|
6
|
-
* A file becomes the specifier the PROJECT already uses for it: `@fronds/blog/…`, the import scope
|
|
7
|
-
* a handler names its neighbour by, and which the Nuxt module registers as an alias for every
|
|
8
|
-
* frond it found.
|
|
9
|
-
*/
|
|
10
|
-
function specifierOf(filePath, frond) {
|
|
11
|
-
const inside = relative(frond.source.path, filePath).replace(/\.tsx?$/, '.js');
|
|
12
|
-
return `${frond.source.package}/${inside}`;
|
|
13
|
-
}
|
|
14
|
-
/** One alias per file, so a class imported twice is one binding and one identity. */
|
|
15
|
-
class Imports {
|
|
16
|
-
byPath = new Map();
|
|
17
|
-
byValue = new Map();
|
|
18
|
-
byClassName = new Map();
|
|
19
|
-
lines = [];
|
|
20
|
-
/** The frond a file belongs to — a named import needs the specifier its default got. */
|
|
21
|
-
frondOfFile = new Map();
|
|
22
|
-
default(filePath, frond, value) {
|
|
23
|
-
this.frondOfFile.set(filePath, frond);
|
|
24
|
-
const known = this.byPath.get(filePath);
|
|
25
|
-
if (known) {
|
|
26
|
-
if (value)
|
|
27
|
-
this.remember(value, known);
|
|
28
|
-
return known;
|
|
29
|
-
}
|
|
30
|
-
const alias = `_${this.byPath.size}`;
|
|
31
|
-
this.lines.push(`import ${alias} from '${specifierOf(filePath, frond)}';`);
|
|
32
|
-
this.byPath.set(filePath, alias);
|
|
33
|
-
if (value)
|
|
34
|
-
this.remember(value, alias);
|
|
35
|
-
return alias;
|
|
36
|
-
}
|
|
37
|
-
/** A view a handler declares beside itself — `PostPublic` is exported by name. */
|
|
38
|
-
named(value, filePath, name) {
|
|
39
|
-
const known = this.byValue.get(value);
|
|
40
|
-
if (known)
|
|
41
|
-
return known;
|
|
42
|
-
const frond = this.frondOfFile.get(filePath);
|
|
43
|
-
if (!frond) {
|
|
44
|
-
throw new Error(`A statement cannot be written: ${name} lives in ${filePath}, which no frond imported first.`);
|
|
45
|
-
}
|
|
46
|
-
const alias = `_${this.byPath.size}_${name}`;
|
|
47
|
-
this.lines.push(`import { ${name} as ${alias} } from '${specifierOf(filePath, frond)}';`);
|
|
48
|
-
this.remember(value, alias);
|
|
49
|
-
return alias;
|
|
50
|
-
}
|
|
51
|
-
aliasOf(value) { return this.byValue.get(value); }
|
|
52
|
-
classNamed(name) { return this.byClassName.get(name); }
|
|
53
|
-
remember(value, alias) {
|
|
54
|
-
this.byValue.set(value, alias);
|
|
55
|
-
const name = value.name;
|
|
56
|
-
if (name)
|
|
57
|
-
this.byClassName.set(name, value);
|
|
58
|
-
}
|
|
59
|
-
render() {
|
|
60
|
-
return this.lines.join('\n');
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/** `{ ctor: X, deps: [...] }` when there is something to say, the bare class otherwise. */
|
|
64
|
-
function subject(alias, deps, ...extra) {
|
|
65
|
-
const parts = [
|
|
66
|
-
...(deps.length ? [`deps: ${JSON.stringify(deps)}`] : []),
|
|
67
|
-
...extra.filter(Boolean),
|
|
68
|
-
];
|
|
69
|
-
return parts.length ? `{ ctor: ${alias}, ${parts.join(', ')} }` : alias;
|
|
70
|
-
}
|
|
71
|
-
function frondOf(frond, imports) {
|
|
72
|
-
const list = (items) => `[${items.join(', ')}]`;
|
|
73
|
-
const members = [];
|
|
74
|
-
// Entities first, and by VALUE: an operation names its input and output as schemas, and
|
|
75
|
-
// the one a `Partial<X>` derives from is found here rather than imported a second time.
|
|
76
|
-
if (frond.entities.length) {
|
|
77
|
-
members.push(`entities: ${list(frond.entities.map((e) => imports.default(e.filePath, frond, e.entityClass)))}`);
|
|
78
|
-
}
|
|
79
|
-
if (frond.handlers.length) {
|
|
80
|
-
members.push(`handlers: ${list(frond.handlers.map((h) => subject(imports.default(h.filePath, frond, h.ctor), h.deps, h.surface ? `surface: ${JSON.stringify(h.surface)}` : '',
|
|
81
|
-
// What the scan read from source, and what no class carries at runtime. Without it
|
|
82
|
-
// a host that boots from this statement serves a prefab's five ops and nothing else.
|
|
83
|
-
h.operations.size ? `operations: ${operationsOf(h.operations, h.filePath, imports, ' ')}` : '')))}`);
|
|
84
|
-
}
|
|
85
|
-
if (frond.presenters.length) {
|
|
86
|
-
members.push(`presenters: ${list(frond.presenters.map((p) => subject(imports.default(p.filePath, frond), p.deps)))}`);
|
|
87
|
-
}
|
|
88
|
-
if (frond.collectors.length) {
|
|
89
|
-
members.push(`collectors: ${list(frond.collectors.map((c) => subject(imports.default(c.filePath, frond), c.deps)))}`);
|
|
90
|
-
}
|
|
91
|
-
if (frond.providers.length) {
|
|
92
|
-
members.push(`providers: ${list(frond.providers.map((p) => subject(imports.default(p.filePath, frond, p.ctor), p.deps,
|
|
93
|
-
// The container key, and a bundler is free to rewrite the class's own name — it did,
|
|
94
|
-
// and a handler asking for `Communes` met a provider registered as `_Communes`.
|
|
95
|
-
`name: ${JSON.stringify(nameOf(p))}`)))}`);
|
|
96
|
-
}
|
|
97
|
-
// A seed is DATA, not a class — the one member a statement cannot derive from an import.
|
|
98
|
-
if (frond.seeds.length) {
|
|
99
|
-
members.push(`seeds: ${JSON.stringify(frond.seeds.map((s) => ({ entityName: s.entityName, data: s.data })))}`);
|
|
100
|
-
}
|
|
101
|
-
if (frond.surfaces)
|
|
102
|
-
members.push(`surfaces: ${JSON.stringify(frond.surfaces)}`);
|
|
103
|
-
// What `frond.config.ts` states — read BY the scan, so a host that boots from a written
|
|
104
|
-
// statement never sees the file. It is the only answer for the kind of an op whose name
|
|
105
|
-
// leads with no known verb, and the only one for a method inherited from a base class
|
|
106
|
-
// the workspace scan cannot see.
|
|
107
|
-
if (frond.operationsOverrides && Object.keys(frond.operationsOverrides).length) {
|
|
108
|
-
members.push(`operationsOverrides: ${JSON.stringify(frond.operationsOverrides)}`);
|
|
109
|
-
}
|
|
110
|
-
const scope = frond.source.package?.split('/')[0];
|
|
111
|
-
if (scope)
|
|
112
|
-
members.push(`scope: ${JSON.stringify(scope)}`);
|
|
113
|
-
return ` frond(${JSON.stringify(frond.name)}, {\n ${members.join(',\n ')},\n })`;
|
|
114
|
-
}
|
|
115
|
-
/** The scan as a list of `frond()` calls — the file an author writes, written for them. */
|
|
116
|
-
// Nothing is written relative to the destination, so where the file SITS is not a
|
|
117
|
-
// parameter — the alias resolves the same from anywhere.
|
|
118
|
-
export function emitStatement(scan) {
|
|
119
|
-
const imports = new Imports();
|
|
120
|
-
const fronds = scan.fronds.map((f) => frondOf(f, imports));
|
|
121
|
-
return [
|
|
122
|
-
'// Generated by @fougere/nuxt — what the scan found, as the statement you would write.',
|
|
123
|
-
'//',
|
|
124
|
-
'// Classes are IMPORTED, never restated: `frond()` derives every name from them. Write',
|
|
125
|
-
'// your own `fronds.ts` beside `fougere.config.ts` to state this by hand instead.',
|
|
126
|
-
"import { frond } from '@fougere/core';",
|
|
127
|
-
imports.render(),
|
|
128
|
-
'',
|
|
129
|
-
'export default [',
|
|
130
|
-
`${fronds.join(',\n')},`,
|
|
131
|
-
'];',
|
|
132
|
-
'',
|
|
133
|
-
].join('\n');
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=statement.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../src/scan/statement.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAA6C,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5D,wDAAwD;AACxD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,4EAA4E;AAC5E,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,6FAA6F;IAC7F,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,cAAc,CA0I7F"}
|
package/dist/store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/src/boot/boot.ts
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { createApp } from './bootstrap.js';
|
|
2
|
-
import { seeding } from './seed.js';
|
|
3
|
-
import { scanProject } from '../scan/scanner.js';
|
|
4
|
-
import { loadConfig, type FougereConfig } from '../config-loader.js';
|
|
5
|
-
import { Logger } from '../builtin/logger.js';
|
|
6
|
-
import { applyConfig } from './apply.js';
|
|
7
|
-
import type { App, CreateAppOptions } from './types.js';
|
|
8
|
-
import { migrating, type Extension } from './AppLifecycle.js';
|
|
9
|
-
import type { Transport } from '../wire/call.js';
|
|
10
|
-
import type { Container } from '@fougere/container';
|
|
11
|
-
|
|
12
|
-
interface BootOptions {
|
|
13
|
-
/** Project root. Defaults to process.cwd(). */
|
|
14
|
-
root?: string;
|
|
15
|
-
/** Override config (merged with fougere.config.ts). */
|
|
16
|
-
config?: Partial<FougereConfig>;
|
|
17
|
-
/** Container factory. Required. */
|
|
18
|
-
createContainer: () => Container;
|
|
19
|
-
/** Only boot these fronds (by name). Absent = all. */
|
|
20
|
-
fronds?: string[];
|
|
21
|
-
/**
|
|
22
|
-
* Remote fronds — label → address. A declared remote wins over local
|
|
23
|
-
* presence (the frond runs elsewhere). Requires `remoteTransport`.
|
|
24
|
-
*/
|
|
25
|
-
remotes?: Record<string, string>;
|
|
26
|
-
/** Builds the transport to reach `remotes`. Supplied by a layer-2 package. */
|
|
27
|
-
remoteTransport?: (url: string) => Transport;
|
|
28
|
-
/** Carries an announced fact out of this process. */
|
|
29
|
-
onEmit?: CreateAppOptions['onEmit'];
|
|
30
|
-
/**
|
|
31
|
-
* storage setup — returns the storage handle (db), an storageFactory, and its two halves.
|
|
32
|
-
* The `db` value is forwarded to the auth provider via AuthContext when `auth` is set.
|
|
33
|
-
*/
|
|
34
|
-
db?: (config: FougereConfig) => {
|
|
35
|
-
db?: unknown;
|
|
36
|
-
storageFactory: CreateAppOptions['storageFactory'];
|
|
37
|
-
/** Bring the schema up to date — an extension's `up`, because it runs after the container. */
|
|
38
|
-
migrate?: (app: App) => Promise<void> | void;
|
|
39
|
-
/** Closes what the factory opened — `boot()` called it, so `boot()` releases it. */
|
|
40
|
-
close?: () => Promise<void>;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* What this app takes on beyond its fronds. Appended after the framework's own, so a
|
|
44
|
-
* host adds to the ascent — or replaces a member of it by declaring the same name.
|
|
45
|
-
*/
|
|
46
|
-
extensions?: readonly (Extension | undefined)[];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/** Boot a Fougere app from fougere.config.ts. */
|
|
50
|
-
export async function boot(options: BootOptions): Promise<App> {
|
|
51
|
-
const bootStart = performance.now();
|
|
52
|
-
const log = new Logger('boot');
|
|
53
|
-
|
|
54
|
-
const root = options.root ?? process.cwd();
|
|
55
|
-
log.info(`root: ${root}`);
|
|
56
|
-
|
|
57
|
-
log.debug('loading config');
|
|
58
|
-
const fileConfig = await loadConfig(root);
|
|
59
|
-
const config: FougereConfig = { ...fileConfig, ...options.config };
|
|
60
|
-
// What this config changes in the process, said the same way at boot and at reload —
|
|
61
|
-
// there is one applier, and a host re-reading later calls the very same function.
|
|
62
|
-
applyConfig(config);
|
|
63
|
-
log.info('config loaded');
|
|
64
|
-
|
|
65
|
-
let dbSetup: ReturnType<NonNullable<BootOptions['db']>> | undefined;
|
|
66
|
-
if (options.db) {
|
|
67
|
-
log.debug('initializing database');
|
|
68
|
-
dbSetup = options.db(config);
|
|
69
|
-
log.info('database initialized');
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
log.debug('creating app (scan + container)');
|
|
73
|
-
const app = await createApp({
|
|
74
|
-
// boot() lives on the Node entry, so boot() is what reads the disk. `createApp` is
|
|
75
|
-
// handed the answer and reaches for nothing.
|
|
76
|
-
scan: await scanProject(root, options.fronds, config.conventions),
|
|
77
|
-
createContainer: options.createContainer,
|
|
78
|
-
storageFactory: dbSetup?.storageFactory,
|
|
79
|
-
db: dbSetup?.db,
|
|
80
|
-
auth: config.auth,
|
|
81
|
-
remotes: options.remotes,
|
|
82
|
-
ports: config.ports,
|
|
83
|
-
// Read from the config for the same reason `ports` is, one line up: it is a fact the
|
|
84
|
-
// project states, not one the caller passes. Absent here, `serveRest` and
|
|
85
|
-
// `serveGraphQL` both answered `pass` on an app whose config declared them — the
|
|
86
|
-
// hosts got it right through their own boot (`app/shared/src/boot.ts`), and this
|
|
87
|
-
// path, the conventional one, served nothing.
|
|
88
|
-
adapters: config.adapters,
|
|
89
|
-
// boot() called the factory, so boot() owns closing what it opened. Not an extension:
|
|
90
|
-
// it was opened before the container existed, so it closes after the container goes.
|
|
91
|
-
onDispose: dbSetup?.close,
|
|
92
|
-
/**
|
|
93
|
-
* The whole ascent, in one ordered list — tables, then rows, then whatever the host takes on.
|
|
94
|
-
*/
|
|
95
|
-
extensions: [
|
|
96
|
-
migrating(dbSetup?.migrate, (message) => log.warn(message)),
|
|
97
|
-
seeding((message) => log.debug(message)),
|
|
98
|
-
...(options.extensions ?? []),
|
|
99
|
-
],
|
|
100
|
-
onEmit: options.onEmit,
|
|
101
|
-
remoteTransport: options.remoteTransport,
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
log.info(`ascent: ${app.extensions().join(' → ') || 'nothing declared'}`);
|
|
105
|
-
|
|
106
|
-
const ms = (performance.now() - bootStart).toFixed(0);
|
|
107
|
-
log.info(`ready in ${ms}ms — ${app.fronds.length} frond(s)`);
|
|
108
|
-
|
|
109
|
-
return app;
|
|
110
|
-
}
|
package/src/declarations.ts
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/** What a handler file declares besides its handler. */
|
|
2
|
-
import type ts from '@typescript/typescript6';
|
|
3
|
-
import { readFile } from 'node:fs/promises';
|
|
4
|
-
import type { HandlerEntry } from './descriptor/frond.js';
|
|
5
|
-
|
|
6
|
-
let _ts: typeof ts | undefined;
|
|
7
|
-
async function loadTs(): Promise<typeof ts> {
|
|
8
|
-
if (!_ts) _ts = (await import('@typescript/typescript6')).default;
|
|
9
|
-
return _ts;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface HandlerDeclaration {
|
|
13
|
-
/** Stable rule name — the same vocabulary `verify()` uses. */
|
|
14
|
-
rule: 'handler-declaration';
|
|
15
|
-
frond: string;
|
|
16
|
-
filePath: string;
|
|
17
|
-
/** The handler that hosts it. */
|
|
18
|
-
handler: string;
|
|
19
|
-
/** What is declared — `AGREED_WITHIN`, `says`, `Assessment`. */
|
|
20
|
-
subject: string;
|
|
21
|
-
/** What it is in the source: a value, or a shape. */
|
|
22
|
-
kind: 'value' | 'shape';
|
|
23
|
-
message: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function subjectsOf(typescript: typeof ts, source: ts.SourceFile): [string, 'value' | 'shape'][] {
|
|
27
|
-
const found: [string, 'value' | 'shape'][] = [];
|
|
28
|
-
|
|
29
|
-
for (const statement of source.statements) {
|
|
30
|
-
if (typescript.isVariableStatement(statement)) {
|
|
31
|
-
for (const declared of statement.declarationList.declarations)
|
|
32
|
-
if (typescript.isIdentifier(declared.name)) found.push([declared.name.text, 'value']);
|
|
33
|
-
} else if (typescript.isFunctionDeclaration(statement) && statement.name) {
|
|
34
|
-
found.push([statement.name.text, 'value']);
|
|
35
|
-
} else if (
|
|
36
|
-
typescript.isInterfaceDeclaration(statement) ||
|
|
37
|
-
typescript.isTypeAliasDeclaration(statement) ||
|
|
38
|
-
typescript.isEnumDeclaration(statement)
|
|
39
|
-
) {
|
|
40
|
-
found.push([statement.name.text, 'shape']);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return found;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Everything a handler file declares that is not the handler itself.
|
|
49
|
-
*
|
|
50
|
-
* A handler names gestures; what a gesture uses is declared where its nature says, and one
|
|
51
|
-
* question settles which: does it arrive INJECTED or IMPORTED? A threshold, a formula, a word
|
|
52
|
-
* list arrive imported and belong to the frond's own module, beside its entities. Anything
|
|
53
|
-
* holding a client, a connection or a cursor arrives injected and belongs under `services/`.
|
|
54
|
-
* Neither ever belongs in the file that calls it — nothing there can be reached by a second
|
|
55
|
-
* caller, and the handler grows into the domain it was supposed to address.
|
|
56
|
-
*/
|
|
57
|
-
export async function handlerDeclarations(
|
|
58
|
-
fronds: readonly {
|
|
59
|
-
name: string;
|
|
60
|
-
handlers: readonly Pick<HandlerEntry, 'name' | 'filePath'>[];
|
|
61
|
-
}[],
|
|
62
|
-
): Promise<HandlerDeclaration[]> {
|
|
63
|
-
const typescript = await loadTs();
|
|
64
|
-
const found: HandlerDeclaration[] = [];
|
|
65
|
-
|
|
66
|
-
for (const frond of fronds) {
|
|
67
|
-
for (const handler of frond.handlers) {
|
|
68
|
-
const text = await readFile(handler.filePath, 'utf8').catch(() => undefined);
|
|
69
|
-
if (text === undefined) continue;
|
|
70
|
-
|
|
71
|
-
const source = typescript.createSourceFile(
|
|
72
|
-
handler.filePath,
|
|
73
|
-
text,
|
|
74
|
-
typescript.ScriptTarget.Latest,
|
|
75
|
-
false,
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
for (const [subject, kind] of subjectsOf(typescript, source)) {
|
|
79
|
-
found.push({
|
|
80
|
-
rule: 'handler-declaration',
|
|
81
|
-
frond: frond.name,
|
|
82
|
-
filePath: handler.filePath,
|
|
83
|
-
handler: handler.name,
|
|
84
|
-
subject,
|
|
85
|
-
kind,
|
|
86
|
-
message:
|
|
87
|
-
kind === 'value'
|
|
88
|
-
? `'${subject}' is declared in ${handler.name}, so only ${handler.name} can reach it. `
|
|
89
|
-
+ `If it needs nothing but its arguments, it is a word of '${frond.name}' and belongs `
|
|
90
|
-
+ `in a module beside its entities; if it holds a dependency, it is a service. Either `
|
|
91
|
-
+ `way it is stated once and imported, and the handler keeps only the gesture.`
|
|
92
|
-
: `'${subject}' is declared in ${handler.name}, which makes the shape of what an `
|
|
93
|
-
+ `operation answers readable only from the file that answers it. A shape belongs `
|
|
94
|
-
+ `with the entity it describes, or in the frond's own module — where the caller, `
|
|
95
|
-
+ `the test and the other operations can all name it.`,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return found;
|
|
102
|
-
}
|
package/src/imports.ts
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/** A frond reaching into another one by FILE PATH. */
|
|
2
|
-
import type ts from '@typescript/typescript6';
|
|
3
|
-
import { readdir, readFile } from 'node:fs/promises';
|
|
4
|
-
import { join, resolve, dirname, relative, isAbsolute } from 'node:path';
|
|
5
|
-
import type { FrondDescriptor } from './descriptor/frond.js';
|
|
6
|
-
|
|
7
|
-
let _ts: typeof ts | undefined;
|
|
8
|
-
async function loadTs(): Promise<typeof ts> {
|
|
9
|
-
if (!_ts) _ts = (await import('@typescript/typescript6')).default;
|
|
10
|
-
return _ts;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export interface CrossFrondImport {
|
|
14
|
-
/** Stable rule name — the same vocabulary `verify()` uses. */
|
|
15
|
-
rule: 'cross-frond-import';
|
|
16
|
-
/** The frond doing the reaching. */
|
|
17
|
-
frond: string;
|
|
18
|
-
filePath: string;
|
|
19
|
-
/** The specifier as written. */
|
|
20
|
-
specifier: string;
|
|
21
|
-
/** The frond the path lands in — absent when it lands outside every frond. */
|
|
22
|
-
target?: string;
|
|
23
|
-
message: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/** Is `child` inside `parent`? Path-based, so it says nothing about either existing. */
|
|
27
|
-
function inside(parent: string, child: string): boolean {
|
|
28
|
-
const rel = relative(parent, child);
|
|
29
|
-
return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
async function sourcesUnder(dir: string): Promise<string[]> {
|
|
33
|
-
const out: string[] = [];
|
|
34
|
-
let entries;
|
|
35
|
-
try {
|
|
36
|
-
entries = await readdir(dir, { withFileTypes: true });
|
|
37
|
-
} catch {
|
|
38
|
-
// Unreadable is the scan's complaint, not this rule's — and an absent directory is
|
|
39
|
-
// ordinary (a frond with no handlers).
|
|
40
|
-
return out;
|
|
41
|
-
}
|
|
42
|
-
for (const entry of entries) {
|
|
43
|
-
if (entry.name === 'node_modules' || entry.name.startsWith('.')) continue;
|
|
44
|
-
const full = join(dir, entry.name);
|
|
45
|
-
if (entry.isDirectory()) out.push(...await sourcesUnder(full));
|
|
46
|
-
else if (entry.name.endsWith('.ts') && !entry.name.endsWith('.d.ts')) out.push(full);
|
|
47
|
-
}
|
|
48
|
-
return out;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** Every relative import that resolves outside its own frond. */
|
|
52
|
-
export async function crossFrondImports(
|
|
53
|
-
fronds: readonly Pick<FrondDescriptor, 'name' | 'source'>[],
|
|
54
|
-
): Promise<CrossFrondImport[]> {
|
|
55
|
-
const typescript = await loadTs();
|
|
56
|
-
// `source.package` is the scoped name the scan already resolved — the remedy this rule
|
|
57
|
-
// prints must be the name that actually resolves, not one rebuilt from a prefix here.
|
|
58
|
-
const roots = fronds.map((frond) => ({
|
|
59
|
-
name: frond.name, path: resolve(frond.source.path), package: frond.source.package,
|
|
60
|
-
}));
|
|
61
|
-
const found: CrossFrondImport[] = [];
|
|
62
|
-
|
|
63
|
-
for (const root of roots) {
|
|
64
|
-
for (const filePath of await sourcesUnder(root.path)) {
|
|
65
|
-
const text = await readFile(filePath, 'utf8').catch(() => undefined);
|
|
66
|
-
if (text === undefined) continue;
|
|
67
|
-
|
|
68
|
-
for (const { fileName: specifier } of typescript.preProcessFile(text, true, true).importedFiles) {
|
|
69
|
-
if (!specifier.startsWith('.')) continue;
|
|
70
|
-
const landed = resolve(dirname(filePath), specifier);
|
|
71
|
-
if (inside(root.path, landed)) continue;
|
|
72
|
-
|
|
73
|
-
const target = roots.find((other) => other.name !== root.name && inside(other.path, landed));
|
|
74
|
-
found.push({
|
|
75
|
-
rule: 'cross-frond-import',
|
|
76
|
-
frond: root.name,
|
|
77
|
-
filePath,
|
|
78
|
-
specifier,
|
|
79
|
-
...(target ? { target: target.name } : {}),
|
|
80
|
-
message: target
|
|
81
|
-
? `'${specifier}' resolves into frond '${target.name}'. A relative path states that `
|
|
82
|
-
+ `these two fronds share a directory tree — a constraint nothing declares, and one `
|
|
83
|
-
+ `that nothing here can see. Write '${target.package}/…' instead: it says the `
|
|
84
|
-
+ `same dependency in terms the model reads, and it is the form \`fougere sync\` writes, `
|
|
85
|
-
+ `so it survives '${target.name}' moving out.`
|
|
86
|
-
: `'${specifier}' resolves outside frond '${root.name}', into no frond at all. `
|
|
87
|
-
+ `Whatever it reaches is not part of any frond's contract, so nothing carries it `
|
|
88
|
-
+ `when this one is deployed on its own.`,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return found;
|
|
94
|
-
}
|
package/src/placement.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/** A file inside a frond that no convention names. */
|
|
2
|
-
import { readdir } from 'node:fs/promises';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { type Conventions, frondDirsOf } from './scan/conventions.js';
|
|
5
|
-
import type { FrondDescriptor } from './descriptor/frond.js';
|
|
6
|
-
|
|
7
|
-
export interface OutsideConvention {
|
|
8
|
-
/** Stable rule name — the same vocabulary `verify()` uses. */
|
|
9
|
-
rule: 'outside-convention';
|
|
10
|
-
frond: string;
|
|
11
|
-
filePath: string;
|
|
12
|
-
kind: 'file' | 'directory';
|
|
13
|
-
message: string;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* `tests` is not a convention and is not an offence either: `@fougere/testing` reads the
|
|
18
|
-
* LEVEL a case runs at from where its file sits, so a frond holding its own tests is a
|
|
19
|
-
* supported shape (`demos/test-gradient`). The rest are outputs and installs, which are
|
|
20
|
-
* not the project's source at all.
|
|
21
|
-
*/
|
|
22
|
-
const NOT_SOURCE = new Set(['tests', 'node_modules', 'dist', 'build', 'coverage']);
|
|
23
|
-
|
|
24
|
-
/** The one file a frond states about itself, at its root. */
|
|
25
|
-
const FROND_FILES = new Set(['frond.config.ts', 'package.json', 'tsconfig.json', 'README.md']);
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* What sits in a frond and belongs to no convention — a directory somebody invented, or a
|
|
29
|
-
* module dropped at the root.
|
|
30
|
-
*
|
|
31
|
-
* The eight names are the frond's whole vocabulary, and until now nothing said so: a scan
|
|
32
|
-
* READS them and steps over everything else in silence, so a file outside them is not
|
|
33
|
-
* refused, it is unseen. That silence is what lets a domain word settle wherever it was
|
|
34
|
-
* first needed — most often in the handler that used it, which is a second rule
|
|
35
|
-
* (`handler-declaration`) reporting the same drift one file lower.
|
|
36
|
-
*
|
|
37
|
-
* It names the addresses rather than describing them: a rule that says "put it somewhere
|
|
38
|
-
* better" is advice, and advice is what everybody already had.
|
|
39
|
-
*/
|
|
40
|
-
export async function outsideConventions(
|
|
41
|
-
fronds: readonly Pick<FrondDescriptor, 'name' | 'source'>[],
|
|
42
|
-
conventions: Conventions,
|
|
43
|
-
): Promise<OutsideConvention[]> {
|
|
44
|
-
const known = new Set(frondDirsOf(conventions));
|
|
45
|
-
const addresses = [...known].sort().join(', ');
|
|
46
|
-
const found: OutsideConvention[] = [];
|
|
47
|
-
|
|
48
|
-
for (const frond of fronds) {
|
|
49
|
-
const entries = await readdir(frond.source.path, { withFileTypes: true }).catch(() => []);
|
|
50
|
-
|
|
51
|
-
for (const entry of entries) {
|
|
52
|
-
if (entry.name.startsWith('.') || NOT_SOURCE.has(entry.name)) continue;
|
|
53
|
-
const filePath = join(frond.source.path, entry.name);
|
|
54
|
-
|
|
55
|
-
if (entry.isDirectory()) {
|
|
56
|
-
if (known.has(entry.name)) continue;
|
|
57
|
-
found.push({
|
|
58
|
-
rule: 'outside-convention',
|
|
59
|
-
frond: frond.name,
|
|
60
|
-
filePath,
|
|
61
|
-
kind: 'directory',
|
|
62
|
-
message: `'${entry.name}/' is a directory no convention names, so nothing in it is read `
|
|
63
|
-
+ `as anything — it is a subject somebody filed under its own word. A frond's `
|
|
64
|
-
+ `directories are ${addresses}. If what it holds computes with nothing injected it `
|
|
65
|
-
+ `is \`${conventions.dirs.rules}/\`; if it holds a dependency it is `
|
|
66
|
-
+ `\`${conventions.dirs.services}/\`.`,
|
|
67
|
-
});
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (!entry.name.endsWith('.ts') || FROND_FILES.has(entry.name)) continue;
|
|
72
|
-
found.push({
|
|
73
|
-
rule: 'outside-convention',
|
|
74
|
-
frond: frond.name,
|
|
75
|
-
filePath,
|
|
76
|
-
kind: 'file',
|
|
77
|
-
message: `'${entry.name}' sits at the root of '${frond.name}', where the frond states `
|
|
78
|
-
+ `itself and nothing else. A frond's directories are ${addresses} — this one belongs `
|
|
79
|
-
+ `in \`${conventions.dirs.rules}/\` if it computes with nothing injected, in `
|
|
80
|
-
+ `\`${conventions.dirs.services}/\` if it holds a dependency.`,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return found;
|
|
86
|
-
}
|
package/src/scan/adapters.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
|
|
4
|
-
/** Which adapters a PROJECT could load, read off its dependencies. */
|
|
5
|
-
const ADAPTER_PACKAGE = /^@fougere\/adapter-(.+)$/;
|
|
6
|
-
|
|
7
|
-
/** The adapter names this project depends on — empty when it has no package.json to read. */
|
|
8
|
-
export async function adaptersOf(root: string): Promise<string[]> {
|
|
9
|
-
const manifest = await read(join(root, 'package.json'));
|
|
10
|
-
if (!manifest) return [];
|
|
11
|
-
|
|
12
|
-
const declared = { ...manifest.dependencies, ...manifest.devDependencies };
|
|
13
|
-
|
|
14
|
-
return Object.keys(declared)
|
|
15
|
-
.map((name) => ADAPTER_PACKAGE.exec(name)?.[1])
|
|
16
|
-
.filter((name): name is string => name !== undefined);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function read(path: string): Promise<Manifest | undefined> {
|
|
20
|
-
try {
|
|
21
|
-
return JSON.parse(await readFile(path, 'utf8')) as Manifest;
|
|
22
|
-
} catch {
|
|
23
|
-
// No manifest, or one that is not JSON. Either way this cannot validate a name, and
|
|
24
|
-
// reporting every `adapters:` key as unknown would be worse than saying nothing.
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface Manifest {
|
|
30
|
-
dependencies?: Record<string, string>;
|
|
31
|
-
devDependencies?: Record<string, string>;
|
|
32
|
-
}
|
package/src/scan/bundling.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/** What a Fougere boot loads at RUNTIME, so a bundler must leave it alone. */
|
|
2
|
-
export const RUNTIME_PACKAGES: readonly string[] = [
|
|
3
|
-
'@fougere/app',
|
|
4
|
-
'@fougere/core',
|
|
5
|
-
'@fougere/schema',
|
|
6
|
-
'@fougere/defaults',
|
|
7
|
-
'@fougere/transport-http',
|
|
8
|
-
'@fougere/adapter-sql',
|
|
9
|
-
'@fougere/adapter-graphql',
|
|
10
|
-
'@fougere/auth-better',
|
|
11
|
-
'better-sqlite3',
|
|
12
|
-
'jiti',
|
|
13
|
-
'typescript',
|
|
14
|
-
];
|