@impactor/nest 3.0.2 → 5.0.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 (133) hide show
  1. package/index.d.ts +41 -41
  2. package/package.json +29 -33
  3. package/src/configs/app.d.ts +5 -4
  4. package/src/configs/app.js +10 -18
  5. package/src/configs/app.js.map +1 -1
  6. package/src/configs/database.js +1 -11
  7. package/src/configs/database.js.map +1 -1
  8. package/src/configs/microservice.js +6 -16
  9. package/src/configs/microservice.js.map +1 -1
  10. package/src/configs/multi-queue-rabbitmq-server.js +28 -34
  11. package/src/configs/multi-queue-rabbitmq-server.js.map +1 -1
  12. package/src/configs/redis-config.js +1 -11
  13. package/src/configs/redis-config.js.map +1 -1
  14. package/src/create-app.d.ts +1 -1
  15. package/src/create-app.js +44 -61
  16. package/src/create-app.js.map +1 -1
  17. package/src/create-microservice.d.ts +1 -1
  18. package/src/create-microservice.js +18 -22
  19. package/src/create-microservice.js.map +1 -1
  20. package/src/create-testing-microservice.d.ts +1 -1
  21. package/src/create-testing-microservice.js +16 -20
  22. package/src/create-testing-microservice.js.map +1 -1
  23. package/src/decorators/controller/add-decorators/add-controller-path.d.ts +1 -1
  24. package/src/decorators/controller/add-decorators/add-controller-path.js +7 -15
  25. package/src/decorators/controller/add-decorators/add-controller-path.js.map +1 -1
  26. package/src/decorators/controller/add-decorators/add-controller-tags.d.ts +1 -1
  27. package/src/decorators/controller/add-decorators/add-controller-tags.js +9 -17
  28. package/src/decorators/controller/add-decorators/add-controller-tags.js.map +1 -1
  29. package/src/decorators/controller/add-decorators/add-http-method.d.ts +2 -2
  30. package/src/decorators/controller/add-decorators/add-http-method.js +13 -20
  31. package/src/decorators/controller/add-decorators/add-http-method.js.map +1 -1
  32. package/src/decorators/controller/add-decorators/add-swagger-body.d.ts +2 -2
  33. package/src/decorators/controller/add-decorators/add-swagger-body.js +7 -17
  34. package/src/decorators/controller/add-decorators/add-swagger-body.js.map +1 -1
  35. package/src/decorators/controller/add-decorators/add-swagger-operation.d.ts +2 -2
  36. package/src/decorators/controller/add-decorators/add-swagger-operation.js +8 -15
  37. package/src/decorators/controller/add-decorators/add-swagger-operation.js.map +1 -1
  38. package/src/decorators/controller/add-decorators/add-swagger-params.d.ts +2 -2
  39. package/src/decorators/controller/add-decorators/add-swagger-params.js +9 -16
  40. package/src/decorators/controller/add-decorators/add-swagger-params.js.map +1 -1
  41. package/src/decorators/controller/add-decorators/add-swagger-response.d.ts +2 -2
  42. package/src/decorators/controller/add-decorators/add-swagger-response.js +10 -20
  43. package/src/decorators/controller/add-decorators/add-swagger-response.js.map +1 -1
  44. package/src/decorators/controller/controller.decorator.d.ts +1 -1
  45. package/src/decorators/controller/controller.decorator.js +12 -13
  46. package/src/decorators/controller/controller.decorator.js.map +1 -1
  47. package/src/decorators/controller/controller.factory.d.ts +1 -1
  48. package/src/decorators/controller/controller.factory.js +59 -67
  49. package/src/decorators/controller/controller.factory.js.map +1 -1
  50. package/src/decorators/controller/default-options.d.ts +1 -1
  51. package/src/decorators/controller/default-options.js +11 -26
  52. package/src/decorators/controller/default-options.js.map +1 -1
  53. package/src/decorators/controller/dto/empty.dto.js +2 -12
  54. package/src/decorators/controller/dto/empty.dto.js.map +1 -1
  55. package/src/decorators/controller/dto/update-response.dto.js +2 -12
  56. package/src/decorators/controller/dto/update-response.dto.js.map +1 -1
  57. package/src/decorators/controller/interceptors/query.interceptor.d.ts +1 -1
  58. package/src/decorators/controller/interceptors/query.interceptor.js +10 -19
  59. package/src/decorators/controller/interceptors/query.interceptor.js.map +1 -1
  60. package/src/decorators/controller/route-handler.d.ts +2 -2
  61. package/src/decorators/controller/route-handler.js +8 -16
  62. package/src/decorators/controller/route-handler.js.map +1 -1
  63. package/src/decorators/controller/route.decorator.d.ts +1 -1
  64. package/src/decorators/controller/route.decorator.js +11 -11
  65. package/src/decorators/controller/route.decorator.js.map +1 -1
  66. package/src/decorators/controller/services/crud-typeorm.service.d.ts +1 -2
  67. package/src/decorators/controller/services/crud-typeorm.service.js +19 -24
  68. package/src/decorators/controller/services/crud-typeorm.service.js.map +1 -1
  69. package/src/decorators/controller/types/index.d.ts +2 -2
  70. package/src/decorators/controller/types/index.js +1 -4
  71. package/src/decorators/controller/types/index.js.map +1 -1
  72. package/src/decorators/controller/utils/merge-options.d.ts +1 -1
  73. package/src/decorators/controller/utils/merge-options.js +3 -13
  74. package/src/decorators/controller/utils/merge-options.js.map +1 -1
  75. package/src/decorators/controller/utils/reflect.d.ts +2 -2
  76. package/src/decorators/controller/utils/reflect.js +24 -38
  77. package/src/decorators/controller/utils/reflect.js.map +1 -1
  78. package/src/decorators/entity.decorator.js +42 -35
  79. package/src/decorators/entity.decorator.js.map +1 -1
  80. package/src/decorators/prop.decorator.js +79 -38
  81. package/src/decorators/prop.decorator.js.map +1 -1
  82. package/src/exceptions/rpc-bad-request.exception.d.ts +1 -1
  83. package/src/exceptions/rpc-bad-request.exception.js +5 -15
  84. package/src/exceptions/rpc-bad-request.exception.js.map +1 -1
  85. package/src/exceptions/rpc-base.exception.js +10 -15
  86. package/src/exceptions/rpc-base.exception.js.map +1 -1
  87. package/src/exceptions/rpc-conflict.exception.d.ts +1 -1
  88. package/src/exceptions/rpc-conflict.exception.js +5 -15
  89. package/src/exceptions/rpc-conflict.exception.js.map +1 -1
  90. package/src/exceptions/rpc-internal-server-error.exception.d.ts +1 -1
  91. package/src/exceptions/rpc-internal-server-error.exception.js +5 -15
  92. package/src/exceptions/rpc-internal-server-error.exception.js.map +1 -1
  93. package/src/exceptions/rpc-method-not-allowed.exception.d.ts +1 -1
  94. package/src/exceptions/rpc-method-not-allowed.exception.js +5 -15
  95. package/src/exceptions/rpc-method-not-allowed.exception.js.map +1 -1
  96. package/src/exceptions/rpc-not-found.exception.d.ts +1 -1
  97. package/src/exceptions/rpc-not-found.exception.js +5 -15
  98. package/src/exceptions/rpc-not-found.exception.js.map +1 -1
  99. package/src/exceptions/rpc-not-implemented.exception.d.ts +1 -1
  100. package/src/exceptions/rpc-not-implemented.exception.js +5 -15
  101. package/src/exceptions/rpc-not-implemented.exception.js.map +1 -1
  102. package/src/exceptions/rpc-unauthorized.exception.d.ts +1 -1
  103. package/src/exceptions/rpc-unauthorized.exception.js +5 -15
  104. package/src/exceptions/rpc-unauthorized.exception.js.map +1 -1
  105. package/src/filters/error-to-rpc-exception.filter.js +12 -22
  106. package/src/filters/error-to-rpc-exception.filter.js.map +1 -1
  107. package/src/filters/error-to-ws-exception.filter.js +10 -20
  108. package/src/filters/error-to-ws-exception.filter.js.map +1 -1
  109. package/src/filters/typeorm-exception.filter.js +9 -19
  110. package/src/filters/typeorm-exception.filter.js.map +1 -1
  111. package/src/filters/ws-exception.filter.js +6 -16
  112. package/src/filters/ws-exception.filter.js.map +1 -1
  113. package/src/generate-metadata.d.ts +3 -3
  114. package/src/generate-metadata.js +18 -74
  115. package/src/generate-metadata.js.map +1 -1
  116. package/src/guards/auth.guard.js +43 -44
  117. package/src/guards/auth.guard.js.map +1 -1
  118. package/src/modules/basic/basic.controller.js +6 -16
  119. package/src/modules/basic/basic.controller.js.map +1 -1
  120. package/src/modules/basic/basic.module.js +15 -23
  121. package/src/modules/basic/basic.module.js.map +1 -1
  122. package/src/modules/basic/basic.service.js +4 -14
  123. package/src/modules/basic/basic.service.js.map +1 -1
  124. package/src/register-entities.js +37 -20
  125. package/src/register-entities.js.map +1 -1
  126. package/src/utils/logger.js +2 -12
  127. package/src/utils/logger.js.map +1 -1
  128. package/src/utils/typeorm-to-swagger.d.ts +1 -1
  129. package/src/utils/typeorm-to-swagger.js +4 -11
  130. package/src/utils/typeorm-to-swagger.js.map +1 -1
  131. package/nx.json +0 -190
  132. package/src/nest-swagger-metadata.js +0 -593
  133. package/src/nest-swagger-metadata.js.map +0 -1
package/index.d.ts CHANGED
@@ -1,41 +1,41 @@
1
- export * from './src/configs/app';
2
- export * from './src/configs/database';
3
- export * from './src/configs/multi-queue-rabbitmq-server';
4
- export * from './src/configs/redis-config';
5
- export * from './src/create-microservice';
6
- export * from './src/create-testing-microservice';
7
- export * from './src/decorators/prop.decorator';
8
- export * from './src/exceptions/rpc-bad-request.exception';
9
- export * from './src/exceptions/rpc-conflict.exception';
10
- export * from './src/exceptions/rpc-internal-server-error.exception';
11
- export * from './src/exceptions/rpc-method-not-allowed.exception';
12
- export * from './src/exceptions/rpc-not-found.exception';
13
- export * from './src/exceptions/rpc-not-implemented.exception';
14
- export * from './src/exceptions/rpc-unauthorized.exception';
15
- export * from './src/filters/error-to-rpc-exception.filter';
16
- export * from './src/filters/error-to-ws-exception.filter';
17
- export * from './src/filters/typeorm-exception.filter';
18
- export * from './src/filters/ws-exception.filter';
19
- export * from './src/generate-metadata';
20
- export * from './src/create-app';
21
- export * from './src/guards/auth.guard';
22
- export * from './src/modules/basic/basic.controller';
23
- export * from './src/modules/basic/basic.module';
24
- export * from './src/modules/basic/basic.service';
25
- export * from './src/decorators/controller/add-decorators/add-http-method';
26
- export * from './src/decorators/controller/add-decorators/add-swagger-body';
27
- export * from './src/decorators/controller/add-decorators/add-swagger-operation';
28
- export * from './src/decorators/controller/add-decorators/add-swagger-params';
29
- export * from './src/decorators/controller/add-decorators/add-swagger-response';
30
- export * from './src/decorators/controller/controller.factory';
31
- export * from './src/decorators/controller/default-options';
32
- export * from './src/decorators/controller/route.decorator';
33
- export * from './src/decorators/controller/controller.decorator';
34
- export * from './src/decorators/controller/dto/empty.dto';
35
- export * from './src/decorators/controller/dto/update-response.dto';
36
- export * from './src/decorators/controller/interceptors/query.interceptor';
37
- export * from './src/decorators/controller/route-handler';
38
- export * from './src/decorators/controller/services/crud-typeorm.service';
39
- export * from './src/decorators/controller/types';
40
- export * from './src/decorators/controller/utils/merge-options';
41
- export * from './src/decorators/entity.decorator';
1
+ export * from './src/configs/app.js';
2
+ export * from './src/configs/database.js';
3
+ export * from './src/configs/multi-queue-rabbitmq-server.js';
4
+ export * from './src/configs/redis-config.js';
5
+ export * from './src/create-microservice.js';
6
+ export * from './src/create-testing-microservice.js';
7
+ export * from './src/decorators/prop.decorator.js';
8
+ export * from './src/exceptions/rpc-bad-request.exception.js';
9
+ export * from './src/exceptions/rpc-conflict.exception.js';
10
+ export * from './src/exceptions/rpc-internal-server-error.exception.js';
11
+ export * from './src/exceptions/rpc-method-not-allowed.exception.js';
12
+ export * from './src/exceptions/rpc-not-found.exception.js';
13
+ export * from './src/exceptions/rpc-not-implemented.exception.js';
14
+ export * from './src/exceptions/rpc-unauthorized.exception.js';
15
+ export * from './src/filters/error-to-rpc-exception.filter.js';
16
+ export * from './src/filters/error-to-ws-exception.filter.js';
17
+ export * from './src/filters/typeorm-exception.filter.js';
18
+ export * from './src/filters/ws-exception.filter.js';
19
+ export * from './src/generate-metadata.js';
20
+ export * from './src/create-app.js';
21
+ export * from './src/guards/auth.guard.js';
22
+ export * from './src/modules/basic/basic.controller.js';
23
+ export * from './src/modules/basic/basic.module.js';
24
+ export * from './src/modules/basic/basic.service.js';
25
+ export * from './src/decorators/controller/add-decorators/add-http-method.js';
26
+ export * from './src/decorators/controller/add-decorators/add-swagger-body.js';
27
+ export * from './src/decorators/controller/add-decorators/add-swagger-operation.js';
28
+ export * from './src/decorators/controller/add-decorators/add-swagger-params.js';
29
+ export * from './src/decorators/controller/add-decorators/add-swagger-response.js';
30
+ export * from './src/decorators/controller/controller.factory.js';
31
+ export * from './src/decorators/controller/default-options.js';
32
+ export * from './src/decorators/controller/route.decorator.js';
33
+ export * from './src/decorators/controller/controller.decorator.js';
34
+ export * from './src/decorators/controller/dto/empty.dto.js';
35
+ export * from './src/decorators/controller/dto/update-response.dto.js';
36
+ export * from './src/decorators/controller/interceptors/query.interceptor.js';
37
+ export * from './src/decorators/controller/route-handler.js';
38
+ export * from './src/decorators/controller/services/crud-typeorm.service.js';
39
+ export * from './src/decorators/controller/types/index.js';
40
+ export * from './src/decorators/controller/utils/merge-options.js';
41
+ export * from './src/decorators/entity.decorator.js';
package/package.json CHANGED
@@ -1,34 +1,37 @@
1
1
  {
2
2
  "name": "@impactor/nest",
3
- "version": "3.0.2",
3
+ "version": "5.0.0",
4
4
  "type": "module",
5
5
  "description": "utils for NestJs. Automatically generate APIs and crud operators for NestJs apps",
6
6
  "private": false,
7
7
  "publishConfig": {
8
8
  "access": "public",
9
- "directory": "dist",
10
9
  "linkDirectory": false
11
10
  },
12
11
  "nx": {
13
12
  "projectType": "library",
14
13
  "targets": {
15
- "build": {},
16
- "semantic-release": {}
14
+ "build": {}
17
15
  }
18
16
  },
19
17
  "imports": {
20
- "#*": "./src/*.js"
18
+ "#*": "./*"
21
19
  },
22
20
  "exports": {
23
21
  ".": {
24
22
  "types": "./index.d.js",
25
23
  "default": "./index.js"
26
24
  },
25
+ "./*": {
26
+ "types": "./src/*",
27
+ "default": "./src/*"
28
+ },
27
29
  "./package.json": {
28
30
  "default": "./package.json"
29
- },
30
- "./*": "./src/*"
31
+ }
31
32
  },
33
+ "types": "./index.d.ts",
34
+ "main": "./index.js",
32
35
  "keywords": [
33
36
  "crud",
34
37
  "NestJs",
@@ -37,43 +40,34 @@
37
40
  "js"
38
41
  ],
39
42
  "dependencies": {
43
+ "@fastify/multipart": "^9.4.0",
44
+ "@impactor/javascript": "5.0.0",
45
+ "@impactor/nodejs": "5.0.0",
40
46
  "@nestjs/cli": "^11.0.16",
41
- "@nestjs/common": "^11.1.12",
47
+ "@nestjs/common": "^11.1.13",
42
48
  "@nestjs/config": "^4.0.2",
43
- "@nestjs/core": "^11.1.12",
44
- "@nestjs/microservices": "^11.1.12",
45
- "@nestjs/platform-express": "^11.1.12",
46
- "@nestjs/platform-fastify": "^11.1.12",
49
+ "@nestjs/core": "^11.1.13",
50
+ "@nestjs/microservices": "^11.1.13",
51
+ "@nestjs/passport": "^11.0.5",
52
+ "@nestjs/platform-express": "^11.1.13",
53
+ "@nestjs/platform-fastify": "^11.1.13",
47
54
  "@nestjs/swagger": "^11.2.5",
48
- "@nestjs/testing": "^11.1.12",
55
+ "@nestjs/testing": "^11.1.13",
49
56
  "@nestjs/typeorm": "^11.0.0",
50
- "@nestjs/websockets": "^11.1.12",
57
+ "@nestjs/websockets": "^11.1.13",
51
58
  "amqplib": "^0.10.9",
52
59
  "class-validator": "^0.14.3",
53
- "fastify": "^5.7.1",
60
+ "fastify": "^5.7.4",
61
+ "merge-anything": "^6.0.6",
54
62
  "nest-winston": "^1.10.2",
63
+ "reflect-metadata": "^0.2.2",
55
64
  "rxjs": "^7.8.2",
56
65
  "tslib": "^2.8.1",
57
66
  "typeorm": "^0.3.28",
58
- "winston": "^3.19.0",
59
- "@fastify/multipart": "^9.3.0",
60
- "@nestjs/passport": "^11.0.5",
61
- "merge-anything": "^6.0.6",
62
- "reflect-metadata": "^0.2.2",
63
- "@impactor/javascript": "^3.0.2",
64
- "@impactor/nodejs": "^3.0.2"
67
+ "winston": "^3.19.0"
65
68
  },
66
69
  "devDependencies": {
67
- "@types/amqplib": "^0.10.8",
68
- "tsx": "^4.21.0",
69
- "@nestjs/cli": "^11.0.16",
70
- "@nestjs/platform-fastify": "^11.1.12",
71
- "@swc/cli": "^0.7.10",
72
- "@swc/core": "^1.15.8",
73
- "@types/node": "^25.0.9",
74
- "typescript": "^5.9.3",
75
- "semantic-release": "^25.0.2",
76
- "semantic-release-monorepo": "^8.0.2"
70
+ "tsx": "^4.21.0"
77
71
  },
78
72
  "engines": {
79
73
  "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
@@ -100,5 +94,7 @@
100
94
  "url": "https://www.patreon.com/GoogleDev"
101
95
  }
102
96
  ],
103
- "scripts": {}
97
+ "scripts": {
98
+ "start": "NODE_ENV=production pnpm tsx --env-file-if-exists=.env --env-file-if-exists=.env.local --env-file-if-exists=.env.production --env-file-if-exists=.env.production.local main.js"
99
+ }
104
100
  }
@@ -1,8 +1,9 @@
1
1
  import { ValidationPipeOptions, type VersioningOptions } from '@nestjs/common';
2
- import type { GlobalPrefixOptions, NestApplicationOptions } from '@nestjs/common/interfaces';
3
- import { NestExpressApplication } from '@nestjs/platform-express';
4
- import { NestFastifyApplication } from '@nestjs/platform-fastify/interfaces';
5
- import { OpenAPIObject } from '@nestjs/swagger';
2
+ import type { GlobalPrefixOptions } from '@nestjs/common/interfaces/global-prefix-options.interface.js';
3
+ import type { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface.js';
4
+ import { type NestExpressApplication } from '@nestjs/platform-express';
5
+ import { type NestFastifyApplication } from '@nestjs/platform-fastify';
6
+ import { type OpenAPIObject } from '@nestjs/swagger';
6
7
  export type IApp = NestFastifyApplication | NestExpressApplication;
7
8
  export interface IPrefix extends GlobalPrefixOptions {
8
9
  prefix: string;
@@ -1,16 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "appConfig", {
6
- enumerable: true,
7
- get: function() {
8
- return appConfig;
9
- }
10
- });
11
- const _logger = require("../utils/logger");
12
- const _common = require("@nestjs/common");
13
- const appConfig = {
1
+ import { logger } from "../utils/logger.js";
2
+ import { VersioningType } from "@nestjs/common";
3
+ /**
4
+ * the default app configs
5
+ */ export const appConfig = {
14
6
  port: process.env.PORT,
15
7
  prefix: {
16
8
  prefix: 'api',
@@ -42,7 +34,7 @@ const appConfig = {
42
34
  defaultVersion: [
43
35
  '1.0'
44
36
  ],
45
- type: _common.VersioningType.URI
37
+ type: VersioningType.URI
46
38
  },
47
39
  // cors: {
48
40
  // // todo: add APP_URL or localhost by default
@@ -51,14 +43,14 @@ const appConfig = {
51
43
  // allowedHeaders: '*',
52
44
  // },
53
45
  onServerRun: async (app)=>{
54
- _logger.logger.log(`running at ${await app.getUrl()}`);
55
- _logger.logger.log(`Env: ${process.env.NODE_ENV}`);
46
+ logger.log(`running at ${await app.getUrl()}`);
47
+ logger.log(`Env: ${process.env.NODE_ENV}`);
56
48
  if (process.env.DB_NAME) {
57
- _logger.logger.log(`database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`);
49
+ logger.log(`database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`);
58
50
  }
59
51
  },
60
52
  onServerError: (error, _app)=>{
61
- _logger.logger.error(`Server failed to run`);
53
+ logger.error(`Server failed to run`);
62
54
  throw error;
63
55
  }
64
56
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configs/app.ts"],"sourcesContent":["import { logger } from '../utils/logger';\nimport {\n ValidationPipeOptions,\n type VersioningOptions,\n VersioningType,\n} from '@nestjs/common';\nimport type {\n GlobalPrefixOptions,\n NestApplicationOptions,\n} from '@nestjs/common/interfaces';\nimport { NestExpressApplication } from '@nestjs/platform-express';\nimport { NestFastifyApplication } from '@nestjs/platform-fastify/interfaces';\nimport { OpenAPIObject } from '@nestjs/swagger';\n\nexport type IApp = NestFastifyApplication | NestExpressApplication;\nexport interface IPrefix extends GlobalPrefixOptions {\n prefix: string;\n}\n\n// todo: adaptor: fastify | express = fastify\nexport interface IAppConfig extends NestApplicationOptions {\n /**\n * The port that the app will listen to\n * if not provided, `app.listen()` is not called\n */\n port?: string | number;\n /** the global prefix for every HTTP route path. see Nest.setGlobalPrefix() */\n prefix?: string | IPrefix;\n versioning?: VersioningOptions;\n /**\n * Swagger API spec.\n * https://spec.openapis.org/oas\n */\n swagger?: Partial<Omit<OpenAPIObject, 'paths'>>;\n /**\n * The path to the Swagger UI page\n * @default ''\n */\n swaggerPath?: string;\n /** whether to enable parsing multiPart */\n multipart?: boolean;\n /**\n * validation pipe options\n */\n validationPipe?: ValidationPipeOptions;\n /**\n * package.json absolute path or object, or the path of the project root dir\n * used to extract info for Swagger docs, such as title, description, and version.\n */\n // todo: import IPackage interface from @impactor/javascript (move from @impactor/nx-manager)\n package?: string | Record<string, unknown>;\n /**\n * weather to register entities to automatically generate Swagger and class-validator decorators\n * You can specify list of models to be registered\n */\n registerEntities?: boolean | Function[];\n /**\n * a hook that executed when the server runs and listens to the specified port\n * get the server by app.getHttpServer()\n */\n onServerRun?: (app: IApp) => void | Promise<void>;\n onServerError?: (error: Error, app: IApp) => void | Promise<void>;\n}\n\n/**\n * the default app configs\n */\nexport const appConfig: IAppConfig = {\n port: process.env.PORT,\n prefix: { prefix: 'api', exclude: ['sitemap.xml', 'robots.txt'] },\n // or use `DocumentBuilder` from \"@nestjs/swagger\"\n swagger: {\n openapi: '3.1.0',\n info: { title: 'API', version: '1.0' },\n components: {\n securitySchemes: {\n // add `@ApiBearerAuth()` to controllers which you need to check their bearer auth header\n bearer: {\n scheme: 'bearer',\n bearerFormat: 'JWT',\n type: 'http',\n },\n },\n },\n },\n swaggerPath: '',\n versioning: {\n defaultVersion: ['1.0'],\n type: VersioningType.URI,\n },\n // cors: {\n // // todo: add APP_URL or localhost by default\n // origin: '*',\n // methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n // allowedHeaders: '*',\n // },\n onServerRun: async (app) => {\n logger.log(`running at ${await app.getUrl()}`);\n logger.log(`Env: ${process.env.NODE_ENV}`);\n if (process.env.DB_NAME) {\n logger.log(\n `database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`,\n );\n }\n },\n onServerError: (error, _app) => {\n logger.error(`Server failed to run`);\n throw error;\n },\n};\n"],"names":["appConfig","port","process","env","PORT","prefix","exclude","swagger","openapi","info","title","version","components","securitySchemes","bearer","scheme","bearerFormat","type","swaggerPath","versioning","defaultVersion","VersioningType","URI","onServerRun","app","logger","log","getUrl","NODE_ENV","DB_NAME","DB_HOST","onServerError","error","_app"],"mappings":";;;;+BAmEaA;;;eAAAA;;;wBAnEU;wBAKhB;AA8DA,MAAMA,YAAwB;IACnCC,MAAMC,QAAQC,GAAG,CAACC,IAAI;IACtBC,QAAQ;QAAEA,QAAQ;QAAOC,SAAS;YAAC;YAAe;SAAa;IAAC;IAChE,kDAAkD;IAClDC,SAAS;QACPC,SAAS;QACTC,MAAM;YAAEC,OAAO;YAAOC,SAAS;QAAM;QACrCC,YAAY;YACVC,iBAAiB;gBACf,yFAAyF;gBACzFC,QAAQ;oBACNC,QAAQ;oBACRC,cAAc;oBACdC,MAAM;gBACR;YACF;QACF;IACF;IACAC,aAAa;IACbC,YAAY;QACVC,gBAAgB;YAAC;SAAM;QACvBH,MAAMI,sBAAc,CAACC,GAAG;IAC1B;IACA,UAAU;IACV,iDAAiD;IACjD,iBAAiB;IACjB,+CAA+C;IAC/C,yBAAyB;IACzB,KAAK;IACLC,aAAa,OAAOC;QAClBC,cAAM,CAACC,GAAG,CAAC,CAAC,WAAW,EAAE,MAAMF,IAAIG,MAAM,IAAI;QAC7CF,cAAM,CAACC,GAAG,CAAC,CAAC,KAAK,EAAExB,QAAQC,GAAG,CAACyB,QAAQ,EAAE;QACzC,IAAI1B,QAAQC,GAAG,CAAC0B,OAAO,EAAE;YACvBJ,cAAM,CAACC,GAAG,CACR,CAAC,UAAU,EAAExB,QAAQC,GAAG,CAAC0B,OAAO,CAAC,CAAC,EAAE3B,QAAQC,GAAG,CAAC2B,OAAO,IAAI,aAAa;QAE5E;IACF;IACAC,eAAe,CAACC,OAAOC;QACrBR,cAAM,CAACO,KAAK,CAAC,CAAC,oBAAoB,CAAC;QACnC,MAAMA;IACR;AACF"}
1
+ {"version":3,"sources":["../../../src/configs/app.ts"],"sourcesContent":["import { logger } from '../utils/logger.js';\nimport {\n ValidationPipeOptions,\n type VersioningOptions,\n VersioningType,\n} from '@nestjs/common';\nimport type { GlobalPrefixOptions } from '@nestjs/common/interfaces/global-prefix-options.interface.js';\nimport type { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface.js';\nimport { type NestExpressApplication } from '@nestjs/platform-express';\nimport { type NestFastifyApplication } from '@nestjs/platform-fastify';\nimport { type OpenAPIObject } from '@nestjs/swagger';\n\nexport type IApp = NestFastifyApplication | NestExpressApplication;\nexport interface IPrefix extends GlobalPrefixOptions {\n prefix: string;\n}\n\n// todo: adaptor: fastify | express = fastify\nexport interface IAppConfig extends NestApplicationOptions {\n /**\n * The port that the app will listen to\n * if not provided, `app.listen()` is not called\n */\n port?: string | number;\n /** the global prefix for every HTTP route path. see Nest.setGlobalPrefix() */\n prefix?: string | IPrefix;\n versioning?: VersioningOptions;\n /**\n * Swagger API spec.\n * https://spec.openapis.org/oas\n */\n swagger?: Partial<Omit<OpenAPIObject, 'paths'>>;\n /**\n * The path to the Swagger UI page\n * @default ''\n */\n swaggerPath?: string;\n /** whether to enable parsing multiPart */\n multipart?: boolean;\n /**\n * validation pipe options\n */\n validationPipe?: ValidationPipeOptions;\n /**\n * package.json absolute path or object, or the path of the project root dir\n * used to extract info for Swagger docs, such as title, description, and version.\n */\n // todo: import IPackage interface from @impactor/javascript (move from @impactor/nx-manager)\n package?: string | Record<string, unknown>;\n /**\n * weather to register entities to automatically generate Swagger and class-validator decorators\n * You can specify list of models to be registered\n */\n registerEntities?: boolean | Function[];\n /**\n * a hook that executed when the server runs and listens to the specified port\n * get the server by app.getHttpServer()\n */\n onServerRun?: (app: IApp) => void | Promise<void>;\n onServerError?: (error: Error, app: IApp) => void | Promise<void>;\n}\n\n/**\n * the default app configs\n */\nexport const appConfig: IAppConfig = {\n port: process.env.PORT,\n prefix: { prefix: 'api', exclude: ['sitemap.xml', 'robots.txt'] },\n // or use `DocumentBuilder` from \"@nestjs/swagger\"\n swagger: {\n openapi: '3.1.0',\n info: { title: 'API', version: '1.0' },\n components: {\n securitySchemes: {\n // add `@ApiBearerAuth()` to controllers which you need to check their bearer auth header\n bearer: {\n scheme: 'bearer',\n bearerFormat: 'JWT',\n type: 'http',\n },\n },\n },\n },\n swaggerPath: '',\n versioning: {\n defaultVersion: ['1.0'],\n type: VersioningType.URI,\n },\n // cors: {\n // // todo: add APP_URL or localhost by default\n // origin: '*',\n // methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n // allowedHeaders: '*',\n // },\n onServerRun: async (app) => {\n logger.log(`running at ${await app.getUrl()}`);\n logger.log(`Env: ${process.env.NODE_ENV}`);\n if (process.env.DB_NAME) {\n logger.log(\n `database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`,\n );\n }\n },\n onServerError: (error, _app) => {\n logger.error(`Server failed to run`);\n throw error;\n },\n};\n"],"names":["logger","VersioningType","appConfig","port","process","env","PORT","prefix","exclude","swagger","openapi","info","title","version","components","securitySchemes","bearer","scheme","bearerFormat","type","swaggerPath","versioning","defaultVersion","URI","onServerRun","app","log","getUrl","NODE_ENV","DB_NAME","DB_HOST","onServerError","error","_app"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAGEC,cAAc,QACT,iBAAiB;AAyDxB;;CAEC,GACD,OAAO,MAAMC,YAAwB;IACnCC,MAAMC,QAAQC,GAAG,CAACC,IAAI;IACtBC,QAAQ;QAAEA,QAAQ;QAAOC,SAAS;YAAC;YAAe;SAAa;IAAC;IAChE,kDAAkD;IAClDC,SAAS;QACPC,SAAS;QACTC,MAAM;YAAEC,OAAO;YAAOC,SAAS;QAAM;QACrCC,YAAY;YACVC,iBAAiB;gBACf,yFAAyF;gBACzFC,QAAQ;oBACNC,QAAQ;oBACRC,cAAc;oBACdC,MAAM;gBACR;YACF;QACF;IACF;IACAC,aAAa;IACbC,YAAY;QACVC,gBAAgB;YAAC;SAAM;QACvBH,MAAMlB,eAAesB,GAAG;IAC1B;IACA,UAAU;IACV,iDAAiD;IACjD,iBAAiB;IACjB,+CAA+C;IAC/C,yBAAyB;IACzB,KAAK;IACLC,aAAa,OAAOC;QAClBzB,OAAO0B,GAAG,CAAC,CAAC,WAAW,EAAE,MAAMD,IAAIE,MAAM,IAAI;QAC7C3B,OAAO0B,GAAG,CAAC,CAAC,KAAK,EAAEtB,QAAQC,GAAG,CAACuB,QAAQ,EAAE;QACzC,IAAIxB,QAAQC,GAAG,CAACwB,OAAO,EAAE;YACvB7B,OAAO0B,GAAG,CACR,CAAC,UAAU,EAAEtB,QAAQC,GAAG,CAACwB,OAAO,CAAC,CAAC,EAAEzB,QAAQC,GAAG,CAACyB,OAAO,IAAI,aAAa;QAE5E;IACF;IACAC,eAAe,CAACC,OAAOC;QACrBjC,OAAOgC,KAAK,CAAC,CAAC,oBAAoB,CAAC;QACnC,MAAMA;IACR;AACF,EAAE"}
@@ -1,14 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "typeORMConfigs", {
6
- enumerable: true,
7
- get: function() {
8
- return typeORMConfigs;
9
- }
10
- });
11
- const typeORMConfigs = {
1
+ export const typeORMConfigs = {
12
2
  // @ts-ignore
13
3
  type: process.env.DB_TYPE ?? 'postgres',
14
4
  host: process.env.DB_HOST ?? 'localhost',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configs/database.ts"],"sourcesContent":["import { type DataSourceOptions } from 'typeorm';\n\nexport const typeORMConfigs: DataSourceOptions = {\n // @ts-ignore\n type: process.env.DB_TYPE ?? 'postgres',\n host: process.env.DB_HOST ?? 'localhost',\n username: process.env.DB_USER ?? 'postgres',\n password: process.env.DB_PASSWORD,\n database: process.env.DB_NAME,\n // TODO: this should be disabled in prod to prevent the db data from being lost\n synchronize: true,\n autoLoadEntities: true,\n};\n"],"names":["typeORMConfigs","type","process","env","DB_TYPE","host","DB_HOST","username","DB_USER","password","DB_PASSWORD","database","DB_NAME","synchronize","autoLoadEntities"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA,iBAAoC;IAC/C,aAAa;IACbC,MAAMC,QAAQC,GAAG,CAACC,OAAO,IAAI;IAC7BC,MAAMH,QAAQC,GAAG,CAACG,OAAO,IAAI;IAC7BC,UAAUL,QAAQC,GAAG,CAACK,OAAO,IAAI;IACjCC,UAAUP,QAAQC,GAAG,CAACO,WAAW;IACjCC,UAAUT,QAAQC,GAAG,CAACS,OAAO;IAC7B,+EAA+E;IAC/EC,aAAa;IACbC,kBAAkB;AACpB"}
1
+ {"version":3,"sources":["../../../src/configs/database.ts"],"sourcesContent":["import { type DataSourceOptions } from 'typeorm';\n\nexport const typeORMConfigs: DataSourceOptions = {\n // @ts-ignore\n type: process.env.DB_TYPE ?? 'postgres',\n host: process.env.DB_HOST ?? 'localhost',\n username: process.env.DB_USER ?? 'postgres',\n password: process.env.DB_PASSWORD,\n database: process.env.DB_NAME,\n // TODO: this should be disabled in prod to prevent the db data from being lost\n synchronize: true,\n autoLoadEntities: true,\n};\n"],"names":["typeORMConfigs","type","process","env","DB_TYPE","host","DB_HOST","username","DB_USER","password","DB_PASSWORD","database","DB_NAME","synchronize","autoLoadEntities"],"mappings":"AAEA,OAAO,MAAMA,iBAAoC;IAC/C,aAAa;IACbC,MAAMC,QAAQC,GAAG,CAACC,OAAO,IAAI;IAC7BC,MAAMH,QAAQC,GAAG,CAACG,OAAO,IAAI;IAC7BC,UAAUL,QAAQC,GAAG,CAACK,OAAO,IAAI;IACjCC,UAAUP,QAAQC,GAAG,CAACO,WAAW;IACjCC,UAAUT,QAAQC,GAAG,CAACS,OAAO;IAC7B,+EAA+E;IAC/EC,aAAa;IACbC,kBAAkB;AACpB,EAAE"}
@@ -1,24 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "microserviceOptions", {
6
- enumerable: true,
7
- get: function() {
8
- return microserviceOptions;
9
- }
10
- });
11
- const _logger = require("../utils/logger");
12
- const microserviceOptions = {
1
+ import { logger } from "../utils/logger.js";
2
+ export const microserviceOptions = {
13
3
  onServerRun: (_app)=>{
14
- _logger.logger.log(`running `);
15
- _logger.logger.log(`Env: ${process.env.NODE_ENV}`);
4
+ logger.log(`running `);
5
+ logger.log(`Env: ${process.env.NODE_ENV}`);
16
6
  if (process.env.DB_NAME) {
17
- _logger.logger.log(`database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`);
7
+ logger.log(`database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`);
18
8
  }
19
9
  },
20
10
  onServerError: (error, _app)=>{
21
- _logger.logger.error(`Server failed to run`);
11
+ logger.error(`Server failed to run`);
22
12
  throw error;
23
13
  }
24
14
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configs/microservice.ts"],"sourcesContent":["import { MicroserviceOptions } from '@nestjs/microservices';\nimport { logger } from '../utils/logger';\nimport { INestMicroservice } from '@nestjs/common';\n\nexport type IMicroserviceOptions = MicroserviceOptions & {\n onServerRun?: (app: INestMicroservice) => void | Promise<void>;\n onServerError?: (\n error: Error,\n app: INestMicroservice,\n ) => void | Promise<void>;\n};\n\nexport const microserviceOptions: IMicroserviceOptions = {\n onServerRun: (_app) => {\n logger.log(`running `);\n logger.log(`Env: ${process.env.NODE_ENV}`);\n if (process.env.DB_NAME) {\n logger.log(\n `database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`,\n );\n }\n },\n onServerError: (error, _app) => {\n logger.error(`Server failed to run`);\n throw error;\n },\n};\n"],"names":["microserviceOptions","onServerRun","_app","logger","log","process","env","NODE_ENV","DB_NAME","DB_HOST","onServerError","error"],"mappings":";;;;+BAYaA;;;eAAAA;;;wBAXU;AAWhB,MAAMA,sBAA4C;IACvDC,aAAa,CAACC;QACZC,cAAM,CAACC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrBD,cAAM,CAACC,GAAG,CAAC,CAAC,KAAK,EAAEC,QAAQC,GAAG,CAACC,QAAQ,EAAE;QACzC,IAAIF,QAAQC,GAAG,CAACE,OAAO,EAAE;YACvBL,cAAM,CAACC,GAAG,CACR,CAAC,UAAU,EAAEC,QAAQC,GAAG,CAACE,OAAO,CAAC,CAAC,EAAEH,QAAQC,GAAG,CAACG,OAAO,IAAI,aAAa;QAE5E;IACF;IACAC,eAAe,CAACC,OAAOT;QACrBC,cAAM,CAACQ,KAAK,CAAC,CAAC,oBAAoB,CAAC;QACnC,MAAMA;IACR;AACF"}
1
+ {"version":3,"sources":["../../../src/configs/microservice.ts"],"sourcesContent":["import { MicroserviceOptions } from '@nestjs/microservices';\nimport { logger } from '../utils/logger.js';\nimport { INestMicroservice } from '@nestjs/common';\n\nexport type IMicroserviceOptions = MicroserviceOptions & {\n onServerRun?: (app: INestMicroservice) => void | Promise<void>;\n onServerError?: (\n error: Error,\n app: INestMicroservice,\n ) => void | Promise<void>;\n};\n\nexport const microserviceOptions: IMicroserviceOptions = {\n onServerRun: (_app) => {\n logger.log(`running `);\n logger.log(`Env: ${process.env.NODE_ENV}`);\n if (process.env.DB_NAME) {\n logger.log(\n `database: ${process.env.DB_NAME}@${process.env.DB_HOST || 'localhost'}`,\n );\n }\n },\n onServerError: (error, _app) => {\n logger.error(`Server failed to run`);\n throw error;\n },\n};\n"],"names":["logger","microserviceOptions","onServerRun","_app","log","process","env","NODE_ENV","DB_NAME","DB_HOST","onServerError","error"],"mappings":"AACA,SAASA,MAAM,QAAQ,qBAAqB;AAW5C,OAAO,MAAMC,sBAA4C;IACvDC,aAAa,CAACC;QACZH,OAAOI,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrBJ,OAAOI,GAAG,CAAC,CAAC,KAAK,EAAEC,QAAQC,GAAG,CAACC,QAAQ,EAAE;QACzC,IAAIF,QAAQC,GAAG,CAACE,OAAO,EAAE;YACvBR,OAAOI,GAAG,CACR,CAAC,UAAU,EAAEC,QAAQC,GAAG,CAACE,OAAO,CAAC,CAAC,EAAEH,QAAQC,GAAG,CAACG,OAAO,IAAI,aAAa;QAE5E;IACF;IACAC,eAAe,CAACC,OAAOR;QACrBH,OAAOW,KAAK,CAAC,CAAC,oBAAoB,CAAC;QACnC,MAAMA;IACR;AACF,EAAE"}
@@ -1,23 +1,34 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "MultiQueueRabbitMQServer", {
6
- enumerable: true,
7
- get: function() {
8
- return MultiQueueRabbitMQServer;
1
+ import { Server } from "@nestjs/microservices";
2
+ import { Logger, NotImplementedException } from "@nestjs/common";
3
+ import { connect } from "amqplib";
4
+ /**
5
+ * a custom RabbitMQ transport that creates multiple queues in a single channel
6
+ * https://docs.nestjs.com/microservices/custom-transport
7
+ */ // todo: options: channel, queues[], method= sendToQueue|publish, logLevel=dev?info:log
8
+ export class MultiQueueRabbitMQServer extends Server {
9
+ constructor(configService){
10
+ super(), this.configService = configService, this.logger = new Logger(MultiQueueRabbitMQServer.name);
11
+ this.options = {
12
+ queues: [
13
+ // holds messages about creating and updating assets such as users, vehicles
14
+ 'assets',
15
+ // holds authentication messages
16
+ 'auth',
17
+ // holds messages about maps calculations
18
+ 'maps',
19
+ // holds messages about orders updates, such as `orders.received`
20
+ 'orders'
21
+ ],
22
+ // `MICROSERVICE_URLS` is multiple space-separated urls separated
23
+ connection: this.configService.get('MICROSERVICE_URLS', 'amqp://localhost:5672').split(' ')[0]
24
+ };
9
25
  }
10
- });
11
- const _microservices = require("@nestjs/microservices");
12
- const _common = require("@nestjs/common");
13
- const _amqplib = require("amqplib");
14
- let MultiQueueRabbitMQServer = class MultiQueueRabbitMQServer extends _microservices.Server {
15
26
  get configs() {
16
27
  return this._configs;
17
28
  }
18
29
  async listen(callback) {
19
30
  try {
20
- let connection = typeof this.options.connection === 'string' ? await (0, _amqplib.connect)(this.options.connection) : this.options.connection;
31
+ let connection = typeof this.options.connection === 'string' ? await connect(this.options.connection) : this.options.connection;
21
32
  this._configs = {
22
33
  ...this.options,
23
34
  connection,
@@ -64,28 +75,11 @@ let MultiQueueRabbitMQServer = class MultiQueueRabbitMQServer extends _microserv
64
75
  }
65
76
  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
66
77
  on(_event, _callback) {
67
- throw new _common.NotImplementedException();
78
+ throw new NotImplementedException();
68
79
  }
69
80
  unwrap() {
70
- throw new _common.NotImplementedException();
71
- }
72
- constructor(configService){
73
- super(), this.configService = configService, this.logger = new _common.Logger(MultiQueueRabbitMQServer.name);
74
- this.options = {
75
- queues: [
76
- // holds messages about creating and updating assets such as users, vehicles
77
- 'assets',
78
- // holds authentication messages
79
- 'auth',
80
- // holds messages about maps calculations
81
- 'maps',
82
- // holds messages about orders updates, such as `orders.received`
83
- 'orders'
84
- ],
85
- // `MICROSERVICE_URLS` is multiple space-separated urls separated
86
- connection: this.configService.get('MICROSERVICE_URLS', 'amqp://localhost:5672').split(' ')[0]
87
- };
81
+ throw new NotImplementedException();
88
82
  }
89
- };
83
+ }
90
84
 
91
85
  //# sourceMappingURL=multi-queue-rabbitmq-server.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configs/multi-queue-rabbitmq-server.ts"],"sourcesContent":["import { type CustomTransportStrategy, Server } from '@nestjs/microservices';\nimport { Logger, NotImplementedException } from '@nestjs/common';\nimport { type Channel, type ChannelModel, connect } from 'amqplib';\nimport { ConfigService } from '@nestjs/config';\n\nexport interface MultiQueueOptions {\n connection: ChannelModel | string;\n queues: string[];\n channel?: Channel;\n}\n\n/**\n * the final configs after resolving the provided options\n */\nexport interface MultiQueueConfigs extends Omit<\n Required<MultiQueueOptions>,\n 'connection'\n> {\n connection: ChannelModel;\n}\n\n/**\n * a custom RabbitMQ transport that creates multiple queues in a single channel\n * https://docs.nestjs.com/microservices/custom-transport\n */\n// todo: options: channel, queues[], method= sendToQueue|publish, logLevel=dev?info:log\n\nexport class MultiQueueRabbitMQServer\n extends Server\n implements CustomTransportStrategy\n{\n protected readonly logger = new Logger(MultiQueueRabbitMQServer.name);\n // todo: pass options in the constructor using DI token\n private options: MultiQueueOptions;\n private _configs: MultiQueueConfigs;\n\n constructor(private readonly configService: ConfigService) {\n super();\n\n this.options = {\n queues: [\n // holds messages about creating and updating assets such as users, vehicles\n 'assets',\n // holds authentication messages\n 'auth',\n // holds messages about maps calculations\n 'maps',\n // holds messages about orders updates, such as `orders.received`\n 'orders',\n ],\n // `MICROSERVICE_URLS` is multiple space-separated urls separated\n connection: this.configService\n .get<string>('MICROSERVICE_URLS', 'amqp://localhost:5672')\n .split(' ')[0],\n };\n }\n\n get configs() {\n return this._configs;\n }\n\n async listen(callback: () => void) {\n try {\n let connection =\n typeof this.options.connection === 'string'\n ? await connect(this.options.connection)\n : this.options.connection;\n\n this._configs = {\n ...this.options,\n connection,\n channel: this.options.channel || (await connection.createChannel()),\n };\n\n this.logger.log('Successfully connected to RabbitMQ.');\n\n for (let queue of this.options.queues) {\n await this.configs.channel.assertQueue(queue, { durable: true });\n this.logger.log(`Listening on queue: ${queue}`);\n\n await this.configs.channel.consume(queue, (message) => {\n let content = message?.content.toString();\n\n if (content) {\n let { pattern, data } = JSON.parse(content);\n let handler = this.messageHandlers.get(pattern);\n\n if (handler) {\n void handler(data).then((res) => {\n if (message?.properties?.replyTo) {\n // ✅ Check if replyTo exists\n this.configs.channel.sendToQueue(\n message.properties.replyTo,\n Buffer.from(JSON.stringify(res)),\n {\n correlationId: message.properties.correlationId,\n },\n );\n } else {\n this.logger.warn(\n `No replyTo queue specified for pattern: ${pattern}`,\n );\n }\n });\n } else {\n this.logger.warn(`No handler found for pattern: ${pattern}`);\n }\n\n this.configs.channel.ack(message!);\n }\n });\n }\n\n callback();\n } catch (error) {\n this.logger.error('Failed to connect to RabbitMQ', error);\n }\n }\n\n async close() {\n await this.configs.channel.close();\n await this.configs.connection.close();\n this.logger.log('RabbitMQ connection closed.');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n on(_event: string, _callback: Function) {\n throw new NotImplementedException();\n }\n\n unwrap<T = never>(): T {\n throw new NotImplementedException();\n }\n}\n"],"names":["MultiQueueRabbitMQServer","Server","configs","_configs","listen","callback","connection","options","connect","channel","createChannel","logger","log","queue","queues","assertQueue","durable","consume","message","content","toString","pattern","data","JSON","parse","handler","messageHandlers","get","then","res","properties","replyTo","sendToQueue","Buffer","from","stringify","correlationId","warn","ack","error","close","on","_event","_callback","NotImplementedException","unwrap","configService","Logger","name","split"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/configs/multi-queue-rabbitmq-server.ts"],"sourcesContent":["import { type CustomTransportStrategy, Server } from '@nestjs/microservices';\nimport { Logger, NotImplementedException } from '@nestjs/common';\nimport { type Channel, type ChannelModel, connect } from 'amqplib';\nimport { ConfigService } from '@nestjs/config';\n\nexport interface MultiQueueOptions {\n connection: ChannelModel | string;\n queues: string[];\n channel?: Channel;\n}\n\n/**\n * the final configs after resolving the provided options\n */\nexport interface MultiQueueConfigs extends Omit<\n Required<MultiQueueOptions>,\n 'connection'\n> {\n connection: ChannelModel;\n}\n\n/**\n * a custom RabbitMQ transport that creates multiple queues in a single channel\n * https://docs.nestjs.com/microservices/custom-transport\n */\n// todo: options: channel, queues[], method= sendToQueue|publish, logLevel=dev?info:log\n\nexport class MultiQueueRabbitMQServer\n extends Server\n implements CustomTransportStrategy\n{\n protected readonly logger = new Logger(MultiQueueRabbitMQServer.name);\n // todo: pass options in the constructor using DI token\n private options: MultiQueueOptions;\n private _configs: MultiQueueConfigs;\n\n constructor(private readonly configService: ConfigService) {\n super();\n\n this.options = {\n queues: [\n // holds messages about creating and updating assets such as users, vehicles\n 'assets',\n // holds authentication messages\n 'auth',\n // holds messages about maps calculations\n 'maps',\n // holds messages about orders updates, such as `orders.received`\n 'orders',\n ],\n // `MICROSERVICE_URLS` is multiple space-separated urls separated\n connection: this.configService\n .get<string>('MICROSERVICE_URLS', 'amqp://localhost:5672')\n .split(' ')[0],\n };\n }\n\n get configs() {\n return this._configs;\n }\n\n async listen(callback: () => void) {\n try {\n let connection =\n typeof this.options.connection === 'string'\n ? await connect(this.options.connection)\n : this.options.connection;\n\n this._configs = {\n ...this.options,\n connection,\n channel: this.options.channel || (await connection.createChannel()),\n };\n\n this.logger.log('Successfully connected to RabbitMQ.');\n\n for (let queue of this.options.queues) {\n await this.configs.channel.assertQueue(queue, { durable: true });\n this.logger.log(`Listening on queue: ${queue}`);\n\n await this.configs.channel.consume(queue, (message) => {\n let content = message?.content.toString();\n\n if (content) {\n let { pattern, data } = JSON.parse(content);\n let handler = this.messageHandlers.get(pattern);\n\n if (handler) {\n void handler(data).then((res) => {\n if (message?.properties?.replyTo) {\n // ✅ Check if replyTo exists\n this.configs.channel.sendToQueue(\n message.properties.replyTo,\n Buffer.from(JSON.stringify(res)),\n {\n correlationId: message.properties.correlationId,\n },\n );\n } else {\n this.logger.warn(\n `No replyTo queue specified for pattern: ${pattern}`,\n );\n }\n });\n } else {\n this.logger.warn(`No handler found for pattern: ${pattern}`);\n }\n\n this.configs.channel.ack(message!);\n }\n });\n }\n\n callback();\n } catch (error) {\n this.logger.error('Failed to connect to RabbitMQ', error);\n }\n }\n\n async close() {\n await this.configs.channel.close();\n await this.configs.connection.close();\n this.logger.log('RabbitMQ connection closed.');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n on(_event: string, _callback: Function) {\n throw new NotImplementedException();\n }\n\n unwrap<T = never>(): T {\n throw new NotImplementedException();\n }\n}\n"],"names":["Server","Logger","NotImplementedException","connect","MultiQueueRabbitMQServer","configService","logger","name","options","queues","connection","get","split","configs","_configs","listen","callback","channel","createChannel","log","queue","assertQueue","durable","consume","message","content","toString","pattern","data","JSON","parse","handler","messageHandlers","then","res","properties","replyTo","sendToQueue","Buffer","from","stringify","correlationId","warn","ack","error","close","on","_event","_callback","unwrap"],"mappings":"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"}
@@ -1,14 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "redisConnfig", {
6
- enumerable: true,
7
- get: function() {
8
- return redisConnfig;
9
- }
10
- });
11
- const redisConnfig = {
1
+ export const redisConnfig = {
12
2
  port: Number.parseInt(process.env.REDIS_PORT || '6379', 10),
13
3
  redisUrl: process.env.REDIS_URL || 'redis://redis'
14
4
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/configs/redis-config.ts"],"sourcesContent":["export interface RedisConfig {\n redisUrl: string;\n port: number;\n}\n\nexport const redisConnfig: RedisConfig = {\n port: Number.parseInt(process.env.REDIS_PORT || '6379', 10),\n redisUrl: process.env.REDIS_URL || 'redis://redis',\n};\n"],"names":["redisConnfig","port","Number","parseInt","process","env","REDIS_PORT","redisUrl","REDIS_URL"],"mappings":";;;;+BAKaA;;;eAAAA;;;AAAN,MAAMA,eAA4B;IACvCC,MAAMC,OAAOC,QAAQ,CAACC,QAAQC,GAAG,CAACC,UAAU,IAAI,QAAQ;IACxDC,UAAUH,QAAQC,GAAG,CAACG,SAAS,IAAI;AACrC"}
1
+ {"version":3,"sources":["../../../src/configs/redis-config.ts"],"sourcesContent":["export interface RedisConfig {\n redisUrl: string;\n port: number;\n}\n\nexport const redisConnfig: RedisConfig = {\n port: Number.parseInt(process.env.REDIS_PORT || '6379', 10),\n redisUrl: process.env.REDIS_URL || 'redis://redis',\n};\n"],"names":["redisConnfig","port","Number","parseInt","process","env","REDIS_PORT","redisUrl","REDIS_URL"],"mappings":"AAKA,OAAO,MAAMA,eAA4B;IACvCC,MAAMC,OAAOC,QAAQ,CAACC,QAAQC,GAAG,CAACC,UAAU,IAAI,QAAQ;IACxDC,UAAUH,QAAQC,GAAG,CAACG,SAAS,IAAI;AACrC,EAAE"}
@@ -1,3 +1,3 @@
1
1
  import { type NestFastifyApplication } from '@nestjs/platform-fastify';
2
- import { type IAppConfig } from './configs/app';
2
+ import { type IAppConfig } from './configs/app.js';
3
3
  export declare function createApp(module: any, options?: IAppConfig): Promise<NestFastifyApplication<import("fastify").RawServerDefault>>;