galaxy-design 0.2.73 → 0.2.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -95
- package/dist/bin.js +17 -1
- package/dist/bin.js.map +1 -1
- package/dist/commands/add.js +59 -99
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.js +120 -611
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate-tailwind.js +90 -0
- package/dist/commands/migrate-tailwind.js.map +1 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/registries/registry-angular.json +145 -537
- package/dist/registry-angular.json +145 -537
- package/dist/schemas/components-schema.json +66 -11
- package/dist/schemas/registry-framework-schema.json +17 -7
- package/dist/utils/angular-provider-manager.js +1 -1
- package/dist/utils/angular-provider-manager.js.map +1 -1
- package/dist/utils/component-copier.js +102 -62
- package/dist/utils/component-copier.js.map +1 -1
- package/dist/utils/component-transformer.js +86 -16
- package/dist/utils/component-transformer.js.map +1 -1
- package/dist/utils/config-schema.js +160 -9
- package/dist/utils/config-schema.js.map +1 -1
- package/dist/utils/framework-registry-service.js +181 -0
- package/dist/utils/framework-registry-service.js.map +1 -0
- package/dist/utils/framework-registry.js +1 -138
- package/dist/utils/framework-registry.js.map +1 -1
- package/dist/utils/github-fetcher.js +55 -27
- package/dist/utils/github-fetcher.js.map +1 -1
- package/dist/utils/index.js +4 -3
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/init-runtime.js +477 -0
- package/dist/utils/init-runtime.js.map +1 -0
- package/dist/utils/init-scaffold.js +115 -0
- package/dist/utils/init-scaffold.js.map +1 -0
- package/dist/utils/init-workflow.js +189 -0
- package/dist/utils/init-workflow.js.map +1 -0
- package/dist/utils/package-manager.js +77 -2
- package/dist/utils/package-manager.js.map +1 -1
- package/dist/utils/platform-detector.js +12 -8
- package/dist/utils/platform-detector.js.map +1 -1
- package/dist/utils/registry-loader.js +20 -41
- package/dist/utils/registry-loader.js.map +1 -1
- package/dist/utils/tailwind-detector.js +162 -0
- package/dist/utils/tailwind-detector.js.map +1 -0
- package/dist/utils/tailwind-migration.js +401 -0
- package/dist/utils/tailwind-migration.js.map +1 -0
- package/dist/utils/tailwind-scaffold.js +398 -0
- package/dist/utils/tailwind-scaffold.js.map +1 -0
- package/package.json +20 -2
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
+
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
7
|
+
const registryCache = new Map();
|
|
8
|
+
function normalizeRegistryTarget(target) {
|
|
9
|
+
switch(target){
|
|
10
|
+
case 'nextjs':
|
|
11
|
+
return 'react';
|
|
12
|
+
case 'nuxtjs':
|
|
13
|
+
return 'vue';
|
|
14
|
+
case 'react':
|
|
15
|
+
case 'vue':
|
|
16
|
+
case 'angular':
|
|
17
|
+
case 'react-native':
|
|
18
|
+
case 'flutter':
|
|
19
|
+
return target;
|
|
20
|
+
default:
|
|
21
|
+
throw new Error(`Unsupported registry target: ${String(target)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function getRegistrySearchPaths(framework, kind, registryDir) {
|
|
25
|
+
const fileName = `${kind}-${framework}.json`;
|
|
26
|
+
if (registryDir) {
|
|
27
|
+
return [
|
|
28
|
+
join(registryDir, fileName),
|
|
29
|
+
join(registryDir, 'registries', fileName)
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
return [
|
|
33
|
+
join(__dirname, '..', 'registries', fileName),
|
|
34
|
+
join(__dirname, '..', fileName)
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
function readRegistryJson(framework, kind, registryDir) {
|
|
38
|
+
const candidates = getRegistrySearchPaths(framework, kind, registryDir);
|
|
39
|
+
for (const candidate of candidates){
|
|
40
|
+
if (!existsSync(candidate)) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const content = readFileSync(candidate, 'utf-8');
|
|
44
|
+
return JSON.parse(content);
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
export function loadFrameworkRegistry(target, options) {
|
|
49
|
+
const framework = normalizeRegistryTarget(target);
|
|
50
|
+
const includeBlocks = (options == null ? void 0 : options.includeBlocks) !== false;
|
|
51
|
+
const cacheKey = [
|
|
52
|
+
framework,
|
|
53
|
+
(options == null ? void 0 : options.registryDir) || '',
|
|
54
|
+
includeBlocks
|
|
55
|
+
].filter(Boolean).join(':');
|
|
56
|
+
const cached = registryCache.get(cacheKey);
|
|
57
|
+
if (cached) {
|
|
58
|
+
return cached;
|
|
59
|
+
}
|
|
60
|
+
const registry = readRegistryJson(framework, 'registry', options == null ? void 0 : options.registryDir);
|
|
61
|
+
if (!registry) {
|
|
62
|
+
const attemptedPaths = getRegistrySearchPaths(framework, 'registry', options == null ? void 0 : options.registryDir);
|
|
63
|
+
throw new Error(`Registry not found for ${target}. Looked in: ${attemptedPaths.join(', ')}`);
|
|
64
|
+
}
|
|
65
|
+
const mergedRegistry = _extends({}, registry, {
|
|
66
|
+
framework,
|
|
67
|
+
platform: registry.platform || framework,
|
|
68
|
+
components: _extends({}, registry.components),
|
|
69
|
+
groups: _extends({}, registry.groups)
|
|
70
|
+
});
|
|
71
|
+
if (includeBlocks) {
|
|
72
|
+
const blocksRegistry = readRegistryJson(framework, 'blocks', options == null ? void 0 : options.registryDir);
|
|
73
|
+
if (blocksRegistry) {
|
|
74
|
+
mergedRegistry.components = _extends({}, mergedRegistry.components, blocksRegistry.components);
|
|
75
|
+
mergedRegistry.groups = _extends({}, mergedRegistry.groups, blocksRegistry.groups);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
registryCache.set(cacheKey, mergedRegistry);
|
|
79
|
+
return mergedRegistry;
|
|
80
|
+
}
|
|
81
|
+
export function getFrameworkComponent(target, name, options) {
|
|
82
|
+
return loadFrameworkRegistry(target, options).components[name];
|
|
83
|
+
}
|
|
84
|
+
export function getAllFrameworkComponents(target, options) {
|
|
85
|
+
return loadFrameworkRegistry(target, options).components;
|
|
86
|
+
}
|
|
87
|
+
export function getAllFrameworkGroups(target, options) {
|
|
88
|
+
return loadFrameworkRegistry(target, options).groups;
|
|
89
|
+
}
|
|
90
|
+
export function frameworkComponentExists(target, name, options) {
|
|
91
|
+
return !!getFrameworkComponent(target, name, options);
|
|
92
|
+
}
|
|
93
|
+
export function getFrameworkComponentsByType(target, type, options) {
|
|
94
|
+
return Object.values(getAllFrameworkComponents(target, options)).filter((component)=>component.type === type);
|
|
95
|
+
}
|
|
96
|
+
export function getFrameworkComponentsByGroup(target, groupName, options) {
|
|
97
|
+
const registry = loadFrameworkRegistry(target, options);
|
|
98
|
+
const group = registry.groups[groupName];
|
|
99
|
+
if (!group) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
return group.components.map((name)=>registry.components[name]).filter(Boolean);
|
|
103
|
+
}
|
|
104
|
+
export function resolveFrameworkComponentName(target, input, options) {
|
|
105
|
+
const registry = loadFrameworkRegistry(target, options);
|
|
106
|
+
if (registry.components[input] || registry.groups[input]) {
|
|
107
|
+
return input;
|
|
108
|
+
}
|
|
109
|
+
const lowerInput = input.toLowerCase();
|
|
110
|
+
for (const name of Object.keys(registry.components)){
|
|
111
|
+
if (name.toLowerCase() === lowerInput) {
|
|
112
|
+
return name;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
for (const name of Object.keys(registry.groups)){
|
|
116
|
+
if (name.toLowerCase() === lowerInput) {
|
|
117
|
+
return name;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
export function getFrameworkComponentDependencies(target, name, options) {
|
|
123
|
+
const component = getFrameworkComponent(target, name, options);
|
|
124
|
+
if (!component) {
|
|
125
|
+
return {
|
|
126
|
+
dependencies: [],
|
|
127
|
+
devDependencies: [],
|
|
128
|
+
registryDependencies: []
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
dependencies: [
|
|
133
|
+
...component.dependencies || [],
|
|
134
|
+
...component.peerDependencies || []
|
|
135
|
+
],
|
|
136
|
+
devDependencies: component.devDependencies || [],
|
|
137
|
+
registryDependencies: component.registryDependencies || []
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export function resolveFrameworkComponentGraph(target, componentNames, options) {
|
|
141
|
+
const registry = loadFrameworkRegistry(target, options);
|
|
142
|
+
const resolved = new Set();
|
|
143
|
+
const toProcess = [
|
|
144
|
+
...componentNames
|
|
145
|
+
];
|
|
146
|
+
while(toProcess.length > 0){
|
|
147
|
+
var _registry_components_componentName;
|
|
148
|
+
const componentName = toProcess.shift();
|
|
149
|
+
if (!componentName || resolved.has(componentName)) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
resolved.add(componentName);
|
|
153
|
+
const dependencies = ((_registry_components_componentName = registry.components[componentName]) == null ? void 0 : _registry_components_componentName.registryDependencies) || [];
|
|
154
|
+
for (const dependency of dependencies){
|
|
155
|
+
if (!resolved.has(dependency)) {
|
|
156
|
+
toProcess.push(dependency);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return Array.from(resolved);
|
|
161
|
+
}
|
|
162
|
+
export function validateFrameworkComponentDependencies(target, name, options) {
|
|
163
|
+
const registry = loadFrameworkRegistry(target, options);
|
|
164
|
+
const component = registry.components[name];
|
|
165
|
+
if (!component) {
|
|
166
|
+
return {
|
|
167
|
+
valid: false,
|
|
168
|
+
missing: []
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const missing = (component.registryDependencies || []).filter((dependency)=>!registry.components[dependency]);
|
|
172
|
+
return {
|
|
173
|
+
valid: missing.length === 0,
|
|
174
|
+
missing
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export function clearFrameworkRegistryCache() {
|
|
178
|
+
registryCache.clear();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
//# sourceMappingURL=framework-registry-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/framework-registry-service.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\nimport type { Framework } from './config-schema.js';\nimport type { Platform } from './platform-detector.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nexport type RegistryFramework =\n | 'react'\n | 'vue'\n | 'angular'\n | 'react-native'\n | 'flutter';\n\nexport type RegistryTarget = Framework | Exclude<Platform, 'unknown'>;\n\nexport interface FrameworkComponentProvider {\n import: string;\n function: string;\n}\n\nexport interface FrameworkRegistryComponent {\n name: string;\n type: string;\n description: string;\n files: string[];\n dependencies?: string[];\n devDependencies?: string[];\n peerDependencies?: string[];\n registryDependencies?: string[];\n category?: string;\n exports?: string[];\n selector?: string;\n providers?: FrameworkComponentProvider;\n [key: string]: unknown;\n}\n\nexport interface FrameworkComponentGroup {\n name: string;\n description?: string;\n components: string[];\n}\n\nexport interface FrameworkRegistry {\n name: string;\n framework?: RegistryFramework;\n platform?: RegistryFramework;\n version?: string;\n components: Record<string, FrameworkRegistryComponent>;\n groups: Record<string, FrameworkComponentGroup>;\n}\n\nconst registryCache = new Map<string, FrameworkRegistry>();\n\nfunction normalizeRegistryTarget(target: RegistryTarget): RegistryFramework {\n switch (target) {\n case 'nextjs':\n return 'react';\n case 'nuxtjs':\n return 'vue';\n case 'react':\n case 'vue':\n case 'angular':\n case 'react-native':\n case 'flutter':\n return target;\n default:\n throw new Error(`Unsupported registry target: ${String(target)}`);\n }\n}\n\nfunction getRegistrySearchPaths(\n framework: RegistryFramework,\n kind: 'registry' | 'blocks',\n registryDir?: string,\n): string[] {\n const fileName = `${kind}-${framework}.json`;\n\n if (registryDir) {\n return [\n join(registryDir, fileName),\n join(registryDir, 'registries', fileName),\n ];\n }\n\n return [\n join(__dirname, '..', 'registries', fileName),\n join(__dirname, '..', fileName),\n ];\n}\n\nfunction readRegistryJson(\n framework: RegistryFramework,\n kind: 'registry' | 'blocks',\n registryDir?: string,\n): FrameworkRegistry | null {\n const candidates = getRegistrySearchPaths(framework, kind, registryDir);\n\n for (const candidate of candidates) {\n if (!existsSync(candidate)) {\n continue;\n }\n\n const content = readFileSync(candidate, 'utf-8');\n return JSON.parse(content) as FrameworkRegistry;\n }\n\n return null;\n}\n\nexport function loadFrameworkRegistry(\n target: RegistryTarget,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): FrameworkRegistry {\n const framework = normalizeRegistryTarget(target);\n const includeBlocks = options?.includeBlocks !== false;\n const cacheKey = [framework, options?.registryDir || '', includeBlocks]\n .filter(Boolean)\n .join(':');\n\n const cached = registryCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n const registry = readRegistryJson(\n framework,\n 'registry',\n options?.registryDir,\n );\n\n if (!registry) {\n const attemptedPaths = getRegistrySearchPaths(\n framework,\n 'registry',\n options?.registryDir,\n );\n throw new Error(\n `Registry not found for ${target}. Looked in: ${attemptedPaths.join(', ')}`,\n );\n }\n\n const mergedRegistry: FrameworkRegistry = {\n ...registry,\n framework,\n platform: registry.platform || framework,\n components: { ...registry.components },\n groups: { ...registry.groups },\n };\n\n if (includeBlocks) {\n const blocksRegistry = readRegistryJson(\n framework,\n 'blocks',\n options?.registryDir,\n );\n\n if (blocksRegistry) {\n mergedRegistry.components = {\n ...mergedRegistry.components,\n ...blocksRegistry.components,\n };\n\n mergedRegistry.groups = {\n ...mergedRegistry.groups,\n ...blocksRegistry.groups,\n };\n }\n }\n\n registryCache.set(cacheKey, mergedRegistry);\n return mergedRegistry;\n}\n\nexport function getFrameworkComponent(\n target: RegistryTarget,\n name: string,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): FrameworkRegistryComponent | undefined {\n return loadFrameworkRegistry(target, options).components[name];\n}\n\nexport function getAllFrameworkComponents(\n target: RegistryTarget,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): Record<string, FrameworkRegistryComponent> {\n return loadFrameworkRegistry(target, options).components;\n}\n\nexport function getAllFrameworkGroups(\n target: RegistryTarget,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): Record<string, FrameworkComponentGroup> {\n return loadFrameworkRegistry(target, options).groups;\n}\n\nexport function frameworkComponentExists(\n target: RegistryTarget,\n name: string,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): boolean {\n return !!getFrameworkComponent(target, name, options);\n}\n\nexport function getFrameworkComponentsByType(\n target: RegistryTarget,\n type: string,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): FrameworkRegistryComponent[] {\n return Object.values(getAllFrameworkComponents(target, options)).filter(\n (component) => component.type === type,\n );\n}\n\nexport function getFrameworkComponentsByGroup(\n target: RegistryTarget,\n groupName: string,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): FrameworkRegistryComponent[] {\n const registry = loadFrameworkRegistry(target, options);\n const group = registry.groups[groupName];\n\n if (!group) {\n return [];\n }\n\n return group.components\n .map((name) => registry.components[name])\n .filter(Boolean);\n}\n\nexport function resolveFrameworkComponentName(\n target: RegistryTarget,\n input: string,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): string | null {\n const registry = loadFrameworkRegistry(target, options);\n\n if (registry.components[input] || registry.groups[input]) {\n return input;\n }\n\n const lowerInput = input.toLowerCase();\n for (const name of Object.keys(registry.components)) {\n if (name.toLowerCase() === lowerInput) {\n return name;\n }\n }\n\n for (const name of Object.keys(registry.groups)) {\n if (name.toLowerCase() === lowerInput) {\n return name;\n }\n }\n\n return null;\n}\n\nexport function getFrameworkComponentDependencies(\n target: RegistryTarget,\n name: string,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): {\n dependencies: string[];\n devDependencies: string[];\n registryDependencies: string[];\n} {\n const component = getFrameworkComponent(target, name, options);\n\n if (!component) {\n return {\n dependencies: [],\n devDependencies: [],\n registryDependencies: [],\n };\n }\n\n return {\n dependencies: [\n ...(component.dependencies || []),\n ...(component.peerDependencies || []),\n ],\n devDependencies: component.devDependencies || [],\n registryDependencies: component.registryDependencies || [],\n };\n}\n\nexport function resolveFrameworkComponentGraph(\n target: RegistryTarget,\n componentNames: string[],\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): string[] {\n const registry = loadFrameworkRegistry(target, options);\n const resolved = new Set<string>();\n const toProcess = [...componentNames];\n\n while (toProcess.length > 0) {\n const componentName = toProcess.shift();\n\n if (!componentName || resolved.has(componentName)) {\n continue;\n }\n\n resolved.add(componentName);\n\n const dependencies =\n registry.components[componentName]?.registryDependencies || [];\n for (const dependency of dependencies) {\n if (!resolved.has(dependency)) {\n toProcess.push(dependency);\n }\n }\n }\n\n return Array.from(resolved);\n}\n\nexport function validateFrameworkComponentDependencies(\n target: RegistryTarget,\n name: string,\n options?: {\n includeBlocks?: boolean;\n registryDir?: string;\n },\n): { valid: boolean; missing: string[] } {\n const registry = loadFrameworkRegistry(target, options);\n const component = registry.components[name];\n\n if (!component) {\n return { valid: false, missing: [] };\n }\n\n const missing = (component.registryDependencies || []).filter(\n (dependency) => !registry.components[dependency],\n );\n\n return {\n valid: missing.length === 0,\n missing,\n };\n}\n\nexport function clearFrameworkRegistryCache(): void {\n registryCache.clear();\n}\n"],"names":["existsSync","readFileSync","dirname","join","fileURLToPath","__filename","url","__dirname","registryCache","Map","normalizeRegistryTarget","target","Error","String","getRegistrySearchPaths","framework","kind","registryDir","fileName","readRegistryJson","candidates","candidate","content","JSON","parse","loadFrameworkRegistry","options","includeBlocks","cacheKey","filter","Boolean","cached","get","registry","attemptedPaths","mergedRegistry","platform","components","groups","blocksRegistry","set","getFrameworkComponent","name","getAllFrameworkComponents","getAllFrameworkGroups","frameworkComponentExists","getFrameworkComponentsByType","type","Object","values","component","getFrameworkComponentsByGroup","groupName","group","map","resolveFrameworkComponentName","input","lowerInput","toLowerCase","keys","getFrameworkComponentDependencies","dependencies","devDependencies","registryDependencies","peerDependencies","resolveFrameworkComponentGraph","componentNames","resolved","Set","toProcess","length","componentName","shift","has","add","dependency","push","Array","from","validateFrameworkComponentDependencies","valid","missing","clearFrameworkRegistryCache","clear"],"mappings":"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"}
|
|
@@ -1,140 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
import { readFileSync, existsSync } from 'fs';
|
|
3
|
-
import { resolve, dirname } from 'path';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
-
const __dirname = dirname(__filename);
|
|
7
|
-
// Cache registries by framework
|
|
8
|
-
const registryCache = new Map();
|
|
9
|
-
/**
|
|
10
|
-
* Load framework-specific registry (includes both components and blocks)
|
|
11
|
-
*/ export function loadFrameworkRegistry(framework) {
|
|
12
|
-
// Check cache first
|
|
13
|
-
if (registryCache.has(framework)) {
|
|
14
|
-
return registryCache.get(framework);
|
|
15
|
-
}
|
|
16
|
-
// Map Next.js to React registry and Nuxt.js to Vue registry
|
|
17
|
-
let registryFramework = framework;
|
|
18
|
-
if (framework === 'nextjs') {
|
|
19
|
-
registryFramework = 'react';
|
|
20
|
-
} else if (framework === 'nuxtjs') {
|
|
21
|
-
registryFramework = 'vue';
|
|
22
|
-
}
|
|
23
|
-
const registryPath = resolve(__dirname, `../registries/registry-${registryFramework}.json`);
|
|
24
|
-
if (!existsSync(registryPath)) {
|
|
25
|
-
throw new Error(`Registry not found for framework: ${framework}. Expected at ${registryPath}`);
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
const registryContent = readFileSync(registryPath, 'utf-8');
|
|
29
|
-
const registry = JSON.parse(registryContent);
|
|
30
|
-
// Try to load and merge blocks registry
|
|
31
|
-
const blocksRegistryPath = resolve(__dirname, `../registries/blocks-${registryFramework}.json`);
|
|
32
|
-
if (existsSync(blocksRegistryPath)) {
|
|
33
|
-
try {
|
|
34
|
-
const blocksContent = readFileSync(blocksRegistryPath, 'utf-8');
|
|
35
|
-
const blocksRegistry = JSON.parse(blocksContent);
|
|
36
|
-
// Merge blocks into main registry
|
|
37
|
-
registry.components = _extends({}, registry.components, blocksRegistry.components);
|
|
38
|
-
registry.groups = _extends({}, registry.groups, blocksRegistry.groups);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
// Blocks registry is optional, so we just log and continue
|
|
41
|
-
console.warn(`Warning: Failed to load blocks registry for ${framework}`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// Cache the merged registry
|
|
45
|
-
registryCache.set(framework, registry);
|
|
46
|
-
return registry;
|
|
47
|
-
} catch (error) {
|
|
48
|
-
throw new Error(`Failed to load registry for ${framework}: ${error}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get a component by name from framework registry
|
|
53
|
-
*/ export function getFrameworkComponent(framework, name) {
|
|
54
|
-
const registry = loadFrameworkRegistry(framework);
|
|
55
|
-
return registry.components[name];
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Get all components from framework registry
|
|
59
|
-
*/ export function getAllFrameworkComponents(framework) {
|
|
60
|
-
const registry = loadFrameworkRegistry(framework);
|
|
61
|
-
return registry.components;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Get components by type from framework registry
|
|
65
|
-
*/ export function getFrameworkComponentsByType(framework, type) {
|
|
66
|
-
const registry = loadFrameworkRegistry(framework);
|
|
67
|
-
return Object.values(registry.components).filter((c)=>c.type === type);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get components by group name from framework registry
|
|
71
|
-
*/ export function getFrameworkComponentsByGroup(framework, groupName) {
|
|
72
|
-
const registry = loadFrameworkRegistry(framework);
|
|
73
|
-
const group = registry.groups[groupName];
|
|
74
|
-
if (!group) {
|
|
75
|
-
return [];
|
|
76
|
-
}
|
|
77
|
-
return group.components.map((name)=>registry.components[name]).filter(Boolean);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Get all component groups from framework registry
|
|
81
|
-
*/ export function getAllFrameworkGroups(framework) {
|
|
82
|
-
const registry = loadFrameworkRegistry(framework);
|
|
83
|
-
return registry.groups;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Check if a component exists in framework registry
|
|
87
|
-
*/ export function frameworkComponentExists(framework, name) {
|
|
88
|
-
const registry = loadFrameworkRegistry(framework);
|
|
89
|
-
return !!registry.components[name];
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Get component dependencies (including registry dependencies)
|
|
93
|
-
*/ export function getFrameworkComponentDependencies(framework, name) {
|
|
94
|
-
const component = getFrameworkComponent(framework, name);
|
|
95
|
-
if (!component) {
|
|
96
|
-
return {
|
|
97
|
-
dependencies: [],
|
|
98
|
-
devDependencies: [],
|
|
99
|
-
registryDependencies: []
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
// Merge peerDependencies into dependencies for installation
|
|
103
|
-
const allDependencies = [
|
|
104
|
-
...component.dependencies || [],
|
|
105
|
-
...component.peerDependencies || []
|
|
106
|
-
];
|
|
107
|
-
return {
|
|
108
|
-
dependencies: allDependencies,
|
|
109
|
-
devDependencies: component.devDependencies || [],
|
|
110
|
-
registryDependencies: component.registryDependencies || []
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Resolve component name with aliases (case-insensitive match)
|
|
115
|
-
*/ export function resolveFrameworkComponentName(framework, input) {
|
|
116
|
-
const registry = loadFrameworkRegistry(framework);
|
|
117
|
-
// Check exact match
|
|
118
|
-
if (registry.components[input]) {
|
|
119
|
-
return input;
|
|
120
|
-
}
|
|
121
|
-
// Check group match
|
|
122
|
-
if (registry.groups[input]) {
|
|
123
|
-
return input;
|
|
124
|
-
}
|
|
125
|
-
// Check case-insensitive match
|
|
126
|
-
const lowerInput = input.toLowerCase();
|
|
127
|
-
for (const name of Object.keys(registry.components)){
|
|
128
|
-
if (name.toLowerCase() === lowerInput) {
|
|
129
|
-
return name;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Clear registry cache (useful for testing)
|
|
136
|
-
*/ export function clearRegistryCache() {
|
|
137
|
-
registryCache.clear();
|
|
138
|
-
}
|
|
1
|
+
export { clearFrameworkRegistryCache as clearRegistryCache, frameworkComponentExists, getAllFrameworkComponents, getAllFrameworkGroups, getFrameworkComponent, getFrameworkComponentDependencies, getFrameworkComponentsByGroup, getFrameworkComponentsByType, loadFrameworkRegistry, resolveFrameworkComponentGraph, resolveFrameworkComponentName, validateFrameworkComponentDependencies } from './framework-registry-service.js';
|
|
139
2
|
|
|
140
3
|
//# sourceMappingURL=framework-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/framework-registry.ts"],"sourcesContent":["import { readFileSync, existsSync } from 'fs';\nimport { resolve, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport type { Framework } from './config-schema.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nexport interface FrameworkComponent {\n name: string;\n type: 'form' | 'layout' | 'navigation' | 'feedback' | 'data-display' | 'modal-overlay' | 'block' | 'other';\n description: string;\n files: string[];\n dependencies: string[];\n devDependencies: string[];\n peerDependencies?: string[];\n registryDependencies: string[];\n category: string;\n}\n\nexport interface FrameworkComponentGroup {\n name: string;\n components: string[];\n}\n\nexport interface FrameworkRegistry {\n name: string;\n components: Record<string, FrameworkComponent>;\n groups: Record<string, FrameworkComponentGroup>;\n}\n\n// Cache registries by framework\nconst registryCache: Map<Framework, FrameworkRegistry> = new Map();\n\n/**\n * Load framework-specific registry (includes both components and blocks)\n */\nexport function loadFrameworkRegistry(framework: Framework): FrameworkRegistry {\n // Check cache first\n if (registryCache.has(framework)) {\n return registryCache.get(framework)!;\n }\n\n // Map Next.js to React registry and Nuxt.js to Vue registry\n let registryFramework = framework;\n if (framework === 'nextjs') {\n registryFramework = 'react';\n } else if (framework === 'nuxtjs') {\n registryFramework = 'vue';\n }\n\n const registryPath = resolve(__dirname, `../registries/registry-${registryFramework}.json`);\n\n if (!existsSync(registryPath)) {\n throw new Error(\n `Registry not found for framework: ${framework}. Expected at ${registryPath}`\n );\n }\n\n try {\n const registryContent = readFileSync(registryPath, 'utf-8');\n const registry: FrameworkRegistry = JSON.parse(registryContent);\n\n // Try to load and merge blocks registry\n const blocksRegistryPath = resolve(__dirname, `../registries/blocks-${registryFramework}.json`);\n if (existsSync(blocksRegistryPath)) {\n try {\n const blocksContent = readFileSync(blocksRegistryPath, 'utf-8');\n const blocksRegistry: FrameworkRegistry = JSON.parse(blocksContent);\n\n // Merge blocks into main registry\n registry.components = {\n ...registry.components,\n ...blocksRegistry.components,\n };\n\n registry.groups = {\n ...registry.groups,\n ...blocksRegistry.groups,\n };\n } catch (error) {\n // Blocks registry is optional, so we just log and continue\n console.warn(`Warning: Failed to load blocks registry for ${framework}`);\n }\n }\n\n // Cache the merged registry\n registryCache.set(framework, registry);\n\n return registry;\n } catch (error) {\n throw new Error(`Failed to load registry for ${framework}: ${error}`);\n }\n}\n\n/**\n * Get a component by name from framework registry\n */\nexport function getFrameworkComponent(\n framework: Framework,\n name: string\n): FrameworkComponent | undefined {\n const registry = loadFrameworkRegistry(framework);\n return registry.components[name];\n}\n\n/**\n * Get all components from framework registry\n */\nexport function getAllFrameworkComponents(\n framework: Framework\n): Record<string, FrameworkComponent> {\n const registry = loadFrameworkRegistry(framework);\n return registry.components;\n}\n\n/**\n * Get components by type from framework registry\n */\nexport function getFrameworkComponentsByType(\n framework: Framework,\n type: FrameworkComponent['type']\n): FrameworkComponent[] {\n const registry = loadFrameworkRegistry(framework);\n return Object.values(registry.components).filter((c) => c.type === type);\n}\n\n/**\n * Get components by group name from framework registry\n */\nexport function getFrameworkComponentsByGroup(\n framework: Framework,\n groupName: string\n): FrameworkComponent[] {\n const registry = loadFrameworkRegistry(framework);\n const group = registry.groups[groupName];\n\n if (!group) {\n return [];\n }\n\n return group.components\n .map((name) => registry.components[name])\n .filter(Boolean);\n}\n\n/**\n * Get all component groups from framework registry\n */\nexport function getAllFrameworkGroups(\n framework: Framework\n): Record<string, FrameworkComponentGroup> {\n const registry = loadFrameworkRegistry(framework);\n return registry.groups;\n}\n\n/**\n * Check if a component exists in framework registry\n */\nexport function frameworkComponentExists(\n framework: Framework,\n name: string\n): boolean {\n const registry = loadFrameworkRegistry(framework);\n return !!registry.components[name];\n}\n\n/**\n * Get component dependencies (including registry dependencies)\n */\nexport function getFrameworkComponentDependencies(\n framework: Framework,\n name: string\n): {\n dependencies: string[];\n devDependencies: string[];\n registryDependencies: string[];\n} {\n const component = getFrameworkComponent(framework, name);\n\n if (!component) {\n return {\n dependencies: [],\n devDependencies: [],\n registryDependencies: [],\n };\n }\n\n // Merge peerDependencies into dependencies for installation\n const allDependencies = [\n ...(component.dependencies || []),\n ...(component.peerDependencies || []),\n ];\n\n return {\n dependencies: allDependencies,\n devDependencies: component.devDependencies || [],\n registryDependencies: component.registryDependencies || [],\n };\n}\n\n/**\n * Resolve component name with aliases (case-insensitive match)\n */\nexport function resolveFrameworkComponentName(\n framework: Framework,\n input: string\n): string | null {\n const registry = loadFrameworkRegistry(framework);\n\n // Check exact match\n if (registry.components[input]) {\n return input;\n }\n\n // Check group match\n if (registry.groups[input]) {\n return input;\n }\n\n // Check case-insensitive match\n const lowerInput = input.toLowerCase();\n for (const name of Object.keys(registry.components)) {\n if (name.toLowerCase() === lowerInput) {\n return name;\n }\n }\n\n return null;\n}\n\n/**\n * Clear registry cache (useful for testing)\n */\nexport function clearRegistryCache(): void {\n registryCache.clear();\n}\n"],"names":["readFileSync","existsSync","resolve","dirname","fileURLToPath","__filename","url","__dirname","registryCache","Map","loadFrameworkRegistry","framework","has","get","registryFramework","registryPath","Error","registryContent","registry","JSON","parse","blocksRegistryPath","blocksContent","blocksRegistry","components","groups","error","console","warn","set","getFrameworkComponent","name","getAllFrameworkComponents","getFrameworkComponentsByType","type","Object","values","filter","c","getFrameworkComponentsByGroup","groupName","group","map","Boolean","getAllFrameworkGroups","frameworkComponentExists","getFrameworkComponentDependencies","component","dependencies","devDependencies","registryDependencies","allDependencies","peerDependencies","resolveFrameworkComponentName","input","lowerInput","toLowerCase","keys","clearRegistryCache","clear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/framework-registry.ts"],"sourcesContent":["export type {\n FrameworkComponentGroup,\n FrameworkRegistry,\n FrameworkRegistryComponent as FrameworkComponent,\n FrameworkComponentProvider,\n RegistryFramework,\n RegistryTarget,\n} from './framework-registry-service.js';\nexport {\n clearFrameworkRegistryCache as clearRegistryCache,\n frameworkComponentExists,\n getAllFrameworkComponents,\n getAllFrameworkGroups,\n getFrameworkComponent,\n getFrameworkComponentDependencies,\n getFrameworkComponentsByGroup,\n getFrameworkComponentsByType,\n loadFrameworkRegistry,\n resolveFrameworkComponentGraph,\n resolveFrameworkComponentName,\n validateFrameworkComponentDependencies,\n} from './framework-registry-service.js';\n"],"names":["clearFrameworkRegistryCache","clearRegistryCache","frameworkComponentExists","getAllFrameworkComponents","getAllFrameworkGroups","getFrameworkComponent","getFrameworkComponentDependencies","getFrameworkComponentsByGroup","getFrameworkComponentsByType","loadFrameworkRegistry","resolveFrameworkComponentGraph","resolveFrameworkComponentName","validateFrameworkComponentDependencies"],"mappings":"AAQA,SACEA,+BAA+BC,kBAAkB,EACjDC,wBAAwB,EACxBC,yBAAyB,EACzBC,qBAAqB,EACrBC,qBAAqB,EACrBC,iCAAiC,EACjCC,6BAA6B,EAC7BC,4BAA4B,EAC5BC,qBAAqB,EACrBC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,sCAAsC,QACjC,kCAAkC"}
|
|
@@ -14,34 +14,62 @@ import { dirname } from 'path';
|
|
|
14
14
|
const cacheBust = Date.now();
|
|
15
15
|
return `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${filePath}?v=${cacheBust}`;
|
|
16
16
|
}
|
|
17
|
+
function getCandidateFileNames(filePath) {
|
|
18
|
+
const segments = filePath.split('/');
|
|
19
|
+
const fileName = segments.pop();
|
|
20
|
+
if (!fileName) {
|
|
21
|
+
return [
|
|
22
|
+
filePath
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
const candidates = [
|
|
26
|
+
fileName
|
|
27
|
+
];
|
|
28
|
+
const capitalized = fileName.charAt(0).toUpperCase() + fileName.slice(1);
|
|
29
|
+
if (!candidates.includes(capitalized)) {
|
|
30
|
+
candidates.push(capitalized);
|
|
31
|
+
}
|
|
32
|
+
return candidates.map((candidate)=>[
|
|
33
|
+
...segments,
|
|
34
|
+
candidate
|
|
35
|
+
].join('/'));
|
|
36
|
+
}
|
|
17
37
|
/**
|
|
18
38
|
* Fetch file content from GitHub
|
|
19
39
|
*
|
|
20
40
|
* @param filePath - Relative path in repository
|
|
21
41
|
* @returns File content as string
|
|
22
42
|
*/ export async function fetchFileFromGitHub(filePath) {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
43
|
+
const errors = [];
|
|
44
|
+
for (const candidatePath of getCandidateFileNames(filePath)){
|
|
45
|
+
const url = getGitHubRawUrl(candidatePath);
|
|
46
|
+
for(let attempt = 1; attempt <= 2; attempt += 1){
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(url, {
|
|
49
|
+
cache: 'no-store',
|
|
50
|
+
headers: {
|
|
51
|
+
'Cache-Control': 'no-cache',
|
|
52
|
+
Pragma: 'no-cache'
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
if (!response.ok) {
|
|
56
|
+
if (response.status === 404) {
|
|
57
|
+
errors.push(`404 ${candidatePath}`);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
throw new Error(`Failed to fetch ${candidatePath}: ${response.status} ${response.statusText}`);
|
|
61
|
+
}
|
|
62
|
+
return await response.text();
|
|
63
|
+
} catch (error) {
|
|
64
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
65
|
+
errors.push(`${candidatePath} (attempt ${attempt}): ${message}`);
|
|
66
|
+
if (attempt === 2) {
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
30
69
|
}
|
|
31
|
-
});
|
|
32
|
-
if (!response.ok) {
|
|
33
|
-
if (response.status === 404) {
|
|
34
|
-
throw new Error(`File not found: ${filePath}`);
|
|
35
|
-
}
|
|
36
|
-
throw new Error(`Failed to fetch ${filePath}: ${response.statusText}`);
|
|
37
|
-
}
|
|
38
|
-
return await response.text();
|
|
39
|
-
} catch (error) {
|
|
40
|
-
if (error instanceof Error) {
|
|
41
|
-
throw new Error(`GitHub fetch error: ${error.message}`);
|
|
42
70
|
}
|
|
43
|
-
throw new Error(`Unknown error fetching ${filePath}`);
|
|
44
71
|
}
|
|
72
|
+
throw new Error(`GitHub fetch error: ${errors.join(' | ')}`);
|
|
45
73
|
}
|
|
46
74
|
/**
|
|
47
75
|
* Fetch and save file from GitHub to local path
|
|
@@ -98,17 +126,17 @@ import { dirname } from 'path';
|
|
|
98
126
|
* @param componentName - Component name
|
|
99
127
|
* @param fileName - File name
|
|
100
128
|
* @returns GitHub repository path
|
|
101
|
-
*/ export function getComponentGitHubPath(platform, componentName, fileName) {
|
|
129
|
+
*/ export function getComponentGitHubPath(platform, componentName, fileName, sourceType = 'components') {
|
|
102
130
|
// Map platform to package directory
|
|
103
131
|
const platformMap = {
|
|
104
|
-
vue: 'packages/vue/src
|
|
105
|
-
react: 'packages/react/src
|
|
106
|
-
angular: 'packages/angular/src
|
|
107
|
-
'react-native': 'packages/react-native/src
|
|
108
|
-
flutter: 'packages/flutter/lib
|
|
132
|
+
vue: 'packages/vue/src',
|
|
133
|
+
react: 'packages/react/src',
|
|
134
|
+
angular: 'packages/angular/src',
|
|
135
|
+
'react-native': 'packages/react-native/src',
|
|
136
|
+
flutter: 'packages/flutter/lib'
|
|
109
137
|
};
|
|
110
|
-
const basePath = platformMap[platform] || `packages/${platform}/src
|
|
111
|
-
return `${basePath}/${componentName}/${fileName}`;
|
|
138
|
+
const basePath = platformMap[platform] || `packages/${platform}/src`;
|
|
139
|
+
return `${basePath}/${sourceType}/${componentName}/${fileName}`;
|
|
112
140
|
}
|
|
113
141
|
/**
|
|
114
142
|
* Check if GitHub repository is accessible
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/github-fetcher.ts"],"sourcesContent":["import { writeFileSync, mkdirSync, existsSync } from 'fs';\nimport { dirname } from 'path';\n\n/**\n * GitHub repository configuration\n */\nconst GITHUB_CONFIG = {\n
|
|
1
|
+
{"version":3,"sources":["../../src/utils/github-fetcher.ts"],"sourcesContent":["import { writeFileSync, mkdirSync, existsSync } from 'fs';\nimport { dirname } from 'path';\n\n/**\n * GitHub repository configuration\n */\nconst GITHUB_CONFIG = {\n owner: 'buikevin',\n repo: 'galaxy-design',\n branch: 'main',\n};\n\n/**\n * Get GitHub raw content URL\n */\nexport function getGitHubRawUrl(filePath: string): string {\n const { owner, repo, branch } = GITHUB_CONFIG;\n const cacheBust = Date.now();\n return `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${filePath}?v=${cacheBust}`;\n}\n\nfunction getCandidateFileNames(filePath: string): string[] {\n const segments = filePath.split('/');\n const fileName = segments.pop();\n\n if (!fileName) {\n return [filePath];\n }\n\n const candidates = [fileName];\n const capitalized = fileName.charAt(0).toUpperCase() + fileName.slice(1);\n\n if (!candidates.includes(capitalized)) {\n candidates.push(capitalized);\n }\n\n return candidates.map((candidate) => [...segments, candidate].join('/'));\n}\n\n/**\n * Fetch file content from GitHub\n *\n * @param filePath - Relative path in repository\n * @returns File content as string\n */\nexport async function fetchFileFromGitHub(filePath: string): Promise<string> {\n const errors: string[] = [];\n\n for (const candidatePath of getCandidateFileNames(filePath)) {\n const url = getGitHubRawUrl(candidatePath);\n\n for (let attempt = 1; attempt <= 2; attempt += 1) {\n try {\n const response = await fetch(url, {\n cache: 'no-store',\n headers: {\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n },\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n errors.push(`404 ${candidatePath}`);\n break;\n }\n\n throw new Error(\n `Failed to fetch ${candidatePath}: ${response.status} ${response.statusText}`,\n );\n }\n\n return await response.text();\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Unknown error';\n errors.push(`${candidatePath} (attempt ${attempt}): ${message}`);\n\n if (attempt === 2) {\n break;\n }\n }\n }\n }\n\n throw new Error(`GitHub fetch error: ${errors.join(' | ')}`);\n}\n\n/**\n * Fetch and save file from GitHub to local path\n *\n * @param sourceFilePath - Path in GitHub repository\n * @param targetFilePath - Local file path to save\n * @returns True if successful\n */\nexport async function fetchAndSaveFile(\n sourceFilePath: string,\n targetFilePath: string,\n): Promise<boolean> {\n try {\n const content = await fetchFileFromGitHub(sourceFilePath);\n\n // Create directory if it doesn't exist\n const dir = dirname(targetFilePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n // Write file\n writeFileSync(targetFilePath, content, 'utf-8');\n return true;\n } catch (error) {\n console.error(`Failed to fetch and save ${sourceFilePath}:`, error);\n return false;\n }\n}\n\n/**\n * Fetch multiple files from GitHub\n *\n * @param files - Array of { source: githubPath, target: localPath }\n * @returns Results for each file\n */\nexport async function fetchMultipleFiles(\n files: Array<{ source: string; target: string }>,\n): Promise<Array<{ file: string; success: boolean; error?: string }>> {\n const results = await Promise.all(\n files.map(async ({ source, target }) => {\n try {\n const success = await fetchAndSaveFile(source, target);\n return {\n file: source,\n success,\n error: success ? undefined : 'Failed to fetch',\n };\n } catch (error) {\n return {\n file: source,\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n }),\n );\n\n return results;\n}\n\n/**\n * Get component source path in GitHub repository\n *\n * @param platform - Platform (vue, react, angular, react-native, flutter)\n * @param componentName - Component name\n * @param fileName - File name\n * @returns GitHub repository path\n */\nexport function getComponentGitHubPath(\n platform: string,\n componentName: string,\n fileName: string,\n sourceType: 'components' | 'blocks' = 'components',\n): string {\n // Map platform to package directory\n const platformMap: Record<string, string> = {\n vue: 'packages/vue/src',\n react: 'packages/react/src',\n angular: 'packages/angular/src',\n 'react-native': 'packages/react-native/src',\n flutter: 'packages/flutter/lib',\n };\n\n const basePath = platformMap[platform] || `packages/${platform}/src`;\n return `${basePath}/${sourceType}/${componentName}/${fileName}`;\n}\n\n/**\n * Check if GitHub repository is accessible\n */\nexport async function checkGitHubConnection(): Promise<boolean> {\n try {\n const url = getGitHubRawUrl('README.md');\n const response = await fetch(url, { method: 'HEAD' });\n return response.ok;\n } catch {\n return false;\n }\n}\n"],"names":["writeFileSync","mkdirSync","existsSync","dirname","GITHUB_CONFIG","owner","repo","branch","getGitHubRawUrl","filePath","cacheBust","Date","now","getCandidateFileNames","segments","split","fileName","pop","candidates","capitalized","charAt","toUpperCase","slice","includes","push","map","candidate","join","fetchFileFromGitHub","errors","candidatePath","url","attempt","response","fetch","cache","headers","Pragma","ok","status","Error","statusText","text","error","message","fetchAndSaveFile","sourceFilePath","targetFilePath","content","dir","recursive","console","fetchMultipleFiles","files","results","Promise","all","source","target","success","file","undefined","getComponentGitHubPath","platform","componentName","sourceType","platformMap","vue","react","angular","flutter","basePath","checkGitHubConnection","method"],"mappings":"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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Centralized export for all utility modules
|
|
5
5
|
*/ // Platform detection
|
|
6
|
-
export * from './platform-detector';
|
|
6
|
+
export * from './platform-detector.js';
|
|
7
7
|
// Registry loading
|
|
8
|
-
export * from './registry-
|
|
8
|
+
export * from './framework-registry-service.js';
|
|
9
|
+
export * from './registry-loader.js';
|
|
9
10
|
// Component copying
|
|
10
|
-
export * from './component-copier';
|
|
11
|
+
export * from './component-copier.js';
|
|
11
12
|
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["/**\n * Galaxy UI CLI - Utilities\n *\n * Centralized export for all utility modules\n */\n\n// Platform detection\nexport * from './platform-detector';\n\n// Registry loading\nexport * from './registry-loader';\n\n// Component copying\nexport * from './component-copier';\n"],"names":[],"mappings":"AAAA;;;;CAIC,GAED,qBAAqB;AACrB,cAAc,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["/**\n * Galaxy UI CLI - Utilities\n *\n * Centralized export for all utility modules\n */\n\n// Platform detection\nexport * from './platform-detector.js';\n\n// Registry loading\nexport * from './framework-registry-service.js';\nexport * from './registry-loader.js';\n\n// Component copying\nexport * from './component-copier.js';\n"],"names":[],"mappings":"AAAA;;;;CAIC,GAED,qBAAqB;AACrB,cAAc,yBAAyB;AAEvC,mBAAmB;AACnB,cAAc,kCAAkC;AAChD,cAAc,uBAAuB;AAErC,oBAAoB;AACpB,cAAc,wBAAwB"}
|