@lyrolab/nest-shared 0.0.0-semantically-released

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 (90) hide show
  1. package/.releaserc.json +25 -0
  2. package/CHANGELOG.md +17 -0
  3. package/README.md +45 -0
  4. package/dist/ai/index.d.ts +2 -0
  5. package/dist/ai/index.js +19 -0
  6. package/dist/ai/index.js.map +1 -0
  7. package/dist/ai/services/ai.service.d.ts +14 -0
  8. package/dist/ai/services/ai.service.js +58 -0
  9. package/dist/ai/services/ai.service.js.map +1 -0
  10. package/dist/ai/shared-ai.module.d.ts +2 -0
  11. package/dist/ai/shared-ai.module.js +21 -0
  12. package/dist/ai/shared-ai.module.js.map +1 -0
  13. package/dist/app.module.d.ts +2 -0
  14. package/dist/app.module.js +21 -0
  15. package/dist/app.module.js.map +1 -0
  16. package/dist/bull/index.d.ts +1 -0
  17. package/dist/bull/index.js +18 -0
  18. package/dist/bull/index.js.map +1 -0
  19. package/dist/bull/shared-bull.module.d.ts +4 -0
  20. package/dist/bull/shared-bull.module.js +40 -0
  21. package/dist/bull/shared-bull.module.js.map +1 -0
  22. package/dist/cache/index.d.ts +1 -0
  23. package/dist/cache/index.js +18 -0
  24. package/dist/cache/index.js.map +1 -0
  25. package/dist/cache/shared-cache.module.d.ts +4 -0
  26. package/dist/cache/shared-cache.module.js +42 -0
  27. package/dist/cache/shared-cache.module.js.map +1 -0
  28. package/dist/database/filters/typeorm-exception.filter.d.ts +7 -0
  29. package/dist/database/filters/typeorm-exception.filter.js +35 -0
  30. package/dist/database/filters/typeorm-exception.filter.js.map +1 -0
  31. package/dist/database/helpers/find-main-path.d.ts +1 -0
  32. package/dist/database/helpers/find-main-path.js +23 -0
  33. package/dist/database/helpers/find-main-path.js.map +1 -0
  34. package/dist/database/index.d.ts +2 -0
  35. package/dist/database/index.js +19 -0
  36. package/dist/database/index.js.map +1 -0
  37. package/dist/database/shared-database.module.d.ts +18 -0
  38. package/dist/database/shared-database.module.js +120 -0
  39. package/dist/database/shared-database.module.js.map +1 -0
  40. package/dist/health/health.controller.d.ts +7 -0
  41. package/dist/health/health.controller.js +39 -0
  42. package/dist/health/health.controller.js.map +1 -0
  43. package/dist/health/index.d.ts +1 -0
  44. package/dist/health/index.js +18 -0
  45. package/dist/health/index.js.map +1 -0
  46. package/dist/health/shared-health.module.d.ts +2 -0
  47. package/dist/health/shared-health.module.js +22 -0
  48. package/dist/health/shared-health.module.js.map +1 -0
  49. package/dist/queue/controllers/queue.controller.d.ts +7 -0
  50. package/dist/queue/controllers/queue.controller.js +40 -0
  51. package/dist/queue/controllers/queue.controller.js.map +1 -0
  52. package/dist/queue/decorators/queue.decorator.d.ts +5 -0
  53. package/dist/queue/decorators/queue.decorator.js +6 -0
  54. package/dist/queue/decorators/queue.decorator.js.map +1 -0
  55. package/dist/queue/index.d.ts +5 -0
  56. package/dist/queue/index.js +22 -0
  57. package/dist/queue/index.js.map +1 -0
  58. package/dist/queue/interfaces/queue-options.interface.d.ts +13 -0
  59. package/dist/queue/interfaces/queue-options.interface.js +3 -0
  60. package/dist/queue/interfaces/queue-options.interface.js.map +1 -0
  61. package/dist/queue/models/dto/queue-add.dto.d.ts +4 -0
  62. package/dist/queue/models/dto/queue-add.dto.js +28 -0
  63. package/dist/queue/models/dto/queue-add.dto.js.map +1 -0
  64. package/dist/queue/models/job-processor-interface.d.ts +4 -0
  65. package/dist/queue/models/job-processor-interface.js +3 -0
  66. package/dist/queue/models/job-processor-interface.js.map +1 -0
  67. package/dist/queue/processors/queue.processor.d.ts +17 -0
  68. package/dist/queue/processors/queue.processor.js +109 -0
  69. package/dist/queue/processors/queue.processor.js.map +1 -0
  70. package/dist/queue/queue.constants.d.ts +2 -0
  71. package/dist/queue/queue.constants.js +6 -0
  72. package/dist/queue/queue.constants.js.map +1 -0
  73. package/dist/queue/services/queue.service.d.ts +6 -0
  74. package/dist/queue/services/queue.service.js +35 -0
  75. package/dist/queue/services/queue.service.js.map +1 -0
  76. package/dist/queue/shared-queue.module.d.ts +8 -0
  77. package/dist/queue/shared-queue.module.js +90 -0
  78. package/dist/queue/shared-queue.module.js.map +1 -0
  79. package/dist/redis/index.d.ts +2 -0
  80. package/dist/redis/index.js +19 -0
  81. package/dist/redis/index.js.map +1 -0
  82. package/dist/redis/redis.config.d.ts +4 -0
  83. package/dist/redis/redis.config.js +11 -0
  84. package/dist/redis/redis.config.js.map +1 -0
  85. package/dist/redis/shared-redis.module.d.ts +9 -0
  86. package/dist/redis/shared-redis.module.js +68 -0
  87. package/dist/redis/shared-redis.module.js.map +1 -0
  88. package/dist/tsconfig.tsbuildinfo +1 -0
  89. package/eslint.config.mjs +35 -0
  90. package/package.json +165 -0
@@ -0,0 +1,25 @@
1
+ {
2
+ "branches": ["main"],
3
+ "plugins": [
4
+ "@semantic-release/commit-analyzer",
5
+ "@semantic-release/release-notes-generator",
6
+ "@semantic-release/changelog",
7
+ "@semantic-release/npm"
8
+ ],
9
+ "preset": "angular",
10
+ "releaseRules": [
11
+ { "type": "feat", "release": "minor" },
12
+ { "type": "fix", "release": "patch" },
13
+ { "type": "perf", "release": "patch" },
14
+ { "type": "docs", "release": "patch" },
15
+ { "type": "style", "release": "patch" },
16
+ { "type": "refactor", "release": "patch" },
17
+ { "type": "test", "release": "patch" },
18
+ { "type": "build", "release": "patch" },
19
+ { "type": "ci", "release": "patch" },
20
+ { "type": "chore", "release": "patch" }
21
+ ],
22
+ "npmPublish": true,
23
+ "pkgRoot": ".",
24
+ "tarballDir": "dist"
25
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ ## [1.0.1](https://github.com/lyrolab/nest-shared/compare/v1.0.0...v1.0.1) (2025-04-10)
2
+
3
+ ### Bug Fixes
4
+
5
+ - tsconfig ([f6fe7e2](https://github.com/lyrolab/nest-shared/commit/f6fe7e20ec31a4ec0fdf1ea2521db2c5e5a5925c))
6
+
7
+ # 1.0.0 (2025-04-10)
8
+
9
+ ### Bug Fixes
10
+
11
+ - setup app token ([901a88b](https://github.com/lyrolab/nest-shared/commit/901a88b530976e37b1d73bcbd85764d19faa2864))
12
+
13
+ ### Features
14
+
15
+ - add semantic release ([8945d0e](https://github.com/lyrolab/nest-shared/commit/8945d0e1830e57c829174c7165594daff2228a61))
16
+ - common modules ([e732d32](https://github.com/lyrolab/nest-shared/commit/e732d32b71aa55cf3c3499fdafcaa3f44efaf1f3))
17
+ - export per module ([fe7f053](https://github.com/lyrolab/nest-shared/commit/fe7f053939d3f72cbe4a80f52878885e8ece2e3c))
package/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # Nest Shared
2
+
3
+ A collection of shared modules for NestJS applications used across our company's projects. This package provides reusable components for common functionality including AI, Redis/Cache/Bull/Queue, and Database operations.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @lyrolab/nest-shared
9
+ ```
10
+
11
+ ## Features
12
+
13
+ - [Database Module](./src/database/README.md): Shared database configurations and utilities
14
+ - [AI Module](./src/ai/README.md): Common AI-related functionality
15
+ - [Job Processing Module](./src/queue/README.md): Shared queue management
16
+ - [Caching Module](./src/cache/README.md): Shared caching functionality
17
+
18
+ ## Quick Start
19
+
20
+ 1. Install the package:
21
+
22
+ ```bash
23
+ npm install @lyrolab/nest-shared
24
+ ```
25
+
26
+ 2. Import the modules you need in your `app.module.ts`:
27
+
28
+ ```typescript
29
+ import { SharedDatabaseModule } from "@lyrolab/nest-shared/database"
30
+ import { AiModule } from "@lyrolab/nest-shared/ai"
31
+ import { SharedQueueModule } from "@lyrolab/nest-shared/queue"
32
+ import { SharedCacheModule } from "@lyrolab/nest-shared/cache"
33
+
34
+ @Module({
35
+ imports: [
36
+ SharedDatabaseModule.forRoot(),
37
+ AiModule,
38
+ SharedQueueModule,
39
+ SharedCacheModule.forRoot(),
40
+ ],
41
+ })
42
+ export class AppModule {}
43
+ ```
44
+
45
+ For detailed documentation and configuration options for each module, please refer to their respective README files.
@@ -0,0 +1,2 @@
1
+ export * from "./shared-ai.module";
2
+ export * from "./services/ai.service";
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./shared-ai.module"), exports);
18
+ __exportStar(require("./services/ai.service"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,wDAAqC"}
@@ -0,0 +1,14 @@
1
+ import { LanguageModelV1 } from "ai";
2
+ import { Cache } from "cache-manager";
3
+ export type BuildModelOptions = {
4
+ model?: string;
5
+ };
6
+ export declare class AiService {
7
+ private cache;
8
+ private readonly openrouter;
9
+ private readonly openrouterChat;
10
+ constructor(cache: Cache);
11
+ get model(): LanguageModelV1;
12
+ buildModel({ model }?: BuildModelOptions): LanguageModelV1;
13
+ private wrapGenerate;
14
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AiService = void 0;
16
+ const cache_manager_1 = require("@nestjs/cache-manager");
17
+ const common_1 = require("@nestjs/common");
18
+ const ai_sdk_provider_1 = require("@openrouter/ai-sdk-provider");
19
+ const ai_1 = require("ai");
20
+ const DEFAULT_MODEL = "google/gemini-2.0-flash-001";
21
+ let AiService = class AiService {
22
+ cache;
23
+ openrouter;
24
+ openrouterChat;
25
+ constructor(cache) {
26
+ this.cache = cache;
27
+ this.openrouter = (0, ai_sdk_provider_1.createOpenRouter)({
28
+ apiKey: process.env.OPENROUTER_API_KEY,
29
+ });
30
+ this.openrouterChat = this.buildModel();
31
+ }
32
+ get model() {
33
+ return this.openrouterChat;
34
+ }
35
+ buildModel({ model } = {}) {
36
+ return (0, ai_1.wrapLanguageModel)({
37
+ model: this.openrouter.chat(model ?? DEFAULT_MODEL),
38
+ middleware: [{ wrapGenerate: (options) => this.wrapGenerate(options) }],
39
+ });
40
+ }
41
+ async wrapGenerate({ doGenerate, params, }) {
42
+ const cacheKey = "ai:" + JSON.stringify(params);
43
+ const cachedResult = await this.cache.get(cacheKey);
44
+ if (cachedResult) {
45
+ return cachedResult;
46
+ }
47
+ const result = await doGenerate();
48
+ await this.cache.set(cacheKey, result);
49
+ return result;
50
+ }
51
+ };
52
+ exports.AiService = AiService;
53
+ exports.AiService = AiService = __decorate([
54
+ (0, common_1.Injectable)(),
55
+ __param(0, (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER)),
56
+ __metadata("design:paramtypes", [Object])
57
+ ], AiService);
58
+ //# sourceMappingURL=ai.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../../src/ai/services/ai.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAqD;AACrD,2CAAmD;AACnD,iEAGoC;AACpC,2BAIW;AAGX,MAAM,aAAa,GAAG,6BAA6B,CAAA;AAO5C,IAAM,SAAS,GAAf,MAAM,SAAS;IAIuB;IAH1B,UAAU,CAAoB;IAC9B,cAAc,CAAiB;IAEhD,YAA2C,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QACrD,IAAI,CAAC,UAAU,GAAG,IAAA,kCAAgB,EAAC;YACjC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;SACvC,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,UAAU,CAAC,EAAE,KAAK,KAAwB,EAAE;QAC1C,OAAO,IAAA,sBAAiB,EAAC;YACvB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;YACnD,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;SACxE,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,EACzB,UAAU,EACV,MAAM,GAGJ;QACF,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAE/C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAkE,CAAA;QAC3E,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;QAEjC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACtC,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAxCY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GAJvB,SAAS,CAwCrB"}
@@ -0,0 +1,2 @@
1
+ export declare class SharedAiModule {
2
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SharedAiModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const ai_service_1 = require("./services/ai.service");
12
+ let SharedAiModule = class SharedAiModule {
13
+ };
14
+ exports.SharedAiModule = SharedAiModule;
15
+ exports.SharedAiModule = SharedAiModule = __decorate([
16
+ (0, common_1.Module)({
17
+ providers: [ai_service_1.AiService],
18
+ exports: [ai_service_1.AiService],
19
+ })
20
+ ], SharedAiModule);
21
+ //# sourceMappingURL=shared-ai.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-ai.module.js","sourceRoot":"","sources":["../../src/ai/shared-ai.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuC;AACvC,sDAAiD;AAM1C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAJ1B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sBAAS,CAAC;QACtB,OAAO,EAAE,CAAC,sBAAS,CAAC;KACrB,CAAC;GACW,cAAc,CAAG"}
@@ -0,0 +1,2 @@
1
+ export declare class AppModule {
2
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AppModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let AppModule = class AppModule {
12
+ };
13
+ exports.AppModule = AppModule;
14
+ exports.AppModule = AppModule = __decorate([
15
+ (0, common_1.Module)({
16
+ imports: [],
17
+ controllers: [],
18
+ providers: [],
19
+ })
20
+ ], AppModule);
21
+ //# sourceMappingURL=app.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuC;AAOhC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IALrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;KACd,CAAC;GACW,SAAS,CAAG"}
@@ -0,0 +1 @@
1
+ export * from "./shared-bull.module";
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./shared-bull.module"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bull/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC"}
@@ -0,0 +1,4 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ export declare class SharedBullModule {
3
+ static forRoot(): DynamicModule;
4
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var SharedBullModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SharedBullModule = void 0;
11
+ const bullmq_1 = require("@nestjs/bullmq");
12
+ const common_1 = require("@nestjs/common");
13
+ const config_1 = require("@nestjs/config");
14
+ const shared_redis_module_1 = require("../redis/shared-redis.module");
15
+ const redis_config_1 = require("../redis/redis.config");
16
+ let SharedBullModule = SharedBullModule_1 = class SharedBullModule {
17
+ static forRoot() {
18
+ return {
19
+ module: SharedBullModule_1,
20
+ imports: [
21
+ shared_redis_module_1.SharedRedisModule,
22
+ bullmq_1.BullModule.forRootAsync({
23
+ imports: [config_1.ConfigModule],
24
+ inject: [redis_config_1.RedisConfig],
25
+ useFactory: (redisConfig) => ({
26
+ connection: {
27
+ url: redisConfig.url,
28
+ },
29
+ }),
30
+ }),
31
+ ],
32
+ exports: [bullmq_1.BullModule],
33
+ };
34
+ }
35
+ };
36
+ exports.SharedBullModule = SharedBullModule;
37
+ exports.SharedBullModule = SharedBullModule = SharedBullModule_1 = __decorate([
38
+ (0, common_1.Module)({})
39
+ ], SharedBullModule);
40
+ //# sourceMappingURL=shared-bull.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-bull.module.js","sourceRoot":"","sources":["../../src/bull/shared-bull.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA2C;AAC3C,2CAAsD;AACtD,2CAA6C;AAC7C,sEAAgE;AAChE,wDAAmD;AAG5C,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,OAAO,EAAE;gBACP,uCAAiB;gBACjB,mBAAU,CAAC,YAAY,CAAC;oBACtB,OAAO,EAAE,CAAC,qBAAY,CAAC;oBACvB,MAAM,EAAE,CAAC,0BAAW,CAAC;oBACrB,UAAU,EAAE,CAAC,WAAwB,EAAE,EAAE,CAAC,CAAC;wBACzC,UAAU,EAAE;4BACV,GAAG,EAAE,WAAW,CAAC,GAAG;yBACrB;qBACF,CAAC;iBACH,CAAC;aACH;YACD,OAAO,EAAE,CAAC,mBAAU,CAAC;SACtB,CAAA;IACH,CAAC;CACF,CAAA;AAnBY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CAmB5B"}
@@ -0,0 +1 @@
1
+ export * from "./shared-cache.module";
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./shared-cache.module"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC"}
@@ -0,0 +1,4 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ export declare class SharedCacheModule {
3
+ static forRoot(): DynamicModule;
4
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var SharedCacheModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SharedCacheModule = void 0;
11
+ const redis_1 = require("@keyv/redis");
12
+ const cache_manager_1 = require("@nestjs/cache-manager");
13
+ const common_1 = require("@nestjs/common");
14
+ const config_1 = require("@nestjs/config");
15
+ const redis_config_1 = require("../redis/redis.config");
16
+ const shared_redis_module_1 = require("../redis/shared-redis.module");
17
+ let SharedCacheModule = SharedCacheModule_1 = class SharedCacheModule {
18
+ static forRoot() {
19
+ return {
20
+ module: SharedCacheModule_1,
21
+ imports: [
22
+ shared_redis_module_1.SharedRedisModule,
23
+ cache_manager_1.CacheModule.registerAsync({
24
+ isGlobal: true,
25
+ useFactory: (configService, redisConfig) => ({
26
+ ttl: configService.get("CACHE_TTL")
27
+ ? +configService.get("CACHE_TTL") * 1000
28
+ : undefined,
29
+ stores: [new redis_1.default(redisConfig.url)],
30
+ }),
31
+ inject: [config_1.ConfigService, redis_config_1.RedisConfig],
32
+ }),
33
+ ],
34
+ exports: [cache_manager_1.CacheModule],
35
+ };
36
+ }
37
+ };
38
+ exports.SharedCacheModule = SharedCacheModule;
39
+ exports.SharedCacheModule = SharedCacheModule = SharedCacheModule_1 = __decorate([
40
+ (0, common_1.Module)({})
41
+ ], SharedCacheModule);
42
+ //# sourceMappingURL=shared-cache.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-cache.module.js","sourceRoot":"","sources":["../../src/cache/shared-cache.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,uCAAmC;AACnC,yDAAmD;AACnD,2CAAsD;AACtD,2CAA8C;AAC9C,wDAAmD;AACnD,sEAAgE;AAGzD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE;gBACP,uCAAiB;gBACjB,2BAAW,CAAC,aAAa,CAAC;oBACxB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,CACV,aAA4B,EAC5B,WAAwB,EACxB,EAAE,CAAC,CAAC;wBACJ,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;4BACjC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI;4BACxC,CAAC,CAAC,SAAS;wBACb,MAAM,EAAE,CAAC,IAAI,eAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBACzC,CAAC;oBACF,MAAM,EAAE,CAAC,sBAAa,EAAE,0BAAW,CAAC;iBACrC,CAAC;aACH;YACD,OAAO,EAAE,CAAC,2BAAW,CAAC;SACvB,CAAA;IACH,CAAC;CACF,CAAA;AAvBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CAuB7B"}
@@ -0,0 +1,7 @@
1
+ import { ExceptionFilter, ArgumentsHost } from "@nestjs/common";
2
+ import { EntityNotFoundError } from "typeorm";
3
+ export declare class TypeOrmExceptionFilter implements ExceptionFilter {
4
+ private readonly logger;
5
+ catch(exception: EntityNotFoundError, host: ArgumentsHost): void;
6
+ private extractEntityName;
7
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var TypeOrmExceptionFilter_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TypeOrmExceptionFilter = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const typeorm_1 = require("typeorm");
13
+ let TypeOrmExceptionFilter = TypeOrmExceptionFilter_1 = class TypeOrmExceptionFilter {
14
+ logger = new common_1.Logger(TypeOrmExceptionFilter_1.name);
15
+ catch(exception, host) {
16
+ const ctx = host.switchToHttp();
17
+ const response = ctx.getResponse();
18
+ this.logger.debug(`Original TypeORM error: ${exception.message}`);
19
+ const entityName = this.extractEntityName(exception.message);
20
+ const message = entityName ? `${entityName} not found` : "Entity not found";
21
+ const notFoundException = new common_1.NotFoundException(message);
22
+ response
23
+ .status(notFoundException.getStatus())
24
+ .json(notFoundException.getResponse());
25
+ }
26
+ extractEntityName(errorMessage) {
27
+ const match = errorMessage.match(/entity of type "([^"]+)"/);
28
+ return match ? match[1] : null;
29
+ }
30
+ };
31
+ exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter;
32
+ exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter = TypeOrmExceptionFilter_1 = __decorate([
33
+ (0, common_1.Catch)(typeorm_1.EntityNotFoundError)
34
+ ], TypeOrmExceptionFilter);
35
+ //# sourceMappingURL=typeorm-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeorm-exception.filter.js","sourceRoot":"","sources":["../../../src/database/filters/typeorm-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAMuB;AAEvB,qCAA6C;AAGtC,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAChB,MAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAA;IAEjE,KAAK,CAAC,SAA8B,EAAE,IAAmB;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAA;QAE5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;QAEjE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAC5D,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAA;QAE3E,MAAM,iBAAiB,GAAG,IAAI,0BAAiB,CAAC,OAAO,CAAC,CAAA;QAExD,QAAQ;aACL,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;aACrC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEO,iBAAiB,CAAC,YAAoB;QAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAChC,CAAC;CACF,CAAA;AAvBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,cAAK,EAAC,6BAAmB,CAAC;GACd,sBAAsB,CAuBlC"}
@@ -0,0 +1 @@
1
+ export declare function findMainPath(): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findMainPath = findMainPath;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ function findMainPath() {
7
+ const rootPath = findUp("package.json", process.cwd());
8
+ if (!rootPath)
9
+ throw new Error("package.json not found");
10
+ return rootPath;
11
+ }
12
+ function findUp(path, cwd) {
13
+ const currentPath = cwd;
14
+ const parentPath = (0, path_1.dirname)(currentPath);
15
+ if (parentPath === currentPath) {
16
+ return null;
17
+ }
18
+ if ((0, fs_1.existsSync)((0, path_1.join)(currentPath, path))) {
19
+ return currentPath;
20
+ }
21
+ return findUp(path, parentPath);
22
+ }
23
+ //# sourceMappingURL=find-main-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-main-path.js","sourceRoot":"","sources":["../../../src/database/helpers/find-main-path.ts"],"names":[],"mappings":";;AAGA,oCAIC;AAPD,2BAA+B;AAC/B,+BAAoC;AAEpC,SAAgB,YAAY;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACxD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,GAAW;IACvC,MAAM,WAAW,GAAG,GAAG,CAAA;IACvB,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,WAAW,CAAC,CAAA;IACvC,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./shared-database.module";
2
+ export * from "./filters/typeorm-exception.filter";
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./shared-database.module"), exports);
18
+ __exportStar(require("./filters/typeorm-exception.filter"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAwC;AACxC,qEAAkD"}
@@ -0,0 +1,18 @@
1
+ import { DynamicModule, OnModuleDestroy } from "@nestjs/common";
2
+ import { DataSource } from "typeorm";
3
+ type SharedDatabaseModuleOptions = {
4
+ entities?: string[];
5
+ migrations?: string[];
6
+ };
7
+ export declare class SharedDatabaseModule implements OnModuleDestroy {
8
+ private static testContainer;
9
+ private static testDataSource;
10
+ static forRoot(options?: SharedDatabaseModuleOptions): DynamicModule;
11
+ private static createTestConfiguration;
12
+ private static createProductionConfiguration;
13
+ static getTestDataSource(): DataSource;
14
+ static closeTestConnection(): Promise<void>;
15
+ static clearTestDatabase(): Promise<void>;
16
+ onModuleDestroy(): Promise<void>;
17
+ }
18
+ export {};