zard-cli 1.0.0-beta.1

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 (110) hide show
  1. package/README.md +188 -0
  2. package/dist/commands/add/component-installer.d.ts +5 -0
  3. package/dist/commands/add/component-installer.d.ts.map +1 -0
  4. package/dist/commands/add/component-installer.js +17 -0
  5. package/dist/commands/add/component-installer.js.map +1 -0
  6. package/dist/commands/add/component-selector.d.ts +2 -0
  7. package/dist/commands/add/component-selector.d.ts.map +1 -0
  8. package/dist/commands/add/component-selector.js +31 -0
  9. package/dist/commands/add/component-selector.js.map +1 -0
  10. package/dist/commands/add/dark-mode-setup.d.ts +7 -0
  11. package/dist/commands/add/dark-mode-setup.d.ts.map +1 -0
  12. package/dist/commands/add/dark-mode-setup.js +43 -0
  13. package/dist/commands/add/dark-mode-setup.js.map +1 -0
  14. package/dist/commands/add/dependency-resolver.d.ts +27 -0
  15. package/dist/commands/add/dependency-resolver.d.ts.map +1 -0
  16. package/dist/commands/add/dependency-resolver.js +108 -0
  17. package/dist/commands/add/dependency-resolver.js.map +1 -0
  18. package/dist/commands/add/index.d.ts +3 -0
  19. package/dist/commands/add/index.d.ts.map +1 -0
  20. package/dist/commands/add/index.js +137 -0
  21. package/dist/commands/add/index.js.map +1 -0
  22. package/dist/commands/init/config-prompter.d.ts +71 -0
  23. package/dist/commands/init/config-prompter.d.ts.map +1 -0
  24. package/dist/commands/init/config-prompter.js +109 -0
  25. package/dist/commands/init/config-prompter.js.map +1 -0
  26. package/dist/commands/init/dependencies.d.ts +11 -0
  27. package/dist/commands/init/dependencies.d.ts.map +1 -0
  28. package/dist/commands/init/dependencies.js +33 -0
  29. package/dist/commands/init/dependencies.js.map +1 -0
  30. package/dist/commands/init/index.d.ts +3 -0
  31. package/dist/commands/init/index.d.ts.map +1 -0
  32. package/dist/commands/init/index.js +121 -0
  33. package/dist/commands/init/index.js.map +1 -0
  34. package/dist/commands/init/tailwind-setup.d.ts +5 -0
  35. package/dist/commands/init/tailwind-setup.d.ts.map +1 -0
  36. package/dist/commands/init/tailwind-setup.js +24 -0
  37. package/dist/commands/init/tailwind-setup.js.map +1 -0
  38. package/dist/commands/init/theme-loader.d.ts +2 -0
  39. package/dist/commands/init/theme-loader.d.ts.map +1 -0
  40. package/dist/commands/init/theme-loader.js +62 -0
  41. package/dist/commands/init/theme-loader.js.map +1 -0
  42. package/dist/commands/init/tsconfig-updater.d.ts +3 -0
  43. package/dist/commands/init/tsconfig-updater.d.ts.map +1 -0
  44. package/dist/commands/init/tsconfig-updater.js +49 -0
  45. package/dist/commands/init/tsconfig-updater.js.map +1 -0
  46. package/dist/commands/init/update-angular-config.d.ts +7 -0
  47. package/dist/commands/init/update-angular-config.d.ts.map +1 -0
  48. package/dist/commands/init/update-angular-config.js +81 -0
  49. package/dist/commands/init/update-angular-config.js.map +1 -0
  50. package/dist/config/registry-config.d.ts +2 -0
  51. package/dist/config/registry-config.d.ts.map +1 -0
  52. package/dist/config/registry-config.js +2 -0
  53. package/dist/config/registry-config.js.map +1 -0
  54. package/dist/constants/app.constants.d.ts +2 -0
  55. package/dist/constants/app.constants.d.ts.map +1 -0
  56. package/dist/constants/app.constants.js +24 -0
  57. package/dist/constants/app.constants.js.map +1 -0
  58. package/dist/core/registry/index.d.ts +6 -0
  59. package/dist/core/registry/index.d.ts.map +1 -0
  60. package/dist/core/registry/index.js +9 -0
  61. package/dist/core/registry/index.js.map +1 -0
  62. package/dist/core/registry/registry-data.d.ts +13 -0
  63. package/dist/core/registry/registry-data.d.ts.map +1 -0
  64. package/dist/core/registry/registry-data.js +854 -0
  65. package/dist/core/registry/registry-data.js.map +1 -0
  66. package/dist/core/themes/index.d.ts +3 -0
  67. package/dist/core/themes/index.d.ts.map +1 -0
  68. package/dist/core/themes/index.js +3 -0
  69. package/dist/core/themes/index.js.map +1 -0
  70. package/dist/core/themes/theme-definitions.d.ts +7 -0
  71. package/dist/core/themes/theme-definitions.d.ts.map +1 -0
  72. package/dist/core/themes/theme-definitions.js +465 -0
  73. package/dist/core/themes/theme-definitions.js.map +1 -0
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +15 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/utils/config.d.ts +101 -0
  79. package/dist/utils/config.d.ts.map +1 -0
  80. package/dist/utils/config.js +87 -0
  81. package/dist/utils/config.js.map +1 -0
  82. package/dist/utils/fetch-component.d.ts +3 -0
  83. package/dist/utils/fetch-component.d.ts.map +1 -0
  84. package/dist/utils/fetch-component.js +75 -0
  85. package/dist/utils/fetch-component.js.map +1 -0
  86. package/dist/utils/get-package-info.d.ts +9 -0
  87. package/dist/utils/get-package-info.d.ts.map +1 -0
  88. package/dist/utils/get-package-info.js +52 -0
  89. package/dist/utils/get-package-info.js.map +1 -0
  90. package/dist/utils/get-project-info.d.ts +9 -0
  91. package/dist/utils/get-project-info.d.ts.map +1 -0
  92. package/dist/utils/get-project-info.js +43 -0
  93. package/dist/utils/get-project-info.js.map +1 -0
  94. package/dist/utils/logger.d.ts +9 -0
  95. package/dist/utils/logger.d.ts.map +1 -0
  96. package/dist/utils/logger.js +27 -0
  97. package/dist/utils/logger.js.map +1 -0
  98. package/dist/utils/package-manager.d.ts +5 -0
  99. package/dist/utils/package-manager.d.ts.map +1 -0
  100. package/dist/utils/package-manager.js +47 -0
  101. package/dist/utils/package-manager.js.map +1 -0
  102. package/dist/utils/registry.d.ts +36 -0
  103. package/dist/utils/registry.d.ts.map +1 -0
  104. package/dist/utils/registry.js +71 -0
  105. package/dist/utils/registry.js.map +1 -0
  106. package/dist/utils/theme-selector.d.ts +4 -0
  107. package/dist/utils/theme-selector.d.ts.map +1 -0
  108. package/dist/utils/theme-selector.js +33 -0
  109. package/dist/utils/theme-selector.js.map +1 -0
  110. package/package.json +61 -0
@@ -0,0 +1,101 @@
1
+ import { z } from 'zod';
2
+ declare const configSchema: z.ZodObject<{
3
+ $schema: z.ZodOptional<z.ZodString>;
4
+ appConfigFile: z.ZodDefault<z.ZodString>;
5
+ style: z.ZodDefault<z.ZodEnum<["css"]>>;
6
+ packageManager: z.ZodDefault<z.ZodEnum<["npm", "yarn", "pnpm", "bun"]>>;
7
+ registryUrl: z.ZodOptional<z.ZodString>;
8
+ tailwind: z.ZodDefault<z.ZodObject<{
9
+ css: z.ZodDefault<z.ZodString>;
10
+ baseColor: z.ZodDefault<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ css?: string;
13
+ baseColor?: string;
14
+ }, {
15
+ css?: string;
16
+ baseColor?: string;
17
+ }>>;
18
+ baseUrl: z.ZodDefault<z.ZodString>;
19
+ aliases: z.ZodDefault<z.ZodObject<{
20
+ components: z.ZodDefault<z.ZodString>;
21
+ utils: z.ZodDefault<z.ZodString>;
22
+ core: z.ZodDefault<z.ZodString>;
23
+ services: z.ZodDefault<z.ZodString>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ components?: string;
26
+ utils?: string;
27
+ core?: string;
28
+ services?: string;
29
+ }, {
30
+ components?: string;
31
+ utils?: string;
32
+ core?: string;
33
+ services?: string;
34
+ }>>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ $schema?: string;
37
+ appConfigFile?: string;
38
+ style?: "css";
39
+ packageManager?: "npm" | "yarn" | "pnpm" | "bun";
40
+ registryUrl?: string;
41
+ tailwind?: {
42
+ css?: string;
43
+ baseColor?: string;
44
+ };
45
+ baseUrl?: string;
46
+ aliases?: {
47
+ components?: string;
48
+ utils?: string;
49
+ core?: string;
50
+ services?: string;
51
+ };
52
+ }, {
53
+ $schema?: string;
54
+ appConfigFile?: string;
55
+ style?: "css";
56
+ packageManager?: "npm" | "yarn" | "pnpm" | "bun";
57
+ registryUrl?: string;
58
+ tailwind?: {
59
+ css?: string;
60
+ baseColor?: string;
61
+ };
62
+ baseUrl?: string;
63
+ aliases?: {
64
+ components?: string;
65
+ utils?: string;
66
+ core?: string;
67
+ services?: string;
68
+ };
69
+ }>;
70
+ export type Config = z.infer<typeof configSchema>;
71
+ export declare const DEFAULT_CONFIG: Config;
72
+ export declare function getConfig(cwd: string): Promise<Config | null>;
73
+ export declare function resolveAliasToPath(alias: string, baseUrl: string): string;
74
+ export declare function resolveConfigPaths(cwd: string, config: Config): Promise<{
75
+ resolvedPaths: {
76
+ tailwindCss: string;
77
+ baseUrl: string;
78
+ components: string;
79
+ utils: string;
80
+ core: string;
81
+ services: string;
82
+ };
83
+ $schema?: string;
84
+ appConfigFile?: string;
85
+ style?: "css";
86
+ packageManager?: "npm" | "yarn" | "pnpm" | "bun";
87
+ registryUrl?: string;
88
+ tailwind?: {
89
+ css?: string;
90
+ baseColor?: string;
91
+ };
92
+ baseUrl?: string;
93
+ aliases?: {
94
+ components?: string;
95
+ utils?: string;
96
+ core?: string;
97
+ services?: string;
98
+ };
99
+ }>;
100
+ export {};
101
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBhB,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,CAcnE;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"}
@@ -0,0 +1,87 @@
1
+ import { logger } from '../utils/logger.js';
2
+ import { access, readFile } from 'node:fs/promises';
3
+ import * as path from 'node:path';
4
+ import { z } from 'zod';
5
+ async function pathExists(filePath) {
6
+ try {
7
+ await access(filePath);
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ async function readJson(filePath) {
15
+ const content = await readFile(filePath, 'utf-8');
16
+ return JSON.parse(content);
17
+ }
18
+ const configSchema = z.object({
19
+ $schema: z.string().optional(),
20
+ appConfigFile: z.string().default('src/app/app.config.ts'),
21
+ style: z.enum(['css']).default('css'),
22
+ packageManager: z.enum(['npm', 'yarn', 'pnpm', 'bun']).default('npm'),
23
+ registryUrl: z.string().optional(),
24
+ tailwind: z
25
+ .object({
26
+ css: z.string().default('src/styles.css'),
27
+ baseColor: z.string().default('slate'),
28
+ })
29
+ .default({}),
30
+ baseUrl: z.string().default('src/app'),
31
+ aliases: z
32
+ .object({
33
+ components: z.string().default('@/shared/components'),
34
+ utils: z.string().default('@/shared/utils'),
35
+ core: z.string().default('@/shared/core'),
36
+ services: z.string().default('@/shared/services'),
37
+ })
38
+ .default({}),
39
+ });
40
+ export const DEFAULT_CONFIG = {
41
+ style: 'css',
42
+ appConfigFile: 'src/app/app.config.ts',
43
+ packageManager: 'npm',
44
+ tailwind: {
45
+ css: 'src/styles.css',
46
+ baseColor: 'slate',
47
+ },
48
+ baseUrl: 'src/app',
49
+ aliases: {
50
+ components: '@/shared/components',
51
+ utils: '@/shared/utils',
52
+ core: '@/shared/core',
53
+ services: '@/shared/services',
54
+ },
55
+ };
56
+ export async function getConfig(cwd) {
57
+ const configPath = path.resolve(cwd, 'components.json');
58
+ if (!(await pathExists(configPath))) {
59
+ return null;
60
+ }
61
+ try {
62
+ const configJson = await readJson(configPath);
63
+ return configSchema.parse(configJson);
64
+ }
65
+ catch (error) {
66
+ logger.error('Invalid configuration file');
67
+ throw error;
68
+ }
69
+ }
70
+ export function resolveAliasToPath(alias, baseUrl) {
71
+ return alias.replace(/^@\//, `${baseUrl}/`);
72
+ }
73
+ export async function resolveConfigPaths(cwd, config) {
74
+ const { baseUrl, aliases } = config;
75
+ return {
76
+ ...config,
77
+ resolvedPaths: {
78
+ tailwindCss: path.resolve(cwd, config.tailwind.css),
79
+ baseUrl: path.resolve(cwd, baseUrl),
80
+ components: path.resolve(cwd, resolveAliasToPath(aliases.components, baseUrl)),
81
+ utils: path.resolve(cwd, resolveAliasToPath(aliases.utils, baseUrl)),
82
+ core: path.resolve(cwd, resolveAliasToPath(aliases.core, baseUrl)),
83
+ services: path.resolve(cwd, resolveAliasToPath(aliases.services, baseUrl)),
84
+ },
85
+ };
86
+ }
87
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,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,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACrE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;KACvC,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACtC,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;QACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;KAClD,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;CACf,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,uBAAuB;IACtC,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE;QACR,GAAG,EAAE,gBAAgB;QACrB,SAAS,EAAE,OAAO;KACnB;IACD,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE;QACP,UAAU,EAAE,qBAAqB;QACjC,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,mBAAmB;KAC9B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAExD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,OAAe;IAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,MAAc;IAClE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEpC,OAAO;QACL,GAAG,MAAM;QACT,aAAa,EAAE;YACb,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;YACnC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9E,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACpE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Config } from '../utils/config.js';
2
+ export declare function fetchComponentFromGithub(componentName: string, fileName: string, config: Config): Promise<string>;
3
+ //# sourceMappingURL=fetch-component.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,75 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-component.js","sourceRoot":"","sources":["../../src/utils/fetch-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ type PackageJson = {
2
+ name: string;
3
+ version: string;
4
+ dependencies?: Record<string, string>;
5
+ devDependencies?: Record<string, string>;
6
+ };
7
+ export declare function getPackageInfo(): Promise<PackageJson>;
8
+ export {};
9
+ //# sourceMappingURL=get-package-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-package-info.d.ts","sourceRoot":"","sources":["../../src/utils/get-package-info.ts"],"names":[],"mappings":"AAmBA,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEF,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAkC3D"}
@@ -0,0 +1,52 @@
1
+ import { APP_VERSION } from '../constants/app.constants.js';
2
+ import { fileURLToPath } from 'url';
3
+ import { access, readFile } from 'node:fs/promises';
4
+ import * as path from 'path';
5
+ async function pathExists(filePath) {
6
+ try {
7
+ await access(filePath);
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ async function readJson(filePath) {
15
+ const content = await readFile(filePath, 'utf-8');
16
+ return JSON.parse(content);
17
+ }
18
+ export async function getPackageInfo() {
19
+ try {
20
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
21
+ const possiblePaths = [
22
+ path.resolve(__dirname, '../package.json'),
23
+ path.resolve(__dirname, '../../../package.json'),
24
+ path.resolve(__dirname, '../../package.json'),
25
+ path.resolve(__dirname, '../../../../package.json'),
26
+ path.resolve(__dirname, '../node_modules/@ngzard/ui/package.json'),
27
+ ];
28
+ for (const packageJsonPath of possiblePaths) {
29
+ try {
30
+ if (await pathExists(packageJsonPath)) {
31
+ return await readJson(packageJsonPath);
32
+ }
33
+ }
34
+ catch {
35
+ // Continue to next path
36
+ }
37
+ }
38
+ // Fallback to hardcoded info if package.json is not found
39
+ return {
40
+ name: '@ngzard/ui',
41
+ version: APP_VERSION,
42
+ };
43
+ }
44
+ catch (error) {
45
+ // Ultimate fallback
46
+ return {
47
+ name: '@ngzard/ui',
48
+ version: APP_VERSION,
49
+ };
50
+ }
51
+ }
52
+ //# sourceMappingURL=get-package-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-package-info.js","sourceRoot":"","sources":["../../src/utils/get-package-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,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;AASD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/D,MAAM,aAAa,GAAG;YACpB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yCAAyC,CAAC;SACnE,CAAC;QAEF,KAAK,MAAM,eAAe,IAAI,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,MAAM,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtC,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oBAAoB;QACpB,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,WAAW;SACrB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type ProjectInfo = {
2
+ framework: 'angular' | 'unknown';
3
+ hasTypeScript: boolean;
4
+ hasTailwind: boolean;
5
+ hasNx: boolean;
6
+ angularVersion: string | null;
7
+ };
8
+ export declare function getProjectInfo(cwd: string): Promise<ProjectInfo>;
9
+ //# sourceMappingURL=get-project-info.d.ts.map
@@ -0,0 +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;CAC/B,CAAC;AAEF,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAwBtE"}
@@ -0,0 +1,43 @@
1
+ import { access, readFile } from 'node:fs/promises';
2
+ import * as path from 'path';
3
+ import { z } from 'zod';
4
+ async function pathExists(filePath) {
5
+ try {
6
+ await access(filePath);
7
+ return true;
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ }
13
+ async function readJson(filePath) {
14
+ const content = await readFile(filePath, 'utf-8');
15
+ return JSON.parse(content);
16
+ }
17
+ const packageJsonSchema = z.object({
18
+ name: z.string(),
19
+ version: z.string().optional(),
20
+ dependencies: z.record(z.string()).optional(),
21
+ devDependencies: z.record(z.string()).optional(),
22
+ });
23
+ export async function getProjectInfo(cwd) {
24
+ const packageJsonPath = path.join(cwd, 'package.json');
25
+ if (!(await pathExists(packageJsonPath))) {
26
+ throw new Error('No package.json found. Please run this command in your project root.');
27
+ }
28
+ const packageJson = packageJsonSchema.parse(await readJson(packageJsonPath));
29
+ const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
30
+ const hasAngular = !!deps['@angular/core'];
31
+ const hasTypeScript = !!deps['typescript'];
32
+ const hasTailwind = !!deps['tailwindcss'];
33
+ const hasNx = !!deps['nx'] || !!deps['@nx/workspace'];
34
+ const angularVersion = deps['@angular/core']?.replace(/[^0-9.]/g, '') || null;
35
+ return {
36
+ framework: hasAngular ? 'angular' : 'unknown',
37
+ hasTypeScript,
38
+ hasTailwind,
39
+ hasNx,
40
+ angularVersion,
41
+ };
42
+ }
43
+ //# sourceMappingURL=get-project-info.js.map
@@ -0,0 +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,CAAC,CAAC,QAAQ,EAAE;IAC7C,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAUH,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,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IAE9E,OAAO;QACL,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC7C,aAAa;QACb,WAAW;QACX,KAAK;QACL,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const logger: {
2
+ error(...args: unknown[]): void;
3
+ warn(...args: unknown[]): void;
4
+ info(...args: unknown[]): void;
5
+ success(...args: unknown[]): void;
6
+ break(): void;
7
+ };
8
+ export declare function spinner(text: string): import("ora").Ora;
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;mBACF,OAAO,EAAE;kBAGV,OAAO,EAAE;kBAGT,OAAO,EAAE;qBAGN,OAAO,EAAE;;CAM3B,CAAC;AAEF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,qBAMnC"}
@@ -0,0 +1,27 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ export const logger = {
4
+ error(...args) {
5
+ console.log(chalk.red(...args));
6
+ },
7
+ warn(...args) {
8
+ console.log(chalk.yellow(...args));
9
+ },
10
+ info(...args) {
11
+ console.log(chalk.cyan(...args));
12
+ },
13
+ success(...args) {
14
+ console.log(chalk.green(...args));
15
+ },
16
+ break() {
17
+ console.log('');
18
+ },
19
+ };
20
+ export function spinner(text) {
21
+ return ora({
22
+ text: chalk.dim(text),
23
+ spinner: 'dots',
24
+ color: 'cyan',
25
+ });
26
+ }
27
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ export declare function detectPackageManager(): Promise<'npm' | 'yarn' | 'pnpm' | 'bun'>;
2
+ export declare function getPackageManager(cwd?: string): Promise<'npm' | 'yarn' | 'pnpm' | 'bun'>;
3
+ export declare function getInstallCommand(packageManager: string, isDev?: boolean): Promise<string[]>;
4
+ export declare function installPackages(packages: string[], cwd: string, packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun', isDev?: boolean, legacyPeerDeps?: boolean): Promise<void>;
5
+ //# sourceMappingURL=package-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAIA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAgBrF;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,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE,KAAK,UAAQ,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5K"}
@@ -0,0 +1,47 @@
1
+ import { detect } from '@antfu/ni';
2
+ import { getConfig } from '../utils/config.js';
3
+ export async function detectPackageManager() {
4
+ const userAgent = process.env.npm_config_user_agent || '';
5
+ if (userAgent.includes('bun'))
6
+ return 'bun';
7
+ if (userAgent.includes('pnpm'))
8
+ return 'pnpm';
9
+ if (userAgent.includes('yarn'))
10
+ return 'yarn';
11
+ if (userAgent.includes('npm'))
12
+ return 'npm';
13
+ const agent = await detect({ programmatic: true });
14
+ if (agent === 'yarn@berry')
15
+ return 'yarn';
16
+ if (agent && ['npm', 'yarn', 'pnpm', 'bun'].includes(agent)) {
17
+ return agent;
18
+ }
19
+ return 'npm';
20
+ }
21
+ export async function getPackageManager(cwd = process.cwd()) {
22
+ const config = await getConfig(cwd);
23
+ return config?.packageManager ?? 'npm';
24
+ }
25
+ export async function getInstallCommand(packageManager, isDev = false) {
26
+ switch (packageManager) {
27
+ case 'yarn':
28
+ return isDev ? ['add', '-D'] : ['add'];
29
+ case 'pnpm':
30
+ return isDev ? ['add', '-D'] : ['add'];
31
+ case 'bun':
32
+ return isDev ? ['add', '-d'] : ['add'];
33
+ case 'npm':
34
+ default:
35
+ return isDev ? ['install', '-D'] : ['install'];
36
+ }
37
+ }
38
+ export async function installPackages(packages, cwd, packageManager, isDev = false, legacyPeerDeps = false) {
39
+ const { execa } = await import('execa');
40
+ const installCmd = await getInstallCommand(packageManager, isDev);
41
+ const args = [...installCmd, ...packages];
42
+ if (legacyPeerDeps && packageManager === 'npm') {
43
+ args.push('--legacy-peer-deps');
44
+ }
45
+ await execa(packageManager, args, { cwd, stdio: 'inherit' });
46
+ }
47
+ //# sourceMappingURL=package-manager.js.map
@@ -0,0 +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;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;IAE1D,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAwC,CAAC;IAClD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,MAAM,EAAE,cAAc,IAAI,KAAK,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,cAAsB,EAAE,KAAK,GAAG,KAAK;IAC3E,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,KAAK,CAAC;QACX;YACE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAkB,EAAE,GAAW,EAAE,cAA+C,EAAE,KAAK,GAAG,KAAK,EAAE,cAAc,GAAG,KAAK;IAC3J,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC;IAE1C,IAAI,cAAc,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { Config } from '../utils/config.js';
2
+ export declare const DEFAULT_REGISTRY_URL: string;
3
+ export interface RegistryItem {
4
+ name: string;
5
+ type: 'registry:component';
6
+ basePath?: string;
7
+ files: Array<{
8
+ name: string;
9
+ content: string;
10
+ }>;
11
+ dependencies?: string[];
12
+ devDependencies?: string[];
13
+ registryDependencies?: string[];
14
+ }
15
+ export interface RegistryIndex {
16
+ $schema: string;
17
+ name: string;
18
+ homepage: string;
19
+ version: string;
20
+ items: Array<{
21
+ name: string;
22
+ type: string;
23
+ basePath?: string;
24
+ dependencies?: string[];
25
+ devDependencies?: string[];
26
+ registryDependencies?: string[];
27
+ files: string[];
28
+ }>;
29
+ }
30
+ export declare function getRegistryUrl(config?: Config): string;
31
+ export declare function fetchRegistryIndex(registryUrl?: string): Promise<RegistryIndex>;
32
+ export declare function fetchComponentFromRegistry(componentName: string, registryUrl?: string): Promise<RegistryItem>;
33
+ export declare function getAvailableComponents(registryUrl?: string): Promise<string[]>;
34
+ export declare function transformContent(content: string, config: Config): string;
35
+ export declare function fetchComponent(componentName: string, config: Config, registryUrl?: string): Promise<RegistryItem>;
36
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +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;AAGnD,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;AA4BD,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAIrF;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,CA+BxE;AAED,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAYvB"}