trix-ui 0.2.7 → 0.2.9
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/__tests__/contracts/registry.test.d.ts +1 -0
- package/dist/__tests__/contracts/registry.test.js +42 -0
- package/dist/__tests__/contracts/registry.test.js.map +1 -0
- package/dist/__tests__/e2e/cli.test.d.ts +1 -0
- package/dist/__tests__/e2e/cli.test.js +67 -0
- package/dist/__tests__/e2e/cli.test.js.map +1 -0
- package/dist/__tests__/helpers/fs.d.ts +5 -0
- package/dist/__tests__/helpers/fs.js +26 -0
- package/dist/__tests__/helpers/fs.js.map +1 -0
- package/dist/__tests__/integration/commands.integration.test.d.ts +1 -0
- package/dist/__tests__/integration/commands.integration.test.js +184 -0
- package/dist/__tests__/integration/commands.integration.test.js.map +1 -0
- package/dist/commands/__tests__/add-composite.test.d.ts +2 -0
- package/dist/commands/__tests__/add-composite.test.js +171 -0
- package/dist/commands/__tests__/add-composite.test.js.map +1 -0
- package/dist/commands/__tests__/add-entry.mocks.d.ts +23 -0
- package/dist/commands/__tests__/add-entry.mocks.js +64 -0
- package/dist/commands/__tests__/add-entry.mocks.js.map +1 -0
- package/dist/commands/__tests__/add-section.test.d.ts +2 -0
- package/dist/commands/__tests__/add-section.test.js +191 -0
- package/dist/commands/__tests__/add-section.test.js.map +1 -0
- package/dist/commands/__tests__/add-wrapper.test.d.ts +2 -0
- package/dist/commands/__tests__/add-wrapper.test.js +171 -0
- package/dist/commands/__tests__/add-wrapper.test.js.map +1 -0
- package/dist/commands/__tests__/cli-mocks.d.ts +1 -0
- package/dist/commands/__tests__/cli-mocks.js +24 -0
- package/dist/commands/__tests__/cli-mocks.js.map +1 -0
- package/dist/commands/__tests__/doctor.mocks.d.ts +6 -0
- package/dist/commands/__tests__/doctor.mocks.js +20 -0
- package/dist/commands/__tests__/doctor.mocks.js.map +1 -0
- package/dist/commands/__tests__/doctor.test.d.ts +2 -0
- package/dist/commands/__tests__/doctor.test.js +80 -0
- package/dist/commands/__tests__/doctor.test.js.map +1 -0
- package/dist/commands/__tests__/list.mocks.d.ts +8 -0
- package/dist/commands/__tests__/list.mocks.js +20 -0
- package/dist/commands/__tests__/list.mocks.js.map +1 -0
- package/dist/commands/__tests__/list.test.d.ts +2 -0
- package/dist/commands/__tests__/list.test.js +60 -0
- package/dist/commands/__tests__/list.test.js.map +1 -0
- package/dist/commands/__tests__/remove.mocks.d.ts +9 -0
- package/dist/commands/__tests__/remove.mocks.js +26 -0
- package/dist/commands/__tests__/remove.mocks.js.map +1 -0
- package/dist/commands/__tests__/remove.test.d.ts +2 -0
- package/dist/commands/__tests__/remove.test.js +116 -0
- package/dist/commands/__tests__/remove.test.js.map +1 -0
- package/dist/commands/add/__tests__/add.mocks.d.ts +19 -19
- package/dist/commands/add/__tests__/add.mocks.js +59 -59
- package/dist/commands/add/__tests__/add.test.d.ts +2 -2
- package/dist/commands/add/__tests__/add.test.js +140 -140
- package/dist/commands/add/analysis.d.ts +4 -4
- package/dist/commands/add/analysis.js +56 -56
- package/dist/commands/add/command.d.ts +2 -2
- package/dist/commands/add/command.js +202 -202
- package/dist/commands/add/config.d.ts +2 -2
- package/dist/commands/add/config.js +11 -11
- package/dist/commands/add/install.d.ts +27 -27
- package/dist/commands/add/install.js +80 -80
- package/dist/commands/add/package-manager.d.ts +1 -1
- package/dist/commands/add/package-manager.js +4 -4
- package/dist/commands/add/project-files.d.ts +2 -2
- package/dist/commands/add/project-files.js +17 -17
- package/dist/commands/add/prompts.d.ts +3 -3
- package/dist/commands/add/prompts.js +28 -28
- package/dist/commands/add/registry.d.ts +4 -4
- package/dist/commands/add/registry.js +6 -6
- package/dist/commands/add/types.d.ts +33 -33
- package/dist/commands/add/types.js +1 -1
- package/dist/commands/add/ui.d.ts +4 -4
- package/dist/commands/add/ui.js +55 -55
- package/dist/commands/add/validation.d.ts +3 -3
- package/dist/commands/add/validation.js +30 -30
- package/dist/commands/add-collection.d.ts +1 -1
- package/dist/commands/add-collection.js +1 -1
- package/dist/commands/add-composite.d.ts +2 -2
- package/dist/commands/add-composite.js +201 -201
- package/dist/commands/add-section.d.ts +2 -2
- package/dist/commands/add-section.js +201 -201
- package/dist/commands/add-wrapper.d.ts +2 -2
- package/dist/commands/add-wrapper.js +201 -201
- package/dist/commands/add.d.ts +1 -1
- package/dist/commands/add.js +1 -1
- package/dist/commands/build.d.ts +2 -2
- package/dist/commands/doctor.d.ts +2 -2
- package/dist/commands/doctor.js +67 -67
- package/dist/commands/init/__tests__/init.mocks.d.ts +24 -0
- package/dist/commands/init/__tests__/init.mocks.js +84 -0
- package/dist/commands/init/__tests__/init.mocks.js.map +1 -0
- package/dist/commands/init/__tests__/init.test.d.ts +2 -0
- package/dist/commands/init/__tests__/init.test.js +283 -0
- package/dist/commands/init/__tests__/init.test.js.map +1 -0
- package/dist/commands/init/__tests__/tailwind.test.d.ts +1 -0
- package/dist/commands/init/__tests__/tailwind.test.js +56 -0
- package/dist/commands/init/__tests__/tailwind.test.js.map +1 -0
- package/dist/commands/init/__tests__/tsconfig.test.d.ts +1 -0
- package/dist/commands/init/__tests__/tsconfig.test.js +108 -0
- package/dist/commands/init/__tests__/tsconfig.test.js.map +1 -0
- package/dist/commands/init/__tests__/vite.test.d.ts +1 -0
- package/dist/commands/init/__tests__/vite.test.js +66 -0
- package/dist/commands/init/__tests__/vite.test.js.map +1 -0
- package/dist/commands/init/command.d.ts +2 -2
- package/dist/commands/init/command.js +114 -114
- package/dist/commands/init/config.d.ts +2 -2
- package/dist/commands/init/config.js +25 -25
- package/dist/commands/init/constants.d.ts +3 -3
- package/dist/commands/init/constants.js +105 -105
- package/dist/commands/init/dependencies.d.ts +5 -5
- package/dist/commands/init/dependencies.js +52 -52
- package/dist/commands/init/filesystem.d.ts +1 -1
- package/dist/commands/init/filesystem.js +10 -10
- package/dist/commands/init/lockfile.d.ts +1 -1
- package/dist/commands/init/lockfile.js +1 -1
- package/dist/commands/init/package-json.d.ts +6 -6
- package/dist/commands/init/package-json.js +18 -18
- package/dist/commands/init/project-files.d.ts +8 -0
- package/dist/commands/init/project-files.js +37 -0
- package/dist/commands/init/project-files.js.map +1 -0
- package/dist/commands/init/project.d.ts +3 -3
- package/dist/commands/init/project.js +97 -97
- package/dist/commands/init/style-imports.d.ts +9 -0
- package/dist/commands/init/style-imports.js +218 -0
- package/dist/commands/init/style-imports.js.map +1 -0
- package/dist/commands/init/tailwind.d.ts +3 -3
- package/dist/commands/init/tailwind.js +34 -34
- package/dist/commands/init/templates.d.ts +3 -3
- package/dist/commands/init/templates.js +15 -15
- package/dist/commands/init/tsconfig.d.ts +2 -2
- package/dist/commands/init/tsconfig.js +273 -273
- package/dist/commands/init/types.d.ts +33 -33
- package/dist/commands/init/types.js +1 -1
- package/dist/commands/init/ui.d.ts +3 -3
- package/dist/commands/init/ui.js +33 -33
- package/dist/commands/init/vite.d.ts +23 -0
- package/dist/commands/init/vite.js +347 -0
- package/dist/commands/init/vite.js.map +1 -0
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/list.d.ts +2 -2
- package/dist/commands/list.js +62 -62
- package/dist/commands/remove.d.ts +2 -2
- package/dist/commands/remove.js +93 -93
- package/dist/commands/shared/add-collection.d.ts +50 -50
- package/dist/commands/shared/add-collection.js +206 -206
- package/dist/commands/shared/list-entries.d.ts +6 -6
- package/dist/commands/shared/list-entries.js +12 -12
- package/dist/commands/shared/name-utils.d.ts +1 -1
- package/dist/commands/shared/name-utils.js +13 -13
- package/dist/commands/shared/remove-entries.d.ts +16 -16
- package/dist/commands/shared/remove-entries.js +41 -41
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.js +1 -1
- package/dist/icons/libraries.d.ts +37 -37
- package/dist/icons/libraries.js +34 -34
- package/dist/index.d.ts +2 -2
- package/dist/index.js +30 -30
- package/dist/lib/__tests__/config.test.d.ts +1 -0
- package/dist/lib/__tests__/config.test.js +49 -0
- package/dist/lib/__tests__/config.test.js.map +1 -0
- package/dist/lib/__tests__/install.test.d.ts +1 -0
- package/dist/lib/__tests__/install.test.js +149 -0
- package/dist/lib/__tests__/install.test.js.map +1 -0
- package/dist/lib/__tests__/lockfile.test.d.ts +1 -0
- package/dist/lib/__tests__/lockfile.test.js +89 -0
- package/dist/lib/__tests__/lockfile.test.js.map +1 -0
- package/dist/lib/__tests__/paths.test.d.ts +1 -0
- package/dist/lib/__tests__/paths.test.js +39 -0
- package/dist/lib/__tests__/paths.test.js.map +1 -0
- package/dist/lib/__tests__/registry.test.d.ts +1 -0
- package/dist/lib/__tests__/registry.test.js +76 -0
- package/dist/lib/__tests__/registry.test.js.map +1 -0
- package/dist/lib/config.d.ts +45 -45
- package/dist/lib/config.js +97 -97
- package/dist/lib/fs.d.ts +76 -76
- package/dist/lib/fs.js +302 -302
- package/dist/lib/highlighter.d.ts +6 -6
- package/dist/lib/highlighter.js +7 -7
- package/dist/lib/install.d.ts +19 -19
- package/dist/lib/install.js +55 -55
- package/dist/lib/lockfile.d.ts +63 -63
- package/dist/lib/lockfile.js +173 -173
- package/dist/lib/logger.d.ts +8 -8
- package/dist/lib/logger.js +41 -41
- package/dist/lib/paths.d.ts +14 -14
- package/dist/lib/paths.js +31 -31
- package/dist/lib/registry.d.ts +35 -35
- package/dist/lib/registry.js +180 -180
- package/dist/schema/index.d.ts +1128 -1128
- package/dist/schema/index.js +238 -238
- package/dist/styles/create-style-map.d.ts +4 -4
- package/dist/styles/create-style-map.js +68 -68
- package/dist/styles/transform-style-map.d.ts +3 -3
- package/dist/styles/transform-style-map.js +428 -428
- package/dist/styles/transform.d.ts +10 -10
- package/dist/styles/transform.js +15 -15
- package/dist/utils/index.d.ts +6 -6
- package/dist/utils/index.js +5 -5
- package/dist/utils/transformers/transform-icons.d.ts +2 -2
- package/dist/utils/transformers/transform-icons.js +164 -164
- package/dist/utils/transformers/transform-menu.d.ts +2 -2
- package/dist/utils/transformers/transform-menu.js +39 -39
- package/dist/utils/transformers/transform-render.d.ts +2 -2
- package/dist/utils/transformers/transform-render.js +97 -97
- package/dist/utils/transformers/types.d.ts +14 -14
- package/dist/utils/transformers/types.js +1 -1
- package/package.json +68 -68
- package/templates/lib/utils.js +7 -0
- package/templates/styles/globals.css +85 -67
package/dist/commands/list.js
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { getRegistryComposites, getRegistrySections, getRegistryWrappers, loadBundledRegistry } from "../lib/registry.js";
|
|
4
|
-
function printGroup(title, entries) {
|
|
5
|
-
const count = entries.length;
|
|
6
|
-
console.log(`${chalk.bold(title)} ${chalk.gray(`(${count})`)}`);
|
|
7
|
-
if (count === 0) {
|
|
8
|
-
console.log(chalk.gray(" (none)"));
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
for (const entry of entries) {
|
|
12
|
-
console.log(` - ${chalk.cyan(entry.name)} ${chalk.gray("-")} ${entry.description}`);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export const listCommand = new Command("list")
|
|
16
|
-
.description("List available components, sections, wrappers, and composites in the registry")
|
|
17
|
-
.option("-t, --type <type>", "filter by type: components, sections, wrappers, composites, or all", "all")
|
|
18
|
-
.action(async () => {
|
|
19
|
-
try {
|
|
20
|
-
const registry = await loadBundledRegistry();
|
|
21
|
-
const sections = getRegistrySections(registry);
|
|
22
|
-
const wrappers = getRegistryWrappers(registry);
|
|
23
|
-
const composites = getRegistryComposites(registry);
|
|
24
|
-
const type = String(listCommand.opts().type || "all").toLowerCase();
|
|
25
|
-
const filter = type;
|
|
26
|
-
if (filter !== "components" &&
|
|
27
|
-
filter !== "sections" &&
|
|
28
|
-
filter !== "wrappers" &&
|
|
29
|
-
filter !== "composites" &&
|
|
30
|
-
filter !== "all") {
|
|
31
|
-
console.error(`Invalid type: ${type}. Use components, sections, wrappers, composites, or all.`);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
console.log(chalk.bold("Registry Catalog"));
|
|
35
|
-
console.log(chalk.gray("--------------------------------------------------"));
|
|
36
|
-
if (filter === "components" || filter === "all") {
|
|
37
|
-
printGroup("Components", registry.components);
|
|
38
|
-
if (filter === "all") {
|
|
39
|
-
console.log();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (filter === "sections" || filter === "all") {
|
|
43
|
-
printGroup("Sections", sections);
|
|
44
|
-
if (filter === "all") {
|
|
45
|
-
console.log();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (filter === "wrappers" || filter === "all") {
|
|
49
|
-
printGroup("Wrappers", wrappers);
|
|
50
|
-
if (filter === "all") {
|
|
51
|
-
console.log();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (filter === "composites" || filter === "all") {
|
|
55
|
-
printGroup("Composites", composites);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
console.error(error.message);
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { getRegistryComposites, getRegistrySections, getRegistryWrappers, loadBundledRegistry } from "../lib/registry.js";
|
|
4
|
+
function printGroup(title, entries) {
|
|
5
|
+
const count = entries.length;
|
|
6
|
+
console.log(`${chalk.bold(title)} ${chalk.gray(`(${count})`)}`);
|
|
7
|
+
if (count === 0) {
|
|
8
|
+
console.log(chalk.gray(" (none)"));
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
for (const entry of entries) {
|
|
12
|
+
console.log(` - ${chalk.cyan(entry.name)} ${chalk.gray("-")} ${entry.description}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export const listCommand = new Command("list")
|
|
16
|
+
.description("List available components, sections, wrappers, and composites in the registry")
|
|
17
|
+
.option("-t, --type <type>", "filter by type: components, sections, wrappers, composites, or all", "all")
|
|
18
|
+
.action(async () => {
|
|
19
|
+
try {
|
|
20
|
+
const registry = await loadBundledRegistry();
|
|
21
|
+
const sections = getRegistrySections(registry);
|
|
22
|
+
const wrappers = getRegistryWrappers(registry);
|
|
23
|
+
const composites = getRegistryComposites(registry);
|
|
24
|
+
const type = String(listCommand.opts().type || "all").toLowerCase();
|
|
25
|
+
const filter = type;
|
|
26
|
+
if (filter !== "components" &&
|
|
27
|
+
filter !== "sections" &&
|
|
28
|
+
filter !== "wrappers" &&
|
|
29
|
+
filter !== "composites" &&
|
|
30
|
+
filter !== "all") {
|
|
31
|
+
console.error(`Invalid type: ${type}. Use components, sections, wrappers, composites, or all.`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
console.log(chalk.bold("Registry Catalog"));
|
|
35
|
+
console.log(chalk.gray("--------------------------------------------------"));
|
|
36
|
+
if (filter === "components" || filter === "all") {
|
|
37
|
+
printGroup("Components", registry.components);
|
|
38
|
+
if (filter === "all") {
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (filter === "sections" || filter === "all") {
|
|
43
|
+
printGroup("Sections", sections);
|
|
44
|
+
if (filter === "all") {
|
|
45
|
+
console.log();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (filter === "wrappers" || filter === "all") {
|
|
49
|
+
printGroup("Wrappers", wrappers);
|
|
50
|
+
if (filter === "all") {
|
|
51
|
+
console.log();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (filter === "composites" || filter === "all") {
|
|
55
|
+
printGroup("Composites", composites);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error(error.message);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
63
|
//# sourceMappingURL=list.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
export declare const removeCommand: Command;
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export declare const removeCommand: Command;
|
package/dist/commands/remove.js
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import { loadConfig } from "../lib/config.js";
|
|
4
|
-
import { loadLockfile, saveLockfile } from "../lib/lockfile.js";
|
|
5
|
-
import { getRegistryComposites, getRegistrySections, getRegistryWrappers, loadRegistry } from "../lib/registry.js";
|
|
6
|
-
import { removeEntries } from "./shared/remove-entries.js";
|
|
7
|
-
function toNameList(value) {
|
|
8
|
-
if (!value) {
|
|
9
|
-
return [];
|
|
10
|
-
}
|
|
11
|
-
return Array.isArray(value) ? value : [value];
|
|
12
|
-
}
|
|
13
|
-
export const removeCommand = new Command("remove")
|
|
14
|
-
.description("Remove components, sections, wrappers, or composites from your project")
|
|
15
|
-
.argument("[components...]", "component names")
|
|
16
|
-
.option("--force", "remove files even if not tracked in lockfile")
|
|
17
|
-
.option("-c, --cwd <path>", "working directory to remove items")
|
|
18
|
-
.option("-s, --section <sections...>", "remove sections")
|
|
19
|
-
.option("-w, --wrapper <wrappers...>", "remove wrappers")
|
|
20
|
-
.option("--composite <composites...>", "remove composites")
|
|
21
|
-
.action(async (components, options) => {
|
|
22
|
-
try {
|
|
23
|
-
const sectionNames = toNameList(options.section);
|
|
24
|
-
const wrapperNames = toNameList(options.wrapper);
|
|
25
|
-
const compositeNames = toNameList(options.composite);
|
|
26
|
-
const hasSections = sectionNames.length > 0;
|
|
27
|
-
const hasWrappers = wrapperNames.length > 0;
|
|
28
|
-
const hasComposites = compositeNames.length > 0;
|
|
29
|
-
const hasComponents = components.length > 0;
|
|
30
|
-
const selectedTypes = [hasComponents, hasSections, hasWrappers, hasComposites]
|
|
31
|
-
.filter(Boolean)
|
|
32
|
-
.length;
|
|
33
|
-
if (selectedTypes === 0) {
|
|
34
|
-
console.error("Provide component names or use --section/--wrapper/--composite.");
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
if (selectedTypes > 1) {
|
|
38
|
-
console.error("Choose only one target type: components (positional), --section, --wrapper, or --composite.");
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
const cwd = path.resolve(options.cwd || process.cwd());
|
|
42
|
-
const config = await loadConfig(cwd);
|
|
43
|
-
const registry = await loadRegistry(config, cwd);
|
|
44
|
-
const lockfile = await loadLockfile(cwd);
|
|
45
|
-
const targetLabel = hasSections
|
|
46
|
-
? "sections"
|
|
47
|
-
: hasWrappers
|
|
48
|
-
? "wrappers"
|
|
49
|
-
: hasComposites
|
|
50
|
-
? "composites"
|
|
51
|
-
: "components";
|
|
52
|
-
const registryEntries = hasSections
|
|
53
|
-
? getRegistrySections(registry)
|
|
54
|
-
: hasWrappers
|
|
55
|
-
? getRegistryWrappers(registry)
|
|
56
|
-
: hasComposites
|
|
57
|
-
? getRegistryComposites(registry)
|
|
58
|
-
: registry.components;
|
|
59
|
-
const lockEntries = hasSections
|
|
60
|
-
? lockfile.sections
|
|
61
|
-
: hasWrappers
|
|
62
|
-
? lockfile.wrappers
|
|
63
|
-
: hasComposites
|
|
64
|
-
? lockfile.composites
|
|
65
|
-
: lockfile.components;
|
|
66
|
-
const names = hasSections
|
|
67
|
-
? sectionNames
|
|
68
|
-
: hasWrappers
|
|
69
|
-
? wrapperNames
|
|
70
|
-
: hasComposites
|
|
71
|
-
? compositeNames
|
|
72
|
-
: components;
|
|
73
|
-
const { removed, skipped } = await removeEntries({
|
|
74
|
-
cwd,
|
|
75
|
-
config,
|
|
76
|
-
registryEntries,
|
|
77
|
-
lockEntries,
|
|
78
|
-
names,
|
|
79
|
-
force: Boolean(options.force)
|
|
80
|
-
});
|
|
81
|
-
await saveLockfile(cwd, lockfile);
|
|
82
|
-
if (removed.length) {
|
|
83
|
-
console.log(`Removed ${targetLabel}: ${removed.join(", ")}`);
|
|
84
|
-
}
|
|
85
|
-
if (skipped.length) {
|
|
86
|
-
console.log(`Skipped ${targetLabel} (not installed): ${skipped.join(", ")}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
console.error(error.message);
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { loadConfig } from "../lib/config.js";
|
|
4
|
+
import { loadLockfile, saveLockfile } from "../lib/lockfile.js";
|
|
5
|
+
import { getRegistryComposites, getRegistrySections, getRegistryWrappers, loadRegistry } from "../lib/registry.js";
|
|
6
|
+
import { removeEntries } from "./shared/remove-entries.js";
|
|
7
|
+
function toNameList(value) {
|
|
8
|
+
if (!value) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
return Array.isArray(value) ? value : [value];
|
|
12
|
+
}
|
|
13
|
+
export const removeCommand = new Command("remove")
|
|
14
|
+
.description("Remove components, sections, wrappers, or composites from your project")
|
|
15
|
+
.argument("[components...]", "component names")
|
|
16
|
+
.option("--force", "remove files even if not tracked in lockfile")
|
|
17
|
+
.option("-c, --cwd <path>", "working directory to remove items")
|
|
18
|
+
.option("-s, --section <sections...>", "remove sections")
|
|
19
|
+
.option("-w, --wrapper <wrappers...>", "remove wrappers")
|
|
20
|
+
.option("--composite <composites...>", "remove composites")
|
|
21
|
+
.action(async (components, options) => {
|
|
22
|
+
try {
|
|
23
|
+
const sectionNames = toNameList(options.section);
|
|
24
|
+
const wrapperNames = toNameList(options.wrapper);
|
|
25
|
+
const compositeNames = toNameList(options.composite);
|
|
26
|
+
const hasSections = sectionNames.length > 0;
|
|
27
|
+
const hasWrappers = wrapperNames.length > 0;
|
|
28
|
+
const hasComposites = compositeNames.length > 0;
|
|
29
|
+
const hasComponents = components.length > 0;
|
|
30
|
+
const selectedTypes = [hasComponents, hasSections, hasWrappers, hasComposites]
|
|
31
|
+
.filter(Boolean)
|
|
32
|
+
.length;
|
|
33
|
+
if (selectedTypes === 0) {
|
|
34
|
+
console.error("Provide component names or use --section/--wrapper/--composite.");
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
if (selectedTypes > 1) {
|
|
38
|
+
console.error("Choose only one target type: components (positional), --section, --wrapper, or --composite.");
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
const cwd = path.resolve(options.cwd || process.cwd());
|
|
42
|
+
const config = await loadConfig(cwd);
|
|
43
|
+
const registry = await loadRegistry(config, cwd);
|
|
44
|
+
const lockfile = await loadLockfile(cwd);
|
|
45
|
+
const targetLabel = hasSections
|
|
46
|
+
? "sections"
|
|
47
|
+
: hasWrappers
|
|
48
|
+
? "wrappers"
|
|
49
|
+
: hasComposites
|
|
50
|
+
? "composites"
|
|
51
|
+
: "components";
|
|
52
|
+
const registryEntries = hasSections
|
|
53
|
+
? getRegistrySections(registry)
|
|
54
|
+
: hasWrappers
|
|
55
|
+
? getRegistryWrappers(registry)
|
|
56
|
+
: hasComposites
|
|
57
|
+
? getRegistryComposites(registry)
|
|
58
|
+
: registry.components;
|
|
59
|
+
const lockEntries = hasSections
|
|
60
|
+
? lockfile.sections
|
|
61
|
+
: hasWrappers
|
|
62
|
+
? lockfile.wrappers
|
|
63
|
+
: hasComposites
|
|
64
|
+
? lockfile.composites
|
|
65
|
+
: lockfile.components;
|
|
66
|
+
const names = hasSections
|
|
67
|
+
? sectionNames
|
|
68
|
+
: hasWrappers
|
|
69
|
+
? wrapperNames
|
|
70
|
+
: hasComposites
|
|
71
|
+
? compositeNames
|
|
72
|
+
: components;
|
|
73
|
+
const { removed, skipped } = await removeEntries({
|
|
74
|
+
cwd,
|
|
75
|
+
config,
|
|
76
|
+
registryEntries,
|
|
77
|
+
lockEntries,
|
|
78
|
+
names,
|
|
79
|
+
force: Boolean(options.force)
|
|
80
|
+
});
|
|
81
|
+
await saveLockfile(cwd, lockfile);
|
|
82
|
+
if (removed.length) {
|
|
83
|
+
console.log(`Removed ${targetLabel}: ${removed.join(", ")}`);
|
|
84
|
+
}
|
|
85
|
+
if (skipped.length) {
|
|
86
|
+
console.log(`Skipped ${targetLabel} (not installed): ${skipped.join(", ")}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(error.message);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
94
|
//# sourceMappingURL=remove.js.map
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import type { Ora } from "ora";
|
|
2
|
-
import type { Lockfile, LockfileComponent } from "../../lib/lockfile.js";
|
|
3
|
-
import type { RegistryIndex, RegistryItem } from "../../lib/registry.js";
|
|
4
|
-
import type { AddConfig, AddOptions } from "../add/types.js";
|
|
5
|
-
export interface EntryValidation {
|
|
6
|
-
valid: string[];
|
|
7
|
-
invalid: string[];
|
|
8
|
-
suggestions: string[];
|
|
9
|
-
}
|
|
10
|
-
export interface EntryDependencyAnalysis {
|
|
11
|
-
entries: string[];
|
|
12
|
-
componentDependencies: string[];
|
|
13
|
-
npmDependencies: Set<string>;
|
|
14
|
-
conflicts: string[];
|
|
15
|
-
totalTargets: number;
|
|
16
|
-
totalToInstall: number;
|
|
17
|
-
missingDependencies: string[];
|
|
18
|
-
}
|
|
19
|
-
export interface EntryInstallResult {
|
|
20
|
-
installed: string[];
|
|
21
|
-
skipped: string[];
|
|
22
|
-
failed: string[];
|
|
23
|
-
npmDependencies: Set<string>;
|
|
24
|
-
}
|
|
25
|
-
export interface CollectionInstallResult {
|
|
26
|
-
entries: EntryInstallResult;
|
|
27
|
-
dependencies: EntryInstallResult;
|
|
28
|
-
npmDependencies: Set<string>;
|
|
29
|
-
conflicts: string[];
|
|
30
|
-
}
|
|
31
|
-
export interface EntryLabels {
|
|
32
|
-
entrySingular: string;
|
|
33
|
-
entryPlural: string;
|
|
34
|
-
}
|
|
35
|
-
export declare function normalizeEntryNames(names: string[]): string[];
|
|
36
|
-
export declare function getEntryNames(entries: RegistryItem[]): string[];
|
|
37
|
-
export declare function createEntryMap(entries: RegistryItem[]): Map<string, RegistryItem>;
|
|
38
|
-
export declare function validateEntries(names: string[], entries: RegistryItem[]): EntryValidation;
|
|
39
|
-
export declare function analyzeEntryDependencies(names: string[], entries: RegistryItem[], registry: RegistryIndex, lockfile: Lockfile, lockKey: "sections" | "wrappers" | "composites"): EntryDependencyAnalysis;
|
|
40
|
-
export declare function confirmOverwrite(entryPlural: string): Promise<boolean>;
|
|
41
|
-
export declare function displayInstallationPlan(analysis: EntryDependencyAnalysis, options: AddOptions, labels: EntryLabels): void;
|
|
42
|
-
export declare function displayResults(result: CollectionInstallResult, options: AddOptions, labels: EntryLabels): void;
|
|
43
|
-
export declare function installEntries(entries: RegistryItem[], names: string[], lockEntries: Record<string, LockfileComponent>, options: {
|
|
44
|
-
cwd: string;
|
|
45
|
-
config: AddConfig;
|
|
46
|
-
force: boolean;
|
|
47
|
-
spinner: Ora | null;
|
|
48
|
-
itemLabel: string;
|
|
49
|
-
}): Promise<EntryInstallResult>;
|
|
50
|
-
export declare function createEmptyResult(): EntryInstallResult;
|
|
1
|
+
import type { Ora } from "ora";
|
|
2
|
+
import type { Lockfile, LockfileComponent } from "../../lib/lockfile.js";
|
|
3
|
+
import type { RegistryIndex, RegistryItem } from "../../lib/registry.js";
|
|
4
|
+
import type { AddConfig, AddOptions } from "../add/types.js";
|
|
5
|
+
export interface EntryValidation {
|
|
6
|
+
valid: string[];
|
|
7
|
+
invalid: string[];
|
|
8
|
+
suggestions: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface EntryDependencyAnalysis {
|
|
11
|
+
entries: string[];
|
|
12
|
+
componentDependencies: string[];
|
|
13
|
+
npmDependencies: Set<string>;
|
|
14
|
+
conflicts: string[];
|
|
15
|
+
totalTargets: number;
|
|
16
|
+
totalToInstall: number;
|
|
17
|
+
missingDependencies: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface EntryInstallResult {
|
|
20
|
+
installed: string[];
|
|
21
|
+
skipped: string[];
|
|
22
|
+
failed: string[];
|
|
23
|
+
npmDependencies: Set<string>;
|
|
24
|
+
}
|
|
25
|
+
export interface CollectionInstallResult {
|
|
26
|
+
entries: EntryInstallResult;
|
|
27
|
+
dependencies: EntryInstallResult;
|
|
28
|
+
npmDependencies: Set<string>;
|
|
29
|
+
conflicts: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface EntryLabels {
|
|
32
|
+
entrySingular: string;
|
|
33
|
+
entryPlural: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function normalizeEntryNames(names: string[]): string[];
|
|
36
|
+
export declare function getEntryNames(entries: RegistryItem[]): string[];
|
|
37
|
+
export declare function createEntryMap(entries: RegistryItem[]): Map<string, RegistryItem>;
|
|
38
|
+
export declare function validateEntries(names: string[], entries: RegistryItem[]): EntryValidation;
|
|
39
|
+
export declare function analyzeEntryDependencies(names: string[], entries: RegistryItem[], registry: RegistryIndex, lockfile: Lockfile, lockKey: "sections" | "wrappers" | "composites"): EntryDependencyAnalysis;
|
|
40
|
+
export declare function confirmOverwrite(entryPlural: string): Promise<boolean>;
|
|
41
|
+
export declare function displayInstallationPlan(analysis: EntryDependencyAnalysis, options: AddOptions, labels: EntryLabels): void;
|
|
42
|
+
export declare function displayResults(result: CollectionInstallResult, options: AddOptions, labels: EntryLabels): void;
|
|
43
|
+
export declare function installEntries(entries: RegistryItem[], names: string[], lockEntries: Record<string, LockfileComponent>, options: {
|
|
44
|
+
cwd: string;
|
|
45
|
+
config: AddConfig;
|
|
46
|
+
force: boolean;
|
|
47
|
+
spinner: Ora | null;
|
|
48
|
+
itemLabel: string;
|
|
49
|
+
}): Promise<EntryInstallResult>;
|
|
50
|
+
export declare function createEmptyResult(): EntryInstallResult;
|