@intelligo-dev/cli 1.0.0-beta.13 → 1.0.0-beta.14
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/README.md +41 -2
- package/dist/bin.js +37 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/add.d.ts +4 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +9 -0
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/create-flow.d.ts +4 -1
- package/dist/commands/create-flow.d.ts.map +1 -1
- package/dist/commands/create-flow.js +63 -31
- package/dist/commands/create-flow.js.map +1 -1
- package/dist/commands/create.d.ts +8 -4
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +15 -7
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +21 -19
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/migrate-check.d.ts +20 -1
- package/dist/commands/migrate-check.d.ts.map +1 -1
- package/dist/commands/migrate-check.js +35 -6
- package/dist/commands/migrate-check.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +2 -8
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/sync-messages.d.ts +37 -0
- package/dist/commands/sync-messages.d.ts.map +1 -0
- package/dist/commands/sync-messages.js +88 -0
- package/dist/commands/sync-messages.js.map +1 -0
- package/dist/commands/sync-scaffold.d.ts +36 -0
- package/dist/commands/sync-scaffold.d.ts.map +1 -0
- package/dist/commands/sync-scaffold.js +53 -0
- package/dist/commands/sync-scaffold.js.map +1 -0
- package/dist/commands/sync.d.ts +103 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +361 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/upgrade-check.d.ts.map +1 -1
- package/dist/commands/upgrade-check.js +4 -1
- package/dist/commands/upgrade-check.js.map +1 -1
- package/dist/manifest.d.ts +27 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +30 -3
- package/dist/manifest.js.map +1 -1
- package/dist/module-exports.d.ts +63 -0
- package/dist/module-exports.d.ts.map +1 -0
- package/dist/module-exports.js +231 -0
- package/dist/module-exports.js.map +1 -0
- package/dist/registry-bundle.d.ts +43 -0
- package/dist/registry-bundle.d.ts.map +1 -0
- package/dist/registry-bundle.js +74 -0
- package/dist/registry-bundle.js.map +1 -0
- package/dist/registry-items.d.ts +41 -13
- package/dist/registry-items.d.ts.map +1 -1
- package/dist/registry-items.js +117 -33
- package/dist/registry-items.js.map +1 -1
- package/package.json +1 -1
- package/src/bin.ts +52 -0
- package/src/commands/add.ts +11 -0
- package/src/commands/create-flow.ts +82 -26
- package/src/commands/create.ts +17 -7
- package/src/commands/doctor.ts +27 -27
- package/src/commands/migrate-check.ts +51 -10
- package/src/commands/migrate.ts +2 -8
- package/src/commands/sync-messages.ts +114 -0
- package/src/commands/sync-scaffold.ts +83 -0
- package/src/commands/sync.ts +534 -0
- package/src/commands/upgrade-check.ts +4 -1
- package/src/manifest.ts +57 -3
- package/src/module-exports.ts +266 -0
- package/src/registry-bundle.ts +103 -0
- package/src/registry-items.ts +141 -36
- package/templates/app-scaffold/intelligo.ts.tpl +6 -47
- package/templates/manifest.json +19 -0
- package/templates/registry/ai-agent-activity.json +23 -0
- package/templates/registry/ai-agent-progress.json +21 -0
- package/templates/registry/ai-approval-card.json +27 -0
- package/templates/registry/ai-artifact.json +22 -0
- package/templates/registry/ai-branch.json +21 -0
- package/templates/registry/ai-citations.json +24 -0
- package/templates/registry/ai-code-block.json +23 -0
- package/templates/registry/ai-composer-menu.json +19 -0
- package/templates/registry/ai-file-diff.json +25 -0
- package/templates/registry/ai-image-generation.json +23 -0
- package/templates/registry/ai-markdown.json +23 -0
- package/templates/registry/ai-message-bubble.json +23 -0
- package/templates/registry/ai-message-scroller.json +22 -0
- package/templates/registry/ai-message.json +21 -0
- package/templates/registry/ai-motion.json +19 -0
- package/templates/registry/ai-prompt-input.json +28 -0
- package/templates/registry/ai-reasoning-text.json +22 -0
- package/templates/registry/ai-reasoning.json +22 -0
- package/templates/registry/ai-shimmer-text.json +19 -0
- package/templates/registry/ai-sidebar.json +25 -0
- package/templates/registry/ai-speech-input.json +21 -0
- package/templates/registry/ai-streaming-response.json +24 -0
- package/templates/registry/ai-suggestion.json +19 -0
- package/templates/registry/ai-todo-list.json +22 -0
- package/templates/registry/ai-tool-approval.json +26 -0
- package/templates/registry/ai-tool-result.json +25 -0
- package/templates/registry/alert-dialog.json +23 -0
- package/templates/registry/animated-list.json +21 -0
- package/templates/registry/app-shell.json +93 -0
- package/templates/registry/artifacts.json +82 -0
- package/templates/registry/attachment.json +22 -0
- package/templates/registry/auth-email-verification.json +39 -0
- package/templates/registry/auth-login.json +72 -0
- package/templates/registry/auth-password-reset.json +53 -0
- package/templates/registry/auth-signup.json +41 -0
- package/templates/registry/billing-settings.json +60 -0
- package/templates/registry/button.json +22 -0
- package/templates/registry/chat-eve.json +19 -0
- package/templates/registry/chat-panel.json +30 -0
- package/templates/registry/chat-share.json +42 -0
- package/templates/registry/chat-widget.json +34 -0
- package/templates/registry/chat.json +326 -0
- package/templates/registry/checkbox.json +22 -0
- package/templates/registry/checkout.json +40 -0
- package/templates/registry/collapsible.json +19 -0
- package/templates/registry/command.json +23 -0
- package/templates/registry/copy-button.json +21 -0
- package/templates/registry/dashboard.json +69 -0
- package/templates/registry/dialog.json +24 -0
- package/templates/registry/document-viewer.json +22 -0
- package/templates/registry/dropdown-menu.json +23 -0
- package/templates/registry/expandable-tabs.json +22 -0
- package/templates/registry/feature-gating.json +73 -0
- package/templates/registry/file-upload.json +24 -0
- package/templates/registry/hold-action-button.json +22 -0
- package/templates/registry/input-group.json +23 -0
- package/templates/registry/input.json +19 -0
- package/templates/registry/intelligo.json +187 -0
- package/templates/registry/invitation-accept.json +64 -0
- package/templates/registry/language-switcher.json +29 -0
- package/templates/registry/morphing-modal.json +24 -0
- package/templates/registry/notification-stack.json +24 -0
- package/templates/registry/notifications.json +87 -0
- package/templates/registry/onboarding.json +83 -0
- package/templates/registry/otp-input.json +22 -0
- package/templates/registry/page-header.json +15 -0
- package/templates/registry/payment-poll.json +52 -0
- package/templates/registry/popover-morph.json +22 -0
- package/templates/registry/popover.json +22 -0
- package/templates/registry/pricing.json +111 -0
- package/templates/registry/privacy-settings.json +65 -0
- package/templates/registry/profile-settings.json +68 -0
- package/templates/registry/progress.json +19 -0
- package/templates/registry/radio-group.json +22 -0
- package/templates/registry/registry.json +2945 -0
- package/templates/registry/route-error.json +65 -0
- package/templates/registry/select-morph.json +23 -0
- package/templates/registry/select.json +23 -0
- package/templates/registry/settings-shell.json +47 -0
- package/templates/registry/sheet.json +24 -0
- package/templates/registry/sidebar.json +28 -0
- package/templates/registry/smoke.json +34 -0
- package/templates/registry/spinner.json +16 -0
- package/templates/registry/stat-card.json +18 -0
- package/templates/registry/status-badge.json +18 -0
- package/templates/registry/switch.json +20 -0
- package/templates/registry/tabs.json +23 -0
- package/templates/registry/team-settings.json +97 -0
- package/templates/registry/textarea.json +16 -0
- package/templates/registry/tooltip.json +22 -0
- package/templates/registry/trial-banner.json +43 -0
- package/templates/registry/usage.json +84 -0
- package/templates/registry/workspace-settings.json +71 -0
- package/templates/registry-items.json +1 -1
- package/templates/registry-requires.json +26 -2
- package/templates/vitest/server-only.ts.tpl +7 -0
- package/templates/vitest/vitest.config.ts.tpl +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA0BpD,OAAO,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE,yEAAyE;AACzE,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,MAAM,MAAM,aAAa;AACvB,gCAAgC;AAC9B,SAAS;AACX,sEAAsE;GACpE,UAAU;AACZ,6CAA6C;GAC3C,QAAQ;AACV,8DAA8D;GAC5D,SAAS;AACX,yDAAyD;GACvD,SAAS;AACX,sDAAsD;GACpD,MAAM;AACR,wDAAwD;GACtD,iBAAiB;AACnB,oFAAoF;GAClF,eAAe,CAAC;AAEpB,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAChE,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAWF;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,WAAW,GACnB,aAAa,CAiCf;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,QAAQ,EAAE,gBAAgB,GACzB,MAAM,EAAE,CASV;AAwBD,oEAAoE;AACpE,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,WAAW,GACnB,UAAU,CAmCZ;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAkC3D;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxE;AAsGD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAyHjB"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intelligo sync [items…] [--check] [--force]`
|
|
3
|
+
*
|
|
4
|
+
* Keeps an app's installed registry pages exactly what the framework
|
|
5
|
+
* ships. Installing stays the shadcn CLI's job — every item goes in with
|
|
6
|
+
* `shadcn add <item> --yes --overwrite` — and this command adds what
|
|
7
|
+
* shadcn cannot know:
|
|
8
|
+
*
|
|
9
|
+
* - the version: items come from the registry bundled with this CLI, so
|
|
10
|
+
* they match the `@intelligo-dev/*` packages of the same release;
|
|
11
|
+
* - the order: an item that imports a sibling's files lands after it
|
|
12
|
+
* (requires.json `items`);
|
|
13
|
+
* - the seams: files an item ships once for the deployment to own
|
|
14
|
+
* (requires.json `seams`) are put back after the install, and message
|
|
15
|
+
* files are merged key by key, the app's copy winning;
|
|
16
|
+
* - the record: intelligo.manifest.json keeps each installed file's
|
|
17
|
+
* hash, so `--check` can tell a file edited by hand from one a newer
|
|
18
|
+
* registry replaced. Scaffold files an install replaces (globals.css,
|
|
19
|
+
* the theme provider) leave the `app-scaffold` record for this one,
|
|
20
|
+
* so `upgrade --check` stops calling them customized.
|
|
21
|
+
*
|
|
22
|
+
* `--check` installs nothing and exits 1 when any installed file is
|
|
23
|
+
* missing, edited or behind the registry — the gate CI runs.
|
|
24
|
+
*/
|
|
25
|
+
import { spawn } from "node:child_process";
|
|
26
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
27
|
+
import { createServer } from "node:http";
|
|
28
|
+
import path from "node:path";
|
|
29
|
+
import { emptyManifest, handOver, hashContents, readManifest, writeManifest, } from "../manifest.js";
|
|
30
|
+
import { asInstalled, hasRegistryItem, installedPath, readRegistryItem, registryClosure, } from "../registry-bundle.js";
|
|
31
|
+
import { withDependencies } from "../registry-items.js";
|
|
32
|
+
import { isMessages, localeEntries, mergeMessages, missingMessageKeys, } from "./sync-messages.js";
|
|
33
|
+
import { SCAFFOLD_FEATURE, snapshotScaffold } from "./sync-scaffold.js";
|
|
34
|
+
export { appLocales, mergeMessages, missingMessageKeys, } from "./sync-messages.js";
|
|
35
|
+
export { SCAFFOLD_FEATURE, scaffoldHandover } from "./sync-scaffold.js";
|
|
36
|
+
/** The design-system base: no marker file, installed before any page. */
|
|
37
|
+
export const BASE_ITEM = "intelligo";
|
|
38
|
+
const FAILING = new Set([
|
|
39
|
+
"outdated",
|
|
40
|
+
"edited",
|
|
41
|
+
"differs",
|
|
42
|
+
"missing",
|
|
43
|
+
"messages-behind",
|
|
44
|
+
"locale-behind",
|
|
45
|
+
]);
|
|
46
|
+
/**
|
|
47
|
+
* The items to sync: the ones named, else the ones the manifest
|
|
48
|
+
* recorded. With neither, nothing is guessed — a page at an item's
|
|
49
|
+
* marker path may be the product's own (a custom dashboard), and a sync
|
|
50
|
+
* would replace it — so the message lists what looks installed and asks
|
|
51
|
+
* for names.
|
|
52
|
+
*/
|
|
53
|
+
export function selectItems(names, context) {
|
|
54
|
+
const unknown = names.filter((n) => n === "registry" || !hasRegistryItem(context.registryDir, n));
|
|
55
|
+
if (unknown.length > 0) {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
message: `Unknown registry item(s): ${unknown.join(", ")}. Available: ${[
|
|
59
|
+
BASE_ITEM,
|
|
60
|
+
...Object.keys(context.requires.items),
|
|
61
|
+
].join(", ")}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (names.length > 0)
|
|
65
|
+
return { ok: true, items: [...names] };
|
|
66
|
+
const recorded = readManifest(context.appRoot)?.registry?.items;
|
|
67
|
+
if (recorded && recorded.length > 0)
|
|
68
|
+
return { ok: true, items: recorded };
|
|
69
|
+
const looksInstalled = Object.entries(context.requires.items)
|
|
70
|
+
.filter(([, item]) => existsSync(path.join(context.appRoot, item.marker)))
|
|
71
|
+
.map(([name]) => name);
|
|
72
|
+
return {
|
|
73
|
+
ok: false,
|
|
74
|
+
message: [
|
|
75
|
+
"No synced items are recorded in intelligo.manifest.json yet.",
|
|
76
|
+
"Name the items this app installs from the registry, once:",
|
|
77
|
+
"",
|
|
78
|
+
` intelligo sync ${[BASE_ITEM, ...looksInstalled].join(" ")}`,
|
|
79
|
+
"",
|
|
80
|
+
"(these are the items whose files are present — leave out any whose",
|
|
81
|
+
"path your product uses for a page of its own)",
|
|
82
|
+
].join("\n"),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Blocks in requires.json order, the design-system base first. */
|
|
86
|
+
export function installOrder(items, requires) {
|
|
87
|
+
const blocks = items.filter((n) => n in requires.items);
|
|
88
|
+
const others = items.filter((n) => !(n in requires.items));
|
|
89
|
+
const ordered = withDependencies(blocks, requires);
|
|
90
|
+
return [
|
|
91
|
+
...others.filter((n) => n === BASE_ITEM),
|
|
92
|
+
...others.filter((n) => n !== BASE_ITEM),
|
|
93
|
+
...ordered,
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
function shippedFiles(context, items) {
|
|
97
|
+
const closure = registryClosure(context.registryDir, items);
|
|
98
|
+
const byTarget = new Map();
|
|
99
|
+
for (const name of closure) {
|
|
100
|
+
const item = readRegistryItem(context.registryDir, name);
|
|
101
|
+
for (const file of item.files ?? []) {
|
|
102
|
+
const target = installedPath(item, file);
|
|
103
|
+
if (!target || file.content === undefined)
|
|
104
|
+
continue;
|
|
105
|
+
byTarget.set(target, { item: name, target, content: file.content });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { closure, files: [...byTarget.values()] };
|
|
109
|
+
}
|
|
110
|
+
/** Compare the app against the bundled registry; writes nothing. */
|
|
111
|
+
export function syncCheck(items, context) {
|
|
112
|
+
const { closure, files } = shippedFiles(context, items);
|
|
113
|
+
const seams = context.requires.seams ?? {};
|
|
114
|
+
const recorded = readManifest(context.appRoot)?.registry?.files ?? {};
|
|
115
|
+
const entries = files.map(({ item, target, content }) => {
|
|
116
|
+
const abs = path.join(context.appRoot, target);
|
|
117
|
+
if (!existsSync(abs))
|
|
118
|
+
return { item, path: target, state: "missing" };
|
|
119
|
+
if (target in seams)
|
|
120
|
+
return { item, path: target, state: "seam" };
|
|
121
|
+
const local = readFileSync(abs, "utf8");
|
|
122
|
+
if (isMessages(target)) {
|
|
123
|
+
const missingKeys = missingMessageKeys(JSON.parse(content), JSON.parse(local));
|
|
124
|
+
return missingKeys.length > 0
|
|
125
|
+
? { item, path: target, state: "messages-behind", missingKeys }
|
|
126
|
+
: { item, path: target, state: "current" };
|
|
127
|
+
}
|
|
128
|
+
if (asInstalled(local) === asInstalled(content)) {
|
|
129
|
+
return { item, path: target, state: "current" };
|
|
130
|
+
}
|
|
131
|
+
const hash = recorded[target];
|
|
132
|
+
if (hash === undefined)
|
|
133
|
+
return { item, path: target, state: "differs" };
|
|
134
|
+
return {
|
|
135
|
+
item,
|
|
136
|
+
path: target,
|
|
137
|
+
state: hashContents(asInstalled(local)) === hash ? "outdated" : "edited",
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
entries.push(...localeEntries(context.appRoot, files));
|
|
141
|
+
return { version: context.frameworkVersion, items: closure, entries };
|
|
142
|
+
}
|
|
143
|
+
export function syncCheckExitCode(report) {
|
|
144
|
+
return report.entries.some((e) => FAILING.has(e.state)) ? 1 : 0;
|
|
145
|
+
}
|
|
146
|
+
export function formatSyncReport(report) {
|
|
147
|
+
const counts = new Map();
|
|
148
|
+
for (const e of report.entries) {
|
|
149
|
+
counts.set(e.state, (counts.get(e.state) ?? 0) + 1);
|
|
150
|
+
}
|
|
151
|
+
const lines = [
|
|
152
|
+
`Registry ${report.version}: ${report.items.length} item(s), ${report.entries.length} file(s) — ` +
|
|
153
|
+
[...counts].map(([state, n]) => `${n} ${state}`).join(", "),
|
|
154
|
+
];
|
|
155
|
+
const HINT = {
|
|
156
|
+
outdated: "a newer registry version — `intelligo sync` replaces it",
|
|
157
|
+
edited: "edited by hand — move the change into a seam, or ask for one upstream",
|
|
158
|
+
differs: "not what the registry ships, and never synced",
|
|
159
|
+
missing: "not installed",
|
|
160
|
+
"messages-behind": "lacks registry keys — `intelligo sync` adds them",
|
|
161
|
+
"locale-behind": "lacks keys the app's English copy has — translate them; sync never writes another locale",
|
|
162
|
+
};
|
|
163
|
+
for (const state of FAILING) {
|
|
164
|
+
const group = report.entries.filter((e) => e.state === state);
|
|
165
|
+
if (group.length === 0)
|
|
166
|
+
continue;
|
|
167
|
+
lines.push("", `${state} (${HINT[state]}):`);
|
|
168
|
+
for (const e of group) {
|
|
169
|
+
const keys = e.missingKeys
|
|
170
|
+
? ` — ${e.missingKeys.slice(0, 5).join(", ")}${e.missingKeys.length > 5 ? `, +${e.missingKeys.length - 5}` : ""}`
|
|
171
|
+
: "";
|
|
172
|
+
lines.push(` ${e.path} [${e.item}]${keys}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (!report.entries.some((e) => FAILING.has(e.state))) {
|
|
176
|
+
lines.push("✓ every installed file is the registry's, seams aside");
|
|
177
|
+
}
|
|
178
|
+
return lines.join("\n");
|
|
179
|
+
}
|
|
180
|
+
/** The package version the app resolves for `@intelligo-dev/core`, if any. */
|
|
181
|
+
export function installedFrameworkVersion(appRoot) {
|
|
182
|
+
const manifest = path.join(appRoot, "node_modules", "@intelligo-dev", "core", "package.json");
|
|
183
|
+
if (!existsSync(manifest))
|
|
184
|
+
return null;
|
|
185
|
+
return JSON.parse(readFileSync(manifest, "utf8"))
|
|
186
|
+
.version;
|
|
187
|
+
}
|
|
188
|
+
function serveRegistry(dir) {
|
|
189
|
+
return new Promise((resolve, reject) => {
|
|
190
|
+
const server = createServer((req, res) => {
|
|
191
|
+
const name = decodeURIComponent((req.url ?? "").split("?")[0]).replace(/^\//, "");
|
|
192
|
+
const file = path.join(dir, name);
|
|
193
|
+
if (!/^[a-z0-9-]+\.json$/.test(name) || !existsSync(file)) {
|
|
194
|
+
res.writeHead(404);
|
|
195
|
+
res.end();
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
res.writeHead(200, { "content-type": "application/json" });
|
|
199
|
+
res.end(readFileSync(file));
|
|
200
|
+
});
|
|
201
|
+
server.once("error", reject);
|
|
202
|
+
server.listen(0, "127.0.0.1", () => {
|
|
203
|
+
const { port } = server.address();
|
|
204
|
+
resolve({ server, url: `http://127.0.0.1:${port}` });
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
function run(command, args, cwd) {
|
|
209
|
+
return new Promise((resolve) => {
|
|
210
|
+
const child = spawn(command, args, {
|
|
211
|
+
cwd,
|
|
212
|
+
// pnpm, npx and friends are .cmd shims on Windows.
|
|
213
|
+
shell: process.platform === "win32",
|
|
214
|
+
env: process.env,
|
|
215
|
+
});
|
|
216
|
+
let output = "";
|
|
217
|
+
child.stdout.on("data", (d) => (output += String(d)));
|
|
218
|
+
child.stderr.on("data", (d) => (output += String(d)));
|
|
219
|
+
child.on("close", (code) => resolve({ code: code ?? 1, output }));
|
|
220
|
+
child.on("error", (error) => resolve({ code: 1, output: `${output}${error.message}` }));
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/** Put the kept seams back, and merge kept messages over the registry's. */
|
|
224
|
+
function restoreKept(appRoot, kept, shipped) {
|
|
225
|
+
for (const [target, content] of kept) {
|
|
226
|
+
const abs = path.join(appRoot, target);
|
|
227
|
+
mkdirSync(path.dirname(abs), { recursive: true });
|
|
228
|
+
if (isMessages(target) && shipped.has(target)) {
|
|
229
|
+
const merged = mergeMessages(JSON.parse(shipped.get(target)), JSON.parse(content));
|
|
230
|
+
writeFileSync(abs, `${JSON.stringify(merged, null, 2)}\n`);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
writeFileSync(abs, content);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Write the synced items and each installed file's hash (seams and
|
|
239
|
+
* message files aside) into the manifest.
|
|
240
|
+
*/
|
|
241
|
+
function recordSync(context, names, after, { manifest }) {
|
|
242
|
+
const files = {};
|
|
243
|
+
for (const e of after.entries) {
|
|
244
|
+
if (e.state === "seam" || e.state === "missing" || isMessages(e.path)) {
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
files[e.path] = hashContents(asInstalled(readFileSync(path.join(context.appRoot, e.path), "utf8")));
|
|
248
|
+
}
|
|
249
|
+
const recordedItems = new Set([
|
|
250
|
+
...(manifest.registry?.items ?? []),
|
|
251
|
+
...names,
|
|
252
|
+
]);
|
|
253
|
+
writeManifest(context.appRoot, {
|
|
254
|
+
...manifest,
|
|
255
|
+
registry: {
|
|
256
|
+
version: context.frameworkVersion,
|
|
257
|
+
items: installOrder([...recordedItems], context.requires),
|
|
258
|
+
files: { ...manifest.registry?.files, ...files },
|
|
259
|
+
},
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Install `items` from the bundled registry, keep the seams, merge the
|
|
264
|
+
* messages and record what was written. Refuses to overwrite a file
|
|
265
|
+
* edited by hand unless `force` — the edit belongs in a seam, and the
|
|
266
|
+
* refusal says which files.
|
|
267
|
+
*/
|
|
268
|
+
export async function syncApply(names, context, options = {}) {
|
|
269
|
+
const log = options.log ?? console.log;
|
|
270
|
+
const { appRoot } = context;
|
|
271
|
+
const shadcn = path.join(appRoot, "node_modules", ".bin", "shadcn");
|
|
272
|
+
if (!existsSync(shadcn)) {
|
|
273
|
+
log("shadcn is not installed in this app — add it as a devDependency (the scaffold declares it) and install.");
|
|
274
|
+
return 1;
|
|
275
|
+
}
|
|
276
|
+
const componentsPath = path.join(appRoot, "components.json");
|
|
277
|
+
if (!existsSync(componentsPath)) {
|
|
278
|
+
log("No components.json — run from the app's root.");
|
|
279
|
+
return 1;
|
|
280
|
+
}
|
|
281
|
+
const items = installOrder(names, context.requires);
|
|
282
|
+
const before = syncCheck(items, context);
|
|
283
|
+
const shippedTargets = new Set(shippedFiles(context, items).files.map((f) => f.target));
|
|
284
|
+
const edited = before.entries.filter((e) => e.state === "edited" || e.state === "differs");
|
|
285
|
+
if (edited.length > 0 && !options.force) {
|
|
286
|
+
log([
|
|
287
|
+
`${edited.length} installed file(s) differ from the registry and would be overwritten:`,
|
|
288
|
+
...edited.map((e) => ` ${e.path} [${e.item}]`),
|
|
289
|
+
"",
|
|
290
|
+
"Move what the change does into a seam (lib/*-config, messages/), then re-run",
|
|
291
|
+
"with --force to replace these files with the registry's.",
|
|
292
|
+
].join("\n"));
|
|
293
|
+
return 1;
|
|
294
|
+
}
|
|
295
|
+
// What the install must not lose: the app's seams and message files.
|
|
296
|
+
const seams = context.requires.seams ?? {};
|
|
297
|
+
const kept = new Map();
|
|
298
|
+
for (const e of before.entries) {
|
|
299
|
+
if (e.state === "missing" || !shippedTargets.has(e.path))
|
|
300
|
+
continue;
|
|
301
|
+
if (e.path in seams || isMessages(e.path)) {
|
|
302
|
+
kept.set(e.path, readFileSync(path.join(appRoot, e.path), "utf8"));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
const componentsBefore = JSON.parse(readFileSync(componentsPath, "utf8"));
|
|
306
|
+
// The scaffold's files as they are now, to see which the install replaces.
|
|
307
|
+
const scaffold = snapshotScaffold(appRoot);
|
|
308
|
+
const originalRegistry = componentsBefore.registries?.["@intelligo"];
|
|
309
|
+
const { server, url } = await serveRegistry(context.registryDir);
|
|
310
|
+
const setRegistry = (value) => {
|
|
311
|
+
// Read fresh: the base item rewrites components.json's style fields,
|
|
312
|
+
// and those changes are the point — only the registry URL is ours.
|
|
313
|
+
const current = JSON.parse(readFileSync(componentsPath, "utf8"));
|
|
314
|
+
const registries = { ...current.registries };
|
|
315
|
+
if (value === undefined)
|
|
316
|
+
delete registries["@intelligo"];
|
|
317
|
+
else
|
|
318
|
+
registries["@intelligo"] = value;
|
|
319
|
+
const next = { ...current, registries };
|
|
320
|
+
if (Object.keys(registries).length === 0)
|
|
321
|
+
delete next.registries;
|
|
322
|
+
writeFileSync(componentsPath, `${JSON.stringify(next, null, 2)}\n`);
|
|
323
|
+
};
|
|
324
|
+
let failed = null;
|
|
325
|
+
try {
|
|
326
|
+
setRegistry(`${url}/{name}.json`);
|
|
327
|
+
for (const item of items) {
|
|
328
|
+
log(`› shadcn add ${item}`);
|
|
329
|
+
const result = await run(shadcn, ["add", `${url}/${item}.json`, "--yes", "--overwrite"], appRoot);
|
|
330
|
+
if (result.code !== 0) {
|
|
331
|
+
failed = { item, output: result.output };
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
finally {
|
|
337
|
+
setRegistry(originalRegistry);
|
|
338
|
+
server.close();
|
|
339
|
+
}
|
|
340
|
+
// Seams back as they were; messages merged over the registry's.
|
|
341
|
+
const shipped = new Map(shippedFiles(context, items).files.map((f) => [f.target, f.content]));
|
|
342
|
+
restoreKept(appRoot, kept, shipped);
|
|
343
|
+
if (failed) {
|
|
344
|
+
log(`shadcn add ${failed.item} failed:\n${failed.output.trim().split("\n").slice(-20).join("\n")}`);
|
|
345
|
+
return 1;
|
|
346
|
+
}
|
|
347
|
+
// Record what is on disk now, so the next check can tell an edit.
|
|
348
|
+
const after = syncCheck(items, context);
|
|
349
|
+
recordSync(context, names, after, {
|
|
350
|
+
manifest: handOver(readManifest(appRoot) ?? emptyManifest(context.frameworkVersion), SCAFFOLD_FEATURE, scaffold.handedOver({
|
|
351
|
+
shipped: new Set(shipped.keys()),
|
|
352
|
+
seams,
|
|
353
|
+
css: items.includes(BASE_ITEM)
|
|
354
|
+
? (componentsBefore.tailwind?.css ?? null)
|
|
355
|
+
: null,
|
|
356
|
+
})),
|
|
357
|
+
});
|
|
358
|
+
log(formatSyncReport(after));
|
|
359
|
+
return syncCheckExitCode(after);
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-check.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade-check.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;CAC/E,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"upgrade-check.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade-check.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;CAC/E,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAqExE;AAaD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CA2B5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAE7D"}
|
|
@@ -27,7 +27,10 @@ export function upgradeCheck(options) {
|
|
|
27
27
|
if (spec)
|
|
28
28
|
report.templateVersion[feature] = spec.templateVersion;
|
|
29
29
|
const targetToTemplate = new Map((spec?.files ?? []).map((f) => [f.target, f.template]));
|
|
30
|
-
for (const target of newFiles(spec,
|
|
30
|
+
for (const target of newFiles(spec, [
|
|
31
|
+
...entry.files,
|
|
32
|
+
...(entry.handedOver ?? []).map((handed) => ({ path: handed })),
|
|
33
|
+
])) {
|
|
31
34
|
report.items.push({ feature, path: target, state: "new" });
|
|
32
35
|
}
|
|
33
36
|
for (const file of entry.files) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-check.js","sourceRoot":"","sources":["../../src/commands/upgrade-check.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AA4B3E,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,MAAM,QAAQ,GAAoB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,MAAM,GAAkB;QAC5B,gBAAgB,EAAE,EAAE;QACpB,eAAe,EAAE,EAAE;QACnB,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;QACzD,IAAI,IAAI;YAAE,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAEjE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CACvD,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"upgrade-check.js","sourceRoot":"","sources":["../../src/commands/upgrade-check.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -32,11 +32,33 @@ export type FeatureEntry = {
|
|
|
32
32
|
* would make every substituted file look permanently outdated.
|
|
33
33
|
*/
|
|
34
34
|
variables?: Record<string, string>;
|
|
35
|
+
/**
|
|
36
|
+
* Files this feature wrote that a registry install has since replaced
|
|
37
|
+
* (the scaffold's globals.css once the design-system base lands):
|
|
38
|
+
* `intelligo sync` owns them now, so `upgrade --check` neither
|
|
39
|
+
* compares them nor offers them as new, and `add` does not write them
|
|
40
|
+
* back.
|
|
41
|
+
*/
|
|
42
|
+
handedOver?: string[];
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Registry items `intelligo sync` installed: which items the app keeps
|
|
46
|
+
* in sync, the framework version they came from, and — per installed
|
|
47
|
+
* file that is not a seam or a message file — the hash of the file as
|
|
48
|
+
* written (after shadcn's normalisation, see `asInstalled`). A file
|
|
49
|
+
* whose hash still matches was not edited since, so a newer registry
|
|
50
|
+
* may replace it; one that differs was edited by hand.
|
|
51
|
+
*/
|
|
52
|
+
export type RegistryEntry = {
|
|
53
|
+
version: string;
|
|
54
|
+
items: string[];
|
|
55
|
+
files: Record<string, string>;
|
|
35
56
|
};
|
|
36
57
|
export type Manifest = {
|
|
37
58
|
schemaVersion: 1;
|
|
38
59
|
frameworkVersion: string;
|
|
39
60
|
features: Record<string, FeatureEntry>;
|
|
61
|
+
registry?: RegistryEntry;
|
|
40
62
|
};
|
|
41
63
|
export declare function hashContents(contents: string): string;
|
|
42
64
|
export declare function emptyManifest(frameworkVersion: string): Manifest;
|
|
@@ -49,4 +71,9 @@ export declare function writeManifest(appRoot: string, manifest: Manifest): void
|
|
|
49
71
|
* actually on disk.
|
|
50
72
|
*/
|
|
51
73
|
export declare function recordFeature(manifest: Manifest, feature: string, templateVersion: string, files: GeneratedFile[], variables?: Record<string, string>): Manifest;
|
|
74
|
+
/**
|
|
75
|
+
* Move `paths` out of a feature's generated files into its `handedOver`
|
|
76
|
+
* list. A no-op for a feature the manifest does not record.
|
|
77
|
+
*/
|
|
78
|
+
export declare function handOver(manifest: Manifest, feature: string, paths: readonly string[]): Manifest;
|
|
52
79
|
//# sourceMappingURL=manifest.d.ts.map
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,eAAO,MAAM,aAAa,4BAA4B,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC1B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,eAAO,MAAM,aAAa,4BAA4B,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC1B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,aAAa,EAAE,CAAC,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAEhE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAI7D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAKvE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,aAAa,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,QAAQ,CAcV;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,QAAQ,CAiBV"}
|
package/dist/manifest.js
CHANGED
|
@@ -41,13 +41,40 @@ export function writeManifest(appRoot, manifest) {
|
|
|
41
41
|
* actually on disk.
|
|
42
42
|
*/
|
|
43
43
|
export function recordFeature(manifest, feature, templateVersion, files, variables) {
|
|
44
|
+
const handedOver = manifest.features[feature]?.handedOver;
|
|
44
45
|
return {
|
|
45
46
|
...manifest,
|
|
46
47
|
features: {
|
|
47
48
|
...manifest.features,
|
|
48
|
-
[feature]:
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
[feature]: {
|
|
50
|
+
templateVersion,
|
|
51
|
+
files,
|
|
52
|
+
...(variables ? { variables } : {}),
|
|
53
|
+
...(handedOver?.length ? { handedOver } : {}),
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Move `paths` out of a feature's generated files into its `handedOver`
|
|
60
|
+
* list. A no-op for a feature the manifest does not record.
|
|
61
|
+
*/
|
|
62
|
+
export function handOver(manifest, feature, paths) {
|
|
63
|
+
const entry = manifest.features[feature];
|
|
64
|
+
if (!entry || paths.length === 0)
|
|
65
|
+
return manifest;
|
|
66
|
+
const moved = new Set(paths);
|
|
67
|
+
return {
|
|
68
|
+
...manifest,
|
|
69
|
+
features: {
|
|
70
|
+
...manifest.features,
|
|
71
|
+
[feature]: {
|
|
72
|
+
...entry,
|
|
73
|
+
files: entry.files.filter((f) => !moved.has(f.path)),
|
|
74
|
+
handedOver: [
|
|
75
|
+
...new Set([...(entry.handedOver ?? []), ...paths]),
|
|
76
|
+
].sort(),
|
|
77
|
+
},
|
|
51
78
|
},
|
|
52
79
|
};
|
|
53
80
|
}
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAkDvD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,gBAAwB;IACpD,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAa,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAkB;IAC/D,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACzC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAkB,EAClB,OAAe,EACf,eAAuB,EACvB,KAAsB,EACtB,SAAkC;IAElC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC1D,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE;YACR,GAAG,QAAQ,CAAC,QAAQ;YACpB,CAAC,OAAO,CAAC,EAAE;gBACT,eAAe;gBACf,KAAK;gBACL,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9C;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,QAAkB,EAClB,OAAe,EACf,KAAwB;IAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE;YACR,GAAG,QAAQ,CAAC,QAAQ;YACpB,CAAC,OAAO,CAAC,EAAE;gBACT,GAAG,KAAK;gBACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpD,UAAU,EAAE;oBACV,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;iBACpD,CAAC,IAAI,EAAE;aACT;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a TypeScript module exports, read from its text — enough for
|
|
3
|
+
* `doctor` to confirm an app provides the names an installed item
|
|
4
|
+
* imports, without compiling or running the app.
|
|
5
|
+
*
|
|
6
|
+
* It understands declarations (`export const|function|class|type|
|
|
7
|
+
* interface|enum …`), export lists with aliases (`export { a as b }`),
|
|
8
|
+
* re-exports (`export { x } from "…"`, `export * from "…"`) and the
|
|
9
|
+
* imports a bare export list re-exports. Modules are resolved the way
|
|
10
|
+
* the app would: relative paths, the `@/` alias, and packages through
|
|
11
|
+
* node resolution from the app's root (a workspace package included).
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Block and line comments removed, so a check cannot be satisfied — or
|
|
15
|
+
* defeated — by prose.
|
|
16
|
+
*/
|
|
17
|
+
export declare function stripComments(text: string): string;
|
|
18
|
+
export declare function escapeRegExp(text: string): string;
|
|
19
|
+
export type ModuleShape = {
|
|
20
|
+
/** Names exported by this module itself, or re-exported by name. */
|
|
21
|
+
names: Set<string>;
|
|
22
|
+
/** Exported name → the module it is re-exported from, when it is. */
|
|
23
|
+
reexports: Map<string, string>;
|
|
24
|
+
/** `export * from "…"` specifiers. */
|
|
25
|
+
stars: string[];
|
|
26
|
+
/** Local name → the module it was imported from. */
|
|
27
|
+
imports: Map<string, string>;
|
|
28
|
+
};
|
|
29
|
+
/** The shape of a module's text; comments are stripped first. */
|
|
30
|
+
export declare function moduleShape(source: string): ModuleShape;
|
|
31
|
+
/**
|
|
32
|
+
* The file a module specifier leads to from `fromFile`, or null when it
|
|
33
|
+
* cannot be found: relative, the `@/` alias, then node resolution from
|
|
34
|
+
* the app's root.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveModule(specifier: string, fromFile: string, appRoot: string): string | null;
|
|
37
|
+
export type ExportCheck = {
|
|
38
|
+
/** Names the module provably does not export. */
|
|
39
|
+
missing: string[];
|
|
40
|
+
/**
|
|
41
|
+
* `export * from` specifiers that could not be read: the names not
|
|
42
|
+
* found elsewhere are assumed to come from them.
|
|
43
|
+
*/
|
|
44
|
+
unresolved: string[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Which of `names` the module at `file` does not export, following
|
|
48
|
+
* `export * from` into the modules it can resolve.
|
|
49
|
+
*/
|
|
50
|
+
export declare function checkExports(file: string, names: readonly string[], appRoot: string, seen?: Set<string>): ExportCheck;
|
|
51
|
+
/**
|
|
52
|
+
* The text of a module and of every module it re-exports from —
|
|
53
|
+
* `export … from`, `export * from`, and imports a bare export list
|
|
54
|
+
* passes on — comments stripped. What a `lib/plans.ts` that re-exports
|
|
55
|
+
* a workspace package's catalogue actually defines.
|
|
56
|
+
*/
|
|
57
|
+
export declare function reexportedSource(file: string, appRoot: string, depth?: number): {
|
|
58
|
+
text: string;
|
|
59
|
+
unresolved: string[];
|
|
60
|
+
};
|
|
61
|
+
/** An object key `key:` or `"key":`, not a longer identifier ending in it. */
|
|
62
|
+
export declare function hasObjectKey(text: string, key: string): boolean;
|
|
63
|
+
//# sourceMappingURL=module-exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-exports.d.ts","sourceRoot":"","sources":["../src/module-exports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,oEAAoE;IACpE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,qEAAqE;IACrE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,sCAAsC;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oDAAoD;IACpD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAuBF,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA8BvD;AAmED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAiBf;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,WAAW,CAoBb;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,SAAI,GACR;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAmBxC;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/D"}
|