dcntui 0.1.9 → 0.1.10

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.
Files changed (82) hide show
  1. package/dist/commands/add.d.ts +1 -1
  2. package/dist/commands/add.d.ts.map +1 -1
  3. package/dist/commands/add.js +24 -95
  4. package/dist/commands/add.js.map +1 -1
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +30 -7
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/constants.d.ts +1 -2
  9. package/dist/constants.d.ts.map +1 -1
  10. package/dist/constants.js +1 -2
  11. package/dist/constants.js.map +1 -1
  12. package/dist/index.js +9 -24
  13. package/dist/index.js.map +1 -1
  14. package/dist/utils/banner.d.ts.map +1 -1
  15. package/dist/utils/banner.js +7 -10
  16. package/dist/utils/banner.js.map +1 -1
  17. package/dist/utils/config.d.ts +0 -4
  18. package/dist/utils/config.d.ts.map +1 -1
  19. package/dist/utils/config.js +22 -21
  20. package/dist/utils/config.js.map +1 -1
  21. package/dist/utils/detect-css.d.ts +2 -3
  22. package/dist/utils/detect-css.d.ts.map +1 -1
  23. package/dist/utils/detect-css.js +5 -114
  24. package/dist/utils/detect-css.js.map +1 -1
  25. package/dist/utils/detect-framework.d.ts.map +1 -1
  26. package/dist/utils/detect-framework.js +2 -9
  27. package/dist/utils/detect-framework.js.map +1 -1
  28. package/dist/utils/detect-package-manager.d.ts.map +1 -1
  29. package/dist/utils/detect-package-manager.js +15 -25
  30. package/dist/utils/detect-package-manager.js.map +1 -1
  31. package/dist/utils/detect-typescript.d.ts.map +1 -1
  32. package/dist/utils/detect-typescript.js +1 -7
  33. package/dist/utils/detect-typescript.js.map +1 -1
  34. package/dist/utils/helpers.d.ts +5 -3
  35. package/dist/utils/helpers.d.ts.map +1 -1
  36. package/dist/utils/helpers.js +3 -3
  37. package/dist/utils/helpers.js.map +1 -1
  38. package/dist/utils/registry.d.ts +3 -35
  39. package/dist/utils/registry.d.ts.map +1 -1
  40. package/dist/utils/registry.js +58 -120
  41. package/dist/utils/registry.js.map +1 -1
  42. package/dist/utils/wizard.d.ts +0 -1
  43. package/dist/utils/wizard.d.ts.map +1 -1
  44. package/dist/utils/wizard.js +73 -135
  45. package/dist/utils/wizard.js.map +1 -1
  46. package/dist/utils/write-component.d.ts +0 -9
  47. package/dist/utils/write-component.d.ts.map +1 -1
  48. package/dist/utils/write-component.js +2 -121
  49. package/dist/utils/write-component.js.map +1 -1
  50. package/package.json +8 -7
  51. package/dist/commands/config.d.ts +0 -2
  52. package/dist/commands/config.d.ts.map +0 -1
  53. package/dist/commands/config.js +0 -68
  54. package/dist/commands/config.js.map +0 -1
  55. package/dist/commands/doctor.d.ts +0 -2
  56. package/dist/commands/doctor.d.ts.map +0 -1
  57. package/dist/commands/doctor.js +0 -348
  58. package/dist/commands/doctor.js.map +0 -1
  59. package/dist/commands/list.d.ts +0 -6
  60. package/dist/commands/list.d.ts.map +0 -1
  61. package/dist/commands/list.js +0 -104
  62. package/dist/commands/list.js.map +0 -1
  63. package/dist/commands/remove.d.ts +0 -2
  64. package/dist/commands/remove.d.ts.map +0 -1
  65. package/dist/commands/remove.js +0 -87
  66. package/dist/commands/remove.js.map +0 -1
  67. package/dist/commands/search.d.ts +0 -2
  68. package/dist/commands/search.d.ts.map +0 -1
  69. package/dist/commands/search.js +0 -124
  70. package/dist/commands/search.js.map +0 -1
  71. package/dist/commands/update.d.ts +0 -6
  72. package/dist/commands/update.d.ts.map +0 -1
  73. package/dist/commands/update.js +0 -247
  74. package/dist/commands/update.js.map +0 -1
  75. package/dist/utils/lock.d.ts +0 -6
  76. package/dist/utils/lock.d.ts.map +0 -1
  77. package/dist/utils/lock.js +0 -30
  78. package/dist/utils/lock.js.map +0 -1
  79. package/dist/utils/search.d.ts +0 -21
  80. package/dist/utils/search.d.ts.map +0 -1
  81. package/dist/utils/search.js +0 -104
  82. package/dist/utils/search.js.map +0 -1
@@ -1,87 +0,0 @@
1
- import * as clack from '@clack/prompts';
2
- import chalk from 'chalk';
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
- import { readConfig, ConfigError } from '../utils/config.js';
6
- import { readLock, recordRemoved } from '../utils/lock.js';
7
- import { revertStylesPatch } from '../utils/write-component.js';
8
- import { detectPackageManager, getPackageRunner } from '../utils/detect-package-manager.js';
9
- export async function removeCommand(componentNames) {
10
- console.clear();
11
- clack.intro(chalk.bgCyan.black(' DCNT UI REMOVE '));
12
- const cwd = process.cwd();
13
- const pm = detectPackageManager(cwd);
14
- const packageRunner = getPackageRunner(pm);
15
- let config;
16
- try {
17
- config = readConfig(cwd);
18
- }
19
- catch (err) {
20
- if (err instanceof ConfigError) {
21
- clack.log.error(chalk.red(err.message));
22
- clack.outro(chalk.red('Aborted.'));
23
- process.exit(1);
24
- }
25
- throw err;
26
- }
27
- const lock = readLock(cwd);
28
- const notInstalled = componentNames.filter((name) => !(name in lock));
29
- if (notInstalled.length > 0) {
30
- clack.log.error(chalk.red(`The following ${notInstalled.length === 1 ? 'component is' : 'components are'} not installed:\n\n` +
31
- notInstalled.map((n) => ` ${chalk.bold(n)}`).join('\n') +
32
- '\n\n' +
33
- `Run ${chalk.cyan(`${packageRunner} dcntui list --installed`)} to see what's installed.`));
34
- clack.outro(chalk.red('Aborted.'));
35
- process.exit(1);
36
- }
37
- clack.log.warn(chalk.yellow(`The following ${componentNames.length === 1 ? 'component' : 'components'} will be permanently removed:\n`));
38
- for (const name of componentNames) {
39
- const version = lock[name];
40
- const componentDir = path.join(config.componentsDir, name);
41
- console.log(` ${chalk.bold(name)} ${chalk.gray('v' + version)}`);
42
- console.log(` ${chalk.gray(' ' + componentDir + '/')}`);
43
- }
44
- const stylesPath = path.join(cwd, config.stylesFile);
45
- const hasStylesBlock = fs.existsSync(stylesPath) && fs.readFileSync(stylesPath, 'utf-8').includes('/* dcntui:start */');
46
- if (hasStylesBlock) {
47
- console.log(`\n ${chalk.gray('~')} ${chalk.gray(config.stylesFile)} ${chalk.gray('(dcntui CSS block will be removed)')}`);
48
- }
49
- console.log();
50
- const confirmed = await clack.confirm({
51
- message: chalk.red(`Remove ${componentNames.length === 1 ? 'this component' : 'these components'}? This cannot be undone.`),
52
- initialValue: false
53
- });
54
- if (clack.isCancel(confirmed) || !confirmed) {
55
- clack.outro(chalk.cyan('Removal cancelled. No changes made.'));
56
- process.exit(0);
57
- }
58
- const results = [];
59
- for (const name of componentNames) {
60
- const componentDir = path.join(cwd, config.componentsDir, name);
61
- if (fs.existsSync(componentDir)) {
62
- fs.rmSync(componentDir, { recursive: true, force: true });
63
- clack.log.success(chalk.green(` ${chalk.gray('-')} ${path.join(config.componentsDir, name)}/`));
64
- }
65
- else {
66
- clack.log.warn(chalk.yellow(` Component directory not found: ${componentDir}\n Continuing with lock file cleanup.`));
67
- }
68
- const metaPath = path.join(cwd, '.dcntui', `${name}.json`);
69
- if (fs.existsSync(metaPath)) {
70
- fs.rmSync(metaPath);
71
- }
72
- const remainingAfterThis = componentNames
73
- .filter((n) => n !== name)
74
- .concat(Object.keys(lock).filter((n) => !componentNames.includes(n)));
75
- if (remainingAfterThis.length === 0 && hasStylesBlock) {
76
- const reverted = revertStylesPatch(cwd, config);
77
- if (reverted) {
78
- clack.log.success(chalk.green(` ${chalk.gray('~')} ${config.stylesFile} ${chalk.gray('(dcntui CSS block removed)')}`));
79
- }
80
- }
81
- recordRemoved(cwd, name);
82
- results.push({ name, success: true });
83
- }
84
- const count = results.length;
85
- clack.outro(chalk.cyan(`Removed ${count} component${count === 1 ? '' : 's'} successfully.`));
86
- }
87
- //# sourceMappingURL=remove.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function searchCommand(queryWords: string[]): Promise<void>;
2
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AASA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyJvE"}
@@ -1,124 +0,0 @@
1
- import * as clack from '@clack/prompts';
2
- import chalk from 'chalk';
3
- import { readConfig, ConfigError } from '../utils/config.js';
4
- import { fetchCatalog, RegistryError } from '../utils/registry.js';
5
- import { aiSearch, keywordSearch, SearchError } from '../utils/search.js';
6
- import { readLock } from '../utils/lock.js';
7
- import { detectPackageManager, getPackageRunner } from '../utils/detect-package-manager.js';
8
- export async function searchCommand(queryWords) {
9
- console.clear();
10
- clack.intro(chalk.bgCyan.black(' DCNT UI SEARCH '));
11
- const cwd = process.cwd();
12
- const pm = detectPackageManager(cwd);
13
- const packageRunner = getPackageRunner(pm);
14
- if (queryWords.length === 0) {
15
- clack.log.error(chalk.red('Please provide a search query.\n\n' +
16
- ` Example: ${chalk.cyan(`${packageRunner} dcntui search animated pricing cards`)}`));
17
- clack.outro(chalk.red('Aborted.'));
18
- process.exit(1);
19
- }
20
- const query = queryWords.join(' ');
21
- let registryUrl = 'https://registry.dcntui.com';
22
- let hasToken = false;
23
- try {
24
- const config = readConfig(cwd);
25
- registryUrl = config.registry;
26
- hasToken = !!(process.env['DCNTUI_TOKEN'] || config.premiumToken);
27
- }
28
- catch (err) {
29
- if (!(err instanceof ConfigError))
30
- throw err;
31
- }
32
- const lock = readLock(cwd);
33
- const installedNames = new Set(Object.keys(lock));
34
- const spinner = clack.spinner();
35
- spinner.start('Fetching component catalog…');
36
- let flatCatalog;
37
- try {
38
- const catalog = await fetchCatalog(registryUrl);
39
- flatCatalog = catalog.categories.flatMap(({ name: category, components }) => components.map((entry) => ({ entry, category })));
40
- spinner.stop(`Catalog loaded — ${flatCatalog.length} components.`);
41
- }
42
- catch (err) {
43
- if (err instanceof RegistryError) {
44
- spinner.stop(chalk.red('Failed to fetch catalog.'));
45
- clack.log.error(chalk.red(err.message));
46
- clack.outro(chalk.red('Aborted.'));
47
- process.exit(1);
48
- }
49
- throw err;
50
- }
51
- const apiKey = process.env['ANTHROPIC_API_KEY'];
52
- let results;
53
- let searchMode;
54
- if (apiKey) {
55
- spinner.start('Running AI search…');
56
- try {
57
- results = await aiSearch(query, flatCatalog, apiKey);
58
- searchMode = 'ai';
59
- spinner.stop(`AI search complete — ${results.length} result${results.length === 1 ? '' : 's'}.`);
60
- }
61
- catch (err) {
62
- if (err instanceof SearchError) {
63
- spinner.stop(chalk.yellow(err.message));
64
- results = keywordSearch(query, flatCatalog);
65
- searchMode = 'keyword';
66
- }
67
- else {
68
- throw err;
69
- }
70
- }
71
- }
72
- else {
73
- results = keywordSearch(query, flatCatalog);
74
- searchMode = 'keyword';
75
- clack.log.info(chalk.gray('Set ANTHROPIC_API_KEY for AI-powered search. Using keyword search.\n'));
76
- }
77
- if (results.length === 0) {
78
- clack.log.warn(`No components found for ${chalk.bold(`"${query}"`)}\n\n` +
79
- ` Try broader terms, or run ${chalk.cyan(`${packageRunner} dcntui list`)} to browse all components.`);
80
- clack.outro('');
81
- return;
82
- }
83
- const modeLabel = searchMode === 'ai' ? chalk.cyan('AI') + chalk.gray(' · ') : chalk.gray('keyword · ');
84
- console.log(`\n ${modeLabel}${chalk.bold(results.length)} result${results.length === 1 ? '' : 's'} for ${chalk.bold(`"${query}"`)}\n`);
85
- for (const result of results) {
86
- renderResult(result, installedNames, hasToken);
87
- }
88
- console.log();
89
- console.log(' ' + [chalk.green('✓') + ' installed', chalk.cyan('◆') + ' free', chalk.yellow('★') + ' premium'].join(' '));
90
- console.log();
91
- const installable = results.filter((r) => !installedNames.has(r.name));
92
- if (installable.length === 0) {
93
- clack.outro(chalk.cyan('All results are already installed.'));
94
- return;
95
- }
96
- const toInstall = await clack.multiselect({
97
- message: 'Add any of these components?',
98
- options: results.map((r) => ({
99
- value: r.name,
100
- label: r.name,
101
- hint: installedNames.has(r.name) ? 'already installed' : r.description
102
- })),
103
- required: false
104
- });
105
- if (clack.isCancel(toInstall) || toInstall.length === 0) {
106
- clack.outro(chalk.cyan('No components added.'));
107
- return;
108
- }
109
- const { addCommand } = await import('./add.js');
110
- await addCommand(toInstall);
111
- }
112
- function renderResult(result, installedNames, hasToken) {
113
- const isInstalled = installedNames.has(result.name);
114
- const badge = isInstalled ? chalk.green('✓') : result.premium ? chalk.yellow('★') : chalk.cyan('◆');
115
- const name = result.premium && !hasToken && !isInstalled
116
- ? chalk.gray(result.name.padEnd(26))
117
- : chalk.bold(result.name.padEnd(26));
118
- const category = chalk.gray(`[${result.category}]`.padEnd(16));
119
- const score = chalk.gray(`${result.score}%`);
120
- console.log(` ${badge} ${name} ${category} ${score}`);
121
- console.log(` ${chalk.gray(result.reason)}`);
122
- console.log();
123
- }
124
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- interface UpdateOptions {
2
- all: boolean;
3
- }
4
- export declare function updateCommand(componentNames: string[], options: UpdateOptions): Promise<void>;
5
- export {};
6
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,GAAG,EAAE,OAAO,CAAC;CACd;AAoBD,wBAAsB,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwUnG"}
@@ -1,247 +0,0 @@
1
- import * as clack from '@clack/prompts';
2
- import chalk from 'chalk';
3
- import { spawnSync } from 'node:child_process';
4
- import fs from 'node:fs';
5
- import path from 'node:path';
6
- import { readConfig, ConfigError } from '../utils/config.js';
7
- import { resolveRegistryUrl, fetchComponent, verifyPremiumToken, RegistryError } from '../utils/registry.js';
8
- import { detectPackageManager, buildInstallArgs, getPackageRunner } from '../utils/detect-package-manager.js';
9
- import { writeComponentFiles, patchStylesFile, diffComponentFiles } from '../utils/write-component.js';
10
- import { readLock, recordInstalled } from '../utils/lock.js';
11
- function isNewer(local, remote) {
12
- if (local === remote)
13
- return false;
14
- const parse = (v) => v
15
- .replace(/^[^0-9]*/, '')
16
- .split('.')
17
- .map(Number);
18
- const [lMaj = 0, lMin = 0, lPat = 0] = parse(local);
19
- const [rMaj = 0, rMin = 0, rPat = 0] = parse(remote);
20
- if (rMaj !== lMaj)
21
- return rMaj > lMaj;
22
- if (rMin !== lMin)
23
- return rMin > lMin;
24
- return rPat > lPat;
25
- }
26
- export async function updateCommand(componentNames, options) {
27
- console.clear();
28
- clack.intro(chalk.bgCyan.black(' DCNT UI UPDATE '));
29
- const cwd = process.cwd();
30
- const pm = detectPackageManager(cwd);
31
- const packageRunner = getPackageRunner(pm);
32
- let config;
33
- try {
34
- config = readConfig(cwd);
35
- }
36
- catch (err) {
37
- if (err instanceof ConfigError) {
38
- clack.log.error(chalk.red(err.message));
39
- clack.outro(chalk.red('Aborted.'));
40
- process.exit(1);
41
- }
42
- throw err;
43
- }
44
- const lock = readLock(cwd);
45
- if (options.all) {
46
- componentNames = Object.keys(lock);
47
- }
48
- if (componentNames.length === 0) {
49
- clack.log.info(options.all
50
- ? 'No components installed yet.\n\n Run ' +
51
- chalk.cyan(`${packageRunner} dcntui add <component>`) +
52
- ' to get started.'
53
- : 'No component names provided.\n\n Usage: ' +
54
- chalk.cyan(`${packageRunner} dcntui update button`) +
55
- ' or ' +
56
- chalk.cyan(`${packageRunner} dcntui update --all`));
57
- clack.outro('');
58
- return;
59
- }
60
- const notInstalled = componentNames.filter((name) => !(name in lock));
61
- if (notInstalled.length > 0) {
62
- clack.log.error(chalk.red(`The following ${notInstalled.length === 1 ? 'component is' : 'components are'} not installed:\n\n` +
63
- notInstalled.map((n) => ` ${chalk.bold(n)}`).join('\n') +
64
- '\n\n' +
65
- `Run ${chalk.cyan(`${packageRunner} dcntui add <component>`)} to install first.`));
66
- clack.outro(chalk.red('Aborted.'));
67
- process.exit(1);
68
- }
69
- const token = process.env['DCNTUI_TOKEN'] || config.premiumToken || undefined;
70
- const results = [];
71
- for (const componentName of componentNames) {
72
- const installedVersion = lock[componentName];
73
- clack.log.step(chalk.cyan(`Checking ${chalk.bold(componentName)} ${chalk.gray('v' + installedVersion)}…`));
74
- const url = resolveRegistryUrl(config, componentName);
75
- const spinner = clack.spinner();
76
- spinner.start('Fetching latest from registry…');
77
- let metadata;
78
- try {
79
- metadata = await fetchComponent(url, token);
80
- spinner.stop(`Registry version: ${chalk.bold('v' + metadata.version)}`);
81
- }
82
- catch (err) {
83
- if (err instanceof RegistryError) {
84
- spinner.stop(chalk.red('Fetch failed.'));
85
- clack.log.error(chalk.red(err.message));
86
- results.push({ name: componentName, status: 'failed', reason: err.message });
87
- continue;
88
- }
89
- throw err;
90
- }
91
- if (!isNewer(installedVersion, metadata.version)) {
92
- clack.log.info(chalk.gray(`${chalk.bold(componentName)} is already at the latest version (v${installedVersion}).`));
93
- results.push({ name: componentName, status: 'skipped', reason: 'already latest' });
94
- continue;
95
- }
96
- clack.log.info(`Update available: ${chalk.gray('v' + installedVersion)} ${chalk.gray('→')} ${chalk.cyan('v' + metadata.version)}`);
97
- if (metadata.premium) {
98
- if (!token) {
99
- clack.log.error(chalk.red(`${chalk.bold(componentName)} is a premium component.\n\n` +
100
- `Provide your token via:\n` +
101
- ` ${chalk.cyan(`DCNTUI_TOKEN=<token> ${packageRunner} dcntui update ` + componentName)}\n` +
102
- ` or add ${chalk.cyan('premiumToken')} to ${chalk.cyan('dcntui.config.json')}.\n\n` +
103
- `Get a token at ${chalk.underline('https://dcntui.com')}`));
104
- results.push({ name: componentName, status: 'failed', reason: 'no premium token' });
105
- continue;
106
- }
107
- spinner.start('Verifying premium token…');
108
- const valid = await verifyPremiumToken(config.registry, token);
109
- if (!valid) {
110
- spinner.stop(chalk.red('Token verification failed.'));
111
- clack.log.error(chalk.red(`Your premium token is invalid or expired.\n\n` +
112
- `Manage your subscription at ${chalk.underline('https://dcntui.com')}`));
113
- results.push({ name: componentName, status: 'failed', reason: 'invalid token' });
114
- continue;
115
- }
116
- spinner.stop(chalk.green('Premium token verified.'));
117
- }
118
- const diffs = diffComponentFiles(cwd, config, metadata);
119
- const modifiedFiles = diffs.filter((d) => d.locallyModified);
120
- if (modifiedFiles.length > 0) {
121
- clack.log.warn(chalk.yellow(`${modifiedFiles.length} file${modifiedFiles.length === 1 ? ' has' : 's have'} local modifications:\n`));
122
- for (const diff of modifiedFiles) {
123
- console.log(` ${chalk.bold(diff.filePath)}`);
124
- const preview = diff.diffLines.slice(0, 30);
125
- for (const line of preview) {
126
- if (line.startsWith('+') && !line.startsWith('+++')) {
127
- console.log(' ' + chalk.green(line));
128
- }
129
- else if (line.startsWith('-') && !line.startsWith('---')) {
130
- console.log(' ' + chalk.red(line));
131
- }
132
- else {
133
- console.log(' ' + chalk.gray(line));
134
- }
135
- }
136
- if (diff.diffLines.length > 30) {
137
- console.log(chalk.gray(` … and ${diff.diffLines.length - 30} more lines`));
138
- }
139
- console.log();
140
- }
141
- const overwrite = await clack.select({
142
- message: 'How do you want to handle local modifications?',
143
- options: [
144
- {
145
- value: 'overwrite',
146
- label: 'Overwrite all',
147
- hint: 'replace local changes with registry version'
148
- },
149
- {
150
- value: 'skip-modified',
151
- label: 'Keep local, update unmodified only',
152
- hint: 'skip modified files, update everything else'
153
- },
154
- {
155
- value: 'abort',
156
- label: 'Abort this component',
157
- hint: 'leave everything as-is'
158
- }
159
- ],
160
- initialValue: 'skip-modified'
161
- });
162
- if (clack.isCancel(overwrite) || overwrite === 'abort') {
163
- clack.log.warn(chalk.yellow(`Skipped ${chalk.bold(componentName)}.`));
164
- results.push({ name: componentName, status: 'skipped', reason: 'user aborted' });
165
- continue;
166
- }
167
- if (overwrite === 'skip-modified') {
168
- const modifiedPaths = new Set(modifiedFiles.map((d) => d.filePath));
169
- metadata = {
170
- ...metadata,
171
- files: metadata.files.filter((f) => !modifiedPaths.has(f.path))
172
- };
173
- }
174
- }
175
- if (metadata.dependencies.length > 0) {
176
- const pkgJson = JSON.parse(fs.readFileSync(path.join(cwd, 'package.json'), 'utf-8'));
177
- const installed = {
178
- ...pkgJson['dependencies'],
179
- ...pkgJson['devDependencies']
180
- };
181
- const missing = metadata.dependencies.filter((dep) => !(dep in installed));
182
- if (missing.length > 0) {
183
- clack.log.warn(chalk.yellow(`New ${missing.length === 1 ? 'dependency' : 'dependencies'} required:\n\n` +
184
- missing.map((d) => ` ${chalk.cyan(d)}`).join('\n')));
185
- const shouldInstall = await clack.confirm({
186
- message: `Install ${missing.length === 1 ? 'it' : 'them'} now using ${chalk.bold(pm)}?`,
187
- initialValue: true
188
- });
189
- if (clack.isCancel(shouldInstall) || !shouldInstall) {
190
- clack.log.warn(chalk.yellow(`Skipped. Install manually:\n` + ` ${chalk.cyan(buildInstallArgs(pm, missing).join(' '))}`));
191
- }
192
- else {
193
- const installSpinner = clack.spinner();
194
- installSpinner.start(`Installing ${missing.join(', ')}…`);
195
- const [cmd, ...args] = buildInstallArgs(pm, missing);
196
- const result = spawnSync(cmd, args, { cwd, stdio: 'pipe', shell: true });
197
- if (result.status !== 0) {
198
- installSpinner.stop(chalk.red('Dependency installation failed.'));
199
- clack.log.error(chalk.red(`Failed to install dependencies. Try manually:\n` +
200
- ` ${chalk.cyan(buildInstallArgs(pm, missing).join(' '))}`));
201
- results.push({ name: componentName, status: 'failed', reason: 'dep install failed' });
202
- continue;
203
- }
204
- installSpinner.stop(chalk.green(`Installed ${missing.join(', ')}.`));
205
- }
206
- }
207
- }
208
- const written = writeComponentFiles(cwd, config, metadata);
209
- for (const f of written) {
210
- clack.log.success(chalk.green(` ${chalk.gray('↑')} ${f}`));
211
- }
212
- const patched = patchStylesFile(cwd, config, metadata);
213
- if (patched) {
214
- clack.log.success(chalk.green(` ${chalk.gray('~')} ${config.stylesFile} ${chalk.gray('(updated)')}`));
215
- }
216
- if (metadata.postInstall.length > 0) {
217
- clack.log.info(chalk.cyan('Post-update notes:\n') + metadata.postInstall.map((note) => ` ${note}`).join('\n'));
218
- }
219
- recordInstalled(cwd, metadata.name, metadata.version);
220
- clack.log.success(chalk.green(`${chalk.bold(componentName)} updated to v${metadata.version}.`));
221
- results.push({ name: componentName, status: 'updated' });
222
- }
223
- if (componentNames.length > 1) {
224
- const updated = results.filter((r) => r.status === 'updated');
225
- const skipped = results.filter((r) => r.status === 'skipped');
226
- const failed = results.filter((r) => r.status === 'failed');
227
- clack.log.info([
228
- '',
229
- chalk.bold('Summary:'),
230
- ...updated.map((r) => ` ${chalk.green('↑')} ${r.name}`),
231
- ...skipped.map((r) => ` ${chalk.gray('–')} ${r.name} ${chalk.gray(r.reason ?? '')}`),
232
- ...failed.map((r) => ` ${chalk.red('✗')} ${r.name} ${chalk.gray(r.reason ?? '')}`)
233
- ].join('\n'));
234
- }
235
- const anyUpdated = results.some((r) => r.status === 'updated');
236
- const anyFailed = results.some((r) => r.status === 'failed');
237
- if (!anyUpdated && !anyFailed) {
238
- clack.outro(chalk.cyan('All components are already up to date.'));
239
- return;
240
- }
241
- if (anyFailed && !anyUpdated) {
242
- clack.outro(chalk.red('Update failed.'));
243
- process.exit(1);
244
- }
245
- clack.outro(chalk.cyan('Done!'));
246
- }
247
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export type LockFile = Record<string, string>;
2
- export declare function readLock(cwd: string): LockFile;
3
- export declare function writeLock(cwd: string, lock: LockFile): void;
4
- export declare function recordInstalled(cwd: string, name: string, version: string): void;
5
- export declare function recordRemoved(cwd: string, name: string): void;
6
- //# sourceMappingURL=lock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAU9C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAM3D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAMhF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAM7D"}
@@ -1,30 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { LOCK_FILE } from '../constants.js';
4
- export function readLock(cwd) {
5
- const lockPath = path.join(cwd, LOCK_FILE);
6
- if (!fs.existsSync(lockPath))
7
- return {};
8
- try {
9
- return JSON.parse(fs.readFileSync(lockPath, 'utf-8'));
10
- }
11
- catch {
12
- return {};
13
- }
14
- }
15
- export function writeLock(cwd, lock) {
16
- const lockPath = path.join(cwd, LOCK_FILE);
17
- const sorted = Object.fromEntries(Object.entries(lock).sort(([a], [b]) => a.localeCompare(b)));
18
- fs.writeFileSync(lockPath, JSON.stringify(sorted, null, 2) + '\n', 'utf-8');
19
- }
20
- export function recordInstalled(cwd, name, version) {
21
- const lock = readLock(cwd);
22
- lock[name] = version;
23
- writeLock(cwd, lock);
24
- }
25
- export function recordRemoved(cwd, name) {
26
- const lock = readLock(cwd);
27
- delete lock[name];
28
- writeLock(cwd, lock);
29
- }
30
- //# sourceMappingURL=lock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/utils/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAa,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,IAAc;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/F,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,IAAY,EAAE,OAAe;IACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE3B,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAErB,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY;IACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IAElB,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC"}
@@ -1,21 +0,0 @@
1
- import type { CatalogEntry } from './registry.js';
2
- export interface SearchResult {
3
- name: string;
4
- description: string;
5
- premium: boolean;
6
- category: string;
7
- reason: string;
8
- score: number;
9
- }
10
- export declare class SearchError extends Error {
11
- constructor(message: string);
12
- }
13
- export declare function keywordSearch(query: string, catalog: Array<{
14
- entry: CatalogEntry;
15
- category: string;
16
- }>): SearchResult[];
17
- export declare function aiSearch(query: string, catalog: Array<{
18
- entry: CatalogEntry;
19
- category: string;
20
- }>, apiKey: string): Promise<SearchResult[]>;
21
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/utils/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,YAAY,EAAE,CAoBhB;AAED,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EACzD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,EAAE,CAAC,CAyFzB"}