@fougere/cli 0.13.1-alpha.0 → 0.14.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/.fougere/scan.generated.js +1 -1
- package/dist/.fougere/scan.generated.js.map +1 -1
- package/dist/app/commands/MigrateCommand.d.ts +2 -2
- package/dist/app/commands/MigrateCommand.d.ts.map +1 -1
- package/dist/app/commands/MigrateCommand.js +15 -13
- package/dist/app/commands/MigrateCommand.js.map +1 -1
- package/dist/app/commands/NewCommand.d.ts +4 -12
- package/dist/app/commands/NewCommand.d.ts.map +1 -1
- package/dist/app/commands/NewCommand.js +51 -85
- package/dist/app/commands/NewCommand.js.map +1 -1
- package/dist/fronds/analysis/entities/Migrate.d.ts +1 -1
- package/dist/fronds/analysis/entities/Migrate.d.ts.map +1 -1
- package/dist/fronds/analysis/entities/Migrate.js +1 -1
- package/dist/fronds/analysis/entities/Migrate.js.map +1 -1
- package/dist/fronds/analysis/handlers/MigrateHandler.d.ts +14 -9
- package/dist/fronds/analysis/handlers/MigrateHandler.d.ts.map +1 -1
- package/dist/fronds/analysis/handlers/MigrateHandler.js +83 -39
- package/dist/fronds/analysis/handlers/MigrateHandler.js.map +1 -1
- package/dist/fronds/analysis/services/ProjectScan.d.ts +2 -2
- package/dist/fronds/analysis/services/ProjectScan.js +2 -2
- package/dist/fronds/scaffold/entities/New.d.ts +2 -5
- package/dist/fronds/scaffold/entities/New.d.ts.map +1 -1
- package/dist/fronds/scaffold/entities/New.js +5 -8
- package/dist/fronds/scaffold/entities/New.js.map +1 -1
- package/dist/fronds/scaffold/services/ProjectWriter.d.ts +16 -0
- package/dist/fronds/scaffold/services/ProjectWriter.d.ts.map +1 -1
- package/dist/fronds/scaffold/services/ProjectWriter.js +84 -12
- package/dist/fronds/scaffold/services/ProjectWriter.js.map +1 -1
- package/dist/src/composer/Composer.d.ts +61 -0
- package/dist/src/composer/Composer.d.ts.map +1 -0
- package/dist/src/composer/Composer.js +246 -0
- package/dist/src/composer/Composer.js.map +1 -0
- package/dist/src/composer/Plan.d.ts +36 -0
- package/dist/src/composer/Plan.d.ts.map +1 -0
- package/dist/src/composer/Plan.js +70 -0
- package/dist/src/composer/Plan.js.map +1 -0
- package/package.json +16 -15
- package/templates/workspace/package.json +5 -3
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { loadConfig } from '@fougere/core/node';
|
|
2
|
+
import { Card, lowerFirst } from '@fougere/schema';
|
|
2
3
|
import { chainOf } from '../versions.js';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Bringing the database up to what the entities declare — the one place a schema is written.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* The app is booted as its host would boot it, with the schema check and the seeds left out:
|
|
8
|
+
* the check would refuse the very database this is here to bring up, and a migration plants no
|
|
9
|
+
* rows. Booted rather than scanned, because a frond an extension brings — auth's sessions, a
|
|
10
|
+
* workflow's journal — has tables too, and the scan alone never sees it.
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* What touches live data runs FIRST: a rename moves a column before the additive pass would
|
|
13
|
+
* otherwise add its new name empty beside it. Every change is skipped when the columns already
|
|
14
|
+
* say it happened, so the whole thing replays safely.
|
|
14
15
|
*/
|
|
15
16
|
export default class MigrateHandler {
|
|
16
17
|
projectScan;
|
|
@@ -18,7 +19,7 @@ export default class MigrateHandler {
|
|
|
18
19
|
this.projectScan = projectScan;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
|
-
*
|
|
22
|
+
* Plan the migration, and run it when `apply` says so.
|
|
22
23
|
*
|
|
23
24
|
* `json` is the presentation's, so it is not part of what this operation receives.
|
|
24
25
|
*/
|
|
@@ -26,51 +27,94 @@ export default class MigrateHandler {
|
|
|
26
27
|
const scan = await this.projectScan.at(input.root ?? undefined);
|
|
27
28
|
const perFrond = await Promise.all(scan.fronds.map((frond) => stepsOf(frond.source.path)));
|
|
28
29
|
const steps = perFrond.flat();
|
|
29
|
-
|
|
30
|
-
return { chain: [], changes: [], refusals: [], ran: [] };
|
|
30
|
+
const chain = versionsOf(steps);
|
|
31
31
|
const config = await loadConfig(scan.root);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const { resolveStorage } = await import('@fougere/defaults');
|
|
35
|
-
const storage = resolveStorage(config.db ?? {}, undefined, scan.root);
|
|
32
|
+
const { bootApp, resolveStorage } = await import('@fougere/defaults');
|
|
33
|
+
const storage = resolveStorage(config.db ?? {}, config.sources, scan.root);
|
|
36
34
|
if (!storage.db) {
|
|
35
|
+
await storage.close?.();
|
|
37
36
|
return {
|
|
38
|
-
chain:
|
|
39
|
-
changes: [],
|
|
37
|
+
chain, changes: [], added: [], warnings: [], ran: [],
|
|
40
38
|
refusals: [{ entity: '*', field: '*', reason: 'no `db` in fougere.config.ts — nothing to migrate' }],
|
|
41
|
-
ran: [],
|
|
42
39
|
};
|
|
43
40
|
}
|
|
44
41
|
// Resolved from the project rather than named in this package's dependencies:
|
|
45
42
|
// `@fougere/adapter-sql` declares `better-sqlite3`, so a CLI depending on it installs
|
|
46
43
|
// 26 MB of native module into every `npm create fougere`. A project that migrates
|
|
47
44
|
// declares the adapter itself, which is where this resolves from.
|
|
48
|
-
const { actualState, desiredTables, planStep, collapseChain, applyStep } = await import('@fougere/adapter-sql');
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
45
|
+
const { actualState, desiredTables, planStep, collapseChain, applyStep, undeclaredColumns } = await import('@fougere/adapter-sql');
|
|
46
|
+
const app = await bootApp(scan.root, { extensions: [{ name: 'schema' }, { name: 'seeds' }] });
|
|
47
|
+
try {
|
|
48
|
+
const tables = desiredTables(app);
|
|
49
|
+
const frozen = collapseChain(perFrond.map((one) => collapseChain(one.map(({ step }) => step))));
|
|
50
|
+
const composed = collapseChain([frozen, declaredStep(app, frozen)]);
|
|
51
|
+
const sourceOf = storage.sourceOf ?? (() => 'db');
|
|
52
|
+
const changes = [];
|
|
53
|
+
const refusals = [];
|
|
54
|
+
const warnings = [];
|
|
55
|
+
const plans = [];
|
|
56
|
+
for (const source of storage.sources?.() ?? ['db']) {
|
|
57
|
+
const db = (source === 'db' ? storage.db : storage.dbOf?.(source));
|
|
58
|
+
if (!db)
|
|
59
|
+
continue;
|
|
60
|
+
const actual = await actualState(db);
|
|
61
|
+
const plan = planStep(onSource(composed, source, sourceOf), tables, { actual });
|
|
62
|
+
changes.push(...plan.changes);
|
|
63
|
+
refusals.push(...plan.refusals);
|
|
64
|
+
plans.push({ plan, db });
|
|
65
|
+
const renamed = new Set(plan.changes.flatMap((change) => change.kind === 'renameColumn' ? [`${change.table}.${change.from}`] : []));
|
|
66
|
+
const mine = tables.filter((table) => actual.has(table.name));
|
|
67
|
+
for (const { table, columns, added } of undeclaredColumns(mine, actual)) {
|
|
68
|
+
const left = columns.filter((column) => !renamed.has(`${table}.${column}`));
|
|
69
|
+
if (left.length === 0)
|
|
70
|
+
continue;
|
|
71
|
+
warnings.push(`${table} keeps ${left.join(', ')}, which no field declares, while ${added.join(', ')} is added — `
|
|
72
|
+
+ `if one replaces the other, declare it on the entity: previous: { ${added[0]}: '${left[0]}' }`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const moved = new Set(changes.flatMap((change) => change.kind === 'renameColumn' ? [`${change.table}.${change.to} — no column`] : []));
|
|
76
|
+
const added = (await storage.pending?.(app) ?? []).filter((line) => !moved.has(line));
|
|
77
|
+
if (!input.apply || refusals.length > 0)
|
|
78
|
+
return { chain, changes, added, refusals, warnings, ran: [] };
|
|
67
79
|
// Held back: a refusal anywhere stops every engine, for the reason it stops every
|
|
68
80
|
// statement — half a chain is worse across two engines than within one.
|
|
69
|
-
|
|
81
|
+
const ran = [];
|
|
82
|
+
for (const { plan, db } of plans)
|
|
70
83
|
ran.push(...(await applyStep(plan, db)));
|
|
84
|
+
const drift = await storage.migrate?.(app);
|
|
85
|
+
if (drift)
|
|
86
|
+
warnings.push(drift);
|
|
87
|
+
return { chain, changes, added, refusals, warnings, ran: [...ran, ...added] };
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
await app.dispose();
|
|
91
|
+
await storage.close?.();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The renames the entities state themselves — `previous: { content: 'body' }` — as a step, so
|
|
97
|
+
* the live table is the baseline and no version has to have been frozen before the change. What
|
|
98
|
+
* the frozen chain already renames is left out, or the same column would be renamed twice.
|
|
99
|
+
*/
|
|
100
|
+
function declaredStep(app, frozen) {
|
|
101
|
+
const entities = {};
|
|
102
|
+
for (const frond of app.fronds) {
|
|
103
|
+
for (const { name, entityClass } of frond.entities) {
|
|
104
|
+
const previous = entityClass.previous;
|
|
105
|
+
if (!previous)
|
|
106
|
+
continue;
|
|
107
|
+
const key = lowerFirst(name);
|
|
108
|
+
const known = frozen.entities[key]?.changes ?? [];
|
|
109
|
+
const properties = Card.fromSchema(entityClass).descriptor.properties;
|
|
110
|
+
const changes = Object.entries(previous)
|
|
111
|
+
.filter(([now, was]) => !known.some((change) => change.kind === 'renamed' && change.from === was && change.to === now))
|
|
112
|
+
.map(([now, was]) => ({ kind: 'renamed', from: was, to: now, field: properties[now] }));
|
|
113
|
+
if (changes.length > 0)
|
|
114
|
+
entities[key] = { changes, ambiguous: [] };
|
|
71
115
|
}
|
|
72
|
-
return { chain: versionsOf(steps), changes, refusals, ran: refusals.length > 0 ? [] : ran };
|
|
73
116
|
}
|
|
117
|
+
return { entities, entitiesAdded: [], entitiesRemoved: [] };
|
|
74
118
|
}
|
|
75
119
|
/** The versions read, oldest first and each named once however many fronds cut it. */
|
|
76
120
|
function versionsOf(steps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrateHandler.js","sourceRoot":"","sources":["../../../../fronds/analysis/handlers/MigrateHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"MigrateHandler.js","sourceRoot":"","sources":["../../../../fronds/analysis/handlers/MigrateHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ import { type FougereConfig, type ScanResult } from '@fougere/core';
|
|
|
6
6
|
* CLI's cwd, install a jiti loader so the scan can import TypeScript sources, scan.
|
|
7
7
|
* Two copies of one gesture, and the second was written by copying the first.
|
|
8
8
|
*
|
|
9
|
-
* Not a boot: `bootApp` runs
|
|
10
|
-
*
|
|
9
|
+
* Not a boot: `bootApp` runs the seeds, so an analysis command that booted
|
|
10
|
+
* would write to the target's database. The cost is stated rather than
|
|
11
11
|
* hidden, though — the scan IMPORTS the modules it reads, so a frond's top-level
|
|
12
12
|
* code runs. "No application cycle, no database", not "no side effect".
|
|
13
13
|
*/
|
|
@@ -9,8 +9,8 @@ import { resolve } from 'node:path';
|
|
|
9
9
|
* CLI's cwd, install a jiti loader so the scan can import TypeScript sources, scan.
|
|
10
10
|
* Two copies of one gesture, and the second was written by copying the first.
|
|
11
11
|
*
|
|
12
|
-
* Not a boot: `bootApp` runs
|
|
13
|
-
*
|
|
12
|
+
* Not a boot: `bootApp` runs the seeds, so an analysis command that booted
|
|
13
|
+
* would write to the target's database. The cost is stated rather than
|
|
14
14
|
* hidden, though — the scan IMPORTS the modules it reads, so a frond's top-level
|
|
15
15
|
* code runs. "No application cycle, no database", not "no side effect".
|
|
16
16
|
*/
|
|
@@ -7,11 +7,8 @@ declare const New_base: import("@fougere/schema").SchemaConstructor<{
|
|
|
7
7
|
app: import("@fougere/schema").Field<string>;
|
|
8
8
|
}>;
|
|
9
9
|
/**
|
|
10
|
-
* `fougere new [name]` — the
|
|
11
|
-
*
|
|
12
|
-
* Guided when it has a TTY and nothing to compose from; stated when `--frond` or
|
|
13
|
-
* `--app` is given, which is the only form a script, a CI job or an agent can drive.
|
|
14
|
-
* `--bare` is the third: the empty shell, nothing composed.
|
|
10
|
+
* `fougere new [name]` — a project, composed on one screen when the flags state nothing, and
|
|
11
|
+
* written from the flags when `--frond`, `--app` or `--bare` say it all.
|
|
15
12
|
*/
|
|
16
13
|
export default class New extends New_base {
|
|
17
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"New.d.ts","sourceRoot":"","sources":["../../../../fronds/scaffold/entities/New.ts"],"names":[],"mappings":";;;;;;;;AAEA
|
|
1
|
+
{"version":3,"file":"New.d.ts","sourceRoot":"","sources":["../../../../fronds/scaffold/entities/New.ts"],"names":[],"mappings":";;;;;;;;AAEA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,QAO/B;CAAG"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { entity, text, bool } from "@fougere/schema";
|
|
2
2
|
/**
|
|
3
|
-
* `fougere new [name]` — the
|
|
4
|
-
*
|
|
5
|
-
* Guided when it has a TTY and nothing to compose from; stated when `--frond` or
|
|
6
|
-
* `--app` is given, which is the only form a script, a CI job or an agent can drive.
|
|
7
|
-
* `--bare` is the third: the empty shell, nothing composed.
|
|
3
|
+
* `fougere new [name]` — a project, composed on one screen when the flags state nothing, and
|
|
4
|
+
* written from the flags when `--frond`, `--app` or `--bare` say it all.
|
|
8
5
|
*/
|
|
9
6
|
export default class New extends entity({
|
|
10
|
-
name: text({ description: "
|
|
11
|
-
force: bool({ description: "
|
|
12
|
-
bare: bool({ description: "
|
|
7
|
+
name: text({ description: "Project name — its directory and its package" }),
|
|
8
|
+
force: bool({ description: "Replace an existing directory, without asking", default: false }),
|
|
9
|
+
bare: bool({ description: "No fronds, no apps — the empty workspace, no prompt", default: false }),
|
|
13
10
|
local: bool({ description: "Link @fougere/* to this monorepo (dev — installs offline)", default: false }),
|
|
14
11
|
frond: text({ description: "Fronds to add, no prompt — 'blog' or 'blog:shop', comma-separated", default: "" }),
|
|
15
12
|
app: text({ description: "Apps to add, no prompt — 'nuxt' or 'nuxt:web', comma-separated", default: "" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"New.js","sourceRoot":"","sources":["../../../../fronds/scaffold/entities/New.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"New.js","sourceRoot":"","sources":["../../../../fronds/scaffold/entities/New.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,MAAM,CAAC;IACtC,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;IAC3E,KAAK,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC7F,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,qDAAqD,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClG,KAAK,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,2DAA2D,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzG,KAAK,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,mEAAmE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9G,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,gEAAgE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;CAC1G,CAAC;CAAG"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { type Conventions } from '@fougere/core';
|
|
2
|
+
import type { Plan } from '../../../src/composer/Plan.js';
|
|
2
3
|
export default class ProjectWriter {
|
|
4
|
+
/**
|
|
5
|
+
* The whole plan, or nothing: it is written beside its destination and moved there once every
|
|
6
|
+
* piece landed, since fetching a host's starter can fail halfway. `replace` removes what the
|
|
7
|
+
* destination held, and only then — a failed write leaves the old project as it was.
|
|
8
|
+
*/
|
|
9
|
+
write(plan: Plan, dir: string, options?: {
|
|
10
|
+
local?: boolean;
|
|
11
|
+
replace?: boolean;
|
|
12
|
+
}): void;
|
|
3
13
|
/** The workspace shell — fougere.config, pnpm-workspace (fronds/* apps/*), package.json. */
|
|
4
14
|
createWorkspace(dir: string, name: string): {
|
|
5
15
|
path: string;
|
|
@@ -20,6 +30,11 @@ export default class ProjectWriter {
|
|
|
20
30
|
* CLI depends on, so `fougere new` offers what is published rather than what was copied here.
|
|
21
31
|
*/
|
|
22
32
|
listTemplates(kind: 'fronds' | 'apps'): string[];
|
|
33
|
+
/**
|
|
34
|
+
* One script per app, and `dev` for the first: two apps started together fight over a port and
|
|
35
|
+
* interleave their output, and a terminal app is not a server at all.
|
|
36
|
+
*/
|
|
37
|
+
runApps(wsDir: string, apps: string[]): void;
|
|
23
38
|
/**
|
|
24
39
|
* Every app depends on every frond of the workspace — stated once composition is done,
|
|
25
40
|
* because that is when the names exist.
|
|
@@ -50,5 +65,6 @@ export default class ProjectWriter {
|
|
|
50
65
|
* packages aren't on npm yet). No-op once the packages are published.
|
|
51
66
|
*/
|
|
52
67
|
linkLocal(wsDir: string): void;
|
|
68
|
+
sharePeers(wsDir: string, linked: Iterable<string>): void;
|
|
53
69
|
}
|
|
54
70
|
//# sourceMappingURL=ProjectWriter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectWriter.d.ts","sourceRoot":"","sources":["../../../../fronds/scaffold/services/ProjectWriter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAqC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectWriter.d.ts","sourceRoot":"","sources":["../../../../fronds/scaffold/services/ProjectWriter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAqC,MAAM,eAAe,CAAC;AACpF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAkJ1D,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI,CAkBzF;IAED,4FAA4F;IAC5F,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAM3D;IAED,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,WAAiC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAcxH;IAED,2FAA2F;IAC3F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAUtE;IAED;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,CAO/C;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAU3C;IAED;;;;;;;;;;OAUG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,WAAiC,GAAG,IAAI,CAoB9E;IAED;;;;;;;;;;OAUG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,WAAiC,GAAG,IAAI,CA2B/E;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CA4C7B;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAgBxD;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
-
import { cpSync, existsSync, mkdirSync, renameSync, readFileSync, writeFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { cpSync, existsSync, mkdirSync, mkdtempSync, renameSync, readFileSync, rmSync, writeFileSync, readdirSync } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
|
-
import { dirname, join } from 'node:path';
|
|
4
|
+
import { basename, dirname, join } from 'node:path';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import { DEFAULT_CONVENTIONS, frondPackage } from '@fougere/core';
|
|
7
7
|
/**
|
|
@@ -132,7 +132,40 @@ function setPackageName(dir, name) {
|
|
|
132
132
|
pkg.name = name;
|
|
133
133
|
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
134
134
|
}
|
|
135
|
+
/** Both lists a starter names a package in — `@fougere/vite` is a build tool, so it sits in the second. */
|
|
136
|
+
function rangesOf(pkg) {
|
|
137
|
+
return [pkg.dependencies, pkg.devDependencies].filter((ranges) => ranges !== undefined);
|
|
138
|
+
}
|
|
135
139
|
export default class ProjectWriter {
|
|
140
|
+
/**
|
|
141
|
+
* The whole plan, or nothing: it is written beside its destination and moved there once every
|
|
142
|
+
* piece landed, since fetching a host's starter can fail halfway. `replace` removes what the
|
|
143
|
+
* destination held, and only then — a failed write leaves the old project as it was.
|
|
144
|
+
*/
|
|
145
|
+
write(plan, dir, options = {}) {
|
|
146
|
+
if (existsSync(dir) && !options.replace)
|
|
147
|
+
throw new Error(`${basename(dir)}/ already exists.`);
|
|
148
|
+
const staged = mkdtempSync(join(dirname(dir), `.${basename(dir)}-`));
|
|
149
|
+
try {
|
|
150
|
+
this.createWorkspace(staged, plan.name);
|
|
151
|
+
for (const { template, name } of plan.fronds)
|
|
152
|
+
this.addFrond(staged, template, name);
|
|
153
|
+
for (const { template, name } of plan.apps)
|
|
154
|
+
this.addApp(staged, template, name);
|
|
155
|
+
this.runApps(staged, plan.apps.map(({ name }) => name));
|
|
156
|
+
this.linkFronds(staged);
|
|
157
|
+
if (options.local)
|
|
158
|
+
this.linkLocal(staged);
|
|
159
|
+
else
|
|
160
|
+
this.pinVersions(staged);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
rmSync(staged, { recursive: true, force: true });
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
rmSync(dir, { recursive: true, force: true });
|
|
167
|
+
renameSync(staged, dir);
|
|
168
|
+
}
|
|
136
169
|
/** The workspace shell — fougere.config, pnpm-workspace (fronds/* apps/*), package.json. */
|
|
137
170
|
createWorkspace(dir, name) {
|
|
138
171
|
cpSync(join(TEMPLATES, 'workspace'), dir, { recursive: true });
|
|
@@ -181,6 +214,21 @@ export default class ProjectWriter {
|
|
|
181
214
|
return [];
|
|
182
215
|
return readdirSync(dir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
183
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* One script per app, and `dev` for the first: two apps started together fight over a port and
|
|
219
|
+
* interleave their output, and a terminal app is not a server at all.
|
|
220
|
+
*/
|
|
221
|
+
runApps(wsDir, apps) {
|
|
222
|
+
const path = join(wsDir, 'package.json');
|
|
223
|
+
const pkg = JSON.parse(readFileSync(path, 'utf8'));
|
|
224
|
+
const run = (app) => `pnpm -C apps/${app} dev`;
|
|
225
|
+
pkg.scripts = {
|
|
226
|
+
...(apps.length ? { dev: run(apps[0]) } : {}),
|
|
227
|
+
...Object.fromEntries(apps.map((app) => [`dev:${app}`, run(app)])),
|
|
228
|
+
...pkg.scripts,
|
|
229
|
+
};
|
|
230
|
+
writeFileSync(path, JSON.stringify(pkg, null, 2) + '\n');
|
|
231
|
+
}
|
|
184
232
|
/**
|
|
185
233
|
* Every app depends on every frond of the workspace — stated once composition is done,
|
|
186
234
|
* because that is when the names exist.
|
|
@@ -242,11 +290,13 @@ export default class ProjectWriter {
|
|
|
242
290
|
continue;
|
|
243
291
|
const pkg = JSON.parse(readFileSync(path, 'utf8'));
|
|
244
292
|
let moved = false;
|
|
245
|
-
for (const
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
293
|
+
for (const ranges of rangesOf(pkg)) {
|
|
294
|
+
for (const [name, range] of Object.entries(ranges)) {
|
|
295
|
+
if (!name.startsWith('@fougere/') || range !== 'latest')
|
|
296
|
+
continue;
|
|
297
|
+
ranges[name] = version;
|
|
298
|
+
moved = true;
|
|
299
|
+
}
|
|
250
300
|
}
|
|
251
301
|
if (moved)
|
|
252
302
|
writeFileSync(path, JSON.stringify(pkg, null, 2) + '\n');
|
|
@@ -285,6 +335,7 @@ export default class ProjectWriter {
|
|
|
285
335
|
}
|
|
286
336
|
};
|
|
287
337
|
scan(packages);
|
|
338
|
+
const linked = new Set();
|
|
288
339
|
const walk = (d) => {
|
|
289
340
|
for (const e of readdirSync(d, { withFileTypes: true })) {
|
|
290
341
|
if (e.name === 'node_modules')
|
|
@@ -298,11 +349,14 @@ export default class ProjectWriter {
|
|
|
298
349
|
continue;
|
|
299
350
|
const pkg = JSON.parse(readFileSync(f, 'utf8'));
|
|
300
351
|
let changed = false;
|
|
301
|
-
for (const
|
|
302
|
-
const
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
352
|
+
for (const ranges of rangesOf(pkg)) {
|
|
353
|
+
for (const dep of Object.keys(ranges)) {
|
|
354
|
+
const local = dirOf.get(dep);
|
|
355
|
+
if (local) {
|
|
356
|
+
ranges[dep] = `link:${local}`;
|
|
357
|
+
linked.add(local);
|
|
358
|
+
changed = true;
|
|
359
|
+
}
|
|
306
360
|
}
|
|
307
361
|
}
|
|
308
362
|
if (changed)
|
|
@@ -310,6 +364,24 @@ export default class ProjectWriter {
|
|
|
310
364
|
}
|
|
311
365
|
};
|
|
312
366
|
walk(wsDir);
|
|
367
|
+
this.sharePeers(wsDir, linked);
|
|
368
|
+
}
|
|
369
|
+
sharePeers(wsDir, linked) {
|
|
370
|
+
const overrides = new Map();
|
|
371
|
+
for (const dir of linked) {
|
|
372
|
+
const { peerDependencies = {} } = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
|
|
373
|
+
for (const peer of Object.keys(peerDependencies)) {
|
|
374
|
+
const copy = join(dir, 'node_modules', peer);
|
|
375
|
+
if (peer.startsWith('@fougere/') || overrides.has(peer) || !existsSync(copy))
|
|
376
|
+
continue;
|
|
377
|
+
overrides.set(peer, `link:${copy}`);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (overrides.size === 0)
|
|
381
|
+
return;
|
|
382
|
+
const lines = [...overrides].map(([peer, target]) => ` ${peer.includes('/') ? `'${peer}'` : peer}: ${target}`);
|
|
383
|
+
const workspace = join(wsDir, 'pnpm-workspace.yaml');
|
|
384
|
+
writeFileSync(workspace, `${readFileSync(workspace, 'utf8').trimEnd()}\n\noverrides:\n${lines.join('\n')}\n`);
|
|
313
385
|
}
|
|
314
386
|
}
|
|
315
387
|
//# sourceMappingURL=ProjectWriter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectWriter.js","sourceRoot":"","sources":["../../../../fronds/scaffold/services/ProjectWriter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectWriter.js","sourceRoot":"","sources":["../../../../fronds/scaffold/services/ProjectWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Readable, Writable } from 'node:stream';
|
|
2
|
+
import { type Catalog, type Plan } from './Plan.js';
|
|
3
|
+
export interface Composed {
|
|
4
|
+
plan: Plan;
|
|
5
|
+
overwrite: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ComposerOptions {
|
|
8
|
+
name: string;
|
|
9
|
+
catalog: Catalog;
|
|
10
|
+
exists: (name: string) => boolean;
|
|
11
|
+
refusals: (plan: Plan, overwrite: boolean) => string[];
|
|
12
|
+
input?: Readable;
|
|
13
|
+
output?: Writable;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* `fougere new` in three steps — the project, its fronds, its apps — with the tree the plan
|
|
17
|
+
* writes and the command that writes it with no prompt drawn beside every step.
|
|
18
|
+
*
|
|
19
|
+
* ⏎ moves on and ← goes back. In a list, `r` renames the row under the cursor and `+` adds another
|
|
20
|
+
* piece of the same template. Nothing is written here: the answer is a `Plan`, and whether the
|
|
21
|
+
* directory it names may be replaced.
|
|
22
|
+
*
|
|
23
|
+
* Documented: [the CLI](https://fougere.dev/docs/cli).
|
|
24
|
+
*/
|
|
25
|
+
export declare class Composer {
|
|
26
|
+
private options;
|
|
27
|
+
static WIDTH: number;
|
|
28
|
+
private step;
|
|
29
|
+
private rows;
|
|
30
|
+
private name;
|
|
31
|
+
private cursor;
|
|
32
|
+
private editing;
|
|
33
|
+
private asking;
|
|
34
|
+
private overwrite;
|
|
35
|
+
private held;
|
|
36
|
+
private prompt;
|
|
37
|
+
private output;
|
|
38
|
+
constructor(options: ComposerOptions);
|
|
39
|
+
/** What the screen was left on, or `undefined` when it was cancelled. */
|
|
40
|
+
ask(): Promise<Composed | undefined>;
|
|
41
|
+
plan(): Plan;
|
|
42
|
+
frame(columns?: number): string;
|
|
43
|
+
private breadcrumb;
|
|
44
|
+
private body;
|
|
45
|
+
private hint;
|
|
46
|
+
/** The rows of the current step, each with its index among them. */
|
|
47
|
+
private listed;
|
|
48
|
+
private current;
|
|
49
|
+
private go;
|
|
50
|
+
private act;
|
|
51
|
+
private type;
|
|
52
|
+
private edit;
|
|
53
|
+
/** The name is kept, and the step left, only once it can be written. */
|
|
54
|
+
private named;
|
|
55
|
+
private answer;
|
|
56
|
+
private another;
|
|
57
|
+
/** ⏎ that moves the screen on is not the ⏎ that writes: the next one is. */
|
|
58
|
+
private hold;
|
|
59
|
+
private refusal;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=Composer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/composer/Composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,OAAO,EAAE,KAAK,OAAO,EAAa,KAAK,IAAI,EAAqB,MAAM,WAAW,CAAC;AA6BlF,MAAM,WAAW,QAAQ;IAAG,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE;AAE5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC;IACvD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IAcP,OAAO,CAAC,OAAO;IAb3B,MAAM,CAAC,KAAK,SAAM;IAElB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAW;IAEzB,YAAoB,OAAO,EAAE,eAAe,EAiB3C;IAED,yEAAyE;IACnE,GAAG,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAIzC;IAED,IAAI,IAAI,IAAI,CAKX;IAED,KAAK,CAAC,OAAO,SAAsD,GAAG,MAAM,CA8B3E;IAED,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,IAAI;IAkBZ,OAAO,CAAC,IAAI;IASZ,oEAAoE;IACpE,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,EAAE;IAMV,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,IAAI;IAaZ,wEAAwE;IACxE,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,OAAO;IAYf,4EAA4E;IAC5E,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,OAAO;CAiBhB"}
|