devcore-ai 1.1.2 → 1.1.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.
@@ -0,0 +1,2 @@
1
+ export declare function runInitCommand(projectNameArg?: string): Promise<void>;
2
+ //# sourceMappingURL=init-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-command.d.ts","sourceRoot":"","sources":["../../src/commands/init-command.ts"],"names":[],"mappings":"AAgDA,wBAAsB,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmK3E"}
@@ -0,0 +1,167 @@
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.runInitCommand = runInitCommand;
7
+ const path_1 = __importDefault(require("path"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const inquirer_1 = __importDefault(require("inquirer"));
10
+ const init_1 = require("../init");
11
+ const ROCKET = "\u{1F680}";
12
+ const CHECK = "\u2714";
13
+ const FRAMEWORK_CHOICES = [
14
+ { name: "React", value: "react" },
15
+ { name: "Next.js", value: "nextjs" },
16
+ { name: "Express", value: "express" },
17
+ { name: "Node CLI", value: "node-cli" },
18
+ { name: "Discord Bot", value: "discord-bot" },
19
+ { name: "FastAPI", value: "fastapi" },
20
+ { name: "NestJS", value: "nest" },
21
+ ];
22
+ const LANGUAGE_CHOICES = [
23
+ { name: "TypeScript", value: "typescript" },
24
+ { name: "JavaScript", value: "javascript" },
25
+ ];
26
+ const PM_CHOICES = [
27
+ { name: "npm", value: "npm" },
28
+ { name: "pnpm", value: "pnpm" },
29
+ { name: "yarn", value: "yarn" },
30
+ ];
31
+ async function runInitCommand(projectNameArg) {
32
+ console.log("");
33
+ console.log(chalk_1.default.cyan.bold(` ${ROCKET} DevCore Project Generator`));
34
+ console.log("");
35
+ const prompts = [];
36
+ if (!projectNameArg) {
37
+ prompts.push({
38
+ type: "input",
39
+ name: "projectName",
40
+ message: "Project name:",
41
+ default: "my-project",
42
+ validate: (v) => v.trim().length > 0 ? true : "Project name cannot be empty",
43
+ });
44
+ }
45
+ prompts.push({
46
+ type: "list",
47
+ name: "framework",
48
+ message: "Select framework:",
49
+ choices: FRAMEWORK_CHOICES,
50
+ }, {
51
+ type: "list",
52
+ name: "language",
53
+ message: "Language:",
54
+ choices: LANGUAGE_CHOICES,
55
+ }, {
56
+ type: "list",
57
+ name: "packageManager",
58
+ message: "Package manager:",
59
+ choices: PM_CHOICES,
60
+ }, {
61
+ type: "confirm",
62
+ name: "git",
63
+ message: "Initialize git repository?",
64
+ default: true,
65
+ }, {
66
+ type: "confirm",
67
+ name: "installDeps",
68
+ message: "Install dependencies?",
69
+ default: true,
70
+ }, {
71
+ type: "confirm",
72
+ name: "openVsCode",
73
+ message: "Open VS Code after creation?",
74
+ default: true,
75
+ });
76
+ const answers = await inquirer_1.default.prompt(prompts);
77
+ const options = {
78
+ projectName: projectNameArg || answers.projectName,
79
+ framework: answers.framework,
80
+ language: answers.language,
81
+ packageManager: answers.packageManager,
82
+ git: answers.git,
83
+ installDeps: answers.installDeps,
84
+ openVsCode: answers.openVsCode,
85
+ };
86
+ const targetDir = path_1.default.resolve(process.cwd(), options.projectName);
87
+ if (await (0, init_1.targetExists)(targetDir)) {
88
+ if (!(await (0, init_1.isDirEmpty)(targetDir))) {
89
+ const { overwrite } = await inquirer_1.default.prompt([
90
+ {
91
+ type: "confirm",
92
+ name: "overwrite",
93
+ message: `${chalk_1.default.yellow("Folder already exists.")} Overwrite?`,
94
+ default: false,
95
+ },
96
+ ]);
97
+ if (!overwrite) {
98
+ console.log(chalk_1.default.dim("\n Aborted.\n"));
99
+ return;
100
+ }
101
+ await (0, init_1.cleanDir)(targetDir);
102
+ }
103
+ }
104
+ console.log("");
105
+ const template = (0, init_1.getTemplate)(options);
106
+ const readme = (0, init_1.generateReadme)(options);
107
+ const gitignore = (0, init_1.generateGitignore)(options.framework);
108
+ template.files.push({ path: "README.md", content: readme }, { path: ".gitignore", content: gitignore });
109
+ try {
110
+ await (0, init_1.createProject)(template, targetDir);
111
+ }
112
+ catch (err) {
113
+ (0, init_1.failStep)("Project creation", err.message || "Failed to create project");
114
+ console.log("");
115
+ return;
116
+ }
117
+ if (options.installDeps) {
118
+ console.log("");
119
+ (0, init_1.completeStep)("Installing dependencies (may take a moment)");
120
+ const result = await (0, init_1.installDependencies)(targetDir, options.packageManager);
121
+ if (!result.success) {
122
+ (0, init_1.failStep)("Install dependencies", result.error || "Failed");
123
+ console.log(chalk_1.default.dim(" You can install manually later.\n"));
124
+ }
125
+ else {
126
+ (0, init_1.completeStep)("Dependencies installed");
127
+ }
128
+ }
129
+ if (options.git) {
130
+ const ok = await (0, init_1.initGit)(targetDir);
131
+ if (ok) {
132
+ (0, init_1.completeStep)("Git repository initialized");
133
+ }
134
+ else {
135
+ (0, init_1.failStep)("Git init", "git not available");
136
+ }
137
+ }
138
+ console.log("");
139
+ console.log(chalk_1.default.green.bold(` ${CHECK} Project created successfully!`));
140
+ console.log("");
141
+ console.log(chalk_1.default.bold(" Location:"));
142
+ console.log(` ${chalk_1.default.cyan(targetDir)}`);
143
+ console.log("");
144
+ console.log(chalk_1.default.bold(" Next commands:"));
145
+ console.log("");
146
+ console.log(chalk_1.default.dim(" cd ") + chalk_1.default.cyan(options.projectName));
147
+ if (options.installDeps) {
148
+ console.log(chalk_1.default.dim(" # dependencies already installed"));
149
+ }
150
+ else {
151
+ const pm = options.packageManager;
152
+ console.log(` ${chalk_1.default.dim(pm + " install")}`);
153
+ }
154
+ const devScript = options.framework === "fastapi"
155
+ ? "uvicorn main:app --reload"
156
+ : options.packageManager === "yarn"
157
+ ? "yarn dev"
158
+ : options.packageManager === "pnpm"
159
+ ? "pnpm run dev"
160
+ : "npm run dev";
161
+ console.log(` ${chalk_1.default.dim(devScript)}`);
162
+ console.log("");
163
+ if (options.openVsCode) {
164
+ await (0, init_1.openInVSCode)(targetDir);
165
+ }
166
+ }
167
+ //# sourceMappingURL=init-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-command.js","sourceRoot":"","sources":["../../src/commands/init-command.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -71,5 +71,13 @@ program
71
71
  const { terminalCommand } = await import("./commands/terminal-cmd.js");
72
72
  console.log(await terminalCommand(cmd));
73
73
  });
74
+ program
75
+ .command("init")
76
+ .description("Create a new project from a template")
77
+ .argument("[name]", "Project name")
78
+ .action(async (name) => {
79
+ const { runInitCommand } = await import("./commands/init-command.js");
80
+ await runInitCommand(name);
81
+ });
74
82
  program.parse(process.argv);
75
83
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ProjectFramework } from "../types";
2
+ export declare function generateGitignore(framework: ProjectFramework): string;
3
+ //# sourceMappingURL=gitignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/init/gitignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA0E5C,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAGrE"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateGitignore = generateGitignore;
4
+ const COMMON = `# Dependencies
5
+ node_modules/
6
+ .pnp
7
+ .pnp.js
8
+
9
+ # Environment
10
+ .env
11
+ .env.local
12
+ .env.*.local
13
+
14
+ # IDE
15
+ .idea/
16
+ .vscode/
17
+ *.swp
18
+ *.swo
19
+ *~
20
+
21
+ # OS
22
+ .DS_Store
23
+ Thumbs.db
24
+
25
+ # Debug
26
+ npm-debug.log*
27
+ yarn-debug.log*
28
+ yarn-error.log*
29
+ `;
30
+ const BY_FRAMEWORK = {
31
+ react: `# Build
32
+ dist/
33
+ build/
34
+ *.tsbuildinfo
35
+ `,
36
+ nextjs: `# Next.js
37
+ .next/
38
+ out/
39
+ dist/
40
+ `,
41
+ express: `# Build
42
+ dist/
43
+ `,
44
+ "node-cli": `# Build
45
+ dist/
46
+ `,
47
+ "discord-bot": `# Build
48
+ dist/
49
+ `,
50
+ fastapi: `# Python
51
+ __pycache__/
52
+ *.py[cod]
53
+ *$py.class
54
+ *.egg-info/
55
+ dist/
56
+ build/
57
+ *.egg
58
+ .venv/
59
+ venv/
60
+ ENV/
61
+
62
+ # Testing
63
+ .pytest_cache/
64
+ htmlcov/
65
+ .coverage
66
+ `,
67
+ nest: `# Build
68
+ dist/
69
+
70
+ # Coverage
71
+ coverage/
72
+ `,
73
+ };
74
+ function generateGitignore(framework) {
75
+ const specific = BY_FRAMEWORK[framework] || "";
76
+ return COMMON + "\n" + specific;
77
+ }
78
+ //# sourceMappingURL=gitignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/init/gitignore.ts"],"names":[],"mappings":";;;AAEA,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE;;;;CAIR;IACC,MAAM,EAAE;;;;CAIT;IACC,OAAO,EAAE;;CAEV;IACC,UAAU,EAAE;;CAEb;IACC,aAAa,EAAE;;CAEhB;IACC,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBV;IACC,IAAI,EAAE;;;;;CAKP;CACA,CAAC;AAEF,2BAAkC,SAA2B;IAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;AAClC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { getTemplate } from "./templates";
2
+ export { createProject, targetExists, isDirEmpty, cleanDir, } from "./project-generator";
3
+ export { installDependencies, initGit, openInVSCode, } from "./installer";
4
+ export { generateReadme } from "./readme";
5
+ export { generateGitignore } from "./gitignore";
6
+ export { renderBar, printStep, completeStep, failStep, printLine, } from "./progress";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,OAAO,EACP,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,MAAM,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printLine = exports.failStep = exports.completeStep = exports.printStep = exports.renderBar = exports.generateGitignore = exports.generateReadme = exports.openInVSCode = exports.initGit = exports.installDependencies = exports.cleanDir = exports.isDirEmpty = exports.targetExists = exports.createProject = exports.getTemplate = void 0;
4
+ var templates_1 = require("./templates");
5
+ Object.defineProperty(exports, "getTemplate", { enumerable: true, get: function () { return templates_1.getTemplate; } });
6
+ var project_generator_1 = require("./project-generator");
7
+ Object.defineProperty(exports, "createProject", { enumerable: true, get: function () { return project_generator_1.createProject; } });
8
+ Object.defineProperty(exports, "targetExists", { enumerable: true, get: function () { return project_generator_1.targetExists; } });
9
+ Object.defineProperty(exports, "isDirEmpty", { enumerable: true, get: function () { return project_generator_1.isDirEmpty; } });
10
+ Object.defineProperty(exports, "cleanDir", { enumerable: true, get: function () { return project_generator_1.cleanDir; } });
11
+ var installer_1 = require("./installer");
12
+ Object.defineProperty(exports, "installDependencies", { enumerable: true, get: function () { return installer_1.installDependencies; } });
13
+ Object.defineProperty(exports, "initGit", { enumerable: true, get: function () { return installer_1.initGit; } });
14
+ Object.defineProperty(exports, "openInVSCode", { enumerable: true, get: function () { return installer_1.openInVSCode; } });
15
+ var readme_1 = require("./readme");
16
+ Object.defineProperty(exports, "generateReadme", { enumerable: true, get: function () { return readme_1.generateReadme; } });
17
+ var gitignore_1 = require("./gitignore");
18
+ Object.defineProperty(exports, "generateGitignore", { enumerable: true, get: function () { return gitignore_1.generateGitignore; } });
19
+ var progress_1 = require("./progress");
20
+ Object.defineProperty(exports, "renderBar", { enumerable: true, get: function () { return progress_1.renderBar; } });
21
+ Object.defineProperty(exports, "printStep", { enumerable: true, get: function () { return progress_1.printStep; } });
22
+ Object.defineProperty(exports, "completeStep", { enumerable: true, get: function () { return progress_1.completeStep; } });
23
+ Object.defineProperty(exports, "failStep", { enumerable: true, get: function () { return progress_1.failStep; } });
24
+ Object.defineProperty(exports, "printLine", { enumerable: true, get: function () { return progress_1.printLine; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/init/index.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAAjC,wGAAA,WAAW,OAAA;AACpB,yDAK6B;AAJ3B,kHAAA,aAAa,OAAA;AACb,iHAAA,YAAY,OAAA;AACZ,+GAAA,UAAU,OAAA;AACV,6GAAA,QAAQ,OAAA;AAEV,yCAIqB;AAHnB,gHAAA,mBAAmB,OAAA;AACnB,oGAAA,OAAO,OAAA;AACP,yGAAA,YAAY,OAAA;AAEd,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAC1B,uCAMoB;AALlB,qGAAA,SAAS,OAAA;AACT,qGAAA,SAAS,OAAA;AACT,wGAAA,YAAY,OAAA;AACZ,oGAAA,QAAQ,OAAA;AACR,qGAAA,SAAS,OAAA"}
@@ -0,0 +1,9 @@
1
+ import { PackageManager } from "../types";
2
+ export interface InstallResult {
3
+ success: boolean;
4
+ error?: string;
5
+ }
6
+ export declare function installDependencies(projectPath: string, packageManager: PackageManager): Promise<InstallResult>;
7
+ export declare function initGit(projectPath: string): Promise<boolean>;
8
+ export declare function openInVSCode(projectPath: string): Promise<void>;
9
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/init/installer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAED,wBAAsB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnE;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrE"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installDependencies = installDependencies;
4
+ exports.initGit = initGit;
5
+ exports.openInVSCode = openInVSCode;
6
+ const execa = require("execa");
7
+ async function installDependencies(projectPath, packageManager) {
8
+ const cmds = {
9
+ npm: { cmd: "npm", args: ["install"] },
10
+ pnpm: { cmd: "pnpm", args: ["install"] },
11
+ yarn: { cmd: "yarn", args: ["install"] },
12
+ };
13
+ const { cmd, args } = cmds[packageManager];
14
+ try {
15
+ await execa(cmd, args, {
16
+ cwd: projectPath,
17
+ shell: true,
18
+ env: { ...process.env, FORCE_COLOR: "0" },
19
+ stdio: "pipe",
20
+ });
21
+ return { success: true };
22
+ }
23
+ catch (err) {
24
+ return {
25
+ success: false,
26
+ error: err.stderr || err.stdout || err.message || "Installation failed",
27
+ };
28
+ }
29
+ }
30
+ async function initGit(projectPath) {
31
+ try {
32
+ await execa("git", ["init"], {
33
+ cwd: projectPath,
34
+ shell: true,
35
+ env: { ...process.env, FORCE_COLOR: "0" },
36
+ stdio: "pipe",
37
+ });
38
+ return true;
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ async function openInVSCode(projectPath) {
45
+ try {
46
+ const child = execa("code", ["."], {
47
+ cwd: projectPath,
48
+ shell: true,
49
+ detached: true,
50
+ stdio: "ignore",
51
+ });
52
+ child.unref();
53
+ }
54
+ catch {
55
+ // VS Code CLI not available — silently skip
56
+ }
57
+ }
58
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/init/installer.ts"],"names":[],"mappings":";;;;;AAAA,MAAO,KAAK,oBAAoB;AAQzB,KAAK,8BACV,WAAmB,EACnB,cAA8B;IAE9B,MAAM,IAAI,GAA4D;QACpE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;QACtC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;QACxC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;KACzC,CAAC;IAEF,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YACrB,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;YACzC,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,qBAAqB;SACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAEM,KAAK,kBAAkB,WAAmB;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;YAC3B,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;YACzC,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,KAAK,uBAAuB,WAAmB;IACpD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;YACjC,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function renderBar(percent: number, width?: number): string;
2
+ export declare function printStep(label: string, percent: number): void;
3
+ export declare function completeStep(label: string): void;
4
+ export declare function failStep(label: string, msg: string): void;
5
+ export declare function printLine(msg: string): void;
6
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/init/progress.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CASrE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAG9D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIzD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C"}
@@ -0,0 +1,35 @@
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.renderBar = renderBar;
7
+ exports.printStep = printStep;
8
+ exports.completeStep = completeStep;
9
+ exports.failStep = failStep;
10
+ exports.printLine = printLine;
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const FULL = "█";
13
+ const EMPTY = "░";
14
+ function renderBar(percent, width = 20) {
15
+ const filled = Math.round((percent / 100) * width);
16
+ const empty = width - filled;
17
+ return (chalk_1.default.cyan(FULL.repeat(filled)) +
18
+ chalk_1.default.dim(EMPTY.repeat(empty)) +
19
+ " " +
20
+ chalk_1.default.cyan(`${percent}%`));
21
+ }
22
+ function printStep(label, percent) {
23
+ const msg = ` ${chalk_1.default.dim(label + "...")} ${renderBar(percent)}`;
24
+ process.stdout.write("\r" + msg + " ");
25
+ }
26
+ function completeStep(label) {
27
+ process.stdout.write(`\r ${chalk_1.default.green("✔")} ${chalk_1.default.bold(label)} ${chalk_1.default.green("Done!")} \n`);
28
+ }
29
+ function failStep(label, msg) {
30
+ process.stdout.write(`\r ${chalk_1.default.red("✗")} ${chalk_1.default.bold(label)} ${chalk_1.default.red(msg)} \n`);
31
+ }
32
+ function printLine(msg) {
33
+ console.log(msg);
34
+ }
35
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/init/progress.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,kDAA0B;AAE1B,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB,MAAM,KAAK,GAAG,GAAG,CAAC;AAElB,mBAA0B,OAAe,EAAE,KAAK,GAAW,EAAE;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7B,OAAO,CACL,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,GAAG;QACH,eAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED,mBAA0B,KAAa,EAAE,OAAe;IACtD,MAAM,GAAG,GAAG,KAAK,eAAK,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,sBAA6B,KAAa;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CACpF,CAAC;AACJ,CAAC;AAED,kBAAyB,KAAa,EAAE,GAAW;IACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAC5E,CAAC;AACJ,CAAC;AAED,mBAA0B,GAAW;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ProjectTemplate } from "../types";
2
+ export declare function createProject(template: ProjectTemplate, targetDir: string): Promise<void>;
3
+ export declare function targetExists(dirPath: string): Promise<boolean>;
4
+ export declare function isDirEmpty(dirPath: string): Promise<boolean>;
5
+ export declare function cleanDir(dirPath: string): Promise<void>;
6
+ //# sourceMappingURL=project-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/init/project-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAsB,aAAa,CACjC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D"}
@@ -0,0 +1,55 @@
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.createProject = createProject;
7
+ exports.targetExists = targetExists;
8
+ exports.isDirEmpty = isDirEmpty;
9
+ exports.cleanDir = cleanDir;
10
+ const promises_1 = __importDefault(require("fs/promises"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const progress_1 = require("./progress");
13
+ async function createProject(template, targetDir) {
14
+ const totalSteps = template.directories.length + template.files.length;
15
+ let current = 0;
16
+ (0, progress_1.printStep)("Creating project structure", 0);
17
+ for (const dir of template.directories) {
18
+ await promises_1.default.mkdir(path_1.default.join(targetDir, dir), { recursive: true });
19
+ current++;
20
+ (0, progress_1.printStep)("Creating project structure", Math.round((current / totalSteps) * 100));
21
+ }
22
+ (0, progress_1.completeStep)("Project structure created");
23
+ (0, progress_1.printStep)("Writing files", 0);
24
+ for (const file of template.files) {
25
+ const filePath = path_1.default.join(targetDir, file.path);
26
+ await promises_1.default.mkdir(path_1.default.dirname(filePath), { recursive: true });
27
+ await promises_1.default.writeFile(filePath, file.content, "utf-8");
28
+ current++;
29
+ (0, progress_1.printStep)("Writing files", Math.round((current / totalSteps) * 100));
30
+ }
31
+ (0, progress_1.completeStep)("Files written");
32
+ }
33
+ async function targetExists(dirPath) {
34
+ try {
35
+ const stat = await promises_1.default.stat(dirPath);
36
+ return stat.isDirectory() || stat.isFile();
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ }
42
+ async function isDirEmpty(dirPath) {
43
+ try {
44
+ const entries = await promises_1.default.readdir(dirPath);
45
+ return entries.length === 0;
46
+ }
47
+ catch {
48
+ return true;
49
+ }
50
+ }
51
+ async function cleanDir(dirPath) {
52
+ await promises_1.default.rm(dirPath, { recursive: true, force: true });
53
+ await promises_1.default.mkdir(dirPath, { recursive: true });
54
+ }
55
+ //# sourceMappingURL=project-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-generator.js","sourceRoot":"","sources":["../../src/init/project-generator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2DAA6B;AAC7B,gDAAwB;AAExB,yCAAqD;AAE9C,KAAK,wBACV,QAAyB,EACzB,SAAiB;IAEjB,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACvE,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAA,oBAAS,EAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,EAAE,CAAC;QACV,IAAA,oBAAS,EAAC,4BAA4B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,IAAA,uBAAY,EAAC,2BAA2B,CAAC,CAAC;IAE1C,IAAA,oBAAS,EAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,EAAE,CAAC;QACV,IAAA,oBAAS,EAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,IAAA,uBAAY,EAAC,eAAe,CAAC,CAAC;AAChC,CAAC;AAEM,KAAK,uBAAuB,OAAe;IAChD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,KAAK,qBAAqB,OAAe;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,mBAAmB,OAAe;IAC5C,MAAM,kBAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,kBAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { InitOptions } from "../types";
2
+ export declare function generateReadme(options: InitOptions): string;
3
+ //# sourceMappingURL=readme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readme.d.ts","sourceRoot":"","sources":["../../src/init/readme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAsBvC,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA4C3D"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateReadme = generateReadme;
4
+ const FRAMEWORK_NAMES = {
5
+ react: "React",
6
+ nextjs: "Next.js",
7
+ express: "Express",
8
+ "node-cli": "Node CLI",
9
+ "discord-bot": "Discord Bot",
10
+ fastapi: "FastAPI",
11
+ nest: "NestJS",
12
+ };
13
+ const STRUCTURE = {
14
+ react: `├── src/\n│ ├── components/\n│ ├── pages/\n│ ├── hooks/\n│ └── assets/\n├── public/\n├── index.html\n├── package.json\n├── vite.config.{ts|js}\n└── tsconfig.json`,
15
+ nextjs: `├── app/\n│ ├── layout.{tsx|jsx}\n│ ├── page.{tsx|jsx}\n│ └── globals.css\n├── public/\n├── package.json\n├── next.config.js\n└── tsconfig.json`,
16
+ express: `├── src/\n│ ├── index.{ts|js}\n│ ├── routes/\n│ ├── controllers/\n│ ├── middlewares/\n│ └── utils/\n├── .env\n├── package.json\n└── tsconfig.json`,
17
+ "node-cli": `├── src/\n│ ├── index.{ts|js}\n│ ├── commands/\n│ └── utils/\n├── package.json\n└── tsconfig.json`,
18
+ "discord-bot": `├── src/\n│ ├── index.{ts|js}\n│ ├── commands/\n│ └── events/\n├── .env\n├── package.json\n└── tsconfig.json`,
19
+ fastapi: `├── app/\n│ ├── __init__.py\n│ ├── routers/\n│ └── models/\n├── main.py\n├── requirements.txt\n└── README.md`,
20
+ nest: `├── src/\n│ ├── main.ts\n│ ├── app.module.ts\n│ ├── app.controller.ts\n│ └── app.service.ts\n├── package.json\n├── tsconfig.json\n├── tsconfig.build.json\n└── nest-cli.json`,
21
+ };
22
+ function generateReadme(options) {
23
+ const name = FRAMEWORK_NAMES[options.framework] || options.framework;
24
+ const lang = options.language === "typescript" ? "TypeScript" : "JavaScript";
25
+ const structure = STRUCTURE[options.framework] || "";
26
+ let md = `# ${options.projectName}\n\n`;
27
+ md += `> Created with [DevCore AI](https://devcore.ai) — ${name} + ${lang}\n\n`;
28
+ md += `---\n\n`;
29
+ md += `## Getting Started\n\n`;
30
+ if (options.framework === "fastapi") {
31
+ md += `### Prerequisites\n\n`;
32
+ md += `- Python 3.8+\n\n`;
33
+ md += `### Installation\n\n`;
34
+ md += "```bash\npip install -r requirements.txt\n```\n\n";
35
+ md += `### Development\n\n`;
36
+ md += "```bash\nuvicorn main:app --reload\n```\n\n";
37
+ md += `### Production\n\n`;
38
+ md += "```bash\nuvicorn main:app --host 0.0.0.0 --port 8000\n```\n\n";
39
+ }
40
+ else {
41
+ md += `### Prerequisites\n\n`;
42
+ md += `- Node.js 16+\n`;
43
+ md += `- ${options.packageManager}\n\n`;
44
+ md += `### Installation\n\n`;
45
+ md += "```bash\nnpm install\n```\n\n";
46
+ md += `### Development\n\n`;
47
+ const devCmd = options.framework === "express" && options.language === "javascript"
48
+ ? "npm run dev" : "npm run dev";
49
+ md += "```bash\n" + devCmd + "\n```\n\n";
50
+ md += `### Build\n\n`;
51
+ md += "```bash\nnpm run build\n```\n\n";
52
+ }
53
+ md += `## Project Structure\n\n`;
54
+ md += "```\n";
55
+ md += `${options.projectName}/\n`;
56
+ md += structure + "\n";
57
+ md += "```\n\n";
58
+ md += `## License\n\nMIT\n`;
59
+ return md;
60
+ }
61
+ //# sourceMappingURL=readme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readme.js","sourceRoot":"","sources":["../../src/init/readme.ts"],"names":[],"mappings":";;;AAEA,MAAM,eAAe,GAA2B;IAC9C,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,aAAa;IAC5B,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,MAAM,SAAS,GAA2B;IACxC,KAAK,EAAE,2KAA2K;IAClL,MAAM,EAAE,uJAAuJ;IAC/J,OAAO,EAAE,6JAA6J;IACtK,UAAU,EAAE,yGAAyG;IACrH,aAAa,EAAE,oHAAoH;IACnI,OAAO,EAAE,oHAAoH;IAC7H,IAAI,EAAE,sLAAsL;CAC7L,CAAC;AAEF,wBAA+B,OAAoB;IACjD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAC7E,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAErD,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,WAAW,MAAM,CAAC;IACxC,EAAE,IAAI,qDAAqD,IAAI,MAAM,IAAI,MAAM,CAAC;IAChF,EAAE,IAAI,SAAS,CAAC;IAChB,EAAE,IAAI,wBAAwB,CAAC;IAE/B,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,EAAE,IAAI,uBAAuB,CAAC;QAC9B,EAAE,IAAI,mBAAmB,CAAC;QAC1B,EAAE,IAAI,sBAAsB,CAAC;QAC7B,EAAE,IAAI,mDAAmD,CAAC;QAC1D,EAAE,IAAI,qBAAqB,CAAC;QAC5B,EAAE,IAAI,6CAA6C,CAAC;QACpD,EAAE,IAAI,oBAAoB,CAAC;QAC3B,EAAE,IAAI,+DAA+D,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,EAAE,IAAI,uBAAuB,CAAC;QAC9B,EAAE,IAAI,iBAAiB,CAAC;QACxB,EAAE,IAAI,KAAK,OAAO,CAAC,cAAc,MAAM,CAAC;QACxC,EAAE,IAAI,sBAAsB,CAAC;QAC7B,EAAE,IAAI,+BAA+B,CAAC;QACtC,EAAE,IAAI,qBAAqB,CAAC;QAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY;YACjF,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;QAClC,EAAE,IAAI,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;QAEzC,EAAE,IAAI,eAAe,CAAC;QACtB,EAAE,IAAI,iCAAiC,CAAC;IAC1C,CAAC;IAED,EAAE,IAAI,0BAA0B,CAAC;IACjC,EAAE,IAAI,OAAO,CAAC;IACd,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC;IAClC,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC;IACvB,EAAE,IAAI,SAAS,CAAC;IAEhB,EAAE,IAAI,qBAAqB,CAAC;IAE5B,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { InitOptions, ProjectTemplate } from "../types";
2
+ export declare function getTemplate(options: InitOptions): ProjectTemplate;
3
+ //# sourceMappingURL=templates.d.ts.map