UNPKG

nestjs-etcd

Version:
83 lines (82 loc) 3.38 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var EtcdCoreModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.EtcdCoreModule = void 0; const common_1 = require("@nestjs/common"); const etcd3_1 = require("etcd3"); const etcd_utils_1 = require("./etcd.utils"); const etcd_constants_1 = require("./etcd.constants"); let EtcdCoreModule = EtcdCoreModule_1 = class EtcdCoreModule { static forRoot(options = { hosts: '127.0.0.1:2379' }) { const etcdModuleOptions = { provide: etcd_constants_1.ETCD_MODULE_OPTIONS, useValue: options, }; const client = new etcd3_1.Etcd3(options); const connectionProvider = { provide: etcd_utils_1.getClientToken(options), useValue: options.namespace ? client.namespace(options.namespace) : client, }; return { module: EtcdCoreModule_1, providers: [connectionProvider, etcdModuleOptions], exports: [connectionProvider], }; } static forRootAsync(options) { const connectionProvider = { provide: etcd_utils_1.getClientToken(options), useFactory: (etcdOptions) => { const client = new etcd3_1.Etcd3(etcdOptions); return etcdOptions.namespace ? client.namespace(etcdOptions.namespace) : client; }, inject: [etcd_constants_1.ETCD_MODULE_OPTIONS], }; const asyncProviders = this.createAsyncProviders(options); return { module: EtcdCoreModule_1, imports: options.imports, providers: [...asyncProviders, connectionProvider], exports: [connectionProvider], }; } static createAsyncProviders(options) { if (options.useExisting || options.useFactory) { return [this.createAsyncOptionsProvider(options)]; } const useClass = options.useClass; return [ this.createAsyncOptionsProvider(options), { provide: useClass, useClass, }, ]; } static createAsyncOptionsProvider(options) { if (options.useFactory) { return { provide: etcd_constants_1.ETCD_MODULE_OPTIONS, useFactory: options.useFactory, inject: options.inject || [], }; } const inject = [(options.useClass || options.useExisting)]; return { provide: etcd_constants_1.ETCD_MODULE_OPTIONS, useFactory: (optionsFactory) => optionsFactory.createEtcdOptions(options.name), inject, }; } }; EtcdCoreModule = EtcdCoreModule_1 = __decorate([ common_1.Global(), common_1.Module({}) ], EtcdCoreModule); exports.EtcdCoreModule = EtcdCoreModule;