nestjs-eureka
Version:
A NestJS module that integrate eureka-js-client
36 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.eurekaClientProvider = exports.EUREKA_MODULE_OPTIONS = void 0;
const eureka_js_client_1 = require("eureka-js-client");
const ip = require("ip");
const client_logger_1 = require("./client.logger");
const myIp = ip.address();
exports.EUREKA_MODULE_OPTIONS = 'EUREKA_MODULE_OPTIONS';
exports.eurekaClientProvider = {
provide: eureka_js_client_1.Eureka,
useFactory: (options) => {
if (!options || options.disable) {
return undefined;
}
if (!options.eureka || !options.service) {
throw new Error('EurekaModuleOptions has no eureka and service options');
}
return getEurekaProvider(options);
},
inject: [exports.EUREKA_MODULE_OPTIONS],
};
function getEurekaProvider(options) {
const host = options.service.host || myIp;
return new eureka_js_client_1.Eureka({
instance: Object.assign({ instanceId: `${myIp}:${options.service.name}:${options.service.port}`, app: options.service.name, hostName: host, ipAddr: host, port: {
'$': options.service.port,
'@enabled': true,
}, vipAddress: options.service.name.toLowerCase(), healthCheckUrl: `http://${host}:${options.service.port}/health`, homePageUrl: `http://${host}:${options.service.port}/`, statusPageUrl: `http://${host}:${options.service.port}/info`, dataCenterInfo: {
'name': 'MyOwn',
'@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
}, metadata: {} }, options.instanceExtra),
eureka: options.eureka,
logger: options.clientLogger || new client_logger_1.ClientLogger(),
});
}
//# sourceMappingURL=client.provider.js.map