backend-scaffold-cli 1.0.2 → 1.1.0
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/bin/cli.js +44 -8
- package/package.json +1 -1
package/bin/cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
const { program } = require('commander');
|
|
@@ -119,6 +119,7 @@ const createConfigFiles= (projectPath,answers) =>{
|
|
|
119
119
|
mongoose: '^7.0.0',
|
|
120
120
|
dotenv: '^16.0.3',
|
|
121
121
|
cors: '^2.8.5',
|
|
122
|
+
'express-rate-limit': '^6.7.0',
|
|
122
123
|
...(answers.useAuth && { jsonwebtoken: '^9.0.0' }),
|
|
123
124
|
...(answers.useValidation && { joi: '^17.9.0' })
|
|
124
125
|
},
|
|
@@ -228,7 +229,9 @@ module.exports = { errorMiddleware, ErrorHandler };
|
|
|
228
229
|
);
|
|
229
230
|
|
|
230
231
|
|
|
231
|
-
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
const logger = `// Simple logging middleware
|
|
232
235
|
const loggerMiddleware = (req, res, next) => {
|
|
233
236
|
const start = Date.now();
|
|
234
237
|
|
|
@@ -250,8 +253,31 @@ module.exports = loggerMiddleware;
|
|
|
250
253
|
logger
|
|
251
254
|
);
|
|
252
255
|
|
|
253
|
-
|
|
254
|
-
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
const rateLimiter = `const ratelimit= require('express-rate-limit');
|
|
259
|
+
|
|
260
|
+
const limiter=ratelimit({
|
|
261
|
+
windowMs: 15 * 60 * 1000,
|
|
262
|
+
max: 100,
|
|
263
|
+
message: 'Too many requests from this IP, please try again after 15 minutes'
|
|
264
|
+
standardHeaders: true,
|
|
265
|
+
legacyHeaders: false,
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
module.exports=limiter;
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
`;
|
|
272
|
+
|
|
273
|
+
fs.writeFileSync(
|
|
274
|
+
path.join(projectPath, 'src/middleware/rateLimiter.js'),
|
|
275
|
+
rateLimiter
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
if (answers.useAuth) {
|
|
280
|
+
const auth = `const jwt = require('jsonwebtoken');
|
|
255
281
|
const { ErrorHandler } = require('./errorHandler');
|
|
256
282
|
|
|
257
283
|
const authenticateToken = (req, res, next) => {
|
|
@@ -279,8 +305,10 @@ module.exports = authenticateToken;
|
|
|
279
305
|
);
|
|
280
306
|
}
|
|
281
307
|
|
|
282
|
-
|
|
283
|
-
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
if (answers.useValidation) {
|
|
311
|
+
const validation = `const Joi = require('joi');
|
|
284
312
|
|
|
285
313
|
const validateRequest = (schema) => {
|
|
286
314
|
return (req, res, next) => {
|
|
@@ -315,8 +343,11 @@ module.exports = validateRequest;
|
|
|
315
343
|
}
|
|
316
344
|
|
|
317
345
|
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
318
349
|
const createRouteFiles = (projectPath, answers) => {
|
|
319
|
-
|
|
350
|
+
const routes = `const express = require('express');
|
|
320
351
|
const router = express.Router();
|
|
321
352
|
${answers.useAuth ? "const authenticateToken = require('../middleware/auth');" : ''}
|
|
322
353
|
|
|
@@ -380,7 +411,10 @@ module.exports = connectDB;
|
|
|
380
411
|
dbConfig
|
|
381
412
|
);
|
|
382
413
|
|
|
383
|
-
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
const server = `require('dotenv').config();
|
|
384
418
|
const express = require('express');
|
|
385
419
|
const cors = require('cors');
|
|
386
420
|
const connectDB = require('./config/db');
|
|
@@ -389,6 +423,7 @@ const loggerMiddleware = require('./middleware/logger');
|
|
|
389
423
|
const { errorMiddleware } = require('./middleware/errorHandler');
|
|
390
424
|
|
|
391
425
|
const app = express();
|
|
426
|
+
const limiter = require('./middleware/rateLimiter');
|
|
392
427
|
const PORT = process.env.PORT || 5000;
|
|
393
428
|
|
|
394
429
|
// Connect to MongoDB
|
|
@@ -402,6 +437,7 @@ app.use(cors({
|
|
|
402
437
|
app.use(express.json());
|
|
403
438
|
app.use(express.urlencoded({ extended: true }));
|
|
404
439
|
app.use(loggerMiddleware);
|
|
440
|
+
app.use(limiter);
|
|
405
441
|
|
|
406
442
|
|
|
407
443
|
// Routes
|