zard-cli 1.0.0-beta.53 → 1.0.0-beta.55
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/commands/add/component-installer.d.ts +1 -0
- package/commands/add/component-installer.d.ts.map +1 -1
- package/commands/add/component-installer.js +25 -2
- package/commands/add/component-installer.js.map +1 -1
- package/commands/add/dependency-resolver.d.ts +1 -1
- package/commands/add/dependency-resolver.d.ts.map +1 -1
- package/commands/add/dependency-resolver.js +5 -6
- package/commands/add/dependency-resolver.js.map +1 -1
- package/commands/add/index.d.ts.map +1 -1
- package/commands/add/index.js +38 -16
- package/commands/add/index.js.map +1 -1
- package/commands/init/index.d.ts.map +1 -1
- package/commands/init/index.js +3 -5
- package/commands/init/index.js.map +1 -1
- package/index.js +26 -2
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/utils/config.d.ts.map +1 -1
- package/utils/config.js +10 -4
- package/utils/config.js.map +1 -1
- package/utils/errors.d.ts +16 -0
- package/utils/errors.d.ts.map +1 -0
- package/utils/errors.js +31 -0
- package/utils/errors.js.map +1 -0
- package/utils/get-project-info.d.ts +1 -0
- package/utils/get-project-info.d.ts.map +1 -1
- package/utils/get-project-info.js +3 -1
- package/utils/get-project-info.js.map +1 -1
- package/utils/http-client.d.ts +8 -0
- package/utils/http-client.d.ts.map +1 -0
- package/utils/http-client.js +68 -0
- package/utils/http-client.js.map +1 -0
- package/utils/logger.d.ts +3 -0
- package/utils/logger.d.ts.map +1 -1
- package/utils/logger.js +12 -0
- package/utils/logger.js.map +1 -1
- package/utils/package-manager.d.ts +3 -1
- package/utils/package-manager.d.ts.map +1 -1
- package/utils/package-manager.js +10 -7
- package/utils/package-manager.js.map +1 -1
- package/utils/registry.d.ts +2 -0
- package/utils/registry.d.ts.map +1 -1
- package/utils/registry.js +25 -20
- package/utils/registry.js.map +1 -1
- package/utils/fetch-component.d.ts +0 -3
- package/utils/fetch-component.d.ts.map +0 -1
- package/utils/fetch-component.js +0 -75
- package/utils/fetch-component.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Config } from '../../utils/config';
|
|
2
|
+
export declare function validateTargetPath(targetDir: string, projectRoot: string): void;
|
|
2
3
|
export declare function installComponent(componentName: string, targetDir: string, config: Config & {
|
|
3
4
|
resolvedPaths: any;
|
|
4
5
|
}): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-installer.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"component-installer.d.ts","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAK/E;AAED,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,GACtC,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -1,11 +1,33 @@
|
|
|
1
|
+
import { CliError, InstallError } from '../../utils/errors.js';
|
|
2
|
+
import { logger } from '../../utils/logger.js';
|
|
1
3
|
import { fetchComponent } from '../../utils/registry.js';
|
|
2
4
|
import { promises as fs } from 'node:fs';
|
|
3
5
|
import * as path from 'node:path';
|
|
6
|
+
export function validateTargetPath(targetDir, projectRoot) {
|
|
7
|
+
const resolved = path.resolve(targetDir);
|
|
8
|
+
if (!resolved.startsWith(projectRoot)) {
|
|
9
|
+
throw new CliError('Target path must be within the project directory', 'INVALID_PATH');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
4
12
|
export async function installComponent(componentName, targetDir, config) {
|
|
5
13
|
const component = await fetchComponent(componentName, config);
|
|
6
14
|
await fs.mkdir(targetDir, { recursive: true });
|
|
7
|
-
|
|
8
|
-
|
|
15
|
+
const writtenFiles = [];
|
|
16
|
+
try {
|
|
17
|
+
for (const file of component.files) {
|
|
18
|
+
const filePath = await installComponentFile(file, targetDir);
|
|
19
|
+
writtenFiles.push(filePath);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
// Rollback: remove all written files
|
|
24
|
+
for (const filePath of writtenFiles) {
|
|
25
|
+
await fs.unlink(filePath).catch(() => {
|
|
26
|
+
/* ignore cleanup errors */
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
logger.debug(`Rolled back ${writtenFiles.length} file(s) for component "${componentName}"`);
|
|
30
|
+
throw new InstallError(`Failed to install component "${componentName}": ${error instanceof Error ? error.message : error}`, componentName);
|
|
9
31
|
}
|
|
10
32
|
}
|
|
11
33
|
async function installComponentFile(file, targetDir) {
|
|
@@ -13,5 +35,6 @@ async function installComponentFile(file, targetDir) {
|
|
|
13
35
|
const fileDir = path.dirname(filePath);
|
|
14
36
|
await fs.mkdir(fileDir, { recursive: true });
|
|
15
37
|
await fs.writeFile(filePath, file.content, 'utf8');
|
|
38
|
+
return filePath;
|
|
16
39
|
}
|
|
17
40
|
//# sourceMappingURL=component-installer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-installer.js","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,SAAiB,EACjB,MAAuC;IAEvC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE9D,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"component-installer.js","sourceRoot":"","sources":["../../../src/commands/add/component-installer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,WAAmB;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,QAAQ,CAAC,kDAAkD,EAAE,cAAc,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,SAAiB,EACjB,MAAuC;IAEvC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE9D,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,2BAA2B;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,eAAe,YAAY,CAAC,MAAM,2BAA2B,aAAa,GAAG,CAAC,CAAC;QAE5F,MAAM,IAAI,YAAY,CACpB,gCAAgC,aAAa,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EACnG,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAA8B,EAAE,SAAiB;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -14,7 +14,7 @@ export interface ResolvedDependencies {
|
|
|
14
14
|
componentsToInstall: ComponentMeta[];
|
|
15
15
|
dependenciesToInstall: Set<string>;
|
|
16
16
|
}
|
|
17
|
-
export declare function getRegistryIndex(): Promise<RegistryIndex>;
|
|
17
|
+
export declare function getRegistryIndex(forceRefresh?: boolean): Promise<RegistryIndex>;
|
|
18
18
|
export declare function getComponentMeta(name: string): Promise<ComponentMeta | undefined>;
|
|
19
19
|
export declare function getAllComponentNames(): Promise<string[]>;
|
|
20
20
|
export declare function resolveDependencies(selectedComponents: string[], resolvedConfig: Config & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,
|
|
1
|
+
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAa1G,wBAAgB,YAAY,CAC1B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAoBR;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,aAAa,EAAE,CAAC;IACrC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAKnF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAYvF;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG9D;AAED,wBAAsB,mBAAmB,CACvC,kBAAkB,EAAE,MAAM,EAAE,EAC5B,cAAc,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,GAAG,CAAA;CAAE,EAC/C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,oBAAoB,CAAC,CA4C/B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, readdirSync } from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { logger } from '../../utils/logger.js';
|
|
4
|
-
import { fetchRegistryIndex } from '../../utils/registry.js';
|
|
4
|
+
import { fetchRegistryIndex, invalidateRegistryCache } from '../../utils/registry.js';
|
|
5
5
|
function isComponentInstalled(dir) {
|
|
6
6
|
if (!existsSync(dir))
|
|
7
7
|
return false;
|
|
@@ -29,12 +29,11 @@ export function getTargetDir(component, resolvedConfig, cwd, customPath) {
|
|
|
29
29
|
}
|
|
30
30
|
return path.resolve(resolvedConfig.resolvedPaths.components, basePath);
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
registryIndexCache = await fetchRegistryIndex();
|
|
32
|
+
export async function getRegistryIndex(forceRefresh = false) {
|
|
33
|
+
if (forceRefresh) {
|
|
34
|
+
invalidateRegistryCache();
|
|
36
35
|
}
|
|
37
|
-
return
|
|
36
|
+
return fetchRegistryIndex();
|
|
38
37
|
}
|
|
39
38
|
export async function getComponentMeta(name) {
|
|
40
39
|
const index = await getRegistryIndex();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAsB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../src/commands/add/dependency-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,GAAG,SA+DZ,CAAC"}
|
package/commands/add/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { installComponent } from '../../commands/add/component-installer.js';
|
|
1
|
+
import { installComponent, validateTargetPath } from '../../commands/add/component-installer.js';
|
|
2
2
|
import { selectComponents } from '../../commands/add/component-selector.js';
|
|
3
3
|
import { updateProvideZardWithDarkMode } from '../../commands/add/dark-mode-setup.js';
|
|
4
4
|
import { resolveDependencies, getTargetDir } from '../../commands/add/dependency-resolver.js';
|
|
5
5
|
import { injectThemeScript } from '../../commands/init/theme-loader.js';
|
|
6
6
|
import { getConfig, resolveConfigPaths } from '../../utils/config.js';
|
|
7
|
+
import { CliError } from '../../utils/errors.js';
|
|
7
8
|
import { getProjectInfo } from '../../utils/get-project-info.js';
|
|
8
9
|
import { logger, spinner } from '../../utils/logger.js';
|
|
9
10
|
import { installPackages } from '../../utils/package-manager.js';
|
|
@@ -24,8 +25,11 @@ export const add = new Command()
|
|
|
24
25
|
.action(async (components, options) => {
|
|
25
26
|
const cwd = path.resolve(options.cwd);
|
|
26
27
|
validateWorkingDirectory(cwd);
|
|
28
|
+
if (options.path) {
|
|
29
|
+
validateTargetPath(path.resolve(cwd, options.path), cwd);
|
|
30
|
+
}
|
|
27
31
|
const config = await loadConfiguration(cwd);
|
|
28
|
-
await validateProject(cwd);
|
|
32
|
+
const projectInfo = await validateProject(cwd);
|
|
29
33
|
const resolvedConfig = await resolveConfigPaths(cwd, config);
|
|
30
34
|
const selectedComponents = await selectComponents(components, options.all);
|
|
31
35
|
const addSpinner = spinner('Resolving components...').start();
|
|
@@ -35,13 +39,17 @@ export const add = new Command()
|
|
|
35
39
|
logger.info('All components already installed.');
|
|
36
40
|
return;
|
|
37
41
|
}
|
|
42
|
+
const resolvedDeps = resolveCompatibleVersions(dependenciesToInstall, projectInfo.angularVersion);
|
|
43
|
+
if (projectInfo.angularVersionRaw && /-(rc|next|canary)/.test(projectInfo.angularVersionRaw)) {
|
|
44
|
+
logger.warn(`You are using a pre-release version of Angular (${projectInfo.angularVersionRaw}). Some dependencies may have compatibility issues.`);
|
|
45
|
+
}
|
|
38
46
|
if (!options.yes) {
|
|
39
|
-
const shouldProceed = await confirmInstallation(componentsToInstall.length,
|
|
47
|
+
const shouldProceed = await confirmInstallation(componentsToInstall.length, resolvedDeps.length);
|
|
40
48
|
if (!shouldProceed) {
|
|
41
49
|
process.exit(0);
|
|
42
50
|
}
|
|
43
51
|
}
|
|
44
|
-
await installDependencies(
|
|
52
|
+
await installDependencies(resolvedDeps, cwd, config.packageManager);
|
|
45
53
|
await installComponents(componentsToInstall, cwd, resolvedConfig, options);
|
|
46
54
|
const isDarkModeBeingInstalled = componentsToInstall.some(c => c.name === 'dark-mode');
|
|
47
55
|
if (isDarkModeBeingInstalled) {
|
|
@@ -52,40 +60,53 @@ export const add = new Command()
|
|
|
52
60
|
});
|
|
53
61
|
function validateWorkingDirectory(cwd) {
|
|
54
62
|
if (!existsSync(cwd)) {
|
|
55
|
-
|
|
56
|
-
process.exit(1);
|
|
63
|
+
throw new CliError(`The path ${cwd} does not exist. Please try again.`, 'INVALID_CWD');
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
66
|
async function loadConfiguration(cwd) {
|
|
60
67
|
const config = await getConfig(cwd);
|
|
61
68
|
if (!config) {
|
|
62
|
-
|
|
63
|
-
process.exit(1);
|
|
69
|
+
throw new CliError('Configuration not found. Please run `ngzard init` first.', 'CONFIG_NOT_FOUND');
|
|
64
70
|
}
|
|
65
71
|
return config;
|
|
66
72
|
}
|
|
67
73
|
async function validateProject(cwd) {
|
|
68
74
|
const projectInfo = await getProjectInfo(cwd);
|
|
69
75
|
if (projectInfo.framework !== 'angular') {
|
|
70
|
-
|
|
71
|
-
process.exit(1);
|
|
76
|
+
throw new CliError('This project does not appear to be an Angular project.', 'NOT_ANGULAR');
|
|
72
77
|
}
|
|
73
78
|
return projectInfo;
|
|
74
79
|
}
|
|
75
|
-
async function confirmInstallation(componentsCount,
|
|
80
|
+
async function confirmInstallation(componentsCount, depsCount) {
|
|
76
81
|
const { proceed } = await prompts({
|
|
77
82
|
type: 'confirm',
|
|
78
83
|
name: 'proceed',
|
|
79
|
-
message: `Ready to install ${componentsCount} component(s) and ${
|
|
84
|
+
message: `Ready to install ${componentsCount} component(s) and ${depsCount} dependencies. Proceed?`,
|
|
80
85
|
initial: true,
|
|
81
86
|
});
|
|
82
87
|
return proceed;
|
|
83
88
|
}
|
|
84
|
-
|
|
85
|
-
|
|
89
|
+
const ANGULAR_VERSION_PACKAGES = ['embla-carousel-angular'];
|
|
90
|
+
function resolveCompatibleVersions(dependencies, angularVersion) {
|
|
91
|
+
const angularMajor = angularVersion ? parseInt(angularVersion.split('.')[0], 10) : null;
|
|
92
|
+
return Array.from(dependencies).map(dep => {
|
|
93
|
+
if (angularMajor && ANGULAR_VERSION_PACKAGES.includes(dep)) {
|
|
94
|
+
return `${dep}@^${angularMajor}.0.0`;
|
|
95
|
+
}
|
|
96
|
+
return dep;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async function installDependencies(packages, cwd, packageManager) {
|
|
100
|
+
if (packages.length === 0)
|
|
86
101
|
return;
|
|
87
102
|
const depsSpinner = spinner('Installing dependencies...').start();
|
|
88
|
-
|
|
103
|
+
try {
|
|
104
|
+
await installPackages(packages, cwd, packageManager, false);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
depsSpinner.text = 'Retrying with --legacy-peer-deps...';
|
|
108
|
+
await installPackages(packages, cwd, packageManager, false, true);
|
|
109
|
+
}
|
|
89
110
|
depsSpinner.succeed('Dependencies installed');
|
|
90
111
|
}
|
|
91
112
|
async function installComponents(componentsToInstall, cwd, resolvedConfig, options) {
|
|
@@ -101,6 +122,7 @@ async function installComponents(componentsToInstall, cwd, resolvedConfig, optio
|
|
|
101
122
|
}
|
|
102
123
|
catch (error) {
|
|
103
124
|
failed.push(component.name);
|
|
125
|
+
logger.debug(`Failed to install ${component.name}: ${error instanceof Error ? error.message : error}`);
|
|
104
126
|
}
|
|
105
127
|
}
|
|
106
128
|
if (failed.length > 0) {
|
|
@@ -131,7 +153,7 @@ async function setupDarkMode(cwd, resolvedConfig) {
|
|
|
131
153
|
}
|
|
132
154
|
catch (error) {
|
|
133
155
|
darkModeSpinner.fail('Failed to configure dark mode');
|
|
134
|
-
logger.
|
|
156
|
+
logger.debug(`Dark mode error: ${error instanceof Error ? error.message : error}`);
|
|
135
157
|
}
|
|
136
158
|
}
|
|
137
159
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/add/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,IAAI,SA2Cb,CAAC"}
|
package/commands/init/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { installDependencies } from '../../commands/init/dependencies.js';
|
|
|
4
4
|
import { applyThemeToStyles, createPostCssConfig } from '../../commands/init/tailwind-setup.js';
|
|
5
5
|
import { updateTsConfig } from '../../commands/init/tsconfig-updater.js';
|
|
6
6
|
import { resolveConfigPaths } from '../../utils/config.js';
|
|
7
|
+
import { CliError } from '../../utils/errors.js';
|
|
7
8
|
import { getProjectInfo } from '../../utils/get-project-info.js';
|
|
8
9
|
import { logger, spinner } from '../../utils/logger.js';
|
|
9
10
|
import { detectPackageManager } from '../../utils/package-manager.js';
|
|
@@ -49,15 +50,12 @@ export const init = new Command()
|
|
|
49
50
|
});
|
|
50
51
|
function validateWorkingDirectory(cwd) {
|
|
51
52
|
if (!existsSync(cwd)) {
|
|
52
|
-
|
|
53
|
-
process.exit(1);
|
|
53
|
+
throw new CliError(`The path ${cwd} does not exist. Please try again.`, 'INVALID_CWD');
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
function validateAngularProject(projectInfo) {
|
|
57
57
|
if (projectInfo.framework !== 'angular') {
|
|
58
|
-
|
|
59
|
-
logger.error('Please run this command in an Angular project.');
|
|
60
|
-
process.exit(1);
|
|
58
|
+
throw new CliError('This project does not appear to be an Angular project.', 'NOT_ANGULAR');
|
|
61
59
|
}
|
|
62
60
|
}
|
|
63
61
|
async function confirmReinitialization() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -2,14 +2,38 @@
|
|
|
2
2
|
import { add } from './commands/add/index.js';
|
|
3
3
|
import { init } from './commands/init/index.js';
|
|
4
4
|
import { APP_VERSION } from './constants/app.constants.js';
|
|
5
|
+
import { CliError } from './utils/errors.js';
|
|
6
|
+
import { enableDebug, isDebugEnabled, logger } from './utils/logger.js';
|
|
5
7
|
import { Command } from 'commander';
|
|
6
8
|
async function main() {
|
|
7
9
|
const program = new Command()
|
|
8
10
|
.name('ngzard')
|
|
9
11
|
.description('add beautiful Angular components to your apps')
|
|
10
|
-
.version(APP_VERSION, '-v, --version', 'display the version number')
|
|
12
|
+
.version(APP_VERSION, '-v, --version', 'display the version number')
|
|
13
|
+
.option('--debug', 'enable debug logging')
|
|
14
|
+
.hook('preAction', (_thisCommand, actionCommand) => {
|
|
15
|
+
const opts = actionCommand.optsWithGlobals?.() ?? actionCommand.opts?.();
|
|
16
|
+
if (opts?.debug || process.env['NGZARD_DEBUG']) {
|
|
17
|
+
enableDebug();
|
|
18
|
+
}
|
|
19
|
+
});
|
|
11
20
|
program.addCommand(init).addCommand(add);
|
|
12
21
|
program.parse();
|
|
13
22
|
}
|
|
14
|
-
main()
|
|
23
|
+
main().catch(error => {
|
|
24
|
+
if (error instanceof CliError) {
|
|
25
|
+
logger.error(error.message);
|
|
26
|
+
if (isDebugEnabled()) {
|
|
27
|
+
console.error(error.stack);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
logger.error('An unexpected error occurred.');
|
|
32
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
33
|
+
if (isDebugEnabled()) {
|
|
34
|
+
console.error(error);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
process.exit(1);
|
|
38
|
+
});
|
|
15
39
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,+CAA+C,CAAC;SAC5D,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,+CAA+C,CAAC;SAC5D,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,4BAA4B,CAAC;SACnE,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,EAAE,EAAE,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACzE,IAAI,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/C,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEzC,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,cAAc,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,IAAI,cAAc,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zard-cli",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.55",
|
|
4
4
|
"description": "An alternative to shadcn/ui for angular",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"zard-cli": "./
|
|
8
|
+
"zard-cli": "./index.js"
|
|
9
9
|
},
|
|
10
10
|
"keywords": [
|
|
11
11
|
"ngzard",
|
package/utils/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;iBA0BhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,MAe5B,CAAC;AAEF,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgBxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;iBA0BhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,MAe5B,CAAC;AAEF,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBnE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;GAcnE"}
|
package/utils/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConfigError } from '../utils/errors.js';
|
|
2
2
|
import { access, readFile } from 'node:fs/promises';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -65,11 +65,17 @@ export async function getConfig(cwd) {
|
|
|
65
65
|
}
|
|
66
66
|
try {
|
|
67
67
|
const configJson = await readJson(configPath);
|
|
68
|
-
|
|
68
|
+
const config = configSchema.parse(configJson);
|
|
69
|
+
if (config.registryUrl) {
|
|
70
|
+
const { validateRegistryUrl } = await import('../utils/registry.js');
|
|
71
|
+
validateRegistryUrl(config.registryUrl);
|
|
72
|
+
}
|
|
73
|
+
return config;
|
|
69
74
|
}
|
|
70
75
|
catch (error) {
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
if (error instanceof ConfigError)
|
|
77
|
+
throw error;
|
|
78
|
+
throw new ConfigError('Invalid configuration file: components.json');
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
export function resolveAliasToPath(alias, baseUrl) {
|
package/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class CliError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
constructor(message: string, code: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class NetworkError extends CliError {
|
|
6
|
+
readonly url: string;
|
|
7
|
+
constructor(message: string, url: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class ConfigError extends CliError {
|
|
10
|
+
constructor(message: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class InstallError extends CliError {
|
|
13
|
+
readonly component: string;
|
|
14
|
+
constructor(message: string, component: string);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAK/B;AAED,qBAAa,YAAa,SAAQ,QAAQ;aAGtB,GAAG,EAAE,MAAM;gBAD3B,OAAO,EAAE,MAAM,EACC,GAAG,EAAE,MAAM;CAK9B;AAED,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;aAGtB,SAAS,EAAE,MAAM;gBADjC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM;CAKpC"}
|
package/utils/errors.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export class CliError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(message, code) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.code = code;
|
|
6
|
+
this.name = 'CliError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class NetworkError extends CliError {
|
|
10
|
+
url;
|
|
11
|
+
constructor(message, url) {
|
|
12
|
+
super(message, 'NETWORK_ERROR');
|
|
13
|
+
this.url = url;
|
|
14
|
+
this.name = 'NetworkError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class ConfigError extends CliError {
|
|
18
|
+
constructor(message) {
|
|
19
|
+
super(message, 'CONFIG_ERROR');
|
|
20
|
+
this.name = 'ConfigError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class InstallError extends CliError {
|
|
24
|
+
component;
|
|
25
|
+
constructor(message, component) {
|
|
26
|
+
super(message, 'INSTALL_ERROR');
|
|
27
|
+
this.component = component;
|
|
28
|
+
this.name = 'InstallError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAGtB;IAFlB,YACE,OAAe,EACC,GAAW;QAE3B,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAFhB,QAAG,GAAH,GAAG,CAAQ;QAG3B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAGtB;IAFlB,YACE,OAAe,EACC,SAAiB;QAEjC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAFhB,cAAS,GAAT,SAAS,CAAQ;QAGjC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -4,6 +4,7 @@ export type ProjectInfo = {
|
|
|
4
4
|
hasTailwind: boolean;
|
|
5
5
|
hasNx: boolean;
|
|
6
6
|
angularVersion: string | null;
|
|
7
|
+
angularVersionRaw: string | null;
|
|
7
8
|
};
|
|
8
9
|
export declare function getProjectInfo(cwd: string): Promise<ProjectInfo>;
|
|
9
10
|
//# sourceMappingURL=get-project-info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-project-info.d.ts","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"get-project-info.d.ts","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BtE"}
|
|
@@ -31,13 +31,15 @@ export async function getProjectInfo(cwd) {
|
|
|
31
31
|
const hasTypeScript = !!deps['typescript'];
|
|
32
32
|
const hasTailwind = !!deps['tailwindcss'];
|
|
33
33
|
const hasNx = !!deps['nx'] || !!deps['@nx/workspace'];
|
|
34
|
-
const
|
|
34
|
+
const angularVersionRaw = deps['@angular/core'] || null;
|
|
35
|
+
const angularVersion = angularVersionRaw?.replace(/[^0-9.]/g, '') || null;
|
|
35
36
|
return {
|
|
36
37
|
framework: hasAngular ? 'angular' : 'unknown',
|
|
37
38
|
hasTypeScript,
|
|
38
39
|
hasTailwind,
|
|
39
40
|
hasNx,
|
|
40
41
|
angularVersion,
|
|
42
|
+
angularVersionRaw,
|
|
41
43
|
};
|
|
42
44
|
}
|
|
43
45
|
//# sourceMappingURL=get-project-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-project-info.js","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-project-info.js","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAWH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAEvD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;IAE7E,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEtD,MAAM,iBAAiB,GAAI,IAAI,CAAC,eAAe,CAAY,IAAI,IAAI,CAAC;IACpE,MAAM,cAAc,GAAG,iBAAiB,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IAE1E,OAAO;QACL,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC7C,aAAa;QACb,WAAW;QACX,KAAK;QACL,cAAc;QACd,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface FetchOptions {
|
|
2
|
+
timeout?: number;
|
|
3
|
+
retries?: number;
|
|
4
|
+
backoffBase?: number;
|
|
5
|
+
headers?: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export declare function fetchJson<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
8
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAUD,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CA6DlF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { NetworkError } from '../utils/errors.js';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
const DEFAULT_TIMEOUT = 30_000;
|
|
4
|
+
const DEFAULT_RETRIES = 3;
|
|
5
|
+
const DEFAULT_BACKOFF_BASE = 1_000;
|
|
6
|
+
function sleep(ms) {
|
|
7
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
8
|
+
}
|
|
9
|
+
export async function fetchJson(url, options) {
|
|
10
|
+
const { timeout = DEFAULT_TIMEOUT, retries = DEFAULT_RETRIES, backoffBase = DEFAULT_BACKOFF_BASE } = options ?? {};
|
|
11
|
+
const headers = {
|
|
12
|
+
'User-Agent': 'ngzard-cli',
|
|
13
|
+
Accept: 'application/json',
|
|
14
|
+
...options?.headers,
|
|
15
|
+
};
|
|
16
|
+
for (let attempt = 1; attempt <= retries; attempt++) {
|
|
17
|
+
try {
|
|
18
|
+
const response = await fetch(url, {
|
|
19
|
+
signal: AbortSignal.timeout(timeout),
|
|
20
|
+
headers,
|
|
21
|
+
});
|
|
22
|
+
if (response.status === 429) {
|
|
23
|
+
const retryAfter = parseInt(response.headers.get('Retry-After') ?? '5', 10);
|
|
24
|
+
logger.debug(`Rate limited by ${url}, retrying in ${retryAfter}s...`);
|
|
25
|
+
await sleep(retryAfter * 1000);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
throw new NetworkError(`HTTP ${response.status}: ${response.statusText}`, url);
|
|
30
|
+
}
|
|
31
|
+
const text = await response.text();
|
|
32
|
+
if (!text || text.includes('<!DOCTYPE') || text.includes('<html')) {
|
|
33
|
+
throw new NetworkError('Received HTML instead of JSON from registry', url);
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return JSON.parse(text);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
throw new NetworkError('Invalid JSON response from registry', url);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof NetworkError) {
|
|
44
|
+
if (attempt === retries)
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
else if (error instanceof DOMException && error.name === 'TimeoutError') {
|
|
48
|
+
if (attempt === retries) {
|
|
49
|
+
throw new NetworkError(`Request timed out after ${timeout}ms`, url);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (error instanceof TypeError) {
|
|
53
|
+
// fetch throws TypeError for DNS failures, connection refused, etc.
|
|
54
|
+
if (attempt === retries) {
|
|
55
|
+
throw new NetworkError(`Connection failed: ${error.message}`, url);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
const delay = backoffBase * Math.pow(2, attempt - 1);
|
|
62
|
+
logger.debug(`Attempt ${attempt}/${retries} failed for ${url}, retrying in ${delay}ms...`);
|
|
63
|
+
await sleep(delay);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
throw new NetworkError(`Failed after ${retries} attempts`, url);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
|
package/utils/logger.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
export declare function enableDebug(): void;
|
|
2
|
+
export declare function isDebugEnabled(): boolean;
|
|
1
3
|
export declare const logger: {
|
|
2
4
|
error(...args: unknown[]): void;
|
|
3
5
|
warn(...args: unknown[]): void;
|
|
4
6
|
info(...args: unknown[]): void;
|
|
5
7
|
success(...args: unknown[]): void;
|
|
8
|
+
debug(...args: unknown[]): void;
|
|
6
9
|
break(): void;
|
|
7
10
|
};
|
|
8
11
|
export declare function spinner(text: string): import("ora").Ora;
|
package/utils/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAKA,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,eAAO,MAAM,MAAM;mBACF,OAAO,EAAE;kBAGV,OAAO,EAAE;kBAGT,OAAO,EAAE;qBAGN,OAAO,EAAE;mBAGX,OAAO,EAAE;;CAQzB,CAAC;AAEF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,qBAMnC"}
|
package/utils/logger.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
+
let debugEnabled = false;
|
|
4
|
+
export function enableDebug() {
|
|
5
|
+
debugEnabled = true;
|
|
6
|
+
}
|
|
7
|
+
export function isDebugEnabled() {
|
|
8
|
+
return debugEnabled;
|
|
9
|
+
}
|
|
3
10
|
export const logger = {
|
|
4
11
|
error(...args) {
|
|
5
12
|
console.log(chalk.red(...args));
|
|
@@ -13,6 +20,11 @@ export const logger = {
|
|
|
13
20
|
success(...args) {
|
|
14
21
|
console.log(chalk.green(...args));
|
|
15
22
|
},
|
|
23
|
+
debug(...args) {
|
|
24
|
+
if (debugEnabled) {
|
|
25
|
+
console.log(chalk.gray('[debug]', ...args));
|
|
26
|
+
}
|
|
27
|
+
},
|
|
16
28
|
break() {
|
|
17
29
|
console.log('');
|
|
18
30
|
},
|
package/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,GAAG,IAAe;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,GAAG,IAAe;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,KAAK;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,GAAG,CAAC;QACT,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,MAAM,UAAU,WAAW;IACzB,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,GAAG,IAAe;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,GAAG,IAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,GAAG,IAAe;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,KAAK;QACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,GAAG,CAAC;QACT,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun';
|
|
2
|
+
export declare function detectPackageManager(): Promise<PackageManager>;
|
|
2
3
|
export declare function getPackageManager(cwd?: string): Promise<'npm' | 'yarn' | 'pnpm' | 'bun'>;
|
|
3
4
|
export declare function getInstallCommand(packageManager: string, isDev?: boolean): Promise<string[]>;
|
|
4
5
|
export declare function installPackages(packages: string[], cwd: string, packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun', isDev?: boolean, legacyPeerDeps?: boolean): Promise<void>;
|
|
6
|
+
export {};
|
|
5
7
|
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAGA,KAAK,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAItD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAkBpE;AAED,wBAAsB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAG7G;AAED,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYhG;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,EAC/C,KAAK,UAAQ,EACb,cAAc,UAAQ,GACrB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
package/utils/package-manager.js
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import { detect } from '@antfu/ni';
|
|
2
2
|
import { getConfig } from '../utils/config.js';
|
|
3
|
+
let cachedPackageManager = null;
|
|
3
4
|
export async function detectPackageManager() {
|
|
5
|
+
if (cachedPackageManager)
|
|
6
|
+
return cachedPackageManager;
|
|
4
7
|
const userAgent = process.env.npm_config_user_agent || '';
|
|
5
8
|
if (userAgent.includes('bun'))
|
|
6
|
-
return 'bun';
|
|
9
|
+
return (cachedPackageManager = 'bun');
|
|
7
10
|
if (userAgent.includes('pnpm'))
|
|
8
|
-
return 'pnpm';
|
|
11
|
+
return (cachedPackageManager = 'pnpm');
|
|
9
12
|
if (userAgent.includes('yarn'))
|
|
10
|
-
return 'yarn';
|
|
13
|
+
return (cachedPackageManager = 'yarn');
|
|
11
14
|
if (userAgent.includes('npm'))
|
|
12
|
-
return 'npm';
|
|
15
|
+
return (cachedPackageManager = 'npm');
|
|
13
16
|
const agent = await detect({ programmatic: true });
|
|
14
17
|
if (agent === 'yarn@berry')
|
|
15
|
-
return 'yarn';
|
|
18
|
+
return (cachedPackageManager = 'yarn');
|
|
16
19
|
if (agent && ['npm', 'yarn', 'pnpm', 'bun'].includes(agent)) {
|
|
17
|
-
return agent;
|
|
20
|
+
return (cachedPackageManager = agent);
|
|
18
21
|
}
|
|
19
|
-
return 'npm';
|
|
22
|
+
return (cachedPackageManager = 'npm');
|
|
20
23
|
}
|
|
21
24
|
export async function getPackageManager(cwd = process.cwd()) {
|
|
22
25
|
const config = await getConfig(cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
|
package/utils/registry.d.ts
CHANGED
|
@@ -28,7 +28,9 @@ export interface RegistryIndex {
|
|
|
28
28
|
}>;
|
|
29
29
|
}
|
|
30
30
|
export declare function getRegistryUrl(config?: Config): string;
|
|
31
|
+
export declare function validateRegistryUrl(url: string): void;
|
|
31
32
|
export declare function fetchRegistryIndex(registryUrl?: string): Promise<RegistryIndex>;
|
|
33
|
+
export declare function invalidateRegistryCache(): void;
|
|
32
34
|
export declare function fetchComponentFromRegistry(componentName: string, registryUrl?: string): Promise<RegistryItem>;
|
|
33
35
|
export declare function getAvailableComponents(registryUrl?: string): Promise<string[]>;
|
|
34
36
|
export declare function transformContent(content: string, config: Config): string;
|
package/utils/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAInD,eAAO,MAAM,oBAAoB,QAE0D,CAAC;AAE5F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAarD;AAKD,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAYrF;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAInH;AAED,wBAAsB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGpF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAyCxE;AAED,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAgBvB"}
|
package/utils/registry.js
CHANGED
|
@@ -1,38 +1,40 @@
|
|
|
1
1
|
import { DEFAULT_REGISTRY_URL as BUILD_REGISTRY_URL } from '../config/registry-config.js';
|
|
2
|
-
import {
|
|
2
|
+
import { ConfigError } from '../utils/errors.js';
|
|
3
|
+
import { fetchJson } from '../utils/http-client.js';
|
|
3
4
|
export const DEFAULT_REGISTRY_URL = process.env['ZARD_REGISTRY_URL'] ||
|
|
4
5
|
(BUILD_REGISTRY_URL !== '__REGISTRY_URL__' ? BUILD_REGISTRY_URL : 'https://zardui.com/r');
|
|
5
6
|
export function getRegistryUrl(config) {
|
|
6
7
|
return config?.registryUrl || DEFAULT_REGISTRY_URL;
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
+
export function validateRegistryUrl(url) {
|
|
9
10
|
try {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
'
|
|
15
|
-
'User-Agent: ngzard-cli',
|
|
16
|
-
'--max-time',
|
|
17
|
-
'30',
|
|
18
|
-
url,
|
|
19
|
-
]);
|
|
20
|
-
if (!stdout || stdout.includes('<!DOCTYPE') || stdout.includes('<html')) {
|
|
21
|
-
throw new Error(`Invalid response from registry: ${url}`);
|
|
11
|
+
const parsed = new URL(url);
|
|
12
|
+
const isHttps = parsed.protocol === 'https:';
|
|
13
|
+
const isLocalhost = parsed.hostname === 'localhost' || parsed.hostname === '127.0.0.1';
|
|
14
|
+
if (!isHttps && !isLocalhost) {
|
|
15
|
+
throw new ConfigError('Registry URL must use HTTPS (or localhost for development)');
|
|
22
16
|
}
|
|
23
|
-
return JSON.parse(stdout);
|
|
24
17
|
}
|
|
25
18
|
catch (error) {
|
|
26
|
-
if (error instanceof
|
|
27
|
-
throw
|
|
28
|
-
}
|
|
29
|
-
throw new Error(`Failed to fetch from registry: ${url} - ${error}`);
|
|
19
|
+
if (error instanceof ConfigError)
|
|
20
|
+
throw error;
|
|
21
|
+
throw new ConfigError(`Invalid registry URL: ${url}`);
|
|
30
22
|
}
|
|
31
23
|
}
|
|
24
|
+
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
25
|
+
let registryIndexCache = null;
|
|
32
26
|
export async function fetchRegistryIndex(registryUrl) {
|
|
33
27
|
const baseUrl = registryUrl || DEFAULT_REGISTRY_URL;
|
|
28
|
+
if (registryIndexCache && Date.now() - registryIndexCache.timestamp < CACHE_TTL) {
|
|
29
|
+
return registryIndexCache.data;
|
|
30
|
+
}
|
|
34
31
|
const url = `${baseUrl}/registry.json`;
|
|
35
|
-
|
|
32
|
+
const data = await fetchJson(url);
|
|
33
|
+
registryIndexCache = { data, timestamp: Date.now() };
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
36
|
+
export function invalidateRegistryCache() {
|
|
37
|
+
registryIndexCache = null;
|
|
36
38
|
}
|
|
37
39
|
export async function fetchComponentFromRegistry(componentName, registryUrl) {
|
|
38
40
|
const baseUrl = registryUrl || DEFAULT_REGISTRY_URL;
|
|
@@ -67,6 +69,9 @@ export function transformContent(content, config) {
|
|
|
67
69
|
}
|
|
68
70
|
export async function fetchComponent(componentName, config, registryUrl) {
|
|
69
71
|
const item = await fetchComponentFromRegistry(componentName, registryUrl);
|
|
72
|
+
if (!item.files || !Array.isArray(item.files)) {
|
|
73
|
+
throw new ConfigError(`Component "${componentName}" has no files in the registry`);
|
|
74
|
+
}
|
|
70
75
|
const transformedFiles = item.files.map(file => ({
|
|
71
76
|
name: file.name,
|
|
72
77
|
content: transformContent(file.content, config),
|
package/utils/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE5F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-component.d.ts","sourceRoot":"","sources":["../../src/utils/fetch-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA6EnD,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAYjB"}
|
package/utils/fetch-component.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { transformContent } from '../utils/registry.js';
|
|
2
|
-
import { execa } from 'execa';
|
|
3
|
-
import { readFileSync } from 'node:fs';
|
|
4
|
-
import { join, dirname } from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = dirname(__filename);
|
|
8
|
-
const GITHUB_API = 'https://api.github.com/repos/zard-ui/zardui/contents';
|
|
9
|
-
function getCliVersion() {
|
|
10
|
-
try {
|
|
11
|
-
const packageJsonPath = join(__dirname, '../package.json');
|
|
12
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
13
|
-
return packageJson.version;
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
console.warn('Failed to read CLI version from package.json, falling back to master branch');
|
|
17
|
-
return 'master';
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get the GitHub ref (tag or branch) to fetch components from
|
|
22
|
-
* Uses the CLI version tag (e.g., v1.2.3) to ensure component compatibility
|
|
23
|
-
*/
|
|
24
|
-
function getGithubRef() {
|
|
25
|
-
const version = getCliVersion();
|
|
26
|
-
if (version === 'master' || version.includes('dev') || version === '0.0.0') {
|
|
27
|
-
return 'master';
|
|
28
|
-
}
|
|
29
|
-
return `v${version}`;
|
|
30
|
-
}
|
|
31
|
-
const GITHUB_REF = getGithubRef();
|
|
32
|
-
const GITHUB_RAW = `https://raw.githubusercontent.com/zard-ui/zardui/${GITHUB_REF}`;
|
|
33
|
-
async function fetchFromGitHubAPI(filePath) {
|
|
34
|
-
try {
|
|
35
|
-
const apiUrl = `${GITHUB_API}/${filePath}?ref=${GITHUB_REF}`;
|
|
36
|
-
const { stdout } = await execa('curl', [
|
|
37
|
-
'-s',
|
|
38
|
-
'-H',
|
|
39
|
-
'Accept: application/vnd.github.v3+json',
|
|
40
|
-
'-H',
|
|
41
|
-
'User-Agent: zard-cli',
|
|
42
|
-
apiUrl,
|
|
43
|
-
]);
|
|
44
|
-
const response = JSON.parse(stdout);
|
|
45
|
-
if (response.message) {
|
|
46
|
-
throw new Error(response.message);
|
|
47
|
-
}
|
|
48
|
-
if (response.content && response.encoding === 'base64') {
|
|
49
|
-
return Buffer.from(response.content, 'base64').toString('utf8');
|
|
50
|
-
}
|
|
51
|
-
throw new Error('Invalid response from GitHub API');
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
55
|
-
const rawUrl = `${GITHUB_RAW}/${filePath}`;
|
|
56
|
-
const { stdout } = await execa('curl', ['-s', '-H', 'User-Agent: zard-cli', rawUrl]);
|
|
57
|
-
if (!stdout || stdout.includes('429: Too Many Requests') || stdout.includes('404: Not Found')) {
|
|
58
|
-
throw new Error(`Failed to fetch from both API and raw URL: ${filePath}`);
|
|
59
|
-
}
|
|
60
|
-
return stdout;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
export async function fetchComponentFromGithub(componentName, fileName, config) {
|
|
64
|
-
try {
|
|
65
|
-
const filePath = `libs/zard/src/lib/components/${componentName}/${fileName}`;
|
|
66
|
-
const randomDelay = Math.random() * 2000 + 1000; // 1-3 seconds
|
|
67
|
-
await new Promise(resolve => setTimeout(resolve, randomDelay));
|
|
68
|
-
const content = await fetchFromGitHubAPI(filePath);
|
|
69
|
-
return transformContent(content, config);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
throw new Error(`Failed to fetch component ${componentName}/${fileName}: ${error}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=fetch-component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-component.js","sourceRoot":"","sources":["../../src/utils/fetch-component.ts"],"names":[],"mappings":"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"}
|