devcore-ai 1.1.1 → 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.
Files changed (43) hide show
  1. package/dist/ai/index.d.ts.map +1 -1
  2. package/dist/ai/index.js +15 -8
  3. package/dist/ai/index.js.map +1 -1
  4. package/dist/commands/index.d.ts.map +1 -1
  5. package/dist/commands/index.js +79 -14
  6. package/dist/commands/index.js.map +1 -1
  7. package/dist/commands/init-command.d.ts +2 -0
  8. package/dist/commands/init-command.d.ts.map +1 -0
  9. package/dist/commands/init-command.js +167 -0
  10. package/dist/commands/init-command.js.map +1 -0
  11. package/dist/index.js +8 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/init/gitignore.d.ts +3 -0
  14. package/dist/init/gitignore.d.ts.map +1 -0
  15. package/dist/init/gitignore.js +78 -0
  16. package/dist/init/gitignore.js.map +1 -0
  17. package/dist/init/index.d.ts +7 -0
  18. package/dist/init/index.d.ts.map +1 -0
  19. package/dist/init/index.js +25 -0
  20. package/dist/init/index.js.map +1 -0
  21. package/dist/init/installer.d.ts +9 -0
  22. package/dist/init/installer.d.ts.map +1 -0
  23. package/dist/init/installer.js +58 -0
  24. package/dist/init/installer.js.map +1 -0
  25. package/dist/init/progress.d.ts +6 -0
  26. package/dist/init/progress.d.ts.map +1 -0
  27. package/dist/init/progress.js +35 -0
  28. package/dist/init/progress.js.map +1 -0
  29. package/dist/init/project-generator.d.ts +6 -0
  30. package/dist/init/project-generator.d.ts.map +1 -0
  31. package/dist/init/project-generator.js +55 -0
  32. package/dist/init/project-generator.js.map +1 -0
  33. package/dist/init/readme.d.ts +3 -0
  34. package/dist/init/readme.d.ts.map +1 -0
  35. package/dist/init/readme.js +61 -0
  36. package/dist/init/readme.js.map +1 -0
  37. package/dist/init/templates.d.ts +3 -0
  38. package/dist/init/templates.d.ts.map +1 -0
  39. package/dist/init/templates.js +924 -0
  40. package/dist/init/templates.js.map +1 -0
  41. package/dist/types.d.ts +24 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +1 -1
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAgB,MAAM,UAAU,CAAC;AAg6BtE,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,eAAe,CAmBjE"}