agnosticui-cli 2.0.0-alpha.2
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 +1268 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +98 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +464 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +381 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +72 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/remove.d.ts +3 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +96 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +143 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/types/index.d.ts +61 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/components.d.ts +76 -0
- package/dist/utils/components.d.ts.map +1 -0
- package/dist/utils/components.js +208 -0
- package/dist/utils/components.js.map +1 -0
- package/dist/utils/config.d.ts +9 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +78 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/dependencies.d.ts +23 -0
- package/dist/utils/dependencies.d.ts.map +1 -0
- package/dist/utils/dependencies.js +93 -0
- package/dist/utils/dependencies.js.map +1 -0
- package/dist/utils/files.d.ts +48 -0
- package/dist/utils/files.d.ts.map +1 -0
- package/dist/utils/files.js +171 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +34 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/utils/dependencies.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAsB,GAAG,cAAc,CAahF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAc5F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,CAmBvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAYzF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAYnG"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency management utilities
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { execSync } from 'node:child_process';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
/**
|
|
8
|
+
* Detect the package manager being used in the project
|
|
9
|
+
*/
|
|
10
|
+
export function detectPackageManager(cwd = process.cwd()) {
|
|
11
|
+
// Check for lock files
|
|
12
|
+
if (existsSync(path.join(cwd, 'bun.lockb'))) {
|
|
13
|
+
return 'bun';
|
|
14
|
+
}
|
|
15
|
+
if (existsSync(path.join(cwd, 'pnpm-lock.yaml'))) {
|
|
16
|
+
return 'pnpm';
|
|
17
|
+
}
|
|
18
|
+
if (existsSync(path.join(cwd, 'yarn.lock'))) {
|
|
19
|
+
return 'yarn';
|
|
20
|
+
}
|
|
21
|
+
// Default to npm
|
|
22
|
+
return 'npm';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the install command for a package manager
|
|
26
|
+
*/
|
|
27
|
+
export function getInstallCommand(packageManager, packages) {
|
|
28
|
+
const pkgList = packages.join(' ');
|
|
29
|
+
switch (packageManager) {
|
|
30
|
+
case 'bun':
|
|
31
|
+
return `bun add ${pkgList}`;
|
|
32
|
+
case 'pnpm':
|
|
33
|
+
return `pnpm add ${pkgList}`;
|
|
34
|
+
case 'yarn':
|
|
35
|
+
return `yarn add ${pkgList}`;
|
|
36
|
+
case 'npm':
|
|
37
|
+
default:
|
|
38
|
+
return `npm install ${pkgList}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get required dependencies for a framework
|
|
43
|
+
*/
|
|
44
|
+
export function getFrameworkDependencies(framework) {
|
|
45
|
+
// Base dependencies required by all frameworks
|
|
46
|
+
// - lit: Core web components library
|
|
47
|
+
// - focus-trap: Used by Dialog component for accessibility
|
|
48
|
+
// - @floating-ui/dom: Used by Popover and Tooltip components for positioning
|
|
49
|
+
const baseDeps = ['lit', 'focus-trap', '@floating-ui/dom'];
|
|
50
|
+
switch (framework) {
|
|
51
|
+
case 'react':
|
|
52
|
+
return [...baseDeps, '@lit/react'];
|
|
53
|
+
case 'vue':
|
|
54
|
+
return baseDeps;
|
|
55
|
+
case 'lit':
|
|
56
|
+
return baseDeps;
|
|
57
|
+
case 'svelte':
|
|
58
|
+
return baseDeps;
|
|
59
|
+
default:
|
|
60
|
+
return baseDeps;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Install dependencies using the detected package manager
|
|
65
|
+
*/
|
|
66
|
+
export function installDependencies(packages, cwd = process.cwd()) {
|
|
67
|
+
const packageManager = detectPackageManager(cwd);
|
|
68
|
+
const command = getInstallCommand(packageManager, packages);
|
|
69
|
+
try {
|
|
70
|
+
execSync(command, {
|
|
71
|
+
cwd,
|
|
72
|
+
stdio: 'inherit', // Show output to user
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw new Error(`Failed to install dependencies: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if dependencies are already installed
|
|
81
|
+
*/
|
|
82
|
+
export function checkDependenciesInstalled(packages, cwd = process.cwd()) {
|
|
83
|
+
const nodeModulesPath = path.join(cwd, 'node_modules');
|
|
84
|
+
if (!existsSync(nodeModulesPath)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
// Check if all packages exist in node_modules
|
|
88
|
+
return packages.every(pkg => {
|
|
89
|
+
const pkgPath = path.join(nodeModulesPath, pkg);
|
|
90
|
+
return existsSync(pkgPath);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/utils/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure a directory exists, creating it if necessary
|
|
3
|
+
*/
|
|
4
|
+
export declare function ensureDir(dirPath: string): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Copy a file from source to destination
|
|
7
|
+
*/
|
|
8
|
+
export declare function copyFileToDestination(src: string, dest: string): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Recursively copy a directory
|
|
11
|
+
*/
|
|
12
|
+
export declare function copyDirectory(src: string, dest: string): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Recursively copy a directory with file filtering
|
|
15
|
+
*/
|
|
16
|
+
export declare function copyDirectoryFiltered(src: string, dest: string, options?: {
|
|
17
|
+
exclude?: string[];
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Extract a tarball to a destination directory
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractTarball(tarballPath: string, destPath: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a path exists
|
|
25
|
+
*/
|
|
26
|
+
export declare function pathExists(filePath: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Read JSON file
|
|
29
|
+
*/
|
|
30
|
+
export declare function readJSON<T>(filePath: string): Promise<T>;
|
|
31
|
+
/**
|
|
32
|
+
* Get all subdirectories in a directory
|
|
33
|
+
*/
|
|
34
|
+
export declare function getDirectories(dirPath: string): Promise<string[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Check if path is a directory
|
|
37
|
+
*/
|
|
38
|
+
export declare function isDirectory(dirPath: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Add a pattern to an ignore file (e.g. .gitignore or .eslintignore)
|
|
41
|
+
* Creates the file if it doesn't exist
|
|
42
|
+
*/
|
|
43
|
+
export declare function updateIgnoreFile(filePath: string, pattern: string): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Update eslint.config.js to include ignore patterns
|
|
46
|
+
*/
|
|
47
|
+
export declare function updateEslintConfig(filePath: string, ignorePattern: string): Promise<boolean>;
|
|
48
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACnC,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKvE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BlG"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File system utilities
|
|
3
|
+
*/
|
|
4
|
+
import { mkdir, readdir, copyFile, readFile, writeFile, stat, appendFile } from 'node:fs/promises';
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { extract } from 'tar';
|
|
8
|
+
/**
|
|
9
|
+
* Ensure a directory exists, creating it if necessary
|
|
10
|
+
*/
|
|
11
|
+
export async function ensureDir(dirPath) {
|
|
12
|
+
if (!existsSync(dirPath)) {
|
|
13
|
+
await mkdir(dirPath, { recursive: true });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Copy a file from source to destination
|
|
18
|
+
*/
|
|
19
|
+
export async function copyFileToDestination(src, dest) {
|
|
20
|
+
await ensureDir(path.dirname(dest));
|
|
21
|
+
await copyFile(src, dest);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Recursively copy a directory
|
|
25
|
+
*/
|
|
26
|
+
export async function copyDirectory(src, dest) {
|
|
27
|
+
await ensureDir(dest);
|
|
28
|
+
const entries = await readdir(src, { withFileTypes: true });
|
|
29
|
+
for (const entry of entries) {
|
|
30
|
+
const srcPath = path.join(src, entry.name);
|
|
31
|
+
const destPath = path.join(dest, entry.name);
|
|
32
|
+
if (entry.name.startsWith('._')) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (entry.isDirectory()) {
|
|
36
|
+
await copyDirectory(srcPath, destPath);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
await copyFile(srcPath, destPath);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Recursively copy a directory with file filtering
|
|
45
|
+
*/
|
|
46
|
+
export async function copyDirectoryFiltered(src, dest, options = {}) {
|
|
47
|
+
await ensureDir(dest);
|
|
48
|
+
const entries = await readdir(src, { withFileTypes: true });
|
|
49
|
+
const excludePatterns = options.exclude || [];
|
|
50
|
+
for (const entry of entries) {
|
|
51
|
+
if (entry.name.startsWith('._')) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
// Check if file should be excluded
|
|
55
|
+
const shouldExclude = excludePatterns.some(pattern => {
|
|
56
|
+
if (pattern.startsWith('*.')) {
|
|
57
|
+
// Extension pattern like '*.spec.ts'
|
|
58
|
+
const ext = pattern.slice(1); // Remove the *
|
|
59
|
+
return entry.name.endsWith(ext);
|
|
60
|
+
}
|
|
61
|
+
// Exact match
|
|
62
|
+
return entry.name === pattern;
|
|
63
|
+
});
|
|
64
|
+
if (shouldExclude) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const srcPath = path.join(src, entry.name);
|
|
68
|
+
const destPath = path.join(dest, entry.name);
|
|
69
|
+
if (entry.isDirectory()) {
|
|
70
|
+
await copyDirectoryFiltered(srcPath, destPath, options);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
await copyFile(srcPath, destPath);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Extract a tarball to a destination directory
|
|
79
|
+
*/
|
|
80
|
+
export async function extractTarball(tarballPath, destPath) {
|
|
81
|
+
await ensureDir(destPath);
|
|
82
|
+
await extract({
|
|
83
|
+
file: tarballPath,
|
|
84
|
+
cwd: destPath,
|
|
85
|
+
strip: 1, // Remove the top-level directory from the tarball
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if a path exists
|
|
90
|
+
*/
|
|
91
|
+
export function pathExists(filePath) {
|
|
92
|
+
return existsSync(filePath);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Read JSON file
|
|
96
|
+
*/
|
|
97
|
+
export async function readJSON(filePath) {
|
|
98
|
+
const content = await readFile(filePath, 'utf-8');
|
|
99
|
+
return JSON.parse(content);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get all subdirectories in a directory
|
|
103
|
+
*/
|
|
104
|
+
export async function getDirectories(dirPath) {
|
|
105
|
+
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
106
|
+
return entries
|
|
107
|
+
.filter(entry => entry.isDirectory())
|
|
108
|
+
.map(entry => entry.name);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Check if path is a directory
|
|
112
|
+
*/
|
|
113
|
+
export async function isDirectory(dirPath) {
|
|
114
|
+
try {
|
|
115
|
+
const stats = await stat(dirPath);
|
|
116
|
+
return stats.isDirectory();
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Add a pattern to an ignore file (e.g. .gitignore or .eslintignore)
|
|
124
|
+
* Creates the file if it doesn't exist
|
|
125
|
+
*/
|
|
126
|
+
export async function updateIgnoreFile(filePath, pattern) {
|
|
127
|
+
if (pathExists(filePath)) {
|
|
128
|
+
const content = await readFile(filePath, 'utf-8');
|
|
129
|
+
if (!content.includes(pattern)) {
|
|
130
|
+
const separator = content.endsWith('\n') ? '' : '\n';
|
|
131
|
+
await appendFile(filePath, `${separator}${pattern}\n`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Determine default content based on file type
|
|
136
|
+
let defaultContent = '';
|
|
137
|
+
const basename = path.basename(filePath);
|
|
138
|
+
if (basename === '.gitignore') {
|
|
139
|
+
defaultContent = '# Logs\nlogs\n*.log\nnpm-debug.log*\n\n# Node\nnode_modules/\n\n# OS\n.DS_Store\n\n';
|
|
140
|
+
}
|
|
141
|
+
await writeFile(filePath, `${defaultContent}${pattern}\n`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Update eslint.config.js to include ignore patterns
|
|
146
|
+
*/
|
|
147
|
+
export async function updateEslintConfig(filePath, ignorePattern) {
|
|
148
|
+
if (!pathExists(filePath)) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
let content = await readFile(filePath, 'utf-8');
|
|
153
|
+
// Check if already ignored
|
|
154
|
+
if (content.includes(`ignores: ["${ignorePattern}"]`) || content.includes(`ignores: ['${ignorePattern}']`)) {
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
// Look for the start of the configuration array
|
|
158
|
+
// Matches: export default [ OR export default defineConfig([
|
|
159
|
+
const regex = /(export\s+default\s+(?:defineConfig\s*\(\s*)?\[)/;
|
|
160
|
+
if (regex.test(content)) {
|
|
161
|
+
content = content.replace(regex, `$1\n { ignores: ["${ignorePattern}"] },`);
|
|
162
|
+
await writeFile(filePath, content, 'utf-8');
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAE9B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW,EAAE,IAAY;IACnE,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY;IAC3D,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,IAAY,EACZ,UAAkC,EAAE;IAEpC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAE9C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,mCAAmC;QACnC,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACnD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,qCAAqC;gBACrC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;gBAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,cAAc;YACd,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB,EAAE,QAAgB;IACxE,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE1B,MAAM,OAAO,CAAC;QACZ,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,CAAC,EAAE,kDAAkD;KAC7D,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,QAAgB;IAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,OAAO;SACX,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACpC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB,EAAE,OAAe;IACtE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,MAAM,UAAU,CAAC,QAAQ,EAAE,GAAG,SAAS,GAAG,OAAO,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,+CAA+C;QAC/C,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,cAAc,GAAG,qFAAqF,CAAC;QACzG,CAAC;QAED,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,cAAc,GAAG,OAAO,IAAI,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,aAAqB;IAC9E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEhD,2BAA2B;QAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,aAAa,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,aAAa,IAAI,CAAC,EAAE,CAAC;YAC3G,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gDAAgD;QAChD,6DAA6D;QAC7D,MAAM,KAAK,GAAG,kDAAkD,CAAC;QAEjE,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,aAAa,OAAO,CAAC,CAAC;YAC7E,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const logger: {
|
|
2
|
+
info: (message: string) => void;
|
|
3
|
+
success: (message: string) => void;
|
|
4
|
+
error: (message: string) => void;
|
|
5
|
+
warn: (message: string) => void;
|
|
6
|
+
step: (message: string) => void;
|
|
7
|
+
box: (title: string, content: string[]) => void;
|
|
8
|
+
command: (cmd: string) => string;
|
|
9
|
+
newline: () => void;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;oBACD,MAAM;uBAIH,MAAM;qBAIR,MAAM;oBAIP,MAAM;oBAIN,MAAM;iBAIT,MAAM,WAAW,MAAM,EAAE;mBAOvB,MAAM;;CAOtB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility with colored output
|
|
3
|
+
*/
|
|
4
|
+
import pc from 'picocolors';
|
|
5
|
+
export const logger = {
|
|
6
|
+
info: (message) => {
|
|
7
|
+
console.log(pc.blue('ℹ'), message);
|
|
8
|
+
},
|
|
9
|
+
success: (message) => {
|
|
10
|
+
console.log(pc.green('✓'), message);
|
|
11
|
+
},
|
|
12
|
+
error: (message) => {
|
|
13
|
+
console.log(pc.red('✖'), message);
|
|
14
|
+
},
|
|
15
|
+
warn: (message) => {
|
|
16
|
+
console.log(pc.yellow('⚠'), message);
|
|
17
|
+
},
|
|
18
|
+
step: (message) => {
|
|
19
|
+
console.log(pc.cyan('→'), message);
|
|
20
|
+
},
|
|
21
|
+
box: (title, content) => {
|
|
22
|
+
console.log('');
|
|
23
|
+
console.log(pc.bold(pc.cyan(title)));
|
|
24
|
+
content.forEach(line => console.log(' ' + line));
|
|
25
|
+
console.log('');
|
|
26
|
+
},
|
|
27
|
+
command: (cmd) => {
|
|
28
|
+
return pc.dim(' $ ' + cmd);
|
|
29
|
+
},
|
|
30
|
+
newline: () => {
|
|
31
|
+
console.log('');
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,EAAE,CAAC,KAAa,EAAE,OAAiB,EAAE,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;QACvB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agnosticui-cli",
|
|
3
|
+
"version": "2.0.0-alpha.2",
|
|
4
|
+
"description": "CLI for AgnosticUI Local - The UI kit that lives in your codebase",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"bin": {
|
|
10
|
+
"ag": "./dist/cli.js"
|
|
11
|
+
},
|
|
12
|
+
"main": "./dist/cli.js",
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"dev": "tsc --watch",
|
|
19
|
+
"test": "echo \"Tests coming soon\"",
|
|
20
|
+
"lint": "eslint .",
|
|
21
|
+
"typecheck": "tsc --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"agnosticui",
|
|
25
|
+
"cli",
|
|
26
|
+
"components",
|
|
27
|
+
"ui-kit",
|
|
28
|
+
"local-first",
|
|
29
|
+
"ai-friendly"
|
|
30
|
+
],
|
|
31
|
+
"author": "AgnosticUI",
|
|
32
|
+
"license": "Apache-2.0",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@clack/prompts": "^0.8.2",
|
|
35
|
+
"commander": "^12.1.0",
|
|
36
|
+
"picocolors": "^1.1.1",
|
|
37
|
+
"tar": "^7.4.3"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^22.10.1",
|
|
41
|
+
"@types/tar": "^6.1.13",
|
|
42
|
+
"typescript": "^5.7.2"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"lit": "^3.0.0",
|
|
46
|
+
"focus-trap": "^7.0.0",
|
|
47
|
+
"@floating-ui/dom": "^1.0.0"
|
|
48
|
+
},
|
|
49
|
+
"peerDependenciesMeta": {
|
|
50
|
+
"focus-trap": {
|
|
51
|
+
"optional": true
|
|
52
|
+
},
|
|
53
|
+
"@floating-ui/dom": {
|
|
54
|
+
"optional": true
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=18.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|