components-differ 1.0.17 → 1.2.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.
- package/README.md +16 -191
- package/dist/index.mjs +114 -0
- package/dist/src/components.mjs +111 -0
- package/dist/src/create-diff.mjs +96 -0
- package/dist/src/git.mjs +141 -0
- package/dist/src/parse-file-path.mjs +64 -0
- package/package.json +20 -16
- package/dist/components.d.ts +0 -6
- package/dist/components.d.ts.map +0 -1
- package/dist/components.js +0 -119
- package/dist/components.js.map +0 -1
- package/dist/create-diff.d.ts +0 -14
- package/dist/create-diff.d.ts.map +0 -1
- package/dist/create-diff.js +0 -246
- package/dist/create-diff.js.map +0 -1
- package/dist/git.d.ts +0 -5
- package/dist/git.d.ts.map +0 -1
- package/dist/git.js +0 -120
- package/dist/git.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -166
- package/dist/index.js.map +0 -1
- package/dist/parse-file-path.d.ts +0 -3
- package/dist/parse-file-path.d.ts.map +0 -1
- package/dist/parse-file-path.js +0 -53
- package/dist/parse-file-path.js.map +0 -1
- package/dist/registry.d.ts +0 -3
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -112
- package/dist/registry.js.map +0 -1
- package/dist/shadcn-init.d.ts +0 -11
- package/dist/shadcn-init.d.ts.map +0 -1
- package/dist/shadcn-init.js +0 -208
- package/dist/shadcn-init.js.map +0 -1
- package/dist/types.d.ts +0 -42
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/git.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { execSync } from "node:child_process";
|
|
4
|
-
import ignore from "ignore";
|
|
5
|
-
const INITIAL_DIR = "_initial";
|
|
6
|
-
const EXCLUDE_DIRS = new Set([
|
|
7
|
-
"node_modules",
|
|
8
|
-
"dist",
|
|
9
|
-
"fonts",
|
|
10
|
-
"build",
|
|
11
|
-
"public",
|
|
12
|
-
"static",
|
|
13
|
-
".next",
|
|
14
|
-
".git",
|
|
15
|
-
INITIAL_DIR,
|
|
16
|
-
]);
|
|
17
|
-
const EXCLUDE_FILES = new Set([
|
|
18
|
-
".DS_Store",
|
|
19
|
-
"next-env.d.ts",
|
|
20
|
-
"package-lock.json",
|
|
21
|
-
"yarn.lock",
|
|
22
|
-
"pnpm-lock.yaml",
|
|
23
|
-
"bun.lockb",
|
|
24
|
-
"package.json",
|
|
25
|
-
"tailwind.config.ts",
|
|
26
|
-
"tailwind.config.js",
|
|
27
|
-
"components.json",
|
|
28
|
-
"favicon.ico",
|
|
29
|
-
]);
|
|
30
|
-
function cloneInitialCommit() {
|
|
31
|
-
deleteInitialDir();
|
|
32
|
-
try {
|
|
33
|
-
const initialCommit = execSync("git rev-list --max-parents=0 HEAD").toString().trim();
|
|
34
|
-
execSync(`git worktree add -f ${INITIAL_DIR} ${initialCommit}`, { stdio: "ignore" });
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
-
console.error("Error cloning initial commit:", message);
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function deleteInitialDir() {
|
|
43
|
-
if (!fs.existsSync(INITIAL_DIR)) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
fs.rmSync(INITIAL_DIR, { recursive: true, force: true });
|
|
47
|
-
try {
|
|
48
|
-
execSync("git worktree prune", { stdio: "ignore" });
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
52
|
-
console.error("Error pruning git worktree:", message);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function checkIfFileIsChanged(relativeFilePath) {
|
|
56
|
-
const initialFilePath = path.join(INITIAL_DIR, relativeFilePath);
|
|
57
|
-
const fullPath = path.join(process.cwd(), relativeFilePath);
|
|
58
|
-
if (!fs.existsSync(initialFilePath)) {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
const currentContent = fs.readFileSync(fullPath, "utf-8");
|
|
62
|
-
const initialContent = fs.readFileSync(initialFilePath, "utf-8");
|
|
63
|
-
return currentContent !== initialContent;
|
|
64
|
-
}
|
|
65
|
-
export function scanForFiles(startDir, checkFile = false) {
|
|
66
|
-
const foundFiles = [];
|
|
67
|
-
let ignorer;
|
|
68
|
-
const gitignorePath = path.join(startDir, ".gitignore");
|
|
69
|
-
if (fs.existsSync(gitignorePath)) {
|
|
70
|
-
const gitIgnore = ignore().add(fs.readFileSync(gitignorePath).toString());
|
|
71
|
-
ignorer = (relativeFilePath) => gitIgnore.ignores(relativeFilePath);
|
|
72
|
-
}
|
|
73
|
-
function scanDirectory(dir, relativePath = "") {
|
|
74
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
75
|
-
for (const entry of entries) {
|
|
76
|
-
const fullPath = path.join(dir, entry.name);
|
|
77
|
-
const relativeFilePath = path.join(relativePath, entry.name);
|
|
78
|
-
if (entry.isDirectory()) {
|
|
79
|
-
if (!EXCLUDE_DIRS.has(entry.name)) {
|
|
80
|
-
scanDirectory(fullPath, relativeFilePath);
|
|
81
|
-
}
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
if (EXCLUDE_FILES.has(entry.name)) {
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
if (ignorer?.(relativeFilePath)) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
if (!checkFile || checkIfFileIsChanged(relativeFilePath)) {
|
|
91
|
-
foundFiles.push({
|
|
92
|
-
path: relativeFilePath,
|
|
93
|
-
content: fs.readFileSync(fullPath, "utf-8"),
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
scanDirectory(startDir);
|
|
99
|
-
return foundFiles;
|
|
100
|
-
}
|
|
101
|
-
export function scanForAlteredFiles(specificFilesToReturn = []) {
|
|
102
|
-
cloneInitialCommit();
|
|
103
|
-
const alteredFiles = scanForFiles(process.cwd(), true);
|
|
104
|
-
const specificFiles = specificFilesToReturn.reduce((acc, file) => {
|
|
105
|
-
const fullPath = path.join(process.cwd(), INITIAL_DIR, file);
|
|
106
|
-
if (fs.existsSync(fullPath)) {
|
|
107
|
-
acc[file] = fs.readFileSync(fullPath, "utf-8");
|
|
108
|
-
}
|
|
109
|
-
return acc;
|
|
110
|
-
}, {});
|
|
111
|
-
deleteInitialDir();
|
|
112
|
-
return {
|
|
113
|
-
alteredFiles,
|
|
114
|
-
specificFiles,
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
export function hasSrcDir(dir) {
|
|
118
|
-
return fs.existsSync(path.join(dir, "src"));
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import fs from "node:fs";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { execSync } from "node:child_process";
|
|
5
|
-
import { program } from "commander";
|
|
6
|
-
import { scanForAlteredFiles, scanForFiles, hasSrcDir } from "./git.js";
|
|
7
|
-
import { readComponentsManifest } from "./components.js";
|
|
8
|
-
import { createDiff } from "./create-diff.js";
|
|
9
|
-
import { writeRegistryFile } from "./registry.js";
|
|
10
|
-
import { initShadcnProject } from "./shadcn-init.js";
|
|
11
|
-
program.option("-n, --name <name>", "Name of the component set to diff");
|
|
12
|
-
program.option("--init", "Initialise a git repository for the current directory");
|
|
13
|
-
program.option("--registry [path]", "Create or update a registry.json file. Defaults to ./registry.json when no path is provided.");
|
|
14
|
-
program.option("--initshadcn [type]", "Initialise shadcn/ui configuration (supports Next.js and Vite). Detects project type automatically when omitted.");
|
|
15
|
-
program.option("--pushTo <url>", "POST the generated diff JSON to the provided URL.");
|
|
16
|
-
program.parse();
|
|
17
|
-
const options = program.opts();
|
|
18
|
-
function runCommand(command) {
|
|
19
|
-
try {
|
|
20
|
-
execSync(command, { stdio: "inherit" });
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
console.error(`Failed to execute command: ${command}`);
|
|
24
|
-
process.exit(1);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
function ensureGitignore() {
|
|
28
|
-
const gitignorePath = path.join(process.cwd(), ".gitignore");
|
|
29
|
-
if (fs.existsSync(gitignorePath)) {
|
|
30
|
-
console.log(".gitignore file already exists.");
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
console.log(".gitignore file is missing. Creating one...");
|
|
34
|
-
const content = `
|
|
35
|
-
/node_modules
|
|
36
|
-
/.pnp
|
|
37
|
-
.pnp.*
|
|
38
|
-
.yarn/*
|
|
39
|
-
!.yarn/patches
|
|
40
|
-
!.yarn/plugins
|
|
41
|
-
!.yarn/releases
|
|
42
|
-
!.yarn/versions
|
|
43
|
-
|
|
44
|
-
# testing
|
|
45
|
-
/coverage
|
|
46
|
-
|
|
47
|
-
# next.js
|
|
48
|
-
/.next/
|
|
49
|
-
/out/
|
|
50
|
-
|
|
51
|
-
# production
|
|
52
|
-
/build
|
|
53
|
-
|
|
54
|
-
# misc
|
|
55
|
-
.DS_Store
|
|
56
|
-
*.pem
|
|
57
|
-
|
|
58
|
-
# debug
|
|
59
|
-
npm-debug.log*
|
|
60
|
-
yarn-debug.log*
|
|
61
|
-
yarn-error.log*
|
|
62
|
-
|
|
63
|
-
# env files (can opt-in for committing if needed)
|
|
64
|
-
.env*
|
|
65
|
-
|
|
66
|
-
# vercel
|
|
67
|
-
.vercel
|
|
68
|
-
|
|
69
|
-
# typescript
|
|
70
|
-
*.tsbuildinfo
|
|
71
|
-
next-env.d.ts
|
|
72
|
-
`.trimStart();
|
|
73
|
-
fs.writeFileSync(gitignorePath, content, "utf8");
|
|
74
|
-
console.log(".gitignore file created with default rules.");
|
|
75
|
-
}
|
|
76
|
-
function initRepository() {
|
|
77
|
-
console.log("Initializing git repository for new component");
|
|
78
|
-
if (process.platform === "win32") {
|
|
79
|
-
runCommand('rmdir /s /q .git && git init && git add . && git commit -m "Initial commit"');
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
runCommand('rm -fr .git && git init && git add . && git commit -m "Initial commit"');
|
|
83
|
-
}
|
|
84
|
-
ensureGitignore();
|
|
85
|
-
}
|
|
86
|
-
async function postResult(url, payload) {
|
|
87
|
-
console.log("posting result to ", url);
|
|
88
|
-
console.log("payload: ", payload);
|
|
89
|
-
try {
|
|
90
|
-
const response = await fetch(url, {
|
|
91
|
-
method: "POST",
|
|
92
|
-
headers: {
|
|
93
|
-
"Content-Type": "application/json",
|
|
94
|
-
},
|
|
95
|
-
body: JSON.stringify(payload),
|
|
96
|
-
});
|
|
97
|
-
if (!response.ok) {
|
|
98
|
-
const body = await response.text().catch(() => "");
|
|
99
|
-
throw new Error(`Received ${response.status} ${response.statusText}${body ? `: ${body}` : ""}`);
|
|
100
|
-
}
|
|
101
|
-
console.log(`Successfully pushed diff to ${url}`);
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
105
|
-
console.error(`Failed to push diff to ${url}: ${message}`);
|
|
106
|
-
process.exit(1);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
async function main() {
|
|
110
|
-
if (options.init) {
|
|
111
|
-
initRepository();
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (options.initshadcn !== undefined) {
|
|
115
|
-
const specifiedType = typeof options.initshadcn === "string" && options.initshadcn.length > 0
|
|
116
|
-
? options.initshadcn
|
|
117
|
-
: undefined;
|
|
118
|
-
try {
|
|
119
|
-
initShadcnProject({
|
|
120
|
-
cwd: process.cwd(),
|
|
121
|
-
projectType: specifiedType,
|
|
122
|
-
execCommand: runCommand,
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
console.error(error.message);
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
const name = options.name ?? path.basename(process.cwd());
|
|
132
|
-
const { alteredFiles, specificFiles } = scanForAlteredFiles(["./package.json"]);
|
|
133
|
-
const currentFiles = scanForFiles(process.cwd());
|
|
134
|
-
const currentPackageJson = fs.readFileSync("./package.json", "utf-8");
|
|
135
|
-
const config = readComponentsManifest(process.cwd());
|
|
136
|
-
config.isSrcDir = hasSrcDir(process.cwd());
|
|
137
|
-
const output = createDiff({
|
|
138
|
-
name,
|
|
139
|
-
config: config,
|
|
140
|
-
alteredFiles,
|
|
141
|
-
specificFiles,
|
|
142
|
-
currentFiles,
|
|
143
|
-
currentPackageJson,
|
|
144
|
-
});
|
|
145
|
-
const pushUrl = options.pushTo;
|
|
146
|
-
if (options.registry !== undefined) {
|
|
147
|
-
const registryPath = typeof options.registry === "string" && options.registry.length > 0
|
|
148
|
-
? options.registry
|
|
149
|
-
: "./registry.json";
|
|
150
|
-
const resolvedPath = writeRegistryFile(process.cwd(), registryPath, output);
|
|
151
|
-
console.log(`Registry file updated at ${resolvedPath}`);
|
|
152
|
-
if (pushUrl) {
|
|
153
|
-
await postResult(pushUrl, output);
|
|
154
|
-
}
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
if (pushUrl) {
|
|
158
|
-
await postResult(pushUrl, output);
|
|
159
|
-
}
|
|
160
|
-
console.log(JSON.stringify(output, null, 2));
|
|
161
|
-
}
|
|
162
|
-
main().catch((error) => {
|
|
163
|
-
console.error(error.message);
|
|
164
|
-
process.exit(1);
|
|
165
|
-
});
|
|
166
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-file-path.d.ts","sourceRoot":"","sources":["../src/parse-file-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAsB7D,wBAAgB,aAAa,CAC3B,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,QAAQ,CA0CV"}
|
package/dist/parse-file-path.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
function fixAlias(alias) {
|
|
2
|
-
return alias.replace("@", ".");
|
|
3
|
-
}
|
|
4
|
-
function isWithinAlias(config, filePath, aliasKey) {
|
|
5
|
-
const alias = config[aliasKey];
|
|
6
|
-
if (typeof alias !== "string") {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
return filePath.startsWith(fixAlias(alias));
|
|
10
|
-
}
|
|
11
|
-
function normalizeTargetPath(filePath) {
|
|
12
|
-
return filePath.replace(/^\.\//, "");
|
|
13
|
-
}
|
|
14
|
-
function isAppRoutePath(targetPath) {
|
|
15
|
-
return targetPath.startsWith("app/") || targetPath.startsWith("src/app/");
|
|
16
|
-
}
|
|
17
|
-
export function parseFilePath(wasInSrcDir, config, filePath, content) {
|
|
18
|
-
const normalizedTarget = normalizeTargetPath(filePath);
|
|
19
|
-
const defaultTarget = wasInSrcDir ? normalizedTarget : `~/${normalizedTarget}`;
|
|
20
|
-
const output = {
|
|
21
|
-
path: filePath,
|
|
22
|
-
content: content ?? "",
|
|
23
|
-
type: "registry:file",
|
|
24
|
-
target: defaultTarget,
|
|
25
|
-
};
|
|
26
|
-
if (isWithinAlias(config, filePath, "ui")) {
|
|
27
|
-
output.type = "registry:ui";
|
|
28
|
-
output.target = undefined;
|
|
29
|
-
return output;
|
|
30
|
-
}
|
|
31
|
-
if (isWithinAlias(config, filePath, "components")) {
|
|
32
|
-
output.type = "registry:block";
|
|
33
|
-
output.target = undefined;
|
|
34
|
-
return output;
|
|
35
|
-
}
|
|
36
|
-
if (isWithinAlias(config, filePath, "hooks")) {
|
|
37
|
-
output.type = "registry:hook";
|
|
38
|
-
output.target = undefined;
|
|
39
|
-
return output;
|
|
40
|
-
}
|
|
41
|
-
if (isWithinAlias(config, filePath, "lib")) {
|
|
42
|
-
output.type = "registry:lib";
|
|
43
|
-
output.target = undefined;
|
|
44
|
-
return output;
|
|
45
|
-
}
|
|
46
|
-
if (isAppRoutePath(normalizedTarget)) {
|
|
47
|
-
output.type = "registry:page";
|
|
48
|
-
output.target = defaultTarget;
|
|
49
|
-
return output;
|
|
50
|
-
}
|
|
51
|
-
return output;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=parse-file-path.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-file-path.js","sourceRoot":"","sources":["../src/parse-file-path.ts"],"names":[],"mappings":"AAEA,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CAAC,MAAwB,EAAE,QAAgB,EAAE,QAAgC;IACjG,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,WAAoB,EACpB,MAAwB,EACxB,QAAgB,EAChB,OAAgB;IAEhB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAAE,CAAC;IAE/E,MAAM,MAAM,GAAa;QACvB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,aAAa;KACtB,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;QAC5B,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC;QAC9B,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC;QAC9B,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/registry.d.ts
DELETED
package/dist/registry.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AA6G3D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CA4BjG"}
|
package/dist/registry.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
const REGISTRY_SCHEMA_URL = "https://ui.shadcn.com/schema/registry.json";
|
|
4
|
-
function parseEnvFile(fileContents) {
|
|
5
|
-
const envValues = {};
|
|
6
|
-
const lines = fileContents.split(/\r?\n/);
|
|
7
|
-
for (const line of lines) {
|
|
8
|
-
const trimmed = line.trim();
|
|
9
|
-
if (!trimmed || trimmed.startsWith("#")) {
|
|
10
|
-
continue;
|
|
11
|
-
}
|
|
12
|
-
const separatorIndex = trimmed.indexOf("=");
|
|
13
|
-
if (separatorIndex === -1) {
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
const key = trimmed.slice(0, separatorIndex).trim();
|
|
17
|
-
const value = trimmed.slice(separatorIndex + 1).trim();
|
|
18
|
-
if (!key) {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
envValues[key] = value.replace(/^['"]|['"]$/g, "");
|
|
22
|
-
}
|
|
23
|
-
return envValues;
|
|
24
|
-
}
|
|
25
|
-
function readDotEnv(rootDir) {
|
|
26
|
-
const dotenvPath = path.join(rootDir, ".env");
|
|
27
|
-
if (!fs.existsSync(dotenvPath)) {
|
|
28
|
-
return {};
|
|
29
|
-
}
|
|
30
|
-
const contents = fs.readFileSync(dotenvPath, "utf8");
|
|
31
|
-
return parseEnvFile(contents);
|
|
32
|
-
}
|
|
33
|
-
function resolveRegistryMetadata(rootDir) {
|
|
34
|
-
const defaults = {
|
|
35
|
-
name: "shadcn",
|
|
36
|
-
homepage: "https://ui.shadcn.com",
|
|
37
|
-
};
|
|
38
|
-
const envFromProcess = {
|
|
39
|
-
name: process.env.REGISTRY_NAME ?? "",
|
|
40
|
-
homepage: process.env.REGISTRY_HOMEPAGE ?? "",
|
|
41
|
-
};
|
|
42
|
-
let metadata = {
|
|
43
|
-
name: envFromProcess.name || defaults.name,
|
|
44
|
-
homepage: envFromProcess.homepage || defaults.homepage,
|
|
45
|
-
};
|
|
46
|
-
if (!envFromProcess.name || !envFromProcess.homepage) {
|
|
47
|
-
const envFileValues = readDotEnv(rootDir);
|
|
48
|
-
metadata = {
|
|
49
|
-
name: envFromProcess.name || envFileValues.REGISTRY_NAME || defaults.name,
|
|
50
|
-
homepage: envFromProcess.homepage || envFileValues.REGISTRY_HOMEPAGE || defaults.homepage,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
return metadata;
|
|
54
|
-
}
|
|
55
|
-
function ensureDirectoryExists(filePath) {
|
|
56
|
-
const dir = path.dirname(filePath);
|
|
57
|
-
if (fs.existsSync(dir)) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
61
|
-
}
|
|
62
|
-
function loadExistingRegistry(registryPath) {
|
|
63
|
-
if (!fs.existsSync(registryPath)) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
const contents = fs.readFileSync(registryPath, "utf8");
|
|
67
|
-
try {
|
|
68
|
-
const file = JSON.parse(contents);
|
|
69
|
-
if (!Array.isArray(file.items)) {
|
|
70
|
-
throw new Error("Invalid registry.json: missing items array");
|
|
71
|
-
}
|
|
72
|
-
return file;
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
throw new Error(`Failed to parse existing registry.json at ${registryPath}: ${error.message}`);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function upsertRegistryItem(registry, diff) {
|
|
79
|
-
const existingIndex = registry.items.findIndex((item) => item.name === diff.name);
|
|
80
|
-
if (existingIndex >= 0) {
|
|
81
|
-
registry.items[existingIndex] = diff;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
registry.items.push(diff);
|
|
85
|
-
}
|
|
86
|
-
return registry;
|
|
87
|
-
}
|
|
88
|
-
export function writeRegistryFile(rootDir, relativePath, diff) {
|
|
89
|
-
const registryPath = path.isAbsolute(relativePath) ? relativePath : path.join(rootDir, relativePath);
|
|
90
|
-
const existingRegistry = loadExistingRegistry(registryPath);
|
|
91
|
-
const metadata = resolveRegistryMetadata(rootDir);
|
|
92
|
-
const registry = existingRegistry ?? {
|
|
93
|
-
$schema: REGISTRY_SCHEMA_URL,
|
|
94
|
-
name: metadata.name,
|
|
95
|
-
homepage: metadata.homepage,
|
|
96
|
-
items: [],
|
|
97
|
-
};
|
|
98
|
-
if (!existingRegistry) {
|
|
99
|
-
registry.name = metadata.name;
|
|
100
|
-
registry.homepage = metadata.homepage;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
registry.name = existingRegistry.name || metadata.name;
|
|
104
|
-
registry.homepage = existingRegistry.homepage || metadata.homepage;
|
|
105
|
-
}
|
|
106
|
-
registry.$schema = existingRegistry?.$schema ?? REGISTRY_SCHEMA_URL;
|
|
107
|
-
upsertRegistryItem(registry, diff);
|
|
108
|
-
ensureDirectoryExists(registryPath);
|
|
109
|
-
fs.writeFileSync(registryPath, `${JSON.stringify(registry, null, 2)}\n`, "utf8");
|
|
110
|
-
return registryPath;
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=registry.js.map
|
package/dist/registry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/shadcn-init.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ProjectType } from "./types.js";
|
|
2
|
-
type ExecCommand = (command: string) => void;
|
|
3
|
-
interface InitShadcnOptions {
|
|
4
|
-
cwd: string;
|
|
5
|
-
projectType?: string | ProjectType;
|
|
6
|
-
execCommand: ExecCommand;
|
|
7
|
-
}
|
|
8
|
-
export declare function initShadcnProject({ cwd, projectType, execCommand }: InitShadcnOptions): void;
|
|
9
|
-
export declare function determineProjectTypeFromPackageJson(packageJson: Record<string, unknown>): ProjectType | null;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=shadcn-init.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shadcn-init.d.ts","sourceRoot":"","sources":["../src/shadcn-init.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7C,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;CAC1B;AA8OD,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAyB5F;AAED,wBAAgB,mCAAmC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,GAAG,IAAI,CAE5G"}
|