UNPKG

@multiversx/sdk-nestjs-redis

Version:

Multiversx SDK Nestjs redis client package

72 lines 2.81 kB
"use strict"; 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