@podkopaev-tech/nest-infra-modules 0.0.1 → 0.0.2

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 (53) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +15 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/decorators/index.d.ts +1 -0
  5. package/dist/src/decorators/index.js +18 -0
  6. package/dist/src/decorators/index.js.map +1 -0
  7. package/dist/src/module.d.ts +0 -0
  8. package/dist/src/module.js +1 -0
  9. package/dist/src/module.js.map +1 -0
  10. package/dist/src/modules/cache/cache.module.d.ts +7 -0
  11. package/dist/src/modules/cache/cache.module.js +38 -0
  12. package/dist/src/modules/cache/cache.module.js.map +1 -0
  13. package/dist/src/modules/cache/decorators/index.d.ts +1 -0
  14. package/dist/src/modules/cache/decorators/index.js +18 -0
  15. package/dist/src/modules/cache/decorators/index.js.map +1 -0
  16. package/dist/src/modules/cache/decorators/memoize-async.decorator.d.ts +17 -0
  17. package/dist/src/modules/cache/decorators/memoize-async.decorator.js +135 -0
  18. package/dist/src/modules/cache/decorators/memoize-async.decorator.js.map +1 -0
  19. package/dist/src/modules/cache/index.d.ts +3 -0
  20. package/dist/src/modules/cache/index.js +20 -0
  21. package/dist/src/modules/cache/index.js.map +1 -0
  22. package/dist/src/modules/cache/types.d.ts +4 -0
  23. package/dist/src/modules/cache/types.js +3 -0
  24. package/dist/src/modules/cache/types.js.map +1 -0
  25. package/dist/src/modules/index.d.ts +2 -0
  26. package/dist/src/modules/index.js +19 -0
  27. package/dist/src/modules/index.js.map +1 -0
  28. package/dist/src/modules/redis/index.d.ts +2 -0
  29. package/dist/src/modules/redis/index.js +19 -0
  30. package/dist/src/modules/redis/index.js.map +1 -0
  31. package/dist/src/modules/redis/redis.module.d.ts +5 -0
  32. package/dist/src/modules/redis/redis.module.js +26 -0
  33. package/dist/src/modules/redis/redis.module.js.map +1 -0
  34. package/dist/src/modules/redis/types.d.ts +6 -0
  35. package/dist/src/modules/redis/types.js +3 -0
  36. package/dist/src/modules/redis/types.js.map +1 -0
  37. package/dist/src/types.d.ts +2 -0
  38. package/dist/src/types.js +3 -0
  39. package/dist/src/types.js.map +1 -0
  40. package/dist/tsconfig.build.tsbuildinfo +1 -1
  41. package/package.json +5 -1
  42. package/dist/src/app.controller.d.ts +0 -6
  43. package/dist/src/app.controller.js +0 -34
  44. package/dist/src/app.controller.js.map +0 -1
  45. package/dist/src/app.module.d.ts +0 -2
  46. package/dist/src/app.module.js +0 -23
  47. package/dist/src/app.module.js.map +0 -1
  48. package/dist/src/app.service.d.ts +0 -3
  49. package/dist/src/app.service.js +0 -20
  50. package/dist/src/app.service.js.map +0 -1
  51. package/dist/src/main.d.ts +0 -1
  52. package/dist/src/main.js +0 -10
  53. package/dist/src/main.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const TEST_MODULE_EXPORT = "TEST_MODULE_EXPORT";
1
+ export * from './src/modules';
package/dist/index.js CHANGED
@@ -1,5 +1,18 @@
1
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
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TEST_MODULE_EXPORT = void 0;
4
- exports.TEST_MODULE_EXPORT = 'TEST_MODULE_EXPORT';
17
+ __exportStar(require("./src/modules"), exports);
5
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,gDAA8B"}
@@ -0,0 +1 @@
1
+ export * from '../modules/cache/decorators/memoize-async.decorator';
@@ -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("../modules/cache/decorators/memoize-async.decorator"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sFAAoE"}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { CacheModuleOptions } from './types';
3
+ export declare class CacheModule {
4
+ static isEnabled: boolean;
5
+ static redisClientToken: string | symbol;
6
+ static forRootAsync(options: CacheModuleOptions): DynamicModule;
7
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheModule = void 0;
4
+ const cache_manager_1 = require("@nestjs/cache-manager");
5
+ const redis_1 = require("@keyv/redis");
6
+ class CacheModule {
7
+ static forRootAsync(options) {
8
+ this.redisClientToken = options.redisToken;
9
+ return {
10
+ module: CacheModule,
11
+ global: true,
12
+ imports: [
13
+ cache_manager_1.CacheModule.registerAsync({
14
+ isGlobal: true,
15
+ useFactory: (redisClient) => {
16
+ if (!redisClient) {
17
+ return {
18
+ ttl: options.defaultTtl,
19
+ stores: undefined,
20
+ };
21
+ }
22
+ return {
23
+ ttl: options.defaultTtl,
24
+ stores: [
25
+ (0, redis_1.createKeyv)(redisClient.options),
26
+ ],
27
+ };
28
+ },
29
+ inject: [options.redisToken],
30
+ }),
31
+ ],
32
+ exports: [],
33
+ };
34
+ }
35
+ }
36
+ exports.CacheModule = CacheModule;
37
+ CacheModule.isEnabled = false;
38
+ //# sourceMappingURL=cache.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.module.js","sourceRoot":"","sources":["../../../../src/modules/cache/cache.module.ts"],"names":[],"mappings":";;;AACA,yDAAuE;AAGvE,uCAA6D;AAE7D,MAAa,WAAW;IAItB,MAAM,CAAC,YAAY,CAAC,OAA2B;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;QAC3C,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,2BAAe,CAAC,aAAa,CAAC;oBAC5B,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,CAAC,WAAwB,EAAE,EAAE;wBACvC,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,OAAO;gCACL,GAAG,EAAE,OAAO,CAAC,UAAU;gCACvB,MAAM,EAAE,SAAS;6BAClB,CAAC;wBACJ,CAAC;wBACD,OAAO;4BACL,GAAG,EAAE,OAAO,CAAC,UAAU;4BACvB,MAAM,EAAE;gCACN,IAAA,kBAAU,EACR,WAAW,CAAC,OAAwC,CACrD;6BACF;yBACF,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;iBAC7B,CAAC;aACH;YACD,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;;AAjCH,kCAkCC;AAjCQ,qBAAS,GAAG,KAAK,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './memoize-async.decorator';
@@ -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("./memoize-async.decorator"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/cache/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
@@ -0,0 +1,17 @@
1
+ type Method<D, A extends any[] = any[]> = (...args: A) => D;
2
+ type Memoizable<T, D> = (target: T, propertyName: string | symbol | keyof T, descriptor: TypedPropertyDescriptor<Method<D>>) => TypedPropertyDescriptor<Method<D>>;
3
+ type AsyncMemoizable<T, D> = Memoizable<T, Promise<D>>;
4
+ type ClassWithConstructor = new (...args: any[]) => any;
5
+ interface AsyncMemoizeConfig<T = any, D = any, A extends any[] = any[]> {
6
+ lock?: {
7
+ duration?: number;
8
+ retryCount?: number;
9
+ retryDelay?: number;
10
+ };
11
+ keyResolver?: ((this: T, ...args: A) => string) | string;
12
+ expirationTimeMs?: number | ((this: T, data: D) => number);
13
+ memoizeIf?: (this: T, ...args: A) => boolean;
14
+ cacheWrapperClass?: ClassWithConstructor;
15
+ }
16
+ export declare function MemoizeAsync<T = any, D = any>(inputs?: AsyncMemoizeConfig<T, D, any[]>): AsyncMemoizable<T, D>;
17
+ export {};
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoizeAsync = MemoizeAsync;
4
+ const common_1 = require("@nestjs/common");
5
+ const cache_manager_1 = require("@nestjs/cache-manager");
6
+ const redlock_1 = require("redlock");
7
+ const ioredis_1 = require("@nestjs-modules/ioredis");
8
+ const memoizeTypesPrefix = '__memoize-types:';
9
+ const memoizeTypes = new Map([
10
+ [memoizeTypesPrefix + 'null', null],
11
+ [null, memoizeTypesPrefix + 'null'],
12
+ [memoizeTypesPrefix + 'undefined', undefined],
13
+ [undefined, memoizeTypesPrefix + 'undefined'],
14
+ ]);
15
+ function memoizeAsyncify(originalMethod, inputs) {
16
+ const promCache = new Map();
17
+ const resolvedConfig = {
18
+ expirationTimeMs: 0,
19
+ ...(inputs || {}),
20
+ lock: {
21
+ duration: 10000,
22
+ retryCount: 3,
23
+ retryDelay: 250,
24
+ ...(inputs?.lock || {}),
25
+ },
26
+ };
27
+ return async function (...args) {
28
+ const redis = this._redisService;
29
+ const cache = this._cacheManager;
30
+ if (!this._redlock) {
31
+ this._redlock = new redlock_1.default([redis], {
32
+ retryCount: resolvedConfig.lock.retryCount,
33
+ retryDelay: resolvedConfig.lock.retryDelay,
34
+ });
35
+ }
36
+ const redlock = this._redlock;
37
+ const keyResolver = typeof resolvedConfig.keyResolver === 'string'
38
+ ? () => resolvedConfig.keyResolver
39
+ : resolvedConfig.keyResolver;
40
+ let key;
41
+ if (keyResolver) {
42
+ key = keyResolver.apply(this, args);
43
+ }
44
+ else {
45
+ key = `${this.constructor.name}:${originalMethod.name}:${JSON.stringify(args)}`;
46
+ }
47
+ if (promCache.has(key)) {
48
+ return promCache.get(key);
49
+ }
50
+ const lockKey = `lock:${key}`;
51
+ let finalLock;
52
+ try {
53
+ finalLock = await redlock.acquire([lockKey], resolvedConfig.lock.duration);
54
+ }
55
+ catch (error) {
56
+ console.error(`Error while acquiring lock for key: ${key}`);
57
+ console.error(error);
58
+ throw error;
59
+ }
60
+ const prom = new Promise(async (resolve, reject) => {
61
+ let data;
62
+ if (typeof resolvedConfig.expirationTimeMs !== 'number' ||
63
+ resolvedConfig.expirationTimeMs > 0) {
64
+ data = await cache.get(key).catch((e) => {
65
+ console.error(`Error while getting cache for key: ${key}`);
66
+ console.error(e);
67
+ return undefined;
68
+ });
69
+ }
70
+ if (data) {
71
+ let dataValue = typeof data === 'string' && data.startsWith(memoizeTypesPrefix)
72
+ ? memoizeTypes.get(data)
73
+ : data;
74
+ if (!!resolvedConfig.cacheWrapperClass && !!dataValue) {
75
+ if (Array.isArray(dataValue)) {
76
+ dataValue = dataValue.map((value) => new resolvedConfig.cacheWrapperClass(value));
77
+ }
78
+ else {
79
+ dataValue = new resolvedConfig.cacheWrapperClass(dataValue);
80
+ }
81
+ }
82
+ resolve(dataValue);
83
+ }
84
+ else {
85
+ try {
86
+ data = (await originalMethod.apply(this, args));
87
+ resolve(data);
88
+ const expirationTimeMs = typeof resolvedConfig.expirationTimeMs === 'number'
89
+ ? resolvedConfig.expirationTimeMs
90
+ : resolvedConfig.expirationTimeMs.apply(this, [data]);
91
+ if (expirationTimeMs > 0) {
92
+ const dataValue = memoizeTypes.has(data)
93
+ ? memoizeTypes.get(data)
94
+ : data;
95
+ if (typeof resolvedConfig.memoizeIf !== 'function' ||
96
+ resolvedConfig.memoizeIf.apply(this, [dataValue])) {
97
+ await cache.set(key, dataValue, expirationTimeMs).catch((e) => {
98
+ console.error(`Error while setting cache for key: ${key}`);
99
+ console.error(e);
100
+ });
101
+ }
102
+ }
103
+ }
104
+ catch (e) {
105
+ reject(e instanceof Error ? e : new Error(String(e)));
106
+ }
107
+ }
108
+ await finalLock.release().catch((e) => {
109
+ console.error(`Error while release lock for key: ${key}`);
110
+ console.error(e);
111
+ });
112
+ promCache.delete(key);
113
+ });
114
+ promCache.set(key, prom);
115
+ return prom;
116
+ };
117
+ }
118
+ function MemoizeAsync(inputs) {
119
+ const redisInjector = (0, ioredis_1.InjectRedis)();
120
+ const cacheManagerInjector = (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER);
121
+ return (_target, _propertyName, descriptor) => {
122
+ if (!('_redisService' in _target)) {
123
+ redisInjector(_target, '_redisService');
124
+ }
125
+ if (!('_cacheManager' in _target)) {
126
+ cacheManagerInjector(_target, '_cacheManager');
127
+ }
128
+ if (descriptor.value) {
129
+ descriptor.value = memoizeAsyncify(descriptor.value, inputs);
130
+ return descriptor;
131
+ }
132
+ throw new Error('@MemoizeAsync is applicable only on a methods.');
133
+ };
134
+ }
135
+ //# sourceMappingURL=memoize-async.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoize-async.decorator.js","sourceRoot":"","sources":["../../../../../src/modules/cache/decorators/memoize-async.decorator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './cache.module';
2
+ export * from './types';
3
+ export * from './decorators';
@@ -0,0 +1,20 @@
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("./cache.module"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./decorators"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,0CAAwB;AACxB,+CAA6B"}
@@ -0,0 +1,4 @@
1
+ export type CacheModuleOptions = {
2
+ defaultTtl: number;
3
+ redisToken?: string | symbol;
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/modules/cache/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './cache';
2
+ export * from './redis';
@@ -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("./cache"), exports);
18
+ __exportStar(require("./redis"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB"}
@@ -0,0 +1,2 @@
1
+ export * from './redis.module';
2
+ export * from './types';
@@ -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("./redis.module"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/redis/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,0CAAwB"}
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { RedisModuleOptions } from './types';
3
+ export declare class RedisModule {
4
+ static forRootAsync(options: RedisModuleOptions): Promise<DynamicModule>;
5
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedisModule = void 0;
4
+ const ioredis_1 = require("ioredis");
5
+ class RedisModule {
6
+ static async forRootAsync(options) {
7
+ const clientProviders = [];
8
+ for (const { token, ...clientOptions } of options) {
9
+ const client = new ioredis_1.default(clientOptions);
10
+ await client.ping();
11
+ clientProviders.push({
12
+ token,
13
+ useValue: client,
14
+ });
15
+ }
16
+ return {
17
+ module: RedisModule,
18
+ global: true,
19
+ imports: [],
20
+ exports: clientProviders,
21
+ providers: clientProviders,
22
+ };
23
+ }
24
+ }
25
+ exports.RedisModule = RedisModule;
26
+ //# sourceMappingURL=redis.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../../src/modules/redis/redis.module.ts"],"names":[],"mappings":";;;AACA,qCAA4B;AAG5B,MAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAA2B;QAE3B,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,IAAI,OAAO,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,iBAAK,CAAC,aAAa,CAAC,CAAC;YACxC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,eAAe,CAAC,IAAI,CAAC;gBACnB,KAAK;gBACL,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,eAAe;YACxB,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;CACF;AAtBD,kCAsBC"}
@@ -0,0 +1,6 @@
1
+ import type RedisOptions from 'ioredis';
2
+ import type Redis from 'ioredis';
3
+ export type RedisModuleOptions = RedisOptions & {
4
+ token: string | symbol;
5
+ }[];
6
+ export type RedisClient = Redis;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/modules/redis/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export interface INestInfraModulesOptions {
2
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}