@darkstar-cli/cli 0.0.0-stage → 0.0.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 (90) hide show
  1. package/dist/commands/forge/db-create.d.ts +2 -0
  2. package/dist/commands/forge/db-create.d.ts.map +1 -0
  3. package/dist/commands/forge/db-create.js +86 -0
  4. package/dist/commands/forge/db-create.js.map +1 -0
  5. package/dist/commands/forge/db-migrate.d.ts +2 -0
  6. package/dist/commands/forge/db-migrate.d.ts.map +1 -0
  7. package/dist/commands/forge/db-migrate.js +168 -0
  8. package/dist/commands/forge/db-migrate.js.map +1 -0
  9. package/dist/commands/forge/db-rollback.d.ts +2 -0
  10. package/dist/commands/forge/db-rollback.d.ts.map +1 -0
  11. package/dist/commands/forge/db-rollback.js +86 -0
  12. package/dist/commands/forge/db-rollback.js.map +1 -0
  13. package/dist/commands/forge/db-seed.d.ts +2 -0
  14. package/dist/commands/forge/db-seed.d.ts.map +1 -0
  15. package/dist/commands/forge/db-seed.js +25 -0
  16. package/dist/commands/forge/db-seed.js.map +1 -0
  17. package/dist/commands/forge/make-api.d.ts +5 -0
  18. package/dist/commands/forge/make-api.d.ts.map +1 -0
  19. package/dist/commands/forge/make-api.js +263 -0
  20. package/dist/commands/forge/make-api.js.map +1 -0
  21. package/dist/commands/forge/make-controller.d.ts +2 -0
  22. package/dist/commands/forge/make-controller.d.ts.map +1 -0
  23. package/dist/commands/forge/make-controller.js +97 -0
  24. package/dist/commands/forge/make-controller.js.map +1 -0
  25. package/dist/commands/forge/make-deps.d.ts +2 -0
  26. package/dist/commands/forge/make-deps.d.ts.map +1 -0
  27. package/dist/commands/forge/make-deps.js +200 -0
  28. package/dist/commands/forge/make-deps.js.map +1 -0
  29. package/dist/commands/forge/make-middleware.d.ts +2 -0
  30. package/dist/commands/forge/make-middleware.d.ts.map +1 -0
  31. package/dist/commands/forge/make-middleware.js +72 -0
  32. package/dist/commands/forge/make-middleware.js.map +1 -0
  33. package/dist/commands/forge/make-migration.d.ts +2 -0
  34. package/dist/commands/forge/make-migration.d.ts.map +1 -0
  35. package/dist/commands/forge/make-migration.js +96 -0
  36. package/dist/commands/forge/make-migration.js.map +1 -0
  37. package/dist/commands/forge/make-model.d.ts +2 -0
  38. package/dist/commands/forge/make-model.d.ts.map +1 -0
  39. package/dist/commands/forge/make-model.js +73 -0
  40. package/dist/commands/forge/make-model.js.map +1 -0
  41. package/dist/commands/forge/make-repository.d.ts +2 -0
  42. package/dist/commands/forge/make-repository.d.ts.map +1 -0
  43. package/dist/commands/forge/make-repository.js +74 -0
  44. package/dist/commands/forge/make-repository.js.map +1 -0
  45. package/dist/commands/forge/make-schema.d.ts +2 -0
  46. package/dist/commands/forge/make-schema.d.ts.map +1 -0
  47. package/dist/commands/forge/make-schema.js +66 -0
  48. package/dist/commands/forge/make-schema.js.map +1 -0
  49. package/dist/commands/forge/make-security.d.ts +2 -0
  50. package/dist/commands/forge/make-security.d.ts.map +1 -0
  51. package/dist/commands/forge/make-security.js +316 -0
  52. package/dist/commands/forge/make-security.js.map +1 -0
  53. package/dist/commands/forge/make-seeder.d.ts +2 -0
  54. package/dist/commands/forge/make-seeder.d.ts.map +1 -0
  55. package/dist/commands/forge/make-seeder.js +176 -0
  56. package/dist/commands/forge/make-seeder.js.map +1 -0
  57. package/dist/commands/forge/make-service.d.ts +2 -0
  58. package/dist/commands/forge/make-service.d.ts.map +1 -0
  59. package/dist/commands/forge/make-service.js +76 -0
  60. package/dist/commands/forge/make-service.js.map +1 -0
  61. package/dist/commands/forge/make-util.d.ts +2 -0
  62. package/dist/commands/forge/make-util.d.ts.map +1 -0
  63. package/dist/commands/forge/make-util.js +83 -0
  64. package/dist/commands/forge/make-util.js.map +1 -0
  65. package/dist/commands/new.d.ts +2 -0
  66. package/dist/commands/new.d.ts.map +1 -0
  67. package/dist/commands/new.js +147 -0
  68. package/dist/commands/new.js.map +1 -0
  69. package/dist/commands/serve.d.ts +2 -0
  70. package/dist/commands/serve.d.ts.map +1 -0
  71. package/dist/commands/serve.js +20 -0
  72. package/dist/commands/serve.js.map +1 -0
  73. package/dist/index.d.ts +3 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +115 -0
  76. package/dist/index.js.map +1 -0
  77. package/package.json +46 -4
  78. package/templates/project/.env.example +90 -0
  79. package/templates/project/darkstar.config.ts +0 -0
  80. package/templates/project/database/seeders/DatabaseSeeder.ts +13 -0
  81. package/templates/project/database/seeders/Seeder.ts +3 -0
  82. package/templates/project/src/controllers/controller.stub +32 -0
  83. package/templates/project/src/core/app.ts +5 -0
  84. package/templates/project/src/models/model.stub +5 -0
  85. package/templates/project/src/repositories/repository.stub +9 -0
  86. package/templates/project/src/services/service.stub +11 -0
  87. package/templates/project/src/utils/omitSecret.stub +0 -0
  88. package/templates/project/src/utils/omitpassword.stub +0 -0
  89. package/templates/project/tsconfig.json +15 -0
  90. package/README.md +0 -3
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.makeUtil = makeUtil;
40
+ const kleur_1 = __importDefault(require("kleur"));
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ function success(msg) { console.log(kleur_1.default.green(' ✔ ') + msg); }
44
+ function error(msg) { console.log(kleur_1.default.red(' ✘ ') + msg); }
45
+ function ensureDir(dirPath) {
46
+ if (!fs.existsSync(dirPath))
47
+ fs.mkdirSync(dirPath, { recursive: true });
48
+ }
49
+ function writeFile(filePath, content) {
50
+ if (fs.existsSync(filePath)) {
51
+ error(`Arquivo já existe: ${filePath}`);
52
+ return;
53
+ }
54
+ ensureDir(path.dirname(filePath));
55
+ fs.writeFileSync(filePath, content, 'utf-8');
56
+ success(`Criado: ${filePath}`);
57
+ }
58
+ function twoFactorStub(name) {
59
+ return `import * as crypto from 'crypto'
60
+
61
+ /**
62
+ * Gera um código TOTP simples de 6 dígitos para ${name}.
63
+ * Em produção, prefira libs como 'otplib' para TOTP compliant com RFC 6238.
64
+ */
65
+ export function generate${name}TwoFactorCode(): string {
66
+ const code = crypto.randomInt(100000, 999999)
67
+ return code.toString()
68
+ }
69
+
70
+ /**
71
+ * Valida se o código informado corresponde ao código esperado para ${name}.
72
+ */
73
+ export function validate${name}TwoFactorCode(inputCode: string, expectedCode: string): boolean {
74
+ return inputCode.trim() === expectedCode.trim()
75
+ }
76
+ `;
77
+ }
78
+ function makeUtil(name) {
79
+ const src = path.resolve(process.cwd(), 'src');
80
+ const lower = name.toLowerCase();
81
+ writeFile(path.join(src, 'utils', lower, 'twoFactor.ts'), twoFactorStub(name));
82
+ }
83
+ //# sourceMappingURL=make-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-util.js","sourceRoot":"","sources":["../../../src/commands/forge/make-util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,MAAY,EAAE,+BAAU;AACxB,MAAY,IAAI,iCAAY;AAE5B,SAAS,OAAO,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACxE,SAAS,KAAK,CAAC,GAAW,IAAM,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AAEtE,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAChF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,OAAO,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO;;;mDAG0C,IAAI;;;0BAG7B,IAAI;;;;;;sEAMwC,IAAI;;0BAEhD,IAAI;;;CAG7B,CAAA;AACD,CAAC;AAED,kBAAyB,IAAY;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAChC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;AAChF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runNew(name: string): Promise<void>;
2
+ //# sourceMappingURL=new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AA0FA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,iBAoCxC"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.runNew = runNew;
40
+ const kleur_1 = __importDefault(require("kleur"));
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const child_process_1 = require("child_process");
44
+ function log(msg) { console.log(msg); }
45
+ function success(msg) { log(kleur_1.default.green(' ✔ ') + msg); }
46
+ function info(msg) { log(kleur_1.default.cyan(' → ') + msg); }
47
+ function error(msg) { log(kleur_1.default.red(' ✘ ') + msg); }
48
+ function copyTemplate(src, dest) {
49
+ if (!fs.existsSync(src)) {
50
+ error(`Template não encontrado em: ${src}`);
51
+ process.exit(1);
52
+ }
53
+ fs.mkdirSync(dest, { recursive: true });
54
+ const entries = fs.readdirSync(src, { withFileTypes: true });
55
+ for (const entry of entries) {
56
+ if (entry.name.endsWith('.stub'))
57
+ continue;
58
+ const srcPath = path.join(src, entry.name);
59
+ const destPath = path.join(dest, entry.name);
60
+ if (entry.isDirectory()) {
61
+ copyTemplate(srcPath, destPath);
62
+ }
63
+ else {
64
+ const destName = entry.name === 'tanis.config.ts' ? 'darkstar.config.ts' : entry.name;
65
+ fs.copyFileSync(srcPath, path.join(dest, destName));
66
+ }
67
+ }
68
+ }
69
+ function configureEnv(projectPath, projectName) {
70
+ const envPath = path.join(projectPath, '.env.example');
71
+ if (!fs.existsSync(envPath))
72
+ return;
73
+ let env = fs.readFileSync(envPath, 'utf-8');
74
+ env = env.replace(/^DB_DATABASE=.*/m, `DB_DATABASE=${projectName}`);
75
+ fs.writeFileSync(envPath, env, 'utf-8');
76
+ fs.copyFileSync(envPath, path.join(projectPath, '.env'));
77
+ }
78
+ function configurePackageJson(projectPath, projectName) {
79
+ const pkgPath = path.join(projectPath, 'package.json');
80
+ const deps = {
81
+ 'darkstar-core': '0.0.1',
82
+ 'darkstar-orm': '0.0.1',
83
+ 'dotenv': 'latest',
84
+ 'express': 'latest',
85
+ 'express-rate-limit': 'latest',
86
+ 'zod': 'latest',
87
+ };
88
+ const pkg = {
89
+ name: projectName,
90
+ version: '0.0.1',
91
+ description: '',
92
+ main: 'dist/core/app.js',
93
+ scripts: {
94
+ dev: 'tsx src/core/app.ts',
95
+ build: 'tsc',
96
+ start: 'node dist/core/app.js',
97
+ },
98
+ dependencies: deps,
99
+ devDependencies: {
100
+ '@types/express': 'latest',
101
+ '@types/express-rate-limit': 'latest',
102
+ '@types/node': 'latest',
103
+ 'tsx': 'latest',
104
+ 'typescript': 'latest',
105
+ },
106
+ };
107
+ fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), 'utf-8');
108
+ }
109
+ function installDeps(projectPath) {
110
+ info('Instalando dependências...');
111
+ try {
112
+ (0, child_process_1.execSync)('npm install --ignore-scripts', { cwd: projectPath, stdio: 'inherit' });
113
+ }
114
+ catch {
115
+ error('Falha ao instalar dependências. Rode npm install manualmente.');
116
+ }
117
+ }
118
+ async function runNew(name) {
119
+ console.log('');
120
+ console.log(kleur_1.default.magenta(' DarkStar — Backend Framework for Node.js'));
121
+ console.log(kleur_1.default.gray(` Criando projeto: ${name}`));
122
+ console.log('');
123
+ const projectPath = path.resolve(process.cwd(), name);
124
+ if (fs.existsSync(projectPath)) {
125
+ error(`A pasta "${name}" já existe.`);
126
+ process.exit(1);
127
+ }
128
+ const templatePath = path.resolve(__dirname, '../templates/project');
129
+ info('Copiando estrutura do projeto...');
130
+ copyTemplate(templatePath, projectPath);
131
+ success('Estrutura criada');
132
+ info('Configurando .env...');
133
+ configureEnv(projectPath, name);
134
+ success('.env configurado');
135
+ info('Configurando package.json...');
136
+ configurePackageJson(projectPath, name);
137
+ success('package.json configurado');
138
+ installDeps(projectPath);
139
+ console.log('');
140
+ success('Projeto criado com sucesso!');
141
+ console.log('');
142
+ console.log(kleur_1.default.gray(' Próximos passos:'));
143
+ console.log(kleur_1.default.cyan(` cd ${name}`));
144
+ console.log(kleur_1.default.cyan(' darkstar serve'));
145
+ console.log('');
146
+ }
147
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runServe(): void;
2
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAMA,wBAAgB,QAAQ,SAOvB"}
@@ -0,0 +1,20 @@
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.runServe = runServe;
7
+ const kleur_1 = __importDefault(require("kleur"));
8
+ const child_process_1 = require("child_process");
9
+ function info(msg) { console.log(kleur_1.default.cyan(' → ') + msg); }
10
+ function error(msg) { console.log(kleur_1.default.red(' ✘ ') + msg); }
11
+ function runServe() {
12
+ info('Iniciando servidor Darkstar...');
13
+ try {
14
+ (0, child_process_1.execSync)('npm run dev', { stdio: 'inherit' });
15
+ }
16
+ catch {
17
+ error('Falha ao subir o servidor.');
18
+ }
19
+ }
20
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,iDAAwC;AAExC,SAAS,IAAI,CAAC,GAAW,IAAK,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AACrE,SAAS,KAAK,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA,CAAC,CAAC;AAEpE;IACE,IAAI,CAAC,gCAAgC,CAAC,CAAA;IACtC,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,4BAA4B,CAAC,CAAA;IACrC,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const new_1 = require("./commands/new");
6
+ const serve_1 = require("./commands/serve");
7
+ const make_controller_1 = require("./commands/forge/make-controller");
8
+ const make_service_1 = require("./commands/forge/make-service");
9
+ const make_repository_1 = require("./commands/forge/make-repository");
10
+ const make_model_1 = require("./commands/forge/make-model");
11
+ const make_api_1 = require("./commands/forge/make-api");
12
+ const make_middleware_1 = require("./commands/forge/make-middleware");
13
+ const make_schema_1 = require("./commands/forge/make-schema");
14
+ const make_util_1 = require("./commands/forge/make-util");
15
+ const make_deps_1 = require("./commands/forge/make-deps");
16
+ const make_security_1 = require("./commands/forge/make-security");
17
+ const db_migrate_1 = require("./commands/forge/db-migrate");
18
+ const db_seed_1 = require("./commands/forge/db-seed");
19
+ const make_migration_1 = require("./commands/forge/make-migration");
20
+ const db_create_1 = require("./commands/forge/db-create");
21
+ const db_rollback_1 = require("./commands/forge/db-rollback");
22
+ const make_seeder_1 = require("./commands/forge/make-seeder");
23
+ // -----------------------------------------------
24
+ // Configuração do programa
25
+ // -----------------------------------------------
26
+ commander_1.program
27
+ .name('darkstar')
28
+ .description('DarkStar — Backend Framework for Node.js')
29
+ .version('1.0.0');
30
+ // -----------------------------------------------
31
+ // darkstar new <name>
32
+ // -----------------------------------------------
33
+ commander_1.program
34
+ .command('new <name>')
35
+ .description('Cria um novo projeto DarkStar')
36
+ .action((name) => (0, new_1.runNew)(name));
37
+ // -----------------------------------------------
38
+ // darkstar serve
39
+ // -----------------------------------------------
40
+ commander_1.program
41
+ .command('serve')
42
+ .description('Sobe o servidor de desenvolvimento')
43
+ .action(() => (0, serve_1.runServe)());
44
+ // -----------------------------------------------
45
+ // darkstar forge
46
+ // -----------------------------------------------
47
+ const forge = commander_1.program
48
+ .command('forge')
49
+ .description('DarkStar Forge — gerador de arquivos e banco de dados');
50
+ forge
51
+ .command('make:controller <name>')
52
+ .description('Cria um Controller')
53
+ .action((name) => (0, make_controller_1.makeController)(name));
54
+ forge
55
+ .command('make:service <name>')
56
+ .description('Cria um Service')
57
+ .action((name) => (0, make_service_1.makeService)(name));
58
+ forge
59
+ .command('make:repository <name>')
60
+ .description('Cria um Repository')
61
+ .action((name) => (0, make_repository_1.makeRepository)(name));
62
+ forge
63
+ .command('make:model <name>')
64
+ .description('Cria um Model')
65
+ .action((name) => (0, make_model_1.makeModel)(name));
66
+ forge
67
+ .command('make:api <name>')
68
+ .description('Gera Controller + Service + Repository + Model + Rotas + Schema + Middleware')
69
+ .action((name) => (0, make_api_1.makeApi)(name));
70
+ forge
71
+ .command('make:middleware <name>')
72
+ .description('Cria um Middleware')
73
+ .action((name) => (0, make_middleware_1.makeMiddleware)(name));
74
+ forge
75
+ .command('make:schema <name>')
76
+ .description('Cria um Schema')
77
+ .action((name) => (0, make_schema_1.makeSchema)(name));
78
+ forge
79
+ .command('make:util <name>')
80
+ .description('Cria utils de omitPassword e twoFactor')
81
+ .action((name) => (0, make_util_1.makeUtil)(name));
82
+ forge
83
+ .command('make:migration <name>')
84
+ .description('Cria uma nova migration')
85
+ .action((name) => (0, make_migration_1.makeMigration)(name));
86
+ forge
87
+ .command('make:seeder <name>')
88
+ .description('Cria um Seeder')
89
+ .action((name) => (0, make_seeder_1.makeSeeder)(name));
90
+ forge
91
+ .command('make:security')
92
+ .description('Gera o RateLimitMiddleware com limiters prontos')
93
+ .action(() => (0, make_security_1.makeSecurity)());
94
+ forge
95
+ .command('make:deps [names...]')
96
+ .description('Instala dependências opcionais no projeto (sem argumentos lista todas)')
97
+ .action((names) => (0, make_deps_1.makeDeps)(names));
98
+ forge
99
+ .command('db:create')
100
+ .description('Cria o banco de dados')
101
+ .action(() => (0, db_create_1.dbCreate)());
102
+ forge
103
+ .command('db:migrate')
104
+ .description('Roda as migrations pendentes')
105
+ .action(() => (0, db_migrate_1.dbMigrate)());
106
+ forge
107
+ .command('db:rollback')
108
+ .description('Desfaz a última migration')
109
+ .action(() => (0, db_rollback_1.dbRollback)());
110
+ forge
111
+ .command('db:seed')
112
+ .description('Popula o banco com seeders')
113
+ .action(() => (0, db_seed_1.dbSeed)());
114
+ commander_1.program.parse(process.argv);
115
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,48 @@
1
1
  {
2
2
  "name": "@darkstar-cli/cli",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.0.3",
4
+ "description": "CLI do framework DarkStar — backend Node.js inspirado no Laravel",
5
+ "license": "MIT",
6
+ "author": "Albertaodasmassa",
7
+ "homepage": "https://darkstarguia.vercel.app",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/SidneiAJr/Darkstar"
11
+ },
12
+ "engines": {
13
+ "node": ">=18.0.0"
14
+ },
15
+ "keywords": [
16
+ "darkstar",
17
+ "cli",
18
+ "framework",
19
+ "nodejs",
20
+ "mvc"
21
+ ],
22
+ "main": "dist/index.js",
23
+ "types": "dist/index.d.ts",
24
+ "bin": {
25
+ "darkstar": "dist/index.js"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "templates"
30
+ ],
31
+ "scripts": {
32
+ "build": "tsc --build"
33
+ },
34
+ "dependencies": {
35
+ "@darkstar-cli/orm": "*",
36
+ "@darkstar-cli/core": "*",
37
+ "commander": "^15.0.0",
38
+ "inquirer": "^14.2.2",
39
+ "kleur": "^4.1.5"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^26.6.4",
43
+ "ts-node": "^10.9.2",
44
+ "typescript": "^7.0.2",
45
+ "@darkstar-cli/orm": "*",
46
+ "@darkstar-cli/core": "*"
47
+ }
48
+ }
@@ -0,0 +1,90 @@
1
+ # -----------------------------------------------
2
+ # TANIS — Environment Configuration
3
+ # -----------------------------------------------
4
+ # Copie este arquivo para .env e preencha os valores
5
+ # cp .env.example .env
6
+ # -----------------------------------------------
7
+
8
+ # App
9
+ APP_NAME=DarkStar
10
+ APP_ENV=local # local | development | staging | production
11
+ APP_DEBUG=true
12
+ APP_URL=http://localhost
13
+ APP_PORT=3000
14
+ APP_KEY= # gerado pelo: tanis artisan key:generate
15
+
16
+ # Locale
17
+ APP_LOCALE=pt_BR
18
+ APP_TIMEZONE=America/Sao_Paulo
19
+
20
+ # -----------------------------------------------
21
+ # Database
22
+ # -----------------------------------------------
23
+ DB_CONNECTION=mysql # sqlite | mysql | postgres
24
+ DB_HOST=127.0.0.1
25
+ DB_PORT=3306 # mysql: 3306 | postgres: 5432
26
+ DB_DATABASE=darkstar
27
+ DB_USERNAME=root # Seu usuario do banco Local
28
+ DB_PASSWORD=root # Sua senha do banco local
29
+
30
+ # -----------------------------------------------
31
+ # Cache
32
+ # -----------------------------------------------
33
+ CACHE_DRIVER=memory # memory | redis
34
+
35
+ # -----------------------------------------------
36
+ # Session
37
+ # -----------------------------------------------
38
+ SESSION_DRIVER=memory # memory | redis | database
39
+ SESSION_LIFETIME=120 # em minutos
40
+ SESSION_SECRET= # gerado pelo: tanis artisan key:generate
41
+
42
+ # -----------------------------------------------
43
+ # Queue
44
+ # -----------------------------------------------
45
+ QUEUE_CONNECTION=sync # sync | redis | database
46
+
47
+ # -----------------------------------------------
48
+ # Redis
49
+ # -----------------------------------------------
50
+ REDIS_HOST=127.0.0.1
51
+ REDIS_PORT=6379
52
+ REDIS_PASSWORD=null
53
+ REDIS_DB=0
54
+
55
+ # -----------------------------------------------
56
+ # Auth / JWT
57
+ # -----------------------------------------------
58
+ JWT_SECRET= # gerado pelo: tanis artisan key:generate
59
+ JWT_EXPIRES_IN= # ex: 60s | 10m | 2h | 7d
60
+ JWT_REFRESH_EXPIRES_IN= # ex: 60s | 10m | 2h | 7d
61
+
62
+ # -----------------------------------------------
63
+ # Mail
64
+ # -----------------------------------------------
65
+ MAIL_DRIVER=log # log | smtp | ses | sendgrid
66
+ MAIL_HOST=127.0.0.1
67
+ MAIL_PORT=2525
68
+ MAIL_USERNAME=null
69
+ MAIL_PASSWORD=null
70
+ MAIL_FROM_ADDRESS="hello@example.com"
71
+ MAIL_FROM_NAME="${APP_NAME}"
72
+ MAIL_ENCRYPTION=null # null | tls | ssl
73
+
74
+ # -----------------------------------------------
75
+ # Storage / AWS S3
76
+ # -----------------------------------------------
77
+ FILESYSTEM_DISK=local # local | s3
78
+
79
+ AWS_ACCESS_KEY_ID=
80
+ AWS_SECRET_ACCESS_KEY=
81
+ AWS_DEFAULT_REGION=us-east-1
82
+ AWS_BUCKET=
83
+ AWS_ENDPOINT= # para MinIO ou S3-compatíveis
84
+
85
+ # -----------------------------------------------
86
+ # Logging
87
+ # -----------------------------------------------
88
+ LOG_CHANNEL=console # console | file | combined
89
+ LOG_LEVEL=debug # debug | info | warn | error
90
+ LOG_FILE=storage/logs/tanis.log
File without changes
@@ -0,0 +1,13 @@
1
+ import { Seeder } from './Seeder'
2
+
3
+ export class DatabaseSeeder {
4
+ private seeders: Seeder[] = [
5
+ // registre seus seeders aqui
6
+ ]
7
+
8
+ async run() {
9
+ for (const seeder of this.seeders) {
10
+ await seeder.run()
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,3 @@
1
+ export abstract class Seeder {
2
+ abstract run(): Promise<void>
3
+ }
@@ -0,0 +1,32 @@
1
+ import { TanisRequest, TanisResponse } from 'darkstar-core'
2
+ import { {{name}}Service } from '../services/{{name}}Service'
3
+
4
+ export class {{name}}Controller {
5
+ constructor(private {{nameLower}}Service: {{name}}Service) {}
6
+
7
+ async index(req: TanisRequest, res: TanisResponse) {
8
+ const data = await this.{{nameLower}}Service.findAll()
9
+ return res.ok(data)
10
+ }
11
+
12
+ async show(req: TanisRequest, res: TanisResponse) {
13
+ const data = await this.{{nameLower}}Service.findById(req.param('id')!)
14
+ if (!data) return res.notFound('{{name}} não encontrado')
15
+ return res.ok(data)
16
+ }
17
+
18
+ async store(req: TanisRequest, res: TanisResponse) {
19
+ const data = await this.{{nameLower}}Service.create(req.all())
20
+ return res.created(data)
21
+ }
22
+
23
+ async update(req: TanisRequest, res: TanisResponse) {
24
+ const data = await this.{{nameLower}}Service.update(req.param('id')!, req.all())
25
+ return res.ok(data)
26
+ }
27
+
28
+ async destroy(req: TanisRequest, res: TanisResponse) {
29
+ await this.{{nameLower}}Service.delete(req.param('id')!)
30
+ return res.noContent()
31
+ }
32
+ }
@@ -0,0 +1,5 @@
1
+ import { DarkstarApp } from 'darkstar-core'
2
+
3
+ const app = new DarkstarApp()
4
+
5
+ app.boot().then(() => app.listen())
@@ -0,0 +1,5 @@
1
+ import { Model } from 'darkstar-orm'
2
+
3
+ export class {{name}} extends Model {
4
+ static table = '{{tableName}}'
5
+ }
@@ -0,0 +1,9 @@
1
+ import { {{name}} } from '../models/{{name}}'
2
+
3
+ export class {{name}}Repository {
4
+ findAll() { return {{name}}.findAll() }
5
+ findById(id: string) { return {{name}}.findById(id) }
6
+ create(data: Record<string, any>) { return {{name}}.create(data as any) }
7
+ update(id: string, data: Record<string, any>) { return {{name}}.update(id, data as any) }
8
+ delete(id: string) { return {{name}}.delete(id) }
9
+ }
@@ -0,0 +1,11 @@
1
+ import { {{name}}Repository } from '../repositories/{{name}}Repository'
2
+
3
+ export class {{name}}Service {
4
+ constructor(private {{nameLower}}Repository: {{name}}Repository) {}
5
+
6
+ findAll() { return this.{{nameLower}}Repository.findAll() }
7
+ findById(id: string) { return this.{{nameLower}}Repository.findById(id) }
8
+ create(data: Record<string, any>) { return this.{{nameLower}}Repository.create(data) }
9
+ update(id: string, data: Record<string, any>) { return this.{{nameLower}}Repository.update(id, data) }
10
+ delete(id: string) { return this.{{nameLower}}Repository.delete(id) }
11
+ }
File without changes
File without changes