nodejs-quickstart-structure 1.11.0 → 1.12.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 (39) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +3 -3
  3. package/bin/index.js +2 -2
  4. package/docs/generateCase.md +245 -165
  5. package/lib/generator.js +8 -2
  6. package/lib/modules/app-setup.js +24 -0
  7. package/lib/modules/config-files.js +18 -1
  8. package/lib/modules/kafka-setup.js +2 -35
  9. package/package.json +1 -1
  10. package/templates/clean-architecture/js/src/errors/BadRequestError.js +1 -1
  11. package/templates/clean-architecture/js/src/errors/NotFoundError.js +1 -1
  12. package/templates/clean-architecture/js/src/index.js.ejs +2 -4
  13. package/templates/clean-architecture/js/src/infrastructure/config/env.js.ejs +47 -0
  14. package/templates/clean-architecture/js/src/infrastructure/webserver/middlewares/error.middleware.js +2 -1
  15. package/templates/clean-architecture/js/src/infrastructure/webserver/server.js.ejs +5 -2
  16. package/templates/clean-architecture/js/src/interfaces/graphql/resolvers/user.resolvers.js.ejs +4 -1
  17. package/templates/clean-architecture/ts/src/config/env.ts.ejs +46 -0
  18. package/templates/clean-architecture/ts/src/index.ts.ejs +9 -12
  19. package/templates/clean-architecture/ts/src/interfaces/graphql/resolvers/user.resolvers.ts.ejs +4 -1
  20. package/templates/clean-architecture/ts/src/utils/error.middleware.ts.ejs +2 -1
  21. package/templates/common/.env.example.ejs +3 -1
  22. package/templates/common/README.md.ejs +30 -0
  23. package/templates/common/database/js/mongoose.js.ejs +3 -1
  24. package/templates/common/database/ts/mongoose.ts.ejs +3 -1
  25. package/templates/common/docker-compose.yml.ejs +11 -1
  26. package/templates/common/ecosystem.config.js.ejs +40 -0
  27. package/templates/common/package.json.ejs +3 -1
  28. package/templates/mvc/js/src/config/env.js.ejs +46 -0
  29. package/templates/mvc/js/src/errors/BadRequestError.js +1 -1
  30. package/templates/mvc/js/src/errors/NotFoundError.js +1 -1
  31. package/templates/mvc/js/src/graphql/resolvers/user.resolvers.js.ejs +4 -1
  32. package/templates/mvc/js/src/index.js.ejs +2 -2
  33. package/templates/mvc/js/src/utils/error.middleware.js +2 -1
  34. package/templates/mvc/ts/src/config/env.ts.ejs +45 -0
  35. package/templates/mvc/ts/src/graphql/resolvers/user.resolvers.ts.ejs +4 -1
  36. package/templates/mvc/ts/src/index.ts.ejs +8 -12
  37. package/templates/mvc/ts/src/utils/error.middleware.ts.ejs +2 -1
  38. package/templates/clean-architecture/js/src/domain/repositories/UserRepository.js +0 -9
  39. /package/templates/clean-architecture/ts/src/infrastructure/repositories/{userRepository.ts.ejs → UserRepository.ts.ejs} +0 -0
@@ -14,5 +14,8 @@ export const userResolvers = {
14
14
  const user = await userController.createUser({ name, email });
15
15
  return user;
16
16
  }
17
- }
17
+ }<%_ if (database === 'MongoDB') { -%>,
18
+ User: {
19
+ id: (parent: { id?: string; _id?: unknown }) => parent.id || parent._id
20
+ }<%_ } %>
18
21
  };
@@ -1,9 +1,9 @@
1
+ import { env } from '@/config/env';
1
2
  import express, { Request, Response } from 'express';
2
3
  import cors from 'cors';
3
4
  import helmet from 'helmet';
4
5
  import hpp from 'hpp';
5
6
  import rateLimit from 'express-rate-limit';
6
- import dotenv from 'dotenv';
7
7
  import logger from '@/utils/logger';
8
8
  import morgan from 'morgan';
9
9
  import { errorMiddleware } from '@/utils/error.middleware';
@@ -23,10 +23,8 @@ import { typeDefs, resolvers } from '@/graphql';
23
23
  import { gqlContext, MyContext } from '@/graphql/context';
24
24
  <% } -%>
25
25
 
26
- dotenv.config();
27
-
28
26
  const app = express();
29
- const port = process.env.PORT || 3000;
27
+ const port = env.PORT;
30
28
 
31
29
  // Security Middleware
32
30
  <%_ if (communication === 'GraphQL') { -%>
@@ -111,15 +109,13 @@ const startServer = async () => {
111
109
  app.listen(port, () => {
112
110
  logger.info(`Server running on port ${port}`);
113
111
  <%_ if (communication === 'Kafka') { -%>
114
- try {
115
- const kafkaService = new KafkaService();
116
- kafkaService.connect().then(() => {
117
- logger.info('Kafka connected');
118
- kafkaService.sendMessage('test-topic', 'Hello Kafka from MVC TS!');
119
- });
120
- } catch (err) {
112
+ const kafkaService = new KafkaService();
113
+ kafkaService.connect().then(() => {
114
+ logger.info('Kafka connected');
115
+ kafkaService.sendMessage('test-topic', 'Hello Kafka from MVC TS!');
116
+ }).catch(err => {
121
117
  logger.error('Failed to connect to Kafka:', err);
122
- }
118
+ });
123
119
  <%_ } -%>
124
120
  });
125
121
  };
@@ -3,7 +3,8 @@ import logger from '@/utils/logger';
3
3
  import { ApiError } from '@/errors/ApiError';
4
4
  import { HTTP_STATUS } from '@/utils/httpCodes';
5
5
 
6
- export const errorMiddleware = (err: Error, req: Request, res: Response, _: unknown) => {
6
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
7
+ export const errorMiddleware = (err: Error, req: Request, res: Response, next: unknown) => {
7
8
  let error = err;
8
9
 
9
10
  if (!(error instanceof ApiError)) {
@@ -1,9 +0,0 @@
1
- class UserRepository {
2
- async save(user) {
3
- // Database logic would go here
4
- user.id = Math.floor(Math.random() * 1000);
5
- return user;
6
- }
7
- }
8
-
9
- module.exports = UserRepository;