UNPKG

@nestjs-labs/nestjs-redis

Version:

Redis(node-redis) module for Nest framework (node.js).

72 lines (71 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAsyncOptionsProvider = exports.createAsyncProviders = exports.createRedisClient = exports.InjectRedis = void 0; const common_1 = require("@nestjs/common"); const redis_1 = require("redis"); const redis_constants_1 = require("./redis.constants"); const redis_module_definition_1 = require("./redis.module-definition"); /** * Inject the Redis client. * @returns The Redis client. */ const InjectRedis = () => (0, common_1.Inject)(redis_constants_1.REDIS_CLIENT); exports.InjectRedis = InjectRedis; /** * Create a Redis client. * @returns The Redis client. */ const createRedisClient = () => ({ inject: [redis_module_definition_1.MODULE_OPTIONS_TOKEN], provide: redis_constants_1.REDIS_CLIENT, useFactory: async (options) => { if (options.cluster) { const cluster = (0, redis_1.createCluster)(options.cluster); await cluster.connect(); return cluster; } const client = (0, redis_1.createClient)(options); await client.connect(); return client; } }); exports.createRedisClient = createRedisClient; const createAsyncProviders = (options) => { if (options.useClass) { return [ { provide: options.useClass, useClass: options.useClass }, (0, exports.createAsyncOptionsProvider)(options) ]; } if (options.useExisting || options.useFactory) return [(0, exports.createAsyncOptionsProvider)(options)]; return []; }; exports.createAsyncProviders = createAsyncProviders; const createAsyncOptionsProvider = (options) => { if (options.useFactory) { return { inject: options.inject ?? [], provide: redis_module_definition_1.MODULE_OPTIONS_TOKEN, useFactory: options.useFactory }; } const inject = []; if (options.useClass) { inject.push(options.useClass); } else if (options.useExisting) { inject.push(options.useExisting); } return { inject, provide: redis_module_definition_1.MODULE_OPTIONS_TOKEN, useFactory: async (optionsFactory) => { return await optionsFactory.createRedisOptions(); } }; }; exports.createAsyncOptionsProvider = createAsyncOptionsProvider;