@lyrolab/nest-shared 1.6.2 → 1.7.1

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/CHANGELOG.md CHANGED
@@ -1,4 +1,9 @@
1
- ## [1.6.2](https://github.com/lyrolab/nest-shared/compare/v1.6.1...v1.6.2) (2025-09-20)
1
+ ## [1.7.1](https://github.com/lyrolab/nest-shared/compare/v1.7.0...v1.7.1) (2026-02-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add repository url for npm provenance validation ([804c2ef](https://github.com/lyrolab/nest-shared/commit/804c2ef362121dc98180c86e95db06d8af35cf8e))
2
7
 
3
8
  ## [1.0.1](https://github.com/lyrolab/nest-shared/compare/v1.0.0...v1.0.1) (2025-04-10)
4
9
 
@@ -1,4 +1,4 @@
1
- import { LanguageModelV2 } from "@ai-sdk/provider";
1
+ import { LanguageModelV3 } from "@ai-sdk/provider";
2
2
  import { Cache } from "cache-manager";
3
3
  export type BuildModelOptions = {
4
4
  model?: string;
@@ -8,8 +8,8 @@ export declare class AiService {
8
8
  private readonly openrouter;
9
9
  private readonly openrouterChat;
10
10
  constructor(cache: Cache);
11
- get model(): LanguageModelV2;
12
- buildModel({ model }?: BuildModelOptions): LanguageModelV2;
13
- wrapModel(model: LanguageModelV2): LanguageModelV2;
11
+ get model(): LanguageModelV3;
12
+ buildModel({ model }?: BuildModelOptions): LanguageModelV3;
13
+ wrapModel(model: LanguageModelV3): LanguageModelV3;
14
14
  private wrapGenerate;
15
15
  }
@@ -38,7 +38,12 @@ let AiService = class AiService {
38
38
  wrapModel(model) {
39
39
  return (0, ai_1.wrapLanguageModel)({
40
40
  model,
41
- middleware: [{ wrapGenerate: (options) => this.wrapGenerate(options) }],
41
+ middleware: [
42
+ {
43
+ specificationVersion: "v3",
44
+ wrapGenerate: (options) => this.wrapGenerate(options),
45
+ },
46
+ ],
42
47
  });
43
48
  }
44
49
  async wrapGenerate({ doGenerate, params, }) {
@@ -1 +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,2BAAsC;AAItC,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,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,SAAS,CAAC,KAAsB;QAC9B,OAAO,IAAA,sBAAiB,EAAC;YACvB,KAAK;YACL,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;AA5CY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GAJvB,SAAS,CA4CrB"}
1
+ {"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../../src/ai/services/ai.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,yDAAqD;AACrD,2CAAmD;AACnD,iEAGoC;AACpC,2BAAsC;AAGtC,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,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,SAAS,CAAC,KAAsB;QAC9B,OAAO,IAAA,sBAAiB,EAAC;YACvB,KAAK;YACL,UAAU,EAAE;gBACV;oBACE,oBAAoB,EAAE,IAAI;oBAC1B,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;iBACtD;aACF;SACF,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;AAjDY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GAJvB,SAAS,CAiDrB"}
@@ -1,18 +1,24 @@
1
- import { DynamicModule, OnModuleDestroy } from "@nestjs/common";
1
+ import { DynamicModule } from "@nestjs/common";
2
2
  import { DataSource } from "typeorm";
3
+ type EntityClass = new (...args: any[]) => any;
3
4
  type SharedDatabaseModuleOptions = {
4
5
  entities?: string[];
5
6
  migrations?: string[];
6
7
  };
7
- export declare class SharedDatabaseModule implements OnModuleDestroy {
8
- private static testContainer;
8
+ type ForTestOptions = {
9
+ entities: EntityClass[];
10
+ };
11
+ export declare class SharedDatabaseModule {
9
12
  private static testDataSource;
13
+ private static testEntities;
10
14
  static forRoot(options?: SharedDatabaseModuleOptions): DynamicModule;
11
- private static createTestConfiguration;
12
- private static createProductionConfiguration;
15
+ static forTest(options: ForTestOptions): DynamicModule;
16
+ static setupTestDatabase(): Promise<void>;
17
+ static clearTestDatabase(): Promise<void>;
13
18
  static getTestDataSource(): DataSource;
14
19
  static closeTestConnection(): Promise<void>;
15
- static clearTestDatabase(): Promise<void>;
16
- onModuleDestroy(): Promise<void>;
20
+ private static getWorkerDbInfo;
21
+ private static workerDatabaseUrl;
22
+ private static createProductionConfiguration;
17
23
  }
18
24
  export {};
@@ -13,15 +13,13 @@ const config_1 = require("@nestjs/config");
13
13
  const typeorm_1 = require("@nestjs/typeorm");
14
14
  const path_1 = require("path");
15
15
  const find_main_path_1 = require("./helpers/find-main-path");
16
- const testcontainers_1 = require("testcontainers");
17
16
  const typeorm_2 = require("typeorm");
18
- const isJest = () => process.env.JEST_WORKER_ID !== undefined;
19
17
  const ENTITIES_PATH = "**/*.entity.{ts,js}";
20
18
  const MIGRATIONS_PATH = "dist/migrations/**/*.{ts,js}";
21
19
  let SharedDatabaseModule = class SharedDatabaseModule {
22
20
  static { SharedDatabaseModule_1 = this; }
23
- static testContainer;
24
21
  static testDataSource;
22
+ static testEntities;
25
23
  static forRoot(options = {}) {
26
24
  return {
27
25
  module: SharedDatabaseModule_1,
@@ -29,11 +27,7 @@ let SharedDatabaseModule = class SharedDatabaseModule {
29
27
  typeorm_1.TypeOrmModule.forRootAsync({
30
28
  imports: [config_1.ConfigModule],
31
29
  inject: [config_1.ConfigService],
32
- useFactory: async (configService) => {
33
- const isTestEnvironment = process.env.NODE_ENV === "test";
34
- if (isTestEnvironment) {
35
- return await this.createTestConfiguration(options);
36
- }
30
+ useFactory: (configService) => {
37
31
  return this.createProductionConfiguration(configService, options);
38
32
  },
39
33
  }),
@@ -41,77 +35,91 @@ let SharedDatabaseModule = class SharedDatabaseModule {
41
35
  exports: [typeorm_1.TypeOrmModule],
42
36
  };
43
37
  }
44
- static async createTestConfiguration(options) {
45
- if (!this.testContainer) {
46
- this.testContainer = await new testcontainers_1.GenericContainer("postgres")
47
- .withExposedPorts(5432)
48
- .withEnvironment({
49
- POSTGRES_PASSWORD: "secret",
50
- POSTGRES_DB: "test",
51
- })
52
- .withWaitStrategy(testcontainers_1.Wait.forAll([
53
- testcontainers_1.Wait.forListeningPorts(),
54
- testcontainers_1.Wait.forLogMessage("database system is ready to accept connections"),
55
- ]))
56
- .start();
57
- }
58
- const connectionUri = `postgres://postgres:secret@localhost:${this.testContainer.getMappedPort(5432)}/test`;
59
- const entities = options.entities || [
60
- (0, path_1.join)((0, find_main_path_1.findMainPath)(), isJest() ? "" : "dist", ENTITIES_PATH),
61
- ];
62
- const migrations = options.migrations || [
63
- (0, path_1.join)((0, find_main_path_1.findMainPath)(), MIGRATIONS_PATH),
64
- ];
65
- if (!this.testDataSource) {
66
- this.testDataSource = new typeorm_2.DataSource({
67
- type: "postgres",
68
- url: connectionUri,
69
- entities,
70
- synchronize: true,
71
- migrations,
72
- });
73
- await this.testDataSource.initialize();
74
- }
38
+ static forTest(options) {
39
+ this.testEntities = options.entities;
75
40
  return {
76
- type: "postgres",
77
- url: connectionUri,
78
- entities,
79
- synchronize: true,
80
- autoLoadEntities: true,
41
+ module: SharedDatabaseModule_1,
42
+ imports: [
43
+ typeorm_1.TypeOrmModule.forRoot({
44
+ type: "postgres",
45
+ url: this.workerDatabaseUrl(),
46
+ entities: options.entities,
47
+ synchronize: false,
48
+ }),
49
+ ],
50
+ exports: [typeorm_1.TypeOrmModule],
81
51
  };
82
52
  }
83
- static createProductionConfiguration(configService, options) {
84
- return {
53
+ static async setupTestDatabase() {
54
+ if (this.testDataSource)
55
+ return;
56
+ const { baseUrl, testDbName } = this.getWorkerDbInfo();
57
+ const adminDataSource = new typeorm_2.DataSource({
85
58
  type: "postgres",
86
- url: configService.get("DATABASE_URL"),
87
- entities: options.entities || [
88
- (0, path_1.join)((0, find_main_path_1.findMainPath)(), isJest() ? "" : "dist", ENTITIES_PATH),
89
- ],
90
- migrations: options.migrations || [(0, path_1.join)((0, find_main_path_1.findMainPath)(), MIGRATIONS_PATH)],
91
- synchronize: false,
92
- autoLoadEntities: true,
93
- };
59
+ url: baseUrl,
60
+ });
61
+ await adminDataSource.initialize();
62
+ await adminDataSource.query(`DROP DATABASE IF EXISTS "${testDbName}" WITH (FORCE)`);
63
+ await adminDataSource.query(`CREATE DATABASE "${testDbName}"`);
64
+ await adminDataSource.destroy();
65
+ const workerUrl = new URL(baseUrl);
66
+ workerUrl.pathname = `/${testDbName}`;
67
+ this.testDataSource = new typeorm_2.DataSource({
68
+ type: "postgres",
69
+ url: workerUrl.toString(),
70
+ entities: this.testEntities,
71
+ synchronize: true,
72
+ });
73
+ await this.testDataSource.initialize();
74
+ }
75
+ static async clearTestDatabase() {
76
+ if (!this.testDataSource)
77
+ return;
78
+ const tableNames = this.testDataSource.entityMetadatas
79
+ .map((meta) => meta.tableName)
80
+ .join(", ");
81
+ if (tableNames) {
82
+ await this.testDataSource.query(`TRUNCATE TABLE ${tableNames} CASCADE`);
83
+ }
94
84
  }
95
85
  static getTestDataSource() {
86
+ if (!this.testDataSource) {
87
+ throw new Error("SharedDatabaseModule not initialized. Call setupTestDatabase() first.");
88
+ }
96
89
  return this.testDataSource;
97
90
  }
98
91
  static async closeTestConnection() {
99
92
  if (this.testDataSource) {
100
93
  await this.testDataSource.destroy();
101
94
  }
102
- if (this.testContainer) {
103
- await this.testContainer.stop();
104
- }
105
95
  }
106
- static async clearTestDatabase() {
107
- if (this.testDataSource) {
108
- await this.testDataSource.synchronize(true);
96
+ static getWorkerDbInfo() {
97
+ const baseUrl = process.env.DATABASE_URL;
98
+ if (!baseUrl) {
99
+ throw new Error("DATABASE_URL environment variable is required for test database setup");
109
100
  }
101
+ const url = new URL(baseUrl);
102
+ const dbName = url.pathname.slice(1);
103
+ const poolId = process.env.VITEST_POOL_ID ?? process.env.JEST_WORKER_ID ?? "0";
104
+ return { baseUrl, testDbName: `${dbName}_test_${poolId}` };
110
105
  }
111
- async onModuleDestroy() {
112
- if (SharedDatabaseModule_1.testDataSource) {
113
- await SharedDatabaseModule_1.testDataSource.destroy();
114
- }
106
+ static workerDatabaseUrl() {
107
+ const { baseUrl, testDbName } = this.getWorkerDbInfo();
108
+ const url = new URL(baseUrl);
109
+ url.pathname = `/${testDbName}`;
110
+ return url.toString();
111
+ }
112
+ static createProductionConfiguration(configService, options) {
113
+ return {
114
+ type: "postgres",
115
+ url: configService.get("DATABASE_URL"),
116
+ entities: options.entities || [
117
+ (0, path_1.join)((0, find_main_path_1.findMainPath)(), "dist", ENTITIES_PATH),
118
+ ],
119
+ migrations: options.migrations || [(0, path_1.join)((0, find_main_path_1.findMainPath)(), MIGRATIONS_PATH)],
120
+ synchronize: false,
121
+ autoLoadEntities: true,
122
+ };
115
123
  }
116
124
  };
117
125
  exports.SharedDatabaseModule = SharedDatabaseModule;
@@ -1 +1 @@
1
- {"version":3,"file":"shared-database.module.js","sourceRoot":"","sources":["../../src/database/shared-database.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-database.module.js","sourceRoot":"","sources":["../../src/database/shared-database.module.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
- import { DynamicModule, OnModuleDestroy } from "@nestjs/common";
2
- export declare class SharedRedisModule implements OnModuleDestroy {
3
- private static testContainer;
1
+ import { DynamicModule } from "@nestjs/common";
2
+ export declare class SharedRedisModule {
4
3
  static forRoot(): DynamicModule;
5
- private static createTestConfiguration;
6
- private static createProductionConfiguration;
7
- static closeTestConnection(): Promise<void>;
8
- onModuleDestroy(): Promise<void>;
4
+ static forTest(): DynamicModule;
9
5
  }
@@ -10,23 +10,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.SharedRedisModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const config_1 = require("@nestjs/config");
13
- const testcontainers_1 = require("testcontainers");
14
13
  const redis_config_1 = require("./redis.config");
15
- let SharedRedisModule = class SharedRedisModule {
16
- static { SharedRedisModule_1 = this; }
17
- static testContainer = null;
14
+ let SharedRedisModule = SharedRedisModule_1 = class SharedRedisModule {
18
15
  static forRoot() {
19
16
  return {
20
17
  module: SharedRedisModule_1,
21
18
  providers: [
22
19
  {
23
20
  provide: redis_config_1.RedisConfig,
24
- useFactory: async (configService) => {
25
- const isTestEnvironment = process.env.NODE_ENV === "test";
26
- if (isTestEnvironment) {
27
- return new redis_config_1.RedisConfig(await this.createTestConfiguration());
28
- }
29
- return new redis_config_1.RedisConfig(this.createProductionConfiguration(configService));
21
+ useFactory: (configService) => {
22
+ return new redis_config_1.RedisConfig(configService.get("REDIS_URL"));
30
23
  },
31
24
  inject: [config_1.ConfigService],
32
25
  },
@@ -36,29 +29,22 @@ let SharedRedisModule = class SharedRedisModule {
36
29
  global: true,
37
30
  };
38
31
  }
39
- static async createTestConfiguration() {
40
- if (!this.testContainer) {
41
- this.testContainer = await new testcontainers_1.GenericContainer("redis")
42
- .withExposedPorts(6379)
43
- .withWaitStrategy(testcontainers_1.Wait.forAll([
44
- testcontainers_1.Wait.forListeningPorts(),
45
- testcontainers_1.Wait.forLogMessage("Ready to accept connections tcp"),
46
- ]))
47
- .start();
32
+ static forTest() {
33
+ const redisUrl = process.env.REDIS_URL;
34
+ if (!redisUrl) {
35
+ throw new Error("REDIS_URL environment variable is required for test setup");
48
36
  }
49
- return `redis://${this.testContainer.getHost()}:${this.testContainer.getMappedPort(6379)}`;
50
- }
51
- static createProductionConfiguration(configService) {
52
- return configService.get("REDIS_URL");
53
- }
54
- static async closeTestConnection() {
55
- if (this.testContainer) {
56
- await this.testContainer.stop();
57
- this.testContainer = null;
58
- }
59
- }
60
- async onModuleDestroy() {
61
- await SharedRedisModule_1.closeTestConnection();
37
+ return {
38
+ module: SharedRedisModule_1,
39
+ providers: [
40
+ {
41
+ provide: redis_config_1.RedisConfig,
42
+ useValue: new redis_config_1.RedisConfig(redisUrl),
43
+ },
44
+ ],
45
+ exports: [redis_config_1.RedisConfig],
46
+ global: true,
47
+ };
62
48
  }
63
49
  };
64
50
  exports.SharedRedisModule = SharedRedisModule;
@@ -1 +1 @@
1
- {"version":3,"file":"shared-redis.module.js","sourceRoot":"","sources":["../../src/redis/shared-redis.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuE;AACvE,2CAA4D;AAC5D,mDAA6E;AAC7E,iDAA4C;AAGrC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;;IACpB,MAAM,CAAC,aAAa,GAAgC,IAAI,CAAA;IAEhE,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,0BAAW;oBACpB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE;wBACjD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAA;wBAEzD,IAAI,iBAAiB,EAAE,CAAC;4BACtB,OAAO,IAAI,0BAAW,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAA;wBAC9D,CAAC;wBAED,OAAO,IAAI,0BAAW,CACpB,IAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAClD,CAAA;oBACH,CAAC;oBACD,MAAM,EAAE,CAAC,sBAAa,CAAC;iBACxB;aACF;YACD,OAAO,EAAE,CAAC,0BAAW,CAAC;YACtB,OAAO,EAAE,CAAC,qBAAY,CAAC;YACvB,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,uBAAuB;QAC1C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,iCAAgB,CAAC,OAAO,CAAC;iBACrD,gBAAgB,CAAC,IAAI,CAAC;iBACtB,gBAAgB,CACf,qBAAI,CAAC,MAAM,CAAC;gBACV,qBAAI,CAAC,iBAAiB,EAAE;gBACxB,qBAAI,CAAC,aAAa,CAAC,iCAAiC,CAAC;aACtD,CAAC,CACH;iBACA,KAAK,EAAE,CAAA;QACZ,CAAC;QAED,OAAO,WAAW,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAA;IAC5F,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAAC,aAA4B;QACvE,OAAO,aAAa,CAAC,GAAG,CAAC,WAAW,CAAW,CAAA;IACjD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mBAAmB;QAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,mBAAiB,CAAC,mBAAmB,EAAE,CAAA;IAC/C,CAAC;;AA1DU,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CA2D7B"}
1
+ {"version":3,"file":"shared-redis.module.js","sourceRoot":"","sources":["../../src/redis/shared-redis.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAsD;AACtD,2CAA4D;AAC5D,iDAA4C;AAGrC,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,0BAAW;oBACpB,UAAU,EAAE,CAAC,aAA4B,EAAE,EAAE;wBAC3C,OAAO,IAAI,0BAAW,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC,CAAA;oBAClE,CAAC;oBACD,MAAM,EAAE,CAAC,sBAAa,CAAC;iBACxB;aACF;YACD,OAAO,EAAE,CAAC,0BAAW,CAAC;YACtB,OAAO,EAAE,CAAC,qBAAY,CAAC;YACvB,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,0BAAW;oBACpB,QAAQ,EAAE,IAAI,0BAAW,CAAC,QAAQ,CAAC;iBACpC;aACF;YACD,OAAO,EAAE,CAAC,0BAAW,CAAC;YACtB,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;CACF,CAAA;AAvCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CAuC7B"}