@nest-boot/redis 7.0.2 → 7.1.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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const publicApi = __importStar(require("."));
37
+ const redis_module_1 = require("./redis.module");
38
+ const load_config_from_env_util_1 = require("./utils/load-config-from-env.util");
39
+ describe("public API", () => {
40
+ it("should export Redis module and config loader", () => {
41
+ expect(publicApi.RedisModule).toBe(redis_module_1.RedisModule);
42
+ expect(publicApi.loadConfigFromEnv).toBe(load_config_from_env_util_1.loadConfigFromEnv);
43
+ });
44
+ });
45
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,iDAA6C;AAC7C,iFAAsE;AAEtE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,0BAAW,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,6CAAiB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -5,7 +5,7 @@ import { ASYNC_OPTIONS_TYPE, ConfigurableModuleClass, OPTIONS_TYPE } from "./red
5
5
  * Module that provides Redis connection using ioredis.
6
6
  *
7
7
  * The module automatically loads configuration from environment variables if not provided:
8
- * - `REDIS_URL`: Full Redis connection URL (e.g., redis://user:pass@host:6379/0)
8
+ * - `REDIS_URL`: Full Redis connection URL (e.g., `redis://user:pass@host:6379/0`)
9
9
  * - `REDIS_HOST`: Redis server hostname
10
10
  * - `REDIS_PORT`: Redis server port
11
11
  * - `REDIS_DB` or `REDIS_DATABASE`: Redis database number
@@ -58,9 +58,8 @@ export declare class RedisModule extends ConfigurableModuleClass implements OnAp
58
58
  * @returns Dynamic module configuration
59
59
  */
60
60
  static registerAsync(options: typeof ASYNC_OPTIONS_TYPE): DynamicModule;
61
- /**
62
- * Creates an instance of RedisModule.
63
- * @param redis - The Redis client instance
61
+ /** Creates a new RedisModule instance.
62
+ * @param redis - The ioredis client instance
64
63
  */
65
64
  constructor(redis: Redis);
66
65
  /**
@@ -21,7 +21,7 @@ const load_config_from_env_util_1 = require("./utils/load-config-from-env.util")
21
21
  * Module that provides Redis connection using ioredis.
22
22
  *
23
23
  * The module automatically loads configuration from environment variables if not provided:
24
- * - `REDIS_URL`: Full Redis connection URL (e.g., redis://user:pass@host:6379/0)
24
+ * - `REDIS_URL`: Full Redis connection URL (e.g., `redis://user:pass@host:6379/0`)
25
25
  * - `REDIS_HOST`: Redis server hostname
26
26
  * - `REDIS_PORT`: Redis server port
27
27
  * - `REDIS_DB` or `REDIS_DATABASE`: Redis database number
@@ -77,9 +77,8 @@ let RedisModule = class RedisModule extends redis_module_definition_1.Configurab
77
77
  static registerAsync(options) {
78
78
  return super.registerAsync(options);
79
79
  }
80
- /**
81
- * Creates an instance of RedisModule.
82
- * @param redis - The Redis client instance
80
+ /** Creates a new RedisModule instance.
81
+ * @param redis - The ioredis client instance
83
82
  */
84
83
  constructor(redis) {
85
84
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../src/redis.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,sDAAmD;AAEnD,uEAKmC;AACnC,iFAAsE;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAgBI,IAAM,WAAW,GAAjB,MAAM,WACX,SAAQ,iDAAuB;IAG/B;;;;OAIG;IACH,MAAM,CAAU,QAAQ,CAAC,OAA4B;QACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAU,aAAa,CAC3B,OAAkC;QAElC,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,YAA6B,KAAY;QACvC,KAAK,EAAE,CAAC;QADmB,UAAK,GAAL,KAAK,CAAO;IAEzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AAtCY,kCAAW;sBAAX,WAAW;IAfvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,iBAAK;gBACd,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,8CAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACzD,UAAU,EAAE,CAAC,OAAqB,EAAE,EAAE,CACpC,IAAI,iBAAK,CAAC;oBACR,GAAG,IAAA,6CAAiB,GAAE;oBACtB,GAAG,OAAO;iBACX,CAAC;aACL;SACF;QACD,OAAO,EAAE,CAAC,iBAAK,CAAC;KACjB,CAAC;qCA6BoC,iBAAK;GA5B9B,WAAW,CAsCvB"}
1
+ {"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../src/redis.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,sDAAmD;AAEnD,uEAKmC;AACnC,iFAAsE;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAgBI,IAAM,WAAW,GAAjB,MAAM,WACX,SAAQ,iDAAuB;IAG/B;;;;OAIG;IACH,MAAM,CAAU,QAAQ,CAAC,OAA4B;QACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAU,aAAa,CAC3B,OAAkC;QAElC,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAA6B,KAAY;QACvC,KAAK,EAAE,CAAC;QADmB,UAAK,GAAL,KAAK,CAAO;IAEzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AArCY,kCAAW;sBAAX,WAAW;IAfvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,iBAAK;gBACd,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,8CAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACzD,UAAU,EAAE,CAAC,OAAqB,EAAE,EAAE,CACpC,IAAI,iBAAK,CAAC;oBACR,GAAG,IAAA,6CAAiB,GAAE;oBACtB,GAAG,OAAO;iBACX,CAAC;aACL;SACF;QACD,OAAO,EAAE,CAAC,iBAAK,CAAC;KACjB,CAAC;qCA4BoC,iBAAK;GA3B9B,WAAW,CAqCvB"}
@@ -1 +1 @@
1
- import "dotenv/config";
1
+ export {};
@@ -1,37 +1,67 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- require("dotenv/config");
4
- const testing_1 = require("@nestjs/testing");
5
- const _1 = require(".");
3
+ const constants_1 = require("@nestjs/common/constants");
4
+ const mockRedisInstance = {
5
+ quit: jest.fn(),
6
+ };
7
+ const mockRedis = jest.fn(() => mockRedisInstance);
8
+ jest.mock("ioredis", () => ({
9
+ __esModule: true,
10
+ default: mockRedis,
11
+ }));
12
+ jest.mock("./utils/load-config-from-env.util", () => ({
13
+ loadConfigFromEnv: jest.fn(() => ({
14
+ host: "redis.local",
15
+ })),
16
+ }));
17
+ const redis_module_1 = require("./redis.module");
18
+ const redis_module_definition_1 = require("./redis.module-definition");
19
+ const load_config_from_env_util_1 = require("./utils/load-config-from-env.util");
6
20
  describe("RedisModule", () => {
7
- let app;
8
- it(`RedisModule`, async () => {
9
- const moduleRef = await testing_1.Test.createTestingModule({
10
- imports: [_1.RedisModule],
11
- }).compile();
12
- app = moduleRef.createNestApplication();
13
- await app.init();
14
- await app.close();
21
+ beforeEach(() => {
22
+ jest.clearAllMocks();
15
23
  });
16
- it(`RedisModule.register`, async () => {
17
- const moduleRef = await testing_1.Test.createTestingModule({
18
- imports: [_1.RedisModule.register({})],
19
- }).compile();
20
- app = moduleRef.createNestApplication();
21
- await app.init();
22
- await app.close();
24
+ it("should register synchronous and asynchronous options", () => {
25
+ const options = {
26
+ host: "custom.redis",
27
+ };
28
+ const dynamicModule = redis_module_1.RedisModule.register(options);
29
+ const useFactory = () => options;
30
+ const asyncModule = redis_module_1.RedisModule.registerAsync({
31
+ useFactory,
32
+ });
33
+ expect(dynamicModule.module).toBe(redis_module_1.RedisModule);
34
+ expect(dynamicModule.providers).toEqual(expect.arrayContaining([
35
+ {
36
+ provide: redis_module_definition_1.MODULE_OPTIONS_TOKEN,
37
+ useValue: options,
38
+ },
39
+ ]));
40
+ expect(asyncModule.providers).toEqual(expect.arrayContaining([
41
+ {
42
+ inject: [],
43
+ provide: redis_module_definition_1.MODULE_OPTIONS_TOKEN,
44
+ useFactory,
45
+ },
46
+ ]));
23
47
  });
24
- it(`RedisModule.registerAsync`, async () => {
25
- const moduleRef = await testing_1.Test.createTestingModule({
26
- imports: [
27
- _1.RedisModule.registerAsync({
28
- useFactory: () => ({}),
29
- }),
30
- ],
31
- }).compile();
32
- app = moduleRef.createNestApplication();
33
- await app.init();
34
- await app.close();
48
+ it("should create Redis clients from env config merged with options", () => {
49
+ const providers = Reflect.getMetadata(constants_1.MODULE_METADATA.PROVIDERS, redis_module_1.RedisModule);
50
+ const redisProvider = providers.find((provider) => provider.provide === mockRedis);
51
+ expect(redisProvider).toBeDefined();
52
+ expect(redisProvider?.useFactory({
53
+ db: 1,
54
+ })).toBe(mockRedisInstance);
55
+ expect(load_config_from_env_util_1.loadConfigFromEnv).toHaveBeenCalledTimes(1);
56
+ expect(mockRedis).toHaveBeenCalledWith({
57
+ db: 1,
58
+ host: "redis.local",
59
+ });
60
+ });
61
+ it("should close Redis on application shutdown", async () => {
62
+ const module = new redis_module_1.RedisModule(mockRedisInstance);
63
+ await module.onApplicationShutdown();
64
+ expect(mockRedisInstance.quit).toHaveBeenCalledTimes(1);
35
65
  });
36
66
  });
37
67
  //# sourceMappingURL=redis.module.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis.module.spec.js","sourceRoot":"","sources":["../src/redis.module.spec.ts"],"names":[],"mappings":";;AAAA,yBAAuB;AAGvB,6CAAuC;AAEvC,wBAAgC;AAEhC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,GAAqB,CAAC;IAE1B,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,SAAS,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC/C,OAAO,EAAE,CAAC,cAAW,CAAC;SACvB,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,SAAS,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC/C,OAAO,EAAE,CAAC,cAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACpC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,SAAS,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC/C,OAAO,EAAE;gBACP,cAAW,CAAC,aAAa,CAAC;oBACxB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;iBACvB,CAAC;aACH;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"redis.module.spec.js","sourceRoot":"","sources":["../src/redis.module.spec.ts"],"names":[],"mappings":"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"}