@songkeys/nestjs-redis
Version:
Redis(ioredis) module for Nest framework (node.js).
83 lines (82 loc) • 3.4 kB
JavaScript
var ClusterModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClusterModule = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const core_1 = require("@nestjs/core");
const cluster_manager_1 = require("./cluster-manager");
const cluster_providers_1 = require("./cluster.providers");
const cluster_constants_1 = require("./cluster.constants");
const common_2 = require("./common");
const utils_1 = require("../utils");
const cluster_logger_1 = require("./cluster-logger");
const errors_1 = require("../errors");
const messages_1 = require("../messages");
/**
* @public
*/
let ClusterModule = exports.ClusterModule = ClusterModule_1 = class ClusterModule {
constructor(moduleRef) {
this.moduleRef = moduleRef;
}
/**
* Registers the module synchronously.
*/
static forRoot(options, isGlobal = true) {
const clusterClientProviders = (0, cluster_providers_1.createClusterClientProviders)();
const providers = [
(0, cluster_providers_1.createOptionsProvider)(options),
cluster_providers_1.clusterClientsProvider,
cluster_providers_1.mergedOptionsProvider,
cluster_manager_1.ClusterManager,
...clusterClientProviders
];
return {
global: isGlobal,
module: ClusterModule_1,
providers,
exports: [cluster_manager_1.ClusterManager, ...clusterClientProviders]
};
}
/**
* Registers the module asynchronously.
*/
static forRootAsync(options, isGlobal = true) {
var _a;
if (!options.useFactory && !options.useClass && !options.useExisting) {
throw new errors_1.MissingConfigurationsError();
}
const clusterClientProviders = (0, cluster_providers_1.createClusterClientProviders)();
const providers = [
...(0, cluster_providers_1.createAsyncProviders)(options),
cluster_providers_1.clusterClientsProvider,
cluster_providers_1.mergedOptionsProvider,
cluster_manager_1.ClusterManager,
...clusterClientProviders,
...((_a = options.extraProviders) !== null && _a !== void 0 ? _a : [])
];
return {
global: isGlobal,
module: ClusterModule_1,
imports: options.imports,
providers,
exports: [cluster_manager_1.ClusterManager, ...clusterClientProviders]
};
}
async onApplicationShutdown() {
const { closeClient } = this.moduleRef.get(cluster_constants_1.CLUSTER_MERGED_OPTIONS);
if (closeClient) {
const results = await (0, common_2.destroy)(this.moduleRef.get(cluster_constants_1.CLUSTER_CLIENTS));
results.forEach(([namespace, quit]) => {
if ((0, utils_1.isResolution)(namespace) && (0, utils_1.isRejection)(quit) && (0, utils_1.isError)(quit.reason)) {
cluster_logger_1.logger.error((0, messages_1.ERROR_LOG)((0, utils_1.parseNamespace)(namespace.value), quit.reason.message), quit.reason.stack);
}
});
}
}
};
exports.ClusterModule = ClusterModule = ClusterModule_1 = tslib_1.__decorate([
(0, common_1.Module)({}),
tslib_1.__metadata("design:paramtypes", [core_1.ModuleRef])
], ClusterModule);
;