@multiversx/sdk-nestjs-redis
Version:
Multiversx SDK Nestjs redis client package
72 lines • 2.81 kB
JavaScript
;
var RedisModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RedisModule = void 0;
const tslib_1 = require("tslib");
const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
const common_1 = require("@nestjs/common");
const common_constants_1 = require("./entities/common.constants");
let RedisModule = RedisModule_1 = class RedisModule {
static forRoot(connectionOptions, customClientToken) {
return {
module: RedisModule_1,
providers: [
{
provide: customClientToken || common_constants_1.REDIS_CLIENT_TOKEN,
useValue: new ioredis_1.default(connectionOptions.config),
},
],
exports: [customClientToken || common_constants_1.REDIS_CLIENT_TOKEN],
};
}
static forRootAsync(connectOptions, customClientToken) {
if (!(connectOptions.useExisting || connectOptions.useFactory || connectOptions.useClass)) {
throw new Error('[Redis Module] Please provide useFactory, useClass or useExisting');
}
const clientProvider = {
inject: [common_constants_1.REDIS_OPTIONS_TOKEN],
provide: customClientToken || common_constants_1.REDIS_CLIENT_TOKEN,
useFactory: (factoryOptions) => new ioredis_1.default(factoryOptions.config),
};
return {
module: RedisModule_1,
imports: connectOptions.imports || [],
providers: [
...this.createConnectOptionsProviders(connectOptions),
clientProvider,
],
exports: [clientProvider],
};
}
static createConnectOptionsProviders(options) {
if (options.useExisting || options.useFactory) {
return [this.createConnectOptionsProvider(options)];
}
return [
this.createConnectOptionsProvider(options),
{
provide: options.useClass,
useClass: options.useClass,
},
];
}
static createConnectOptionsProvider(options) {
if (options.useFactory) {
return {
provide: common_constants_1.REDIS_OPTIONS_TOKEN,
useFactory: options.useFactory,
inject: options.inject || [],
};
}
return {
provide: common_constants_1.REDIS_OPTIONS_TOKEN,
useFactory: async (optionsFactory) => await optionsFactory.createRedisModuleOptions(),
inject: [options.useExisting || options.useClass],
};
}
};
RedisModule = RedisModule_1 = tslib_1.__decorate([
(0, common_1.Module)({})
], RedisModule);
exports.RedisModule = RedisModule;
//# sourceMappingURL=redis.module.js.map