@darkstar-cli/cli 0.0.3 → 0.0.5
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/package.json +1 -1
- package/dist/commands/forge/db-create.d.ts +0 -2
- package/dist/commands/forge/db-create.d.ts.map +0 -1
- package/dist/commands/forge/db-create.js +0 -86
- package/dist/commands/forge/db-create.js.map +0 -1
- package/dist/commands/forge/db-migrate.d.ts +0 -2
- package/dist/commands/forge/db-migrate.d.ts.map +0 -1
- package/dist/commands/forge/db-migrate.js +0 -168
- package/dist/commands/forge/db-migrate.js.map +0 -1
- package/dist/commands/forge/db-rollback.d.ts +0 -2
- package/dist/commands/forge/db-rollback.d.ts.map +0 -1
- package/dist/commands/forge/db-rollback.js +0 -86
- package/dist/commands/forge/db-rollback.js.map +0 -1
- package/dist/commands/forge/db-seed.d.ts +0 -2
- package/dist/commands/forge/db-seed.d.ts.map +0 -1
- package/dist/commands/forge/db-seed.js +0 -25
- package/dist/commands/forge/db-seed.js.map +0 -1
- package/dist/commands/forge/make-api.d.ts +0 -5
- package/dist/commands/forge/make-api.d.ts.map +0 -1
- package/dist/commands/forge/make-api.js +0 -263
- package/dist/commands/forge/make-api.js.map +0 -1
- package/dist/commands/forge/make-controller.d.ts +0 -2
- package/dist/commands/forge/make-controller.d.ts.map +0 -1
- package/dist/commands/forge/make-controller.js +0 -97
- package/dist/commands/forge/make-controller.js.map +0 -1
- package/dist/commands/forge/make-deps.d.ts +0 -2
- package/dist/commands/forge/make-deps.d.ts.map +0 -1
- package/dist/commands/forge/make-deps.js +0 -200
- package/dist/commands/forge/make-deps.js.map +0 -1
- package/dist/commands/forge/make-middleware.d.ts +0 -2
- package/dist/commands/forge/make-middleware.d.ts.map +0 -1
- package/dist/commands/forge/make-middleware.js +0 -72
- package/dist/commands/forge/make-middleware.js.map +0 -1
- package/dist/commands/forge/make-migration.d.ts +0 -2
- package/dist/commands/forge/make-migration.d.ts.map +0 -1
- package/dist/commands/forge/make-migration.js +0 -96
- package/dist/commands/forge/make-migration.js.map +0 -1
- package/dist/commands/forge/make-model.d.ts +0 -2
- package/dist/commands/forge/make-model.d.ts.map +0 -1
- package/dist/commands/forge/make-model.js +0 -73
- package/dist/commands/forge/make-model.js.map +0 -1
- package/dist/commands/forge/make-repository.d.ts +0 -2
- package/dist/commands/forge/make-repository.d.ts.map +0 -1
- package/dist/commands/forge/make-repository.js +0 -74
- package/dist/commands/forge/make-repository.js.map +0 -1
- package/dist/commands/forge/make-schema.d.ts +0 -2
- package/dist/commands/forge/make-schema.d.ts.map +0 -1
- package/dist/commands/forge/make-schema.js +0 -66
- package/dist/commands/forge/make-schema.js.map +0 -1
- package/dist/commands/forge/make-security.d.ts +0 -2
- package/dist/commands/forge/make-security.d.ts.map +0 -1
- package/dist/commands/forge/make-security.js +0 -316
- package/dist/commands/forge/make-security.js.map +0 -1
- package/dist/commands/forge/make-seeder.d.ts +0 -2
- package/dist/commands/forge/make-seeder.d.ts.map +0 -1
- package/dist/commands/forge/make-seeder.js +0 -176
- package/dist/commands/forge/make-seeder.js.map +0 -1
- package/dist/commands/forge/make-service.d.ts +0 -2
- package/dist/commands/forge/make-service.d.ts.map +0 -1
- package/dist/commands/forge/make-service.js +0 -76
- package/dist/commands/forge/make-service.js.map +0 -1
- package/dist/commands/forge/make-util.d.ts +0 -2
- package/dist/commands/forge/make-util.d.ts.map +0 -1
- package/dist/commands/forge/make-util.js +0 -83
- package/dist/commands/forge/make-util.js.map +0 -1
- package/dist/commands/new.d.ts +0 -2
- package/dist/commands/new.d.ts.map +0 -1
- package/dist/commands/new.js +0 -147
- package/dist/commands/new.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -2
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -20
- package/dist/commands/serve.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -115
- package/dist/index.js.map +0 -1
|
@@ -1,316 +0,0 @@
|
|
|
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.makeSecurity = makeSecurity;
|
|
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
|
-
// ─── Stub ─────────────────────────────────────────────────────────────────────
|
|
59
|
-
function stubRateLimit() {
|
|
60
|
-
return `import rateLimit from 'express-rate-limit'
|
|
61
|
-
|
|
62
|
-
// ─── Auth ─────────────────────────────────────────────────────────────────────
|
|
63
|
-
|
|
64
|
-
/** /auth/login — 3 tentativas por 15 min */
|
|
65
|
-
export const loginLimiter = rateLimit({
|
|
66
|
-
windowMs: 15 * 60 * 1000,
|
|
67
|
-
max: 3,
|
|
68
|
-
message: { message: 'Você tem 3 tentativas de login. Tente novamente em 15 minutos.' },
|
|
69
|
-
standardHeaders: true,
|
|
70
|
-
legacyHeaders: false,
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
/** /auth/register — 5 tentativas por 15 min */
|
|
74
|
-
export const registerLimiter = rateLimit({
|
|
75
|
-
windowMs: 15 * 60 * 1000,
|
|
76
|
-
max: 5,
|
|
77
|
-
message: { message: 'Muitas tentativas de registro. Tente novamente em 15 minutos.' },
|
|
78
|
-
standardHeaders: true,
|
|
79
|
-
legacyHeaders: false,
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
/** /auth/forgot-password — 3 tentativas por hora */
|
|
83
|
-
export const forgotPasswordLimiter = rateLimit({
|
|
84
|
-
windowMs: 60 * 60 * 1000,
|
|
85
|
-
max: 3,
|
|
86
|
-
message: { message: 'Muitas tentativas de recuperação de senha. Tente novamente em 1 hora.' },
|
|
87
|
-
standardHeaders: true,
|
|
88
|
-
legacyHeaders: false,
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
/** /auth/reset-password — 5 tentativas por hora */
|
|
92
|
-
export const resetPasswordLimiter = rateLimit({
|
|
93
|
-
windowMs: 60 * 60 * 1000,
|
|
94
|
-
max: 5,
|
|
95
|
-
message: { message: 'Muitas tentativas de redefinição de senha. Tente novamente em 1 hora.' },
|
|
96
|
-
standardHeaders: true,
|
|
97
|
-
legacyHeaders: false,
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
/** /auth/refresh-token — 10 tentativas por 15 min */
|
|
101
|
-
export const refreshTokenLimiter = rateLimit({
|
|
102
|
-
windowMs: 15 * 60 * 1000,
|
|
103
|
-
max: 10,
|
|
104
|
-
message: { message: 'Muitas tentativas de renovação de token. Tente novamente em 15 minutos.' },
|
|
105
|
-
standardHeaders: true,
|
|
106
|
-
legacyHeaders: false,
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
/** /auth/verify-email — 5 tentativas por hora */
|
|
110
|
-
export const verifyEmailLimiter = rateLimit({
|
|
111
|
-
windowMs: 60 * 60 * 1000,
|
|
112
|
-
max: 5,
|
|
113
|
-
message: { message: 'Muitas tentativas de verificação de e-mail. Tente novamente em 1 hora.' },
|
|
114
|
-
standardHeaders: true,
|
|
115
|
-
legacyHeaders: false,
|
|
116
|
-
})
|
|
117
|
-
|
|
118
|
-
/** /auth/two-factor — 5 tentativas por 15 min */
|
|
119
|
-
export const twoFactorLimiter = rateLimit({
|
|
120
|
-
windowMs: 15 * 60 * 1000,
|
|
121
|
-
max: 5,
|
|
122
|
-
message: { message: 'Muitas tentativas de autenticação em dois fatores. Tente novamente em 15 minutos.' },
|
|
123
|
-
standardHeaders: true,
|
|
124
|
-
legacyHeaders: false,
|
|
125
|
-
})
|
|
126
|
-
|
|
127
|
-
// ─── API Geral ────────────────────────────────────────────────────────────────
|
|
128
|
-
|
|
129
|
-
/** /api/* global — 100 req por 15 min */
|
|
130
|
-
export const globalLimiter = rateLimit({
|
|
131
|
-
windowMs: 15 * 60 * 1000,
|
|
132
|
-
max: 100,
|
|
133
|
-
message: { message: 'Muitas requisições. Tente novamente em 15 minutos.' },
|
|
134
|
-
standardHeaders: true,
|
|
135
|
-
legacyHeaders: false,
|
|
136
|
-
})
|
|
137
|
-
|
|
138
|
-
/** leitura geral (GET) — 200 req por minuto */
|
|
139
|
-
export const readLimiter = rateLimit({
|
|
140
|
-
windowMs: 60 * 1000,
|
|
141
|
-
max: 200,
|
|
142
|
-
message: { message: 'Muitas requisições de leitura. Tente novamente em 1 minuto.' },
|
|
143
|
-
standardHeaders: true,
|
|
144
|
-
legacyHeaders: false,
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
/** escrita geral (POST/PUT/PATCH) — 30 req por minuto */
|
|
148
|
-
export const writeLimiter = rateLimit({
|
|
149
|
-
windowMs: 60 * 1000,
|
|
150
|
-
max: 30,
|
|
151
|
-
message: { message: 'Muitas requisições de escrita. Tente novamente em 1 minuto.' },
|
|
152
|
-
standardHeaders: true,
|
|
153
|
-
legacyHeaders: false,
|
|
154
|
-
})
|
|
155
|
-
|
|
156
|
-
/** deleção (DELETE) — 10 req por minuto */
|
|
157
|
-
export const deleteLimiter = rateLimit({
|
|
158
|
-
windowMs: 60 * 1000,
|
|
159
|
-
max: 10,
|
|
160
|
-
message: { message: 'Muitas tentativas de exclusão. Tente novamente em 1 minuto.' },
|
|
161
|
-
standardHeaders: true,
|
|
162
|
-
legacyHeaders: false,
|
|
163
|
-
})
|
|
164
|
-
|
|
165
|
-
// ─── Arquivos ─────────────────────────────────────────────────────────────────
|
|
166
|
-
|
|
167
|
-
/** upload de arquivos — 10 req por minuto */
|
|
168
|
-
export const uploadLimiter = rateLimit({
|
|
169
|
-
windowMs: 60 * 1000,
|
|
170
|
-
max: 10,
|
|
171
|
-
message: { message: 'Muitos uploads. Tente novamente em 1 minuto.' },
|
|
172
|
-
standardHeaders: true,
|
|
173
|
-
legacyHeaders: false,
|
|
174
|
-
})
|
|
175
|
-
|
|
176
|
-
/** download/export — 20 req por minuto */
|
|
177
|
-
export const downloadLimiter = rateLimit({
|
|
178
|
-
windowMs: 60 * 1000,
|
|
179
|
-
max: 20,
|
|
180
|
-
message: { message: 'Muitos downloads. Tente novamente em 1 minuto.' },
|
|
181
|
-
standardHeaders: true,
|
|
182
|
-
legacyHeaders: false,
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
// ─── Tempo Real ───────────────────────────────────────────────────────────────
|
|
186
|
-
|
|
187
|
-
/** SSE / Server-Sent Events — 5 conexões por minuto */
|
|
188
|
-
export const sseLimiter = rateLimit({
|
|
189
|
-
windowMs: 60 * 1000,
|
|
190
|
-
max: 5,
|
|
191
|
-
message: { message: 'Muitas conexões SSE. Tente novamente em 1 minuto.' },
|
|
192
|
-
standardHeaders: true,
|
|
193
|
-
legacyHeaders: false,
|
|
194
|
-
})
|
|
195
|
-
|
|
196
|
-
/** WebSocket handshake — 10 por minuto */
|
|
197
|
-
export const websocketLimiter = rateLimit({
|
|
198
|
-
windowMs: 60 * 1000,
|
|
199
|
-
max: 10,
|
|
200
|
-
message: { message: 'Muitas conexões WebSocket. Tente novamente em 1 minuto.' },
|
|
201
|
-
standardHeaders: true,
|
|
202
|
-
legacyHeaders: false,
|
|
203
|
-
})
|
|
204
|
-
|
|
205
|
-
// ─── Comunicação ──────────────────────────────────────────────────────────────
|
|
206
|
-
|
|
207
|
-
/** envio de e-mail (contato, notificação) — 5 por hora */
|
|
208
|
-
export const emailLimiter = rateLimit({
|
|
209
|
-
windowMs: 60 * 60 * 1000,
|
|
210
|
-
max: 5,
|
|
211
|
-
message: { message: 'Muitos e-mails enviados. Tente novamente em 1 hora.' },
|
|
212
|
-
standardHeaders: true,
|
|
213
|
-
legacyHeaders: false,
|
|
214
|
-
})
|
|
215
|
-
|
|
216
|
-
/** envio de SMS — 3 por hora */
|
|
217
|
-
export const smsLimiter = rateLimit({
|
|
218
|
-
windowMs: 60 * 60 * 1000,
|
|
219
|
-
max: 3,
|
|
220
|
-
message: { message: 'Muitos SMS enviados. Tente novamente em 1 hora.' },
|
|
221
|
-
standardHeaders: true,
|
|
222
|
-
legacyHeaders: false,
|
|
223
|
-
})
|
|
224
|
-
|
|
225
|
-
/** webhook recebido — 50 por minuto */
|
|
226
|
-
export const webhookLimiter = rateLimit({
|
|
227
|
-
windowMs: 60 * 1000,
|
|
228
|
-
max: 50,
|
|
229
|
-
message: { message: 'Muitas chamadas de webhook. Tente novamente em 1 minuto.' },
|
|
230
|
-
standardHeaders: true,
|
|
231
|
-
legacyHeaders: false,
|
|
232
|
-
})
|
|
233
|
-
|
|
234
|
-
// ─── Busca e Relatórios ───────────────────────────────────────────────────────
|
|
235
|
-
|
|
236
|
-
/** busca/search — 30 req por minuto */
|
|
237
|
-
export const searchLimiter = rateLimit({
|
|
238
|
-
windowMs: 60 * 1000,
|
|
239
|
-
max: 30,
|
|
240
|
-
message: { message: 'Muitas buscas. Tente novamente em 1 minuto.' },
|
|
241
|
-
standardHeaders: true,
|
|
242
|
-
legacyHeaders: false,
|
|
243
|
-
})
|
|
244
|
-
|
|
245
|
-
/** relatórios/stats — 20 req por minuto */
|
|
246
|
-
export const statsLimiter = rateLimit({
|
|
247
|
-
windowMs: 60 * 1000,
|
|
248
|
-
max: 20,
|
|
249
|
-
message: { message: 'Muitas requisições de estatísticas. Tente novamente em 1 minuto.' },
|
|
250
|
-
standardHeaders: true,
|
|
251
|
-
legacyHeaders: false,
|
|
252
|
-
})
|
|
253
|
-
|
|
254
|
-
/** exportação de relatório (PDF/Excel) — 5 por minuto */
|
|
255
|
-
export const reportLimiter = rateLimit({
|
|
256
|
-
windowMs: 60 * 1000,
|
|
257
|
-
max: 5,
|
|
258
|
-
message: { message: 'Muitas exportações de relatório. Tente novamente em 1 minuto.' },
|
|
259
|
-
standardHeaders: true,
|
|
260
|
-
legacyHeaders: false,
|
|
261
|
-
})
|
|
262
|
-
|
|
263
|
-
// ─── Admin ────────────────────────────────────────────────────────────────────
|
|
264
|
-
|
|
265
|
-
/** painel admin — 200 req por 15 min */
|
|
266
|
-
export const adminLimiter = rateLimit({
|
|
267
|
-
windowMs: 15 * 60 * 1000,
|
|
268
|
-
max: 200,
|
|
269
|
-
message: { message: 'Muitas requisições no painel admin. Tente novamente em 15 minutos.' },
|
|
270
|
-
standardHeaders: true,
|
|
271
|
-
legacyHeaders: false,
|
|
272
|
-
})
|
|
273
|
-
|
|
274
|
-
/** ações destrutivas admin (delete em massa, truncate) — 5 por hora */
|
|
275
|
-
export const adminDestructiveLimiter = rateLimit({
|
|
276
|
-
windowMs: 60 * 60 * 1000,
|
|
277
|
-
max: 5,
|
|
278
|
-
message: { message: 'Muitas ações destrutivas. Tente novamente em 1 hora.' },
|
|
279
|
-
standardHeaders: true,
|
|
280
|
-
legacyHeaders: false,
|
|
281
|
-
})
|
|
282
|
-
|
|
283
|
-
// ─── Pagamentos ───────────────────────────────────────────────────────────────
|
|
284
|
-
|
|
285
|
-
/** checkout/pagamento — 10 por 15 min */
|
|
286
|
-
export const paymentLimiter = rateLimit({
|
|
287
|
-
windowMs: 15 * 60 * 1000,
|
|
288
|
-
max: 10,
|
|
289
|
-
message: { message: 'Muitas tentativas de pagamento. Tente novamente em 15 minutos.' },
|
|
290
|
-
standardHeaders: true,
|
|
291
|
-
legacyHeaders: false,
|
|
292
|
-
})
|
|
293
|
-
|
|
294
|
-
/** reembolso — 3 por hora */
|
|
295
|
-
export const refundLimiter = rateLimit({
|
|
296
|
-
windowMs: 60 * 60 * 1000,
|
|
297
|
-
max: 3,
|
|
298
|
-
message: { message: 'Muitas solicitações de reembolso. Tente novamente em 1 hora.' },
|
|
299
|
-
standardHeaders: true,
|
|
300
|
-
legacyHeaders: false,
|
|
301
|
-
})
|
|
302
|
-
`;
|
|
303
|
-
}
|
|
304
|
-
// ─── Entry point ──────────────────────────────────────────────────────────────
|
|
305
|
-
function makeSecurity() {
|
|
306
|
-
const middlewaresDir = path.resolve(process.cwd(), 'src/middlewares');
|
|
307
|
-
writeFile(path.join(middlewaresDir, 'RateLimitMiddleware.ts'), stubRateLimit());
|
|
308
|
-
console.log('');
|
|
309
|
-
console.log(kleur_1.default.yellow(' ⚠ Instale a dependência:'));
|
|
310
|
-
console.log(kleur_1.default.cyan(' npm install express-rate-limit'));
|
|
311
|
-
console.log('');
|
|
312
|
-
console.log(kleur_1.default.yellow(' ⚠ Uso nas rotas:'));
|
|
313
|
-
console.log(kleur_1.default.cyan(" import { loginLimiter, globalLimiter } from '../middlewares/RateLimitMiddleware'"));
|
|
314
|
-
console.log(kleur_1.default.cyan(" router.post('/auth/login', loginLimiter, ...)"));
|
|
315
|
-
}
|
|
316
|
-
//# sourceMappingURL=make-security.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-security.js","sourceRoot":"","sources":["../../../src/commands/forge/make-security.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,iFAAiF;AAEjF,SAAS,aAAa;IACpB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkPR,CAAA;AACD,CAAC;AAED,iFAAiF;AAEjF;IACE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAA;IACrE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,wBAAwB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAA;IAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC,CAAA;IAC/G,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAA;AAC9E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-seeder.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-seeder.ts"],"names":[],"mappings":"AAwIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,QAiBtC"}
|
|
@@ -1,176 +0,0 @@
|
|
|
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.makeSeeder = makeSeeder;
|
|
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"); // ← adiciona essa linha
|
|
44
|
-
function success(msg) { console.log(kleur_1.default.green(' ✔ ') + msg); }
|
|
45
|
-
function error(msg) { console.log(kleur_1.default.red(' ✘ ') + msg); }
|
|
46
|
-
function ensureDir(dirPath) {
|
|
47
|
-
if (!fs.existsSync(dirPath))
|
|
48
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
49
|
-
}
|
|
50
|
-
function writeFile(filePath, content) {
|
|
51
|
-
if (fs.existsSync(filePath)) {
|
|
52
|
-
error(`Arquivo já existe: ${filePath}`);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
ensureDir(path.dirname(filePath));
|
|
56
|
-
fs.writeFileSync(filePath, content, 'utf-8');
|
|
57
|
-
success(`Criado: ${filePath}`);
|
|
58
|
-
}
|
|
59
|
-
// ─── Migration parser ────────────────────────────────────────────────────────
|
|
60
|
-
function extractFieldsFromMigration(name) {
|
|
61
|
-
const migrationsDir = path.resolve(process.cwd(), 'database/migrations');
|
|
62
|
-
if (!fs.existsSync(migrationsDir))
|
|
63
|
-
return null;
|
|
64
|
-
const tableName = name.toLowerCase() + 's';
|
|
65
|
-
const files = fs.readdirSync(migrationsDir);
|
|
66
|
-
const migrationFile = files.find(f => {
|
|
67
|
-
const lower = f.toLowerCase();
|
|
68
|
-
return (lower.includes(`create_${tableName}_table`) ||
|
|
69
|
-
lower.includes(`create${tableName}table`) ||
|
|
70
|
-
lower.includes(name.toLowerCase()));
|
|
71
|
-
});
|
|
72
|
-
if (!migrationFile)
|
|
73
|
-
return null;
|
|
74
|
-
const content = fs.readFileSync(path.join(migrationsDir, migrationFile), 'utf-8');
|
|
75
|
-
const SKIP = new Set(['id', 'timestamps', 'softDeletes', 'created_at', 'updated_at', 'deleted_at']);
|
|
76
|
-
const fieldRegex = /table\.(\w+)\(\s*['"](\w+)['"]/g;
|
|
77
|
-
const fields = {};
|
|
78
|
-
let match;
|
|
79
|
-
while ((match = fieldRegex.exec(content)) !== null) {
|
|
80
|
-
const [, type, column] = match;
|
|
81
|
-
if (!SKIP.has(column))
|
|
82
|
-
fields[column] = type;
|
|
83
|
-
}
|
|
84
|
-
return Object.keys(fields).length > 0 ? fields : null;
|
|
85
|
-
}
|
|
86
|
-
// ─── Fake value por nome/tipo ────────────────────────────────────────────────
|
|
87
|
-
function fakeValue(column, type, name) {
|
|
88
|
-
if (column === 'password')
|
|
89
|
-
return "await bcrypt.hash('password', 10)";
|
|
90
|
-
if (column === 'email')
|
|
91
|
-
return '`user${i}@darkstar.dev`';
|
|
92
|
-
if (column === 'name')
|
|
93
|
-
return `\`${name} \${i}\``;
|
|
94
|
-
if (column === 'role')
|
|
95
|
-
return "i === 1 ? 'admin' : 'user'";
|
|
96
|
-
if (column.endsWith('_at'))
|
|
97
|
-
return 'new Date()';
|
|
98
|
-
if (column.endsWith('_id'))
|
|
99
|
-
return 'i';
|
|
100
|
-
switch (type) {
|
|
101
|
-
case 'string': return `\`${column}_\${i}\``;
|
|
102
|
-
case 'text': return `\`Lorem ipsum ${column} \${i}\``;
|
|
103
|
-
case 'integer':
|
|
104
|
-
case 'bigInteger':
|
|
105
|
-
case 'float':
|
|
106
|
-
case 'decimal': return 'i';
|
|
107
|
-
case 'boolean': return 'true';
|
|
108
|
-
case 'date':
|
|
109
|
-
case 'dateTime':
|
|
110
|
-
case 'timestamp': return 'new Date()';
|
|
111
|
-
default: return `\`${column}_\${i}\``;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// ─── Stubs ───────────────────────────────────────────────────────────────────
|
|
115
|
-
function stub(name) {
|
|
116
|
-
const fields = extractFieldsFromMigration(name);
|
|
117
|
-
const needsBcrypt = !!fields && 'password' in fields;
|
|
118
|
-
const bcryptImport = needsBcrypt ? "\nimport bcrypt from 'bcrypt'" : '';
|
|
119
|
-
let fieldsBlock;
|
|
120
|
-
if (fields && Object.keys(fields).length > 0) {
|
|
121
|
-
const longest = Math.max(...Object.keys(fields).map(k => k.length));
|
|
122
|
-
fieldsBlock = Object.entries(fields)
|
|
123
|
-
.map(([col, type]) => ` ${col.padEnd(longest)}: ${fakeValue(col, type, name)},`)
|
|
124
|
-
.join('\n');
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
fieldsBlock = ` // insira os campos aqui`;
|
|
128
|
-
}
|
|
129
|
-
return `import { Seeder } from './Seeder'
|
|
130
|
-
import { ${name} } from '../../src/models/${name}'${bcryptImport}
|
|
131
|
-
|
|
132
|
-
export class ${name}Seeder extends Seeder {
|
|
133
|
-
async run(): Promise<void> {
|
|
134
|
-
for (let i = 1; i <= 10; i++) {
|
|
135
|
-
await ${name}.create({
|
|
136
|
-
${fieldsBlock}
|
|
137
|
-
})
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
`;
|
|
142
|
-
}
|
|
143
|
-
// ─── Register ────────────────────────────────────────────────────────────────
|
|
144
|
-
function registerSeeder(seedersDir, name) {
|
|
145
|
-
const dbSeederPath = path.join(seedersDir, 'DatabaseSeeder.ts');
|
|
146
|
-
if (!fs.existsSync(dbSeederPath))
|
|
147
|
-
return;
|
|
148
|
-
let content = fs.readFileSync(dbSeederPath, 'utf-8');
|
|
149
|
-
const importLine = `import { ${name}Seeder } from './${name}Seeder'`;
|
|
150
|
-
const instanceLine = `new ${name}Seeder(),`;
|
|
151
|
-
if (content.includes(importLine))
|
|
152
|
-
return;
|
|
153
|
-
content = importLine + '\n' + content;
|
|
154
|
-
content = content.replace(/\/\/ registre seus seeders aqui/, `// registre seus seeders aqui\n ${instanceLine}`);
|
|
155
|
-
fs.writeFileSync(dbSeederPath, content, 'utf-8');
|
|
156
|
-
success(`Seeder registrado em DatabaseSeeder.ts`);
|
|
157
|
-
}
|
|
158
|
-
// ─── Entry point ─────────────────────────────────────────────────────────────
|
|
159
|
-
function makeSeeder(name) {
|
|
160
|
-
const seedersDir = path.resolve(process.cwd(), 'database/seeders');
|
|
161
|
-
writeFile(path.join(seedersDir, `${name}Seeder.ts`), stub(name));
|
|
162
|
-
registerSeeder(seedersDir, name);
|
|
163
|
-
// instala bcrypt automaticamente se necessário
|
|
164
|
-
const fields = extractFieldsFromMigration(name);
|
|
165
|
-
if (fields && 'password' in fields) {
|
|
166
|
-
const hasModule = fs.existsSync(path.resolve(process.cwd(), 'node_modules/bcrypt'));
|
|
167
|
-
if (!hasModule) {
|
|
168
|
-
console.log(kleur_1.default.cyan(' → ') + 'Instalando bcrypt...');
|
|
169
|
-
(0, child_process_1.execSync)('npm install bcrypt && npm install -D @types/bcrypt', {
|
|
170
|
-
stdio: 'inherit',
|
|
171
|
-
cwd: process.cwd()
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=make-seeder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-seeder.js","sourceRoot":"","sources":["../../../src/commands/forge/make-seeder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-service.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-service.ts"],"names":[],"mappings":"AAiCA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,QAGvC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
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.makeService = makeService;
|
|
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 stub(name) {
|
|
59
|
-
return `import { ${name}Repository } from '../repositories/${name}Repository'
|
|
60
|
-
|
|
61
|
-
export class ${name}Service {
|
|
62
|
-
constructor(private ${name.toLowerCase()}Repository: ${name}Repository) {}
|
|
63
|
-
|
|
64
|
-
findAll() { return this.${name.toLowerCase()}Repository.findAll() }
|
|
65
|
-
findById(id: string) { return this.${name.toLowerCase()}Repository.findById(id) }
|
|
66
|
-
create(data: Record<string, any>) { return this.${name.toLowerCase()}Repository.create(data) }
|
|
67
|
-
update(id: string, data: Record<string, any>) { return this.${name.toLowerCase()}Repository.update(id, data) }
|
|
68
|
-
delete(id: string) { return this.${name.toLowerCase()}Repository.delete(id) }
|
|
69
|
-
}
|
|
70
|
-
`;
|
|
71
|
-
}
|
|
72
|
-
function makeService(name) {
|
|
73
|
-
const src = path.resolve(process.cwd(), 'src');
|
|
74
|
-
writeFile(path.join(src, 'services', `${name}Service.ts`), stub(name));
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=make-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-service.js","sourceRoot":"","sources":["../../../src/commands/forge/make-service.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,IAAI,CAAC,IAAY;IACxB,OAAO,YAAY,IAAI,sCAAsC,IAAI;;eAEpD,IAAI;wBACK,IAAI,CAAC,WAAW,EAAE,eAAe,IAAI;;gEAEG,IAAI,CAAC,WAAW,EAAE;gEAClB,IAAI,CAAC,WAAW,EAAE;gEAClB,IAAI,CAAC,WAAW,EAAE;gEAClB,IAAI,CAAC,WAAW,EAAE;gEAClB,IAAI,CAAC,WAAW,EAAE;;CAEjF,CAAA;AACD,CAAC;AAED,qBAA4B,IAAY;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IAC9C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-util.d.ts","sourceRoot":"","sources":["../../../src/commands/forge/make-util.ts"],"names":[],"mappings":"AAuCA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,QAIpC"}
|