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.
Files changed (2) hide show
  1. package/bin/cli.js +44 -8
  2. 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
- const logger = `// Simple logging middleware
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
- if (answers.useAuth) {
254
- const auth = `const jwt = require('jsonwebtoken');
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
- if (answers.useValidation) {
283
- const validation = `const Joi = require('joi');
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
- const routes = `const express = require('express');
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
- const server = `require('dotenv').config();
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backend-scaffold-cli",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "CLI tool to scaffold Express.js backend projects with MongoDB, middleware, and common setup",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {