UNPKG

@songkeys/nestjs-redis

Version:

Redis(ioredis) module for Nest framework (node.js).

95 lines (94 loc) 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergedOptionsProvider = exports.clusterClientsProvider = exports.createClusterClientProviders = exports.createAsyncOptionsProvider = exports.createAsyncOptions = exports.createAsyncProviders = exports.createOptionsProvider = void 0; const cluster_constants_1 = require("./cluster.constants"); const common_1 = require("./common"); const cluster_manager_1 = require("./cluster-manager"); const default_options_1 = require("./default-options"); const createOptionsProvider = (options) => ({ provide: cluster_constants_1.CLUSTER_OPTIONS, useValue: options }); exports.createOptionsProvider = createOptionsProvider; 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 createAsyncOptions = async (optionsFactory) => { return await optionsFactory.createClusterOptions(); }; exports.createAsyncOptions = createAsyncOptions; const createAsyncOptionsProvider = (options) => { if (options.useFactory) { return { provide: cluster_constants_1.CLUSTER_OPTIONS, useFactory: options.useFactory, inject: options.inject }; } if (options.useClass) { return { provide: cluster_constants_1.CLUSTER_OPTIONS, useFactory: exports.createAsyncOptions, inject: [options.useClass] }; } if (options.useExisting) { return { provide: cluster_constants_1.CLUSTER_OPTIONS, useFactory: exports.createAsyncOptions, inject: [options.useExisting] }; } return { provide: cluster_constants_1.CLUSTER_OPTIONS, useValue: {} }; }; exports.createAsyncOptionsProvider = createAsyncOptionsProvider; const createClusterClientProviders = () => { const providers = []; common_1.namespaces.forEach((token, namespace) => { providers.push({ provide: token, useFactory: (clusterManager) => clusterManager.getClient(namespace), inject: [cluster_manager_1.ClusterManager] }); }); return providers; }; exports.createClusterClientProviders = createClusterClientProviders; exports.clusterClientsProvider = { provide: cluster_constants_1.CLUSTER_CLIENTS, useFactory: (options) => { var _a; const clients = new Map(); if (Array.isArray(options.config)) { options.config.forEach(item => { var _a; return clients.set((_a = item.namespace) !== null && _a !== void 0 ? _a : cluster_constants_1.DEFAULT_CLUSTER_NAMESPACE, (0, common_1.createClient)(item, { readyLog: options.readyLog, errorLog: options.errorLog })); }); } else if (options.config) { clients.set((_a = options.config.namespace) !== null && _a !== void 0 ? _a : cluster_constants_1.DEFAULT_CLUSTER_NAMESPACE, (0, common_1.createClient)(options.config, { readyLog: options.readyLog, errorLog: options.errorLog })); } return clients; }, inject: [cluster_constants_1.CLUSTER_MERGED_OPTIONS] }; exports.mergedOptionsProvider = { provide: cluster_constants_1.CLUSTER_MERGED_OPTIONS, useFactory: (options) => (Object.assign(Object.assign({}, default_options_1.defaultClusterModuleOptions), options)), inject: [cluster_constants_1.CLUSTER_OPTIONS] };