agnosticui-cli 2.0.0-alpha.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 (50) hide show
  1. package/README.md +135 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +100 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/add.d.ts +3 -0
  7. package/dist/commands/add.d.ts.map +1 -0
  8. package/dist/commands/add.js +443 -0
  9. package/dist/commands/add.js.map +1 -0
  10. package/dist/commands/init.d.ts +3 -0
  11. package/dist/commands/init.d.ts.map +1 -0
  12. package/dist/commands/init.js +449 -0
  13. package/dist/commands/init.js.map +1 -0
  14. package/dist/commands/list.d.ts +2 -0
  15. package/dist/commands/list.d.ts.map +1 -0
  16. package/dist/commands/list.js +72 -0
  17. package/dist/commands/list.js.map +1 -0
  18. package/dist/commands/remove.d.ts +3 -0
  19. package/dist/commands/remove.d.ts.map +1 -0
  20. package/dist/commands/remove.js +96 -0
  21. package/dist/commands/remove.js.map +1 -0
  22. package/dist/commands/sync.d.ts +6 -0
  23. package/dist/commands/sync.d.ts.map +1 -0
  24. package/dist/commands/sync.js +143 -0
  25. package/dist/commands/sync.js.map +1 -0
  26. package/dist/types/index.d.ts +62 -0
  27. package/dist/types/index.d.ts.map +1 -0
  28. package/dist/types/index.js +5 -0
  29. package/dist/types/index.js.map +1 -0
  30. package/dist/utils/components.d.ts +76 -0
  31. package/dist/utils/components.d.ts.map +1 -0
  32. package/dist/utils/components.js +208 -0
  33. package/dist/utils/components.js.map +1 -0
  34. package/dist/utils/config.d.ts +9 -0
  35. package/dist/utils/config.d.ts.map +1 -0
  36. package/dist/utils/config.js +78 -0
  37. package/dist/utils/config.js.map +1 -0
  38. package/dist/utils/dependencies.d.ts +23 -0
  39. package/dist/utils/dependencies.d.ts.map +1 -0
  40. package/dist/utils/dependencies.js +93 -0
  41. package/dist/utils/dependencies.js.map +1 -0
  42. package/dist/utils/files.d.ts +48 -0
  43. package/dist/utils/files.d.ts.map +1 -0
  44. package/dist/utils/files.js +171 -0
  45. package/dist/utils/files.js.map +1 -0
  46. package/dist/utils/logger.d.ts +12 -0
  47. package/dist/utils/logger.d.ts.map +1 -0
  48. package/dist/utils/logger.js +37 -0
  49. package/dist/utils/logger.js.map +1 -0
  50. package/package.json +60 -0
@@ -0,0 +1,443 @@
1
+ /**
2
+ * ag add command - Add components to the project
3
+ */
4
+ import * as p from '@clack/prompts';
5
+ import path from 'node:path';
6
+ import { stat, readdir, readFile, writeFile } from 'node:fs/promises';
7
+ import { logger } from '../utils/logger.js';
8
+ import { loadConfig, saveConfig, addComponentToConfig, hasComponent } from '../utils/config.js';
9
+ import { ensureDir, pathExists } from '../utils/files.js';
10
+ import { getAvailableComponents, componentExists, getComponentSourcePaths, normalizeComponentName, scanForSharedDependencies, scanForComponentDependencies, getSharedComponentSourcePaths, } from '../utils/components.js';
11
+ import pc from 'picocolors';
12
+ export async function add(componentNames, options = {}) {
13
+ // Setup signal handlers to allow Control-C to work
14
+ let spinner = null;
15
+ const handleExit = () => {
16
+ if (spinner) {
17
+ spinner.stop('Operation cancelled');
18
+ }
19
+ process.exit(130); // Standard exit code for SIGINT
20
+ };
21
+ process.on('SIGINT', handleExit);
22
+ process.on('SIGTERM', handleExit);
23
+ try {
24
+ // Load config
25
+ const config = await loadConfig();
26
+ if (!config) {
27
+ logger.error('AgnosticUI is not initialized in this project.');
28
+ logger.info('Run ' + pc.cyan('npx agnosticui-cli init') + ' to get started.');
29
+ process.exit(1);
30
+ }
31
+ const referencePath = path.resolve(config.paths.reference);
32
+ const componentsPath = path.resolve(config.paths.components);
33
+ // Validate reference library exists
34
+ if (!pathExists(referencePath)) {
35
+ logger.error(`Reference library not found at: ${referencePath}`);
36
+ logger.info('Please run ' + pc.cyan('npx agnosticui-cli init') + ' again.');
37
+ process.exit(1);
38
+ }
39
+ // Get available components
40
+ const availableComponents = await getAvailableComponents(referencePath);
41
+ // Normalize and validate component names
42
+ const normalizedNames = componentNames.map(normalizeComponentName);
43
+ const invalidComponents = normalizedNames.filter(name => !availableComponents.includes(name));
44
+ if (invalidComponents.length > 0) {
45
+ logger.error(`Invalid component(s): ${invalidComponents.join(', ')}`);
46
+ logger.info('Run ' + pc.cyan('npx agnosticui-cli list') + ' to see available components.');
47
+ process.exit(1);
48
+ }
49
+ // Check for already added components (unless --force)
50
+ if (!options.force) {
51
+ const alreadyAdded = normalizedNames.filter(name => hasComponent(config, name));
52
+ if (alreadyAdded.length > 0) {
53
+ logger.warn(`Component(s) already added: ${alreadyAdded.join(', ')}`);
54
+ logger.info('Use ' + pc.cyan('--force') + ' to overwrite.');
55
+ // Filter out already added components
56
+ const toAdd = normalizedNames.filter(name => !alreadyAdded.includes(name));
57
+ if (toAdd.length === 0) {
58
+ process.exit(0);
59
+ }
60
+ // Continue with remaining components
61
+ componentNames = toAdd;
62
+ }
63
+ else {
64
+ componentNames = normalizedNames;
65
+ }
66
+ }
67
+ else {
68
+ componentNames = normalizedNames;
69
+ }
70
+ // Process each component
71
+ spinner = p.spinner();
72
+ const results = [];
73
+ // Start spinner once before the loop
74
+ spinner.start('Processing components...');
75
+ for (let i = 0; i < componentNames.length; i++) {
76
+ const componentName = componentNames[i];
77
+ const progress = `[${i + 1}/${componentNames.length}]`;
78
+ // Update spinner message, don't call start() again
79
+ spinner.message(`${progress} Adding ${componentName}...`);
80
+ try {
81
+ const files = await addComponent(componentName, referencePath, componentsPath, config.framework, config.paths.components);
82
+ // Process shared component dependencies (e.g., CloseButton)
83
+ spinner.message(`${progress} Processing shared dependencies for ${componentName}...`);
84
+ const sharedFiles = await processSharedDependencies(files, referencePath, componentsPath, config.paths.components, spinner, progress);
85
+ files.push(...sharedFiles);
86
+ // Process component dependencies (e.g., CopyButton depends on IconButton)
87
+ spinner.message(`${progress} Processing component dependencies for ${componentName}...`);
88
+ const componentFiles = await processComponentDependencies(files, referencePath, componentsPath, config.framework, config.paths.components, config, spinner, progress);
89
+ files.push(...componentFiles);
90
+ // Note: utils, styles, types, and shared files are now copied during 'npx ag init'
91
+ // so we don't need to scan for them here
92
+ results.push({ name: componentName, success: true, files });
93
+ spinner.message(`${progress} Added ${componentName}`);
94
+ }
95
+ catch (error) {
96
+ results.push({ name: componentName, success: false, files: [] });
97
+ spinner.stop(`${progress} Failed to add ${componentName}`);
98
+ logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
99
+ // Restart spinner for next component only if there are more components
100
+ if (i < componentNames.length - 1) {
101
+ spinner = p.spinner();
102
+ spinner.start(`Processing remaining components...`);
103
+ }
104
+ }
105
+ }
106
+ // Stop spinner if it's still running (in case all components succeeded)
107
+ if (spinner) {
108
+ spinner.stop();
109
+ }
110
+ // Update config with successfully added components
111
+ let updatedConfig = config;
112
+ for (const result of results) {
113
+ if (result.success) {
114
+ updatedConfig = addComponentToConfig(updatedConfig, result.name, '2.0.0-alpha', result.files);
115
+ }
116
+ }
117
+ await saveConfig(updatedConfig);
118
+ // Display results
119
+ const successCount = results.filter(r => r.success).length;
120
+ const failureCount = results.filter(r => !r.success).length;
121
+ logger.newline();
122
+ if (successCount > 0) {
123
+ logger.success(`Added ${successCount} component(s) successfully!`);
124
+ logger.newline();
125
+ // Show import examples for each added component
126
+ for (const result of results) {
127
+ if (result.success) {
128
+ // Calculate import path relative to src/ directory (where most app files are)
129
+ const fullComponentPath = path.join(componentsPath, result.name);
130
+ let importPath = path.relative(process.cwd(), fullComponentPath);
131
+ // If the path starts with 'src/', remove it since imports are typically
132
+ // from files already in src/
133
+ if (importPath.startsWith('src' + path.sep)) {
134
+ importPath = importPath.substring(4); // Remove 'src/'
135
+ }
136
+ else if (importPath.startsWith('src/')) {
137
+ importPath = importPath.substring(4); // Remove 'src/' (forward slash)
138
+ }
139
+ let importStatement = '';
140
+ const componentExportName = getComponentExportName(result.name, config.framework);
141
+ if (config.framework === 'react') {
142
+ // React uses named exports
143
+ importStatement = `import { ${componentExportName} } from './${importPath}/${config.framework}/${componentExportName}'`;
144
+ }
145
+ else if (config.framework === 'vue') {
146
+ // Vue uses default exports and requires .vue extension
147
+ importStatement = `import ${componentExportName} from './${importPath}/${config.framework}/${componentExportName}.vue'`;
148
+ }
149
+ else {
150
+ // Lit, Svelte, and Other (Angular, Solid, etc.) use web components from core directory (side-effect import)
151
+ importStatement = `import './${importPath}/core/${result.name}'`;
152
+ }
153
+ logger.box(`${result.name}:`, [
154
+ pc.dim('Import in your app (assuming consuming script is in src/):'),
155
+ ' ' + logger.command(importStatement),
156
+ '',
157
+ pc.dim('Files created:'),
158
+ ...result.files.map(f => ' ' + pc.dim(f)),
159
+ ]);
160
+ }
161
+ }
162
+ }
163
+ if (failureCount > 0) {
164
+ logger.error(`Failed to add ${failureCount} component(s).`);
165
+ process.exit(1);
166
+ }
167
+ }
168
+ finally {
169
+ // Clean up signal handlers
170
+ process.off('SIGINT', handleExit);
171
+ process.off('SIGTERM', handleExit);
172
+ }
173
+ }
174
+ /**
175
+ * Add a single component
176
+ */
177
+ async function addComponent(componentName, referencePath, componentsPath, framework, configComponentsPath) {
178
+ // Verify component exists
179
+ if (!(await componentExists(referencePath, componentName))) {
180
+ throw new Error(`Component "${componentName}" not found in reference library`);
181
+ }
182
+ // Get source paths
183
+ const sourcePaths = getComponentSourcePaths(referencePath, componentName, framework);
184
+ // Create destination directory
185
+ const destPath = path.join(componentsPath, componentName);
186
+ await ensureDir(destPath);
187
+ const copiedFiles = [];
188
+ // Copy core directory (always needed)
189
+ if (pathExists(sourcePaths.core)) {
190
+ const destCore = path.join(destPath, 'core');
191
+ await copyAndTransform(sourcePaths.core, destCore, configComponentsPath);
192
+ // Track files (relative to project root)
193
+ copiedFiles.push(path.join(destPath, 'core'));
194
+ }
195
+ // Copy framework-specific directory
196
+ if (pathExists(sourcePaths.framework)) {
197
+ const destFramework = path.join(destPath, framework);
198
+ await copyAndTransform(sourcePaths.framework, destFramework, configComponentsPath);
199
+ // Track files (relative to project root)
200
+ copiedFiles.push(path.join(destPath, framework));
201
+ }
202
+ else {
203
+ // Only React and Vue require framework-specific implementations
204
+ // Other frameworks (Lit, Svelte, or 'other' for Angular/Solid/etc.) use the core web component directly
205
+ if (framework === 'react' || framework === 'vue') {
206
+ throw new Error(`${framework} implementation not found for ${componentName}`);
207
+ }
208
+ }
209
+ return copiedFiles;
210
+ }
211
+ /**
212
+ * Get the export name for a component based on framework
213
+ */
214
+ function getComponentExportName(componentName, framework) {
215
+ if (framework === 'react') {
216
+ return `React${componentName}`;
217
+ }
218
+ else if (framework === 'vue') {
219
+ return `Vue${componentName}`;
220
+ }
221
+ else {
222
+ return componentName;
223
+ }
224
+ }
225
+ /**
226
+ * Process shared dependencies for a list of files
227
+ */
228
+ async function processSharedDependencies(files, referencePath, componentsPath, configComponentsPath, spinner, progress, processed = new Set(), depth = 0, scannedFiles = new Set()) {
229
+ // Prevent infinite recursion - max depth of 10 levels
230
+ if (depth > 10) {
231
+ logger.warn('Maximum dependency depth reached (10 levels). Stopping recursive dependency scan.');
232
+ return [];
233
+ }
234
+ const newFiles = [];
235
+ for (const fileOrDir of files) {
236
+ const absPath = path.resolve(process.cwd(), fileOrDir);
237
+ // Skip if we've already scanned this path
238
+ if (scannedFiles.has(absPath)) {
239
+ continue;
240
+ }
241
+ scannedFiles.add(absPath);
242
+ let filesToScan = [];
243
+ try {
244
+ const stats = await stat(absPath);
245
+ if (stats.isDirectory()) {
246
+ const children = await readdir(absPath);
247
+ filesToScan = children
248
+ .filter(f => /\.(ts|js|tsx|jsx|vue|svelte)$/.test(f))
249
+ .map(f => path.join(absPath, f))
250
+ .slice(0, 100); // Limit to first 100 files to prevent hangs
251
+ }
252
+ else {
253
+ if (/\.(ts|js|tsx|jsx|vue|svelte)$/.test(absPath)) {
254
+ filesToScan = [absPath];
255
+ }
256
+ }
257
+ }
258
+ catch (err) {
259
+ // Silently skip files that can't be accessed
260
+ continue;
261
+ }
262
+ for (const file of filesToScan) {
263
+ // Skip if we've already scanned this file
264
+ if (scannedFiles.has(file)) {
265
+ continue;
266
+ }
267
+ scannedFiles.add(file);
268
+ const deps = await scanForSharedDependencies(file);
269
+ for (const dep of deps) {
270
+ if (processed.has(dep))
271
+ continue;
272
+ processed.add(dep);
273
+ try {
274
+ // Add this shared component
275
+ const sharedFiles = await addSharedComponent(dep, referencePath, componentsPath, configComponentsPath);
276
+ newFiles.push(...sharedFiles);
277
+ // Update spinner with dependency info
278
+ if (spinner && progress) {
279
+ spinner.message(`${progress} Processing shared dependency: ${dep}...`);
280
+ }
281
+ // Recursively process its deps
282
+ const recursiveFiles = await processSharedDependencies(sharedFiles, referencePath, componentsPath, configComponentsPath, spinner, progress, processed, depth + 1, scannedFiles);
283
+ newFiles.push(...recursiveFiles);
284
+ }
285
+ catch (error) {
286
+ logger.warn(`Failed to add shared component "${dep}": ${error instanceof Error ? error.message : 'Unknown error'}`);
287
+ }
288
+ }
289
+ }
290
+ }
291
+ return newFiles;
292
+ }
293
+ /**
294
+ * Add a shared component
295
+ */
296
+ async function addSharedComponent(componentName, referencePath, componentsPath, configComponentsPath) {
297
+ const sourcePaths = getSharedComponentSourcePaths(referencePath, componentName);
298
+ const destPath = path.join(componentsPath, 'shared', componentName); // src/components/ag/shared/Name
299
+ await ensureDir(destPath);
300
+ if (pathExists(sourcePaths.path)) {
301
+ await copyAndTransform(sourcePaths.path, destPath, configComponentsPath);
302
+ return [path.join(destPath)];
303
+ }
304
+ else {
305
+ throw new Error(`Shared component "${componentName}" not found at ${sourcePaths.path}`);
306
+ }
307
+ }
308
+ /**
309
+ * Process component dependencies for a list of files
310
+ * Handles cases like CopyButton depending on IconButton
311
+ */
312
+ async function processComponentDependencies(files, referencePath, componentsPath, framework, configComponentsPath, config, spinner, progress, processed = new Set(), depth = 0, scannedFiles = new Set()) {
313
+ // Prevent infinite recursion
314
+ if (depth > 10) {
315
+ logger.warn('Maximum component dependency depth reached (10 levels).');
316
+ return [];
317
+ }
318
+ const newFiles = [];
319
+ for (const fileOrDir of files) {
320
+ const absPath = path.resolve(process.cwd(), fileOrDir);
321
+ // Skip if we've already scanned this path
322
+ if (scannedFiles.has(absPath)) {
323
+ continue;
324
+ }
325
+ scannedFiles.add(absPath);
326
+ let filesToScan = [];
327
+ try {
328
+ const stats = await stat(absPath);
329
+ if (stats.isDirectory()) {
330
+ const children = await readdir(absPath);
331
+ filesToScan = children
332
+ .filter(f => /\.(ts|js|tsx|jsx|vue|svelte)$/.test(f))
333
+ .map(f => path.join(absPath, f))
334
+ .slice(0, 100);
335
+ }
336
+ else {
337
+ if (/\.(ts|js|tsx|jsx|vue|svelte)$/.test(absPath)) {
338
+ filesToScan = [absPath];
339
+ }
340
+ }
341
+ }
342
+ catch (err) {
343
+ continue;
344
+ }
345
+ for (const file of filesToScan) {
346
+ // Skip if we've already scanned this file
347
+ if (scannedFiles.has(file)) {
348
+ continue;
349
+ }
350
+ scannedFiles.add(file);
351
+ const deps = await scanForComponentDependencies(file);
352
+ for (const dep of deps) {
353
+ if (processed.has(dep))
354
+ continue;
355
+ // Check if component is already added
356
+ if (hasComponent(config, dep)) {
357
+ processed.add(dep);
358
+ continue;
359
+ }
360
+ processed.add(dep);
361
+ try {
362
+ // Update spinner with dependency info
363
+ if (spinner && progress) {
364
+ spinner.message(`${progress} Adding component dependency: ${dep}...`);
365
+ }
366
+ else {
367
+ logger.info(` → Detected dependency: ${dep}`);
368
+ }
369
+ // Add the component using the same logic as the main add
370
+ const componentFiles = await addComponent(dep, referencePath, componentsPath, framework, configComponentsPath);
371
+ newFiles.push(...componentFiles);
372
+ // Update config for this dependency
373
+ config = addComponentToConfig(config, dep, '2.0.0-alpha', componentFiles);
374
+ // Recursively process dependencies of this component
375
+ const recursiveFiles = await processComponentDependencies(componentFiles, referencePath, componentsPath, framework, configComponentsPath, config, spinner, progress, processed, depth + 1, scannedFiles);
376
+ newFiles.push(...recursiveFiles);
377
+ }
378
+ catch (error) {
379
+ logger.warn(`Failed to add component dependency "${dep}": ${error instanceof Error ? error.message : 'Unknown error'}`);
380
+ }
381
+ }
382
+ }
383
+ }
384
+ return newFiles;
385
+ }
386
+ /**
387
+ * Copy directory and transform extension from .js to empty in imports
388
+ */
389
+ async function copyAndTransform(src, dest, componentsPath) {
390
+ await ensureDir(dest);
391
+ const entries = await readdir(src, { withFileTypes: true });
392
+ for (const entry of entries) {
393
+ const srcPath = path.join(src, entry.name);
394
+ const destPath = path.join(dest, entry.name);
395
+ if (entry.name.startsWith('._')) {
396
+ continue;
397
+ }
398
+ // Skip test files
399
+ if (/\.(spec|test)\.(ts|js|tsx|jsx)$/.test(entry.name)) {
400
+ continue;
401
+ }
402
+ if (entry.isDirectory()) {
403
+ await copyAndTransform(srcPath, destPath, componentsPath);
404
+ }
405
+ else {
406
+ // If it is a code file, we transform content
407
+ if (/\.(ts|tsx|js|jsx|vue|svelte)$/.test(entry.name)) {
408
+ let content = await readFile(srcPath, 'utf-8');
409
+ // Transform imports: strip .js extension from relative imports
410
+ // 1. import ... from './something.js' -> import ... from './something'
411
+ // 2. export ... from './something.js' -> export ... from './something'
412
+ // 3. import './something.js' -> import './something'
413
+ content = content.replace(/(from\s+['"]\..+?)\.js(['"])/g, '$1$2');
414
+ content = content.replace(/(import\s+['"]\..+?)\.js(['"])/g, '$1$2');
415
+ // Adjust imports for different nesting depth based on componentsPath
416
+ // Rewrite imports for shared infrastructure
417
+ // Old Reference: ../../../utils/ -> src/utils (via ../../../)
418
+ // New User: ../../utils/ -> src/components/ag/utils (via ../../) assuming we are in src/components/ag/Comp/framework
419
+ // We know that reference code uses:
420
+ // ../../../shared/
421
+ // ../../../utils/
422
+ // ../../../styles/
423
+ // ../../../types/
424
+ // In the new layout, infrastructure is at `componentsPath/utils` etc.
425
+ // A component file is at `componentsPath/Component/framework/file.ts`
426
+ // So valid path is `../../utils/`
427
+ // Replace exact pattern match from reference library styles
428
+ const patterns = ['shared', 'utils', 'styles', 'types'];
429
+ for (const dir of patterns) {
430
+ const regex = new RegExp(`(from\\s+['"]|import\\s+['"])(?:\\.\\.\\/){3}(${dir}\\/)`, 'g');
431
+ content = content.replace(regex, `$1../../$2`);
432
+ }
433
+ await writeFile(destPath, content, 'utf-8');
434
+ }
435
+ else {
436
+ // Just copy binary or other files
437
+ const { copyFile } = await import('node:fs/promises');
438
+ await copyFile(srcPath, destPath);
439
+ }
440
+ }
441
+ }
442
+ }
443
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { InitOptions } from '../types/index.js';
2
+ export declare function init(options?: InitOptions): Promise<void>;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAehE,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwOnE"}