cursor-kit-cli 1.2.1-beta → 1.3.0-beta
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.cjs +508 -178
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +507 -177
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +37 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils/branding.ts","../src/utils/fs.ts","../src/utils/constants.ts"],"sourcesContent":["export * from \"./utils/branding\";\nexport * from \"./utils/fs\";\nexport * from \"./utils/constants\";\n\n","import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function copyDir(src: string, dest: string): void {\n cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function listDirs(dir: string): string[] {\n if (!dirExists(dir)) return [];\n \n return readdirSync(dir).filter((item) => {\n const itemPath = join(dir, item);\n return statSync(itemPath).isDirectory();\n });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return [];\n return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return dirs;\n return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n skills: \"templates/skills\",\n} as const;\n"],"mappings":"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","names":["gradient","figlet","pc"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils/branding.ts","../src/utils/fs.ts","../src/utils/constants.ts"],"sourcesContent":["export * from \"./utils/branding\";\nexport * from \"./utils/fs\";\nexport * from \"./utils/constants\";\n\n","import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function copyDir(src: string, dest: string): void {\n cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function listDirs(dir: string): string[] {\n if (!dirExists(dir)) return [];\n \n return readdirSync(dir).filter((item) => {\n const itemPath = join(dir, item);\n return statSync(itemPath).isDirectory();\n });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return [];\n return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return dirs;\n return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n\nexport function getGitHubDir(cwd: string = process.cwd()): string {\n return join(cwd, \".github\");\n}\n\nexport function getCopilotInstructionsPath(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions.md\");\n}\n\nexport function getCopilotInstructionsDir(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions\");\n}\n\nexport function getCopilotCommandsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"commands\");\n}\n\nexport function getCopilotRulesDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"rules\");\n}\n\nexport function getCopilotSkillsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"skills\");\n}\n\nexport function deleteFile(path: string): void {\n if (fileExists(path)) {\n rmSync(path);\n }\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n skills: \"templates/skills\",\n} as const;\n"],"mappings":"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","names":["gradient","figlet","pc"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -29,6 +29,13 @@ declare function getConflictingFiles(dir: string, files: string[]): string[];
|
|
|
29
29
|
declare function getConflictingDirs(dir: string, dirs: string[]): string[];
|
|
30
30
|
declare function getNonConflictingFiles(dir: string, files: string[]): string[];
|
|
31
31
|
declare function getNonConflictingDirs(dir: string, dirs: string[]): string[];
|
|
32
|
+
declare function getGitHubDir(cwd?: string): string;
|
|
33
|
+
declare function getCopilotInstructionsPath(cwd?: string): string;
|
|
34
|
+
declare function getCopilotInstructionsDir(cwd?: string): string;
|
|
35
|
+
declare function getCopilotCommandsDir(cwd?: string): string;
|
|
36
|
+
declare function getCopilotRulesDir(cwd?: string): string;
|
|
37
|
+
declare function getCopilotSkillsDir(cwd?: string): string;
|
|
38
|
+
declare function deleteFile(path: string): void;
|
|
32
39
|
|
|
33
40
|
declare const REPO_URL = "github:duongductrong/cursor-kit";
|
|
34
41
|
declare const REPO_REF = "master";
|
|
@@ -47,4 +54,4 @@ declare const TEMPLATE_PATHS: {
|
|
|
47
54
|
readonly skills: "templates/skills";
|
|
48
55
|
};
|
|
49
56
|
|
|
50
|
-
export { COMMANDS_DIR, COMMAND_EXTENSION, CONFIG_FILE, CURSOR_DIR, REPO_RAW_URL, REPO_REF, REPO_URL, RULES_DIR, RULE_EXTENSION, SKILLS_DIR, SKILL_EXTENSION, TEMPLATE_PATHS, bold, copyDir, dim, dirExists, ensureDir, fileExists, getCommandsDir, getConflictingDirs, getConflictingFiles, getCursorDir, getNonConflictingDirs, getNonConflictingFiles, getPackageJson, getRulesDir, getSkillsDir, gradientText, highlight, listDirs, listFiles, printBanner, printDivider, printError, printInfo, printSuccess, printVersion, printWarning, readFile, removeFile, resolveFromCwd, writeFile };
|
|
57
|
+
export { COMMANDS_DIR, COMMAND_EXTENSION, CONFIG_FILE, CURSOR_DIR, REPO_RAW_URL, REPO_REF, REPO_URL, RULES_DIR, RULE_EXTENSION, SKILLS_DIR, SKILL_EXTENSION, TEMPLATE_PATHS, bold, copyDir, deleteFile, dim, dirExists, ensureDir, fileExists, getCommandsDir, getConflictingDirs, getConflictingFiles, getCopilotCommandsDir, getCopilotInstructionsDir, getCopilotInstructionsPath, getCopilotRulesDir, getCopilotSkillsDir, getCursorDir, getGitHubDir, getNonConflictingDirs, getNonConflictingFiles, getPackageJson, getRulesDir, getSkillsDir, gradientText, highlight, listDirs, listFiles, printBanner, printDivider, printError, printInfo, printSuccess, printVersion, printWarning, readFile, removeFile, resolveFromCwd, writeFile };
|
package/dist/index.d.ts
CHANGED
|
@@ -29,6 +29,13 @@ declare function getConflictingFiles(dir: string, files: string[]): string[];
|
|
|
29
29
|
declare function getConflictingDirs(dir: string, dirs: string[]): string[];
|
|
30
30
|
declare function getNonConflictingFiles(dir: string, files: string[]): string[];
|
|
31
31
|
declare function getNonConflictingDirs(dir: string, dirs: string[]): string[];
|
|
32
|
+
declare function getGitHubDir(cwd?: string): string;
|
|
33
|
+
declare function getCopilotInstructionsPath(cwd?: string): string;
|
|
34
|
+
declare function getCopilotInstructionsDir(cwd?: string): string;
|
|
35
|
+
declare function getCopilotCommandsDir(cwd?: string): string;
|
|
36
|
+
declare function getCopilotRulesDir(cwd?: string): string;
|
|
37
|
+
declare function getCopilotSkillsDir(cwd?: string): string;
|
|
38
|
+
declare function deleteFile(path: string): void;
|
|
32
39
|
|
|
33
40
|
declare const REPO_URL = "github:duongductrong/cursor-kit";
|
|
34
41
|
declare const REPO_REF = "master";
|
|
@@ -47,4 +54,4 @@ declare const TEMPLATE_PATHS: {
|
|
|
47
54
|
readonly skills: "templates/skills";
|
|
48
55
|
};
|
|
49
56
|
|
|
50
|
-
export { COMMANDS_DIR, COMMAND_EXTENSION, CONFIG_FILE, CURSOR_DIR, REPO_RAW_URL, REPO_REF, REPO_URL, RULES_DIR, RULE_EXTENSION, SKILLS_DIR, SKILL_EXTENSION, TEMPLATE_PATHS, bold, copyDir, dim, dirExists, ensureDir, fileExists, getCommandsDir, getConflictingDirs, getConflictingFiles, getCursorDir, getNonConflictingDirs, getNonConflictingFiles, getPackageJson, getRulesDir, getSkillsDir, gradientText, highlight, listDirs, listFiles, printBanner, printDivider, printError, printInfo, printSuccess, printVersion, printWarning, readFile, removeFile, resolveFromCwd, writeFile };
|
|
57
|
+
export { COMMANDS_DIR, COMMAND_EXTENSION, CONFIG_FILE, CURSOR_DIR, REPO_RAW_URL, REPO_REF, REPO_URL, RULES_DIR, RULE_EXTENSION, SKILLS_DIR, SKILL_EXTENSION, TEMPLATE_PATHS, bold, copyDir, deleteFile, dim, dirExists, ensureDir, fileExists, getCommandsDir, getConflictingDirs, getConflictingFiles, getCopilotCommandsDir, getCopilotInstructionsDir, getCopilotInstructionsPath, getCopilotRulesDir, getCopilotSkillsDir, getCursorDir, getGitHubDir, getNonConflictingDirs, getNonConflictingFiles, getPackageJson, getRulesDir, getSkillsDir, gradientText, highlight, listDirs, listFiles, printBanner, printDivider, printError, printInfo, printSuccess, printVersion, printWarning, readFile, removeFile, resolveFromCwd, writeFile };
|
package/dist/index.js
CHANGED
|
@@ -135,6 +135,29 @@ function getNonConflictingDirs(dir, dirs) {
|
|
|
135
135
|
if (!dirExists(dir)) return dirs;
|
|
136
136
|
return dirs.filter((d) => !dirExists(join(dir, d)));
|
|
137
137
|
}
|
|
138
|
+
function getGitHubDir(cwd = process.cwd()) {
|
|
139
|
+
return join(cwd, ".github");
|
|
140
|
+
}
|
|
141
|
+
function getCopilotInstructionsPath(cwd = process.cwd()) {
|
|
142
|
+
return join(getGitHubDir(cwd), "copilot-instructions.md");
|
|
143
|
+
}
|
|
144
|
+
function getCopilotInstructionsDir(cwd = process.cwd()) {
|
|
145
|
+
return join(getGitHubDir(cwd), "copilot-instructions");
|
|
146
|
+
}
|
|
147
|
+
function getCopilotCommandsDir(cwd = process.cwd()) {
|
|
148
|
+
return join(getCopilotInstructionsDir(cwd), "commands");
|
|
149
|
+
}
|
|
150
|
+
function getCopilotRulesDir(cwd = process.cwd()) {
|
|
151
|
+
return join(getCopilotInstructionsDir(cwd), "rules");
|
|
152
|
+
}
|
|
153
|
+
function getCopilotSkillsDir(cwd = process.cwd()) {
|
|
154
|
+
return join(getCopilotInstructionsDir(cwd), "skills");
|
|
155
|
+
}
|
|
156
|
+
function deleteFile(path) {
|
|
157
|
+
if (fileExists(path)) {
|
|
158
|
+
rmSync(path);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
138
161
|
|
|
139
162
|
// src/utils/constants.ts
|
|
140
163
|
var REPO_URL = "github:duongductrong/cursor-kit";
|
|
@@ -168,6 +191,7 @@ export {
|
|
|
168
191
|
TEMPLATE_PATHS,
|
|
169
192
|
bold,
|
|
170
193
|
copyDir,
|
|
194
|
+
deleteFile,
|
|
171
195
|
dim,
|
|
172
196
|
dirExists,
|
|
173
197
|
ensureDir,
|
|
@@ -175,7 +199,13 @@ export {
|
|
|
175
199
|
getCommandsDir,
|
|
176
200
|
getConflictingDirs,
|
|
177
201
|
getConflictingFiles,
|
|
202
|
+
getCopilotCommandsDir,
|
|
203
|
+
getCopilotInstructionsDir,
|
|
204
|
+
getCopilotInstructionsPath,
|
|
205
|
+
getCopilotRulesDir,
|
|
206
|
+
getCopilotSkillsDir,
|
|
178
207
|
getCursorDir,
|
|
208
|
+
getGitHubDir,
|
|
179
209
|
getNonConflictingDirs,
|
|
180
210
|
getNonConflictingFiles,
|
|
181
211
|
getPackageJson,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/branding.ts","../src/utils/fs.ts","../src/utils/constants.ts"],"sourcesContent":["import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function copyDir(src: string, dest: string): void {\n cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function listDirs(dir: string): string[] {\n if (!dirExists(dir)) return [];\n \n return readdirSync(dir).filter((item) => {\n const itemPath = join(dir, item);\n return statSync(itemPath).isDirectory();\n });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return [];\n return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return dirs;\n return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n skills: \"templates/skills\",\n} as const;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/branding.ts","../src/utils/fs.ts","../src/utils/constants.ts"],"sourcesContent":["import figlet from \"figlet\";\nimport gradient from \"gradient-string\";\nimport pc from \"picocolors\";\n\nconst cursorGradient = gradient([\"#00DC82\", \"#36E4DA\", \"#0047E1\"]);\n\nexport function printBanner(): void {\n const banner = figlet.textSync(\"Cursor Kit\", {\n font: \"ANSI Shadow\",\n horizontalLayout: \"fitted\",\n });\n\n console.log(cursorGradient.multiline(banner));\n console.log();\n console.log(\n pc.dim(\" \") +\n pc.bold(pc.cyan(\"✦\")) +\n pc.dim(\" Supercharge your Cursor IDE with rules & commands\")\n );\n console.log();\n}\n\nexport function printSuccess(message: string): void {\n console.log(pc.green(\"✓\") + pc.dim(\" \") + message);\n}\n\nexport function printError(message: string): void {\n console.log(pc.red(\"✗\") + pc.dim(\" \") + message);\n}\n\nexport function printInfo(message: string): void {\n console.log(pc.cyan(\"ℹ\") + pc.dim(\" \") + message);\n}\n\nexport function printWarning(message: string): void {\n console.log(pc.yellow(\"⚠\") + pc.dim(\" \") + message);\n}\n\nexport function printDivider(): void {\n console.log(pc.dim(\"─\".repeat(50)));\n}\n\nexport function printVersion(version: string): void {\n console.log(\n pc.dim(\" \") + cursorGradient(`v${version}`) + pc.dim(\" • Made with ♥\")\n );\n console.log();\n}\n\nexport function highlight(text: string): string {\n return pc.cyan(text);\n}\n\nexport function dim(text: string): string {\n return pc.dim(text);\n}\n\nexport function bold(text: string): string {\n return pc.bold(text);\n}\n\nexport function gradientText(text: string): string {\n return cursorGradient(text);\n}\n\n","import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, statSync, cpSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\n\nexport function ensureDir(path: string): void {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n}\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function dirExists(path: string): boolean {\n return existsSync(path) && statSync(path).isDirectory();\n}\n\nexport function readFile(path: string): string {\n return readFileSync(path, \"utf-8\");\n}\n\nexport function writeFile(path: string, content: string): void {\n ensureDir(dirname(path));\n writeFileSync(path, content, \"utf-8\");\n}\n\nexport function removeFile(path: string): void {\n if (existsSync(path)) {\n rmSync(path, { recursive: true });\n }\n}\n\nexport function copyDir(src: string, dest: string): void {\n cpSync(src, dest, { recursive: true });\n}\n\nexport function listFiles(dir: string, extension?: string): string[] {\n if (!dirExists(dir)) return [];\n \n const files = readdirSync(dir);\n if (extension) {\n return files.filter((f) => f.endsWith(extension));\n }\n return files;\n}\n\nexport function listDirs(dir: string): string[] {\n if (!dirExists(dir)) return [];\n \n return readdirSync(dir).filter((item) => {\n const itemPath = join(dir, item);\n return statSync(itemPath).isDirectory();\n });\n}\n\nexport function getCursorDir(cwd: string = process.cwd()): string {\n return join(cwd, \".cursor\");\n}\n\nexport function getCommandsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"commands\");\n}\n\nexport function getRulesDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"rules\");\n}\n\nexport function getSkillsDir(cwd: string = process.cwd()): string {\n return join(getCursorDir(cwd), \"skills\");\n}\n\nexport function resolveFromCwd(...paths: string[]): string {\n return resolve(process.cwd(), ...paths);\n}\n\nexport function getPackageJson(cwd: string = process.cwd()): Record<string, unknown> | null {\n const pkgPath = join(cwd, \"package.json\");\n if (!fileExists(pkgPath)) return null;\n \n try {\n return JSON.parse(readFile(pkgPath));\n } catch {\n return null;\n }\n}\n\nexport function getConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return [];\n return files.filter((file) => fileExists(join(dir, file)));\n}\n\nexport function getConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return [];\n return dirs.filter((d) => dirExists(join(dir, d)));\n}\n\nexport function getNonConflictingFiles(dir: string, files: string[]): string[] {\n if (!dirExists(dir)) return files;\n return files.filter((file) => !fileExists(join(dir, file)));\n}\n\nexport function getNonConflictingDirs(dir: string, dirs: string[]): string[] {\n if (!dirExists(dir)) return dirs;\n return dirs.filter((d) => !dirExists(join(dir, d)));\n}\n\nexport function getGitHubDir(cwd: string = process.cwd()): string {\n return join(cwd, \".github\");\n}\n\nexport function getCopilotInstructionsPath(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions.md\");\n}\n\nexport function getCopilotInstructionsDir(cwd: string = process.cwd()): string {\n return join(getGitHubDir(cwd), \"copilot-instructions\");\n}\n\nexport function getCopilotCommandsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"commands\");\n}\n\nexport function getCopilotRulesDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"rules\");\n}\n\nexport function getCopilotSkillsDir(cwd: string = process.cwd()): string {\n return join(getCopilotInstructionsDir(cwd), \"skills\");\n}\n\nexport function deleteFile(path: string): void {\n if (fileExists(path)) {\n rmSync(path);\n }\n}\n","export const REPO_URL = \"github:duongductrong/cursor-kit\";\nexport const REPO_REF = \"master\";\nexport const REPO_RAW_URL = \"https://raw.githubusercontent.com/duongductrong/cursor-kit/master\";\n\nexport const CURSOR_DIR = \".cursor\";\nexport const COMMANDS_DIR = \"commands\";\nexport const RULES_DIR = \"rules\";\nexport const SKILLS_DIR = \"skills\";\n\nexport const COMMAND_EXTENSION = \".md\";\nexport const RULE_EXTENSION = \".mdc\";\nexport const SKILL_EXTENSION = \".mdc\";\n\nexport const CONFIG_FILE = \".cursorkit\";\n\nexport const TEMPLATE_PATHS = {\n commands: \"templates/commands\",\n rules: \"templates/rules\",\n skills: \"templates/skills\",\n} as const;\n"],"mappings":"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","names":[]}
|