@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.
- package/dist/index.spec.d.ts +1 -0
- package/dist/index.spec.js +45 -0
- package/dist/index.spec.js.map +1 -0
- package/dist/redis.module.d.ts +3 -4
- package/dist/redis.module.js +3 -4
- package/dist/redis.module.js.map +1 -1
- package/dist/redis.module.spec.d.ts +1 -1
- package/dist/redis.module.spec.js +59 -29
- package/dist/redis.module.spec.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/load-config-from-env.util.spec.d.ts +1 -0
- package/dist/utils/load-config-from-env.util.spec.js +61 -0
- package/dist/utils/load-config-from-env.util.spec.js.map +1 -0
- package/package.json +22 -11
|
@@ -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"}
|
package/dist/redis.module.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
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
|
/**
|
package/dist/redis.module.js
CHANGED
|
@@ -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
|
-
*
|
|
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();
|
package/dist/redis.module.js.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
1
|
+
export {};
|
|
@@ -1,37 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
require("
|
|
4
|
-
const
|
|
5
|
-
|
|
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
|
-
|
|
8
|
-
|
|
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(
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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(
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"redis.module.spec.js","sourceRoot":"","sources":["../src/redis.module.spec.ts"],"names":[],"mappings":"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"}
|