@smart-coder-labs/apple-design-system 1.2.2 → 1.2.3
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/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +33 -27
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/update-components.d.ts.map +1 -1
- package/dist/cli/commands/update-components.js +23 -41
- package/dist/cli/commands/update-components.js.map +1 -1
- package/dist/cli/utils/config.d.ts +21 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +76 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/cli/utils/registry.d.ts +1 -0
- package/dist/cli/utils/registry.d.ts.map +1 -1
- package/dist/cli/utils/registry.js +12 -10
- package/dist/cli/utils/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../cli/commands/add.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,GAAG,GAAU,YAAY,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../cli/commands/add.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,GAAG,GAAU,YAAY,MAAM,EAAE,kBAmF7C,CAAC"}
|
package/dist/cli/commands/add.js
CHANGED
|
@@ -10,36 +10,40 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
11
|
const ora_1 = __importDefault(require("ora"));
|
|
12
12
|
const registry_1 = require("../utils/registry");
|
|
13
|
+
const config_1 = require("../utils/config");
|
|
13
14
|
const add = async (components) => {
|
|
15
|
+
const available = await (0, registry_1.getAvailableComponents)();
|
|
14
16
|
if (!components || components.length === 0) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
const modeResponse = await (0, prompts_1.default)({
|
|
18
|
+
type: "select",
|
|
19
|
+
name: "mode",
|
|
20
|
+
message: "What would you like to do?",
|
|
21
|
+
choices: [
|
|
22
|
+
{ title: "Add all components", value: "all" },
|
|
23
|
+
{ title: "Select specific components", value: "select" },
|
|
24
|
+
],
|
|
23
25
|
});
|
|
24
|
-
|
|
26
|
+
if (modeResponse.mode === "all") {
|
|
27
|
+
components = available;
|
|
28
|
+
console.log(chalk_1.default.green(`\n✓ Selected all ${available.length} components`));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const response = await (0, prompts_1.default)({
|
|
32
|
+
type: "multiselect",
|
|
33
|
+
name: "items",
|
|
34
|
+
message: "Which components would you like to add?",
|
|
35
|
+
choices: available.map((c) => ({ title: c, value: c })),
|
|
36
|
+
min: 1,
|
|
37
|
+
});
|
|
38
|
+
components = response.items;
|
|
39
|
+
}
|
|
25
40
|
}
|
|
26
41
|
if (!components || components.length === 0) {
|
|
27
42
|
console.log(chalk_1.default.yellow("No components selected."));
|
|
28
43
|
return;
|
|
29
44
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (fs_extra_1.default.existsSync("design-system.json")) {
|
|
33
|
-
try {
|
|
34
|
-
config = await fs_extra_1.default.readJSON("design-system.json");
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
console.warn("Could not read design-system.json, using defaults.");
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
console.warn("design-system.json not found. Using default ./components/ui");
|
|
42
|
-
}
|
|
45
|
+
const config = await (0, config_1.loadConfig)();
|
|
46
|
+
const dsVersion = await (0, registry_1.getRegistryVersion)();
|
|
43
47
|
const spinner = (0, ora_1.default)("Installing components...").start();
|
|
44
48
|
const queue = [...components];
|
|
45
49
|
const processed = new Set();
|
|
@@ -54,16 +58,16 @@ const add = async (components) => {
|
|
|
54
58
|
spinner.warn(`Component '${component}' not found.`);
|
|
55
59
|
continue;
|
|
56
60
|
}
|
|
57
|
-
//
|
|
61
|
+
// Detect local dependencies from main file
|
|
58
62
|
const mainFile = files.find((f) => f.name === `${component}.tsx`);
|
|
59
63
|
if (mainFile) {
|
|
60
64
|
const localImportRegex = /from\s+['"]\.\.\/([A-Z][a-zA-Z0-9]*)['"]/g;
|
|
61
65
|
let match;
|
|
62
66
|
while ((match = localImportRegex.exec(mainFile.content)) !== null) {
|
|
63
|
-
const
|
|
64
|
-
if (!processed.has(
|
|
65
|
-
queue.push(
|
|
66
|
-
spinner.info(`Detected dependency: ${
|
|
67
|
+
const dep = match[1];
|
|
68
|
+
if (!processed.has(dep) && !queue.includes(dep)) {
|
|
69
|
+
queue.push(dep);
|
|
70
|
+
spinner.info(`Detected dependency: ${dep}`);
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
73
|
}
|
|
@@ -72,8 +76,10 @@ const add = async (components) => {
|
|
|
72
76
|
for (const file of files) {
|
|
73
77
|
await fs_extra_1.default.writeFile(path_1.default.join(componentDir, file.name), file.content);
|
|
74
78
|
}
|
|
79
|
+
await (0, config_1.recordInstall)(config, component, dsVersion, "folder");
|
|
75
80
|
spinner.succeed(`Installed ${component}`);
|
|
76
81
|
}
|
|
82
|
+
await (0, config_1.saveConfig)(config);
|
|
77
83
|
spinner.stop();
|
|
78
84
|
console.log(chalk_1.default.bold.green("\nDone!"));
|
|
79
85
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../cli/commands/add.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../cli/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-components.d.ts","sourceRoot":"","sources":["../../../cli/commands/update-components.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-components.d.ts","sourceRoot":"","sources":["../../../cli/commands/update-components.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB,qBAuG5B,CAAC"}
|
|
@@ -10,65 +10,44 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
10
10
|
const ora_1 = __importDefault(require("ora"));
|
|
11
11
|
const prompts_1 = __importDefault(require("prompts"));
|
|
12
12
|
const registry_1 = require("../utils/registry");
|
|
13
|
+
const config_1 = require("../utils/config");
|
|
13
14
|
const updateComponents = async () => {
|
|
14
|
-
|
|
15
|
-
let config = { componentsDir: "./components/ui" };
|
|
16
|
-
if (fs_extra_1.default.existsSync("design-system.json")) {
|
|
17
|
-
try {
|
|
18
|
-
config = await fs_extra_1.default.readJSON("design-system.json");
|
|
19
|
-
}
|
|
20
|
-
catch (e) {
|
|
21
|
-
console.warn("Could not read design-system.json, using defaults.");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
console.warn("design-system.json not found. Using default ./components/ui");
|
|
26
|
-
}
|
|
15
|
+
const config = await (0, config_1.loadConfig)();
|
|
27
16
|
const resolvedComponentsDir = path_1.default.resolve(process.cwd(), config.componentsDir);
|
|
28
|
-
//
|
|
29
|
-
if (!fs_extra_1.default.existsSync(resolvedComponentsDir)) {
|
|
30
|
-
console.log(chalk_1.default.yellow(`Components directory not found at ${config.componentsDir}`));
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
// 3. Get installed components
|
|
17
|
+
// 1. Scan installed components (folders + flat files + config tracking)
|
|
34
18
|
const spinner = (0, ora_1.default)("Scanning for installed components...").start();
|
|
35
|
-
const entries = await fs_extra_1.default.readdir(resolvedComponentsDir, { withFileTypes: true });
|
|
36
19
|
const availableComponents = await (0, registry_1.getAvailableComponents)();
|
|
37
|
-
const installedComponents =
|
|
38
|
-
.filter((e) => e.isDirectory())
|
|
39
|
-
.map((e) => e.name)
|
|
40
|
-
.filter((name) => availableComponents.includes(name))
|
|
41
|
-
.sort();
|
|
20
|
+
const installedComponents = await (0, config_1.detectInstalledComponents)(resolvedComponentsDir, availableComponents, config);
|
|
42
21
|
spinner.stop();
|
|
43
22
|
if (installedComponents.length === 0) {
|
|
44
23
|
console.log(chalk_1.default.yellow("No installed components found."));
|
|
45
24
|
return;
|
|
46
25
|
}
|
|
47
26
|
console.log(chalk_1.default.blue(`\nFound ${installedComponents.length} installed components:\n`));
|
|
48
|
-
//
|
|
49
|
-
const response = await (0, prompts_1.default)(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
},
|
|
59
|
-
]);
|
|
27
|
+
// 2. Selection
|
|
28
|
+
const response = await (0, prompts_1.default)({
|
|
29
|
+
type: "select",
|
|
30
|
+
name: "updateMode",
|
|
31
|
+
message: "What would you like to do?",
|
|
32
|
+
choices: [
|
|
33
|
+
{ title: "Update all components", value: "all" },
|
|
34
|
+
{ title: "Select specific components", value: "select" },
|
|
35
|
+
],
|
|
36
|
+
});
|
|
60
37
|
let componentsToUpdate = [];
|
|
61
38
|
if (response.updateMode === "all") {
|
|
62
39
|
componentsToUpdate = installedComponents;
|
|
63
40
|
console.log(chalk_1.default.green(`\n✓ Selected all ${installedComponents.length} components`));
|
|
64
41
|
}
|
|
65
42
|
else {
|
|
66
|
-
// Let user select specific components
|
|
67
43
|
const selectResponse = await (0, prompts_1.default)({
|
|
68
44
|
type: "multiselect",
|
|
69
45
|
name: "items",
|
|
70
46
|
message: "Which components would you like to update?",
|
|
71
|
-
choices: installedComponents.map((c) => ({
|
|
47
|
+
choices: installedComponents.map((c) => ({
|
|
48
|
+
title: `${c}${config.components[c] ? chalk_1.default.gray(` (v${config.components[c].version})`) : ""}`,
|
|
49
|
+
value: c,
|
|
50
|
+
})),
|
|
72
51
|
min: 1,
|
|
73
52
|
});
|
|
74
53
|
componentsToUpdate = selectResponse.items;
|
|
@@ -78,7 +57,8 @@ const updateComponents = async () => {
|
|
|
78
57
|
}
|
|
79
58
|
console.log(chalk_1.default.green(`\n✓ Selected ${componentsToUpdate.length} components`));
|
|
80
59
|
}
|
|
81
|
-
//
|
|
60
|
+
// 3. Fetch and update
|
|
61
|
+
const dsVersion = await (0, registry_1.getRegistryVersion)();
|
|
82
62
|
const updateSpinner = (0, ora_1.default)("Updating components...").start();
|
|
83
63
|
let successCount = 0;
|
|
84
64
|
let failCount = 0;
|
|
@@ -96,6 +76,7 @@ const updateComponents = async () => {
|
|
|
96
76
|
for (const file of files) {
|
|
97
77
|
await fs_extra_1.default.writeFile(path_1.default.join(componentDir, file.name), file.content);
|
|
98
78
|
}
|
|
79
|
+
await (0, config_1.recordInstall)(config, component, dsVersion, "folder");
|
|
99
80
|
updateSpinner.succeed(`Updated ${component}`);
|
|
100
81
|
successCount++;
|
|
101
82
|
}
|
|
@@ -105,7 +86,8 @@ const updateComponents = async () => {
|
|
|
105
86
|
}
|
|
106
87
|
}
|
|
107
88
|
updateSpinner.stop();
|
|
108
|
-
|
|
89
|
+
await (0, config_1.saveConfig)(config);
|
|
90
|
+
// 4. Summary
|
|
109
91
|
console.log(chalk_1.default.bold("\n=== Update Summary ==="));
|
|
110
92
|
console.log(chalk_1.default.green(`✓ Successfully updated: ${successCount} components`));
|
|
111
93
|
if (failCount > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-components.js","sourceRoot":"","sources":["../../../cli/commands/update-components.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AACxB,kDAA0B;AAC1B,8CAAsB;AACtB,sDAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"update-components.js","sourceRoot":"","sources":["../../../cli/commands/update-components.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ComponentRecord {
|
|
2
|
+
version: string;
|
|
3
|
+
type: "folder" | "flat";
|
|
4
|
+
installedAt: string;
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DesignSystemConfig {
|
|
8
|
+
componentsDir: string;
|
|
9
|
+
globalCss?: string;
|
|
10
|
+
components: Record<string, ComponentRecord>;
|
|
11
|
+
}
|
|
12
|
+
export declare function loadConfig(): Promise<DesignSystemConfig>;
|
|
13
|
+
export declare function saveConfig(config: DesignSystemConfig): Promise<void>;
|
|
14
|
+
export declare function recordInstall(config: DesignSystemConfig, componentName: string, version: string, type: "folder" | "flat"): Promise<DesignSystemConfig>;
|
|
15
|
+
/**
|
|
16
|
+
* Detect installed components from disk.
|
|
17
|
+
* Supports both folder structure (ComponentName/) and flat files (ComponentName.tsx).
|
|
18
|
+
* Also merges components tracked in design-system.json.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectInstalledComponents(resolvedComponentsDir: string, availableComponents: string[], config: DesignSystemConfig): Promise<string[]>;
|
|
21
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../cli/utils/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAQD,wBAAsB,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAY9D;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,GAAG,MAAM,GACtB,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,qBAAqB,EAAE,MAAM,EAC7B,mBAAmB,EAAE,MAAM,EAAE,EAC7B,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadConfig = loadConfig;
|
|
7
|
+
exports.saveConfig = saveConfig;
|
|
8
|
+
exports.recordInstall = recordInstall;
|
|
9
|
+
exports.detectInstalledComponents = detectInstalledComponents;
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const CONFIG_FILE = "design-system.json";
|
|
13
|
+
const DEFAULT_CONFIG = {
|
|
14
|
+
componentsDir: "./components/ui",
|
|
15
|
+
components: {},
|
|
16
|
+
};
|
|
17
|
+
async function loadConfig() {
|
|
18
|
+
if (!fs_extra_1.default.existsSync(CONFIG_FILE)) {
|
|
19
|
+
console.warn("design-system.json not found. Using defaults.");
|
|
20
|
+
return { ...DEFAULT_CONFIG };
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const raw = await fs_extra_1.default.readJSON(CONFIG_FILE);
|
|
24
|
+
return { ...DEFAULT_CONFIG, ...raw, components: raw.components ?? {} };
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
console.warn("Could not read design-system.json. Using defaults.");
|
|
28
|
+
return { ...DEFAULT_CONFIG };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function saveConfig(config) {
|
|
32
|
+
await fs_extra_1.default.writeJSON(CONFIG_FILE, config, { spaces: 2 });
|
|
33
|
+
}
|
|
34
|
+
async function recordInstall(config, componentName, version, type) {
|
|
35
|
+
const now = new Date().toISOString();
|
|
36
|
+
const existing = config.components[componentName];
|
|
37
|
+
config.components[componentName] = {
|
|
38
|
+
version,
|
|
39
|
+
type,
|
|
40
|
+
installedAt: existing?.installedAt ?? now,
|
|
41
|
+
updatedAt: now,
|
|
42
|
+
};
|
|
43
|
+
return config;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Detect installed components from disk.
|
|
47
|
+
* Supports both folder structure (ComponentName/) and flat files (ComponentName.tsx).
|
|
48
|
+
* Also merges components tracked in design-system.json.
|
|
49
|
+
*/
|
|
50
|
+
async function detectInstalledComponents(resolvedComponentsDir, availableComponents, config) {
|
|
51
|
+
const found = new Set();
|
|
52
|
+
// 1. From disk
|
|
53
|
+
if (fs_extra_1.default.existsSync(resolvedComponentsDir)) {
|
|
54
|
+
const entries = await fs_extra_1.default.readdir(resolvedComponentsDir, { withFileTypes: true });
|
|
55
|
+
for (const entry of entries) {
|
|
56
|
+
if (entry.isDirectory() && availableComponents.includes(entry.name)) {
|
|
57
|
+
found.add(entry.name);
|
|
58
|
+
}
|
|
59
|
+
else if (entry.isFile()) {
|
|
60
|
+
const name = path_1.default.basename(entry.name, path_1.default.extname(entry.name));
|
|
61
|
+
if ((entry.name.endsWith(".tsx") || entry.name.endsWith(".ts")) &&
|
|
62
|
+
availableComponents.includes(name)) {
|
|
63
|
+
found.add(name);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// 2. From config tracking (catches components installed elsewhere)
|
|
69
|
+
for (const name of Object.keys(config.components)) {
|
|
70
|
+
if (availableComponents.includes(name)) {
|
|
71
|
+
found.add(name);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return Array.from(found).sort();
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../cli/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../cli/utils/registry.ts"],"names":[],"mappings":"AAuCA,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGhE;AAED,wBAAsB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../cli/utils/registry.ts"],"names":[],"mappings":"AAuCA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAG1D;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGhE;AAED,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC,CAuB1D;AAED,wBAAsB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIvF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW3D"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// This registry.ts now fetches from a remote JSON file on GitHub Raw.
|
|
3
|
-
// It replaces local file system calls with fetch.
|
|
4
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRegistryVersion = getRegistryVersion;
|
|
5
4
|
exports.getAvailableComponents = getAvailableComponents;
|
|
6
5
|
exports.getComponentFiles = getComponentFiles;
|
|
7
6
|
exports.getComponentDependencies = getComponentDependencies;
|
|
8
7
|
exports.getGlobalCss = getGlobalCss;
|
|
9
|
-
//
|
|
8
|
+
// Fetches from a remote JSON registry on GitHub Raw.
|
|
10
9
|
const REGISTRY_URL = "https://raw.githubusercontent.com/smart-coder-labs/design-system/refs/heads/main/registry.json";
|
|
11
10
|
const CSS_URL = "https://raw.githubusercontent.com/smart-coder-labs/design-system/refs/heads/main/globals.css";
|
|
12
11
|
let cachedRegistry = null;
|
|
@@ -16,10 +15,9 @@ async function fetchRegistry() {
|
|
|
16
15
|
try {
|
|
17
16
|
const res = await fetch(REGISTRY_URL);
|
|
18
17
|
if (!res.ok) {
|
|
19
|
-
throw new Error(`Failed to fetch registry
|
|
18
|
+
throw new Error(`Failed to fetch registry: ${res.statusText}`);
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
cachedRegistry = data;
|
|
20
|
+
cachedRegistry = (await res.json());
|
|
23
21
|
return cachedRegistry;
|
|
24
22
|
}
|
|
25
23
|
catch (error) {
|
|
@@ -27,9 +25,13 @@ async function fetchRegistry() {
|
|
|
27
25
|
return {};
|
|
28
26
|
}
|
|
29
27
|
}
|
|
28
|
+
async function getRegistryVersion() {
|
|
29
|
+
const registry = await fetchRegistry();
|
|
30
|
+
return registry._version ?? "unknown";
|
|
31
|
+
}
|
|
30
32
|
async function getAvailableComponents() {
|
|
31
33
|
const registry = await fetchRegistry();
|
|
32
|
-
return Object.keys(registry);
|
|
34
|
+
return Object.keys(registry).filter((k) => k !== "_version");
|
|
33
35
|
}
|
|
34
36
|
async function getComponentFiles(componentName) {
|
|
35
37
|
const registry = await fetchRegistry();
|
|
@@ -41,7 +43,7 @@ async function getComponentFiles(componentName) {
|
|
|
41
43
|
const results = await Promise.all(component.files.map(async (file) => {
|
|
42
44
|
const res = await fetch(file.url);
|
|
43
45
|
if (!res.ok) {
|
|
44
|
-
throw new Error(`Failed to fetch ${file.name}
|
|
46
|
+
throw new Error(`Failed to fetch ${file.name}: ${res.statusText}`);
|
|
45
47
|
}
|
|
46
48
|
return { name: file.name, content: await res.text() };
|
|
47
49
|
}));
|
|
@@ -55,13 +57,13 @@ async function getComponentFiles(componentName) {
|
|
|
55
57
|
async function getComponentDependencies(componentName) {
|
|
56
58
|
const registry = await fetchRegistry();
|
|
57
59
|
const component = registry[componentName];
|
|
58
|
-
return component?.dependencies
|
|
60
|
+
return component?.dependencies ?? [];
|
|
59
61
|
}
|
|
60
62
|
async function getGlobalCss() {
|
|
61
63
|
try {
|
|
62
64
|
const res = await fetch(CSS_URL);
|
|
63
65
|
if (!res.ok) {
|
|
64
|
-
throw new Error(`Failed to fetch global css
|
|
66
|
+
throw new Error(`Failed to fetch global css: ${res.statusText}`);
|
|
65
67
|
}
|
|
66
68
|
return await res.text();
|
|
67
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../cli/utils/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../cli/utils/registry.ts"],"names":[],"mappings":"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"}
|