node-consul-service 1.0.68 → 1.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/consul/types.d.ts +1 -0
- package/dist/index.cjs.js +71 -27
- package/dist/index.esm.js +71 -27
- package/dist/utils/callLogger.d.ts +1 -0
- package/dist/utils/logger.d.ts +1 -1
- package/package.json +1 -1
package/dist/consul/types.d.ts
CHANGED
package/dist/index.cjs.js
CHANGED
|
@@ -88,29 +88,31 @@ async function deregisterService(id) {
|
|
|
88
88
|
console.log(`🛑 Service "${id}" deregistered successfully.`);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
async function ensureLogDir() {
|
|
95
|
-
await require$$6.promises.mkdir(
|
|
91
|
+
const BASE_LOG_DIR$1 = '/home/log';
|
|
92
|
+
// اسم السيرفس الحالي اللي بيعمل الـ discovery
|
|
93
|
+
const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
|
|
94
|
+
async function ensureLogDir$1(dir) {
|
|
95
|
+
await require$$6.promises.mkdir(dir, { recursive: true });
|
|
96
96
|
}
|
|
97
|
-
|
|
98
|
-
function formatLogLine(serviceName, instance, elapsedMs) {
|
|
97
|
+
function formatLogLine(targetService, instance, elapsedMs) {
|
|
99
98
|
var _a, _b, _c, _d, _e;
|
|
100
99
|
const ts = new Date().toISOString();
|
|
101
|
-
const addr = (_b = (_a = instance.ServiceAddress) !== null && _a !== void 0 ? _a : instance.
|
|
100
|
+
const addr = (_b = (_a = instance.ServiceAddress) !== null && _a !== void 0 ? _a : instance.Address) !== null && _b !== void 0 ? _b : 'unknown';
|
|
102
101
|
const port = (_c = instance.ServicePort) !== null && _c !== void 0 ? _c : 'unknown';
|
|
103
102
|
const node = (_d = instance.Node) !== null && _d !== void 0 ? _d : 'N/A';
|
|
104
103
|
const id = (_e = instance.ServiceID) !== null && _e !== void 0 ? _e : 'N/A';
|
|
105
104
|
const elapsed = elapsedMs !== undefined ? ` | Elapsed=${elapsedMs}ms` : '';
|
|
106
|
-
return `${ts} |
|
|
105
|
+
return `${ts} | Target=${targetService} | ${addr}:${port} | Node=${node} | ID=${id}${elapsed}\n`;
|
|
107
106
|
}
|
|
108
|
-
|
|
109
|
-
async function appendDiscoveryLog(serviceName, instance, elapsedMs) {
|
|
107
|
+
async function appendDiscoveryLog(targetService, instance, elapsedMs) {
|
|
110
108
|
try {
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
await
|
|
109
|
+
// فولدر خاص بالسيرفس الحالي
|
|
110
|
+
const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
|
|
111
|
+
await ensureLogDir$1(serviceDir);
|
|
112
|
+
// اللوج يروح في ملف ثابت detect.log
|
|
113
|
+
const file = path.join(serviceDir, 'detect.log');
|
|
114
|
+
const line = formatLogLine(targetService, instance, elapsedMs);
|
|
115
|
+
await require$$6.promises.appendFile(file, line, { encoding: 'utf8' });
|
|
114
116
|
}
|
|
115
117
|
catch (err) {
|
|
116
118
|
console.error('❌ Failed to write discovery log:', err);
|
|
@@ -122,7 +124,10 @@ async function listServices() {
|
|
|
122
124
|
return Object.values(services);
|
|
123
125
|
}
|
|
124
126
|
async function getServiceInstances(serviceName) {
|
|
127
|
+
const start = Date.now();
|
|
125
128
|
const services = await getClient().catalog.service.nodes(serviceName);
|
|
129
|
+
const elapsed = Date.now() - start;
|
|
130
|
+
console.log(`⏱️ Discovery for ${serviceName} took ${elapsed}ms`);
|
|
126
131
|
return services;
|
|
127
132
|
}
|
|
128
133
|
async function getRandomServiceInstance(serviceName) {
|
|
@@ -133,7 +138,6 @@ async function getRandomServiceInstance(serviceName) {
|
|
|
133
138
|
const randomIndex = Math.floor(Math.random() * instances.length);
|
|
134
139
|
const instance = instances[randomIndex];
|
|
135
140
|
const elapsed = Date.now() - start;
|
|
136
|
-
// 📌 سجل الإنستانس والمدة المستغرقة
|
|
137
141
|
await appendDiscoveryLog(serviceName, instance, elapsed);
|
|
138
142
|
return instance;
|
|
139
143
|
}
|
|
@@ -20257,28 +20261,68 @@ const {
|
|
|
20257
20261
|
mergeConfig
|
|
20258
20262
|
} = axios;
|
|
20259
20263
|
|
|
20264
|
+
const BASE_LOG_DIR = '/home/log';
|
|
20265
|
+
// لازم تكون ضابط اسم السيرفس الحالي في env
|
|
20266
|
+
const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
|
|
20267
|
+
async function ensureLogDir(dir) {
|
|
20268
|
+
await require$$6.promises.mkdir(dir, { recursive: true });
|
|
20269
|
+
}
|
|
20270
|
+
function getLogFileForStatus(status) {
|
|
20271
|
+
const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
|
|
20272
|
+
if (status >= 200 && status < 300)
|
|
20273
|
+
return path.join(serviceDir, 'calls-2xx.log');
|
|
20274
|
+
if (status >= 400 && status < 500)
|
|
20275
|
+
return path.join(serviceDir, 'calls-4xx.log');
|
|
20276
|
+
if (status >= 500 && status < 600)
|
|
20277
|
+
return path.join(serviceDir, 'calls-5xx.log');
|
|
20278
|
+
return path.join(serviceDir, 'calls-other.log');
|
|
20279
|
+
}
|
|
20280
|
+
function formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20281
|
+
const ts = new Date().toISOString();
|
|
20282
|
+
const errPart = errorMessage ? ` | Error="${errorMessage}"` : '';
|
|
20283
|
+
return `${ts} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
|
|
20284
|
+
}
|
|
20285
|
+
async function appendCallLog(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20286
|
+
try {
|
|
20287
|
+
const file = getLogFileForStatus(status);
|
|
20288
|
+
const dir = path.dirname(file);
|
|
20289
|
+
await ensureLogDir(dir);
|
|
20290
|
+
const line = formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage);
|
|
20291
|
+
await require$$6.promises.appendFile(file, line, { encoding: 'utf8' });
|
|
20292
|
+
}
|
|
20293
|
+
catch (err) {
|
|
20294
|
+
console.error('❌ Failed to write call log:', err);
|
|
20295
|
+
}
|
|
20296
|
+
}
|
|
20297
|
+
|
|
20260
20298
|
async function callService(serviceName, options = {}) {
|
|
20261
|
-
var _a, _b, _c, _d;
|
|
20299
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
20262
20300
|
const { method = 'GET', path = '/', data, headers, params, } = options;
|
|
20301
|
+
const start = Date.now();
|
|
20263
20302
|
try {
|
|
20303
|
+
// ...
|
|
20264
20304
|
const instance = await getRandomServiceInstance(serviceName);
|
|
20265
20305
|
const url = `http://${instance.ServiceAddress}:${instance.ServicePort}${path}`;
|
|
20266
|
-
const response = await axios.request({
|
|
20267
|
-
|
|
20268
|
-
|
|
20269
|
-
|
|
20270
|
-
headers,
|
|
20271
|
-
params,
|
|
20272
|
-
});
|
|
20306
|
+
const response = await axios.request({ url, method, data, headers, params });
|
|
20307
|
+
const elapsed = Date.now() - start;
|
|
20308
|
+
// سجل في فولدر السيرفس الحالي (مش target)
|
|
20309
|
+
await appendCallLog(serviceName, url, method, response.status, elapsed);
|
|
20273
20310
|
return response.data;
|
|
20274
20311
|
}
|
|
20275
20312
|
catch (error) {
|
|
20313
|
+
const elapsed = Date.now() - start;
|
|
20314
|
+
const status = (_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : 0;
|
|
20315
|
+
const url = (_d = (_c = error.config) === null || _c === void 0 ? void 0 : _c.url) !== null && _d !== void 0 ? _d : '';
|
|
20316
|
+
const methodUsed = (_f = (_e = error.config) === null || _e === void 0 ? void 0 : _e.method) !== null && _f !== void 0 ? _f : method;
|
|
20317
|
+
const message = (_g = error.message) !== null && _g !== void 0 ? _g : 'Unknown error';
|
|
20318
|
+
// 📌 سجل الفشل مع رسالة الخطأ
|
|
20319
|
+
await appendCallLog(serviceName, url, methodUsed, status, elapsed, message);
|
|
20276
20320
|
return {
|
|
20277
20321
|
success: false,
|
|
20278
|
-
message
|
|
20279
|
-
status
|
|
20280
|
-
code: (
|
|
20281
|
-
data: (
|
|
20322
|
+
message,
|
|
20323
|
+
status,
|
|
20324
|
+
code: (_k = (_j = (_h = error.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.code) !== null && _k !== void 0 ? _k : "",
|
|
20325
|
+
data: (_l = error.response) === null || _l === void 0 ? void 0 : _l.data,
|
|
20282
20326
|
};
|
|
20283
20327
|
}
|
|
20284
20328
|
}
|
package/dist/index.esm.js
CHANGED
|
@@ -86,29 +86,31 @@ async function deregisterService(id) {
|
|
|
86
86
|
console.log(`🛑 Service "${id}" deregistered successfully.`);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
async function ensureLogDir() {
|
|
93
|
-
await promises.mkdir(
|
|
89
|
+
const BASE_LOG_DIR$1 = '/home/log';
|
|
90
|
+
// اسم السيرفس الحالي اللي بيعمل الـ discovery
|
|
91
|
+
const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
|
|
92
|
+
async function ensureLogDir$1(dir) {
|
|
93
|
+
await promises.mkdir(dir, { recursive: true });
|
|
94
94
|
}
|
|
95
|
-
|
|
96
|
-
function formatLogLine(serviceName, instance, elapsedMs) {
|
|
95
|
+
function formatLogLine(targetService, instance, elapsedMs) {
|
|
97
96
|
var _a, _b, _c, _d, _e;
|
|
98
97
|
const ts = new Date().toISOString();
|
|
99
|
-
const addr = (_b = (_a = instance.ServiceAddress) !== null && _a !== void 0 ? _a : instance.
|
|
98
|
+
const addr = (_b = (_a = instance.ServiceAddress) !== null && _a !== void 0 ? _a : instance.Address) !== null && _b !== void 0 ? _b : 'unknown';
|
|
100
99
|
const port = (_c = instance.ServicePort) !== null && _c !== void 0 ? _c : 'unknown';
|
|
101
100
|
const node = (_d = instance.Node) !== null && _d !== void 0 ? _d : 'N/A';
|
|
102
101
|
const id = (_e = instance.ServiceID) !== null && _e !== void 0 ? _e : 'N/A';
|
|
103
102
|
const elapsed = elapsedMs !== undefined ? ` | Elapsed=${elapsedMs}ms` : '';
|
|
104
|
-
return `${ts} |
|
|
103
|
+
return `${ts} | Target=${targetService} | ${addr}:${port} | Node=${node} | ID=${id}${elapsed}\n`;
|
|
105
104
|
}
|
|
106
|
-
|
|
107
|
-
async function appendDiscoveryLog(serviceName, instance, elapsedMs) {
|
|
105
|
+
async function appendDiscoveryLog(targetService, instance, elapsedMs) {
|
|
108
106
|
try {
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
await
|
|
107
|
+
// فولدر خاص بالسيرفس الحالي
|
|
108
|
+
const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
|
|
109
|
+
await ensureLogDir$1(serviceDir);
|
|
110
|
+
// اللوج يروح في ملف ثابت detect.log
|
|
111
|
+
const file = path.join(serviceDir, 'detect.log');
|
|
112
|
+
const line = formatLogLine(targetService, instance, elapsedMs);
|
|
113
|
+
await promises.appendFile(file, line, { encoding: 'utf8' });
|
|
112
114
|
}
|
|
113
115
|
catch (err) {
|
|
114
116
|
console.error('❌ Failed to write discovery log:', err);
|
|
@@ -120,7 +122,10 @@ async function listServices() {
|
|
|
120
122
|
return Object.values(services);
|
|
121
123
|
}
|
|
122
124
|
async function getServiceInstances(serviceName) {
|
|
125
|
+
const start = Date.now();
|
|
123
126
|
const services = await getClient().catalog.service.nodes(serviceName);
|
|
127
|
+
const elapsed = Date.now() - start;
|
|
128
|
+
console.log(`⏱️ Discovery for ${serviceName} took ${elapsed}ms`);
|
|
124
129
|
return services;
|
|
125
130
|
}
|
|
126
131
|
async function getRandomServiceInstance(serviceName) {
|
|
@@ -131,7 +136,6 @@ async function getRandomServiceInstance(serviceName) {
|
|
|
131
136
|
const randomIndex = Math.floor(Math.random() * instances.length);
|
|
132
137
|
const instance = instances[randomIndex];
|
|
133
138
|
const elapsed = Date.now() - start;
|
|
134
|
-
// 📌 سجل الإنستانس والمدة المستغرقة
|
|
135
139
|
await appendDiscoveryLog(serviceName, instance, elapsed);
|
|
136
140
|
return instance;
|
|
137
141
|
}
|
|
@@ -20255,28 +20259,68 @@ const {
|
|
|
20255
20259
|
mergeConfig
|
|
20256
20260
|
} = axios;
|
|
20257
20261
|
|
|
20262
|
+
const BASE_LOG_DIR = '/home/log';
|
|
20263
|
+
// لازم تكون ضابط اسم السيرفس الحالي في env
|
|
20264
|
+
const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
|
|
20265
|
+
async function ensureLogDir(dir) {
|
|
20266
|
+
await promises.mkdir(dir, { recursive: true });
|
|
20267
|
+
}
|
|
20268
|
+
function getLogFileForStatus(status) {
|
|
20269
|
+
const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
|
|
20270
|
+
if (status >= 200 && status < 300)
|
|
20271
|
+
return path.join(serviceDir, 'calls-2xx.log');
|
|
20272
|
+
if (status >= 400 && status < 500)
|
|
20273
|
+
return path.join(serviceDir, 'calls-4xx.log');
|
|
20274
|
+
if (status >= 500 && status < 600)
|
|
20275
|
+
return path.join(serviceDir, 'calls-5xx.log');
|
|
20276
|
+
return path.join(serviceDir, 'calls-other.log');
|
|
20277
|
+
}
|
|
20278
|
+
function formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20279
|
+
const ts = new Date().toISOString();
|
|
20280
|
+
const errPart = errorMessage ? ` | Error="${errorMessage}"` : '';
|
|
20281
|
+
return `${ts} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
|
|
20282
|
+
}
|
|
20283
|
+
async function appendCallLog(targetService, url, method, status, elapsedMs, errorMessage) {
|
|
20284
|
+
try {
|
|
20285
|
+
const file = getLogFileForStatus(status);
|
|
20286
|
+
const dir = path.dirname(file);
|
|
20287
|
+
await ensureLogDir(dir);
|
|
20288
|
+
const line = formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage);
|
|
20289
|
+
await promises.appendFile(file, line, { encoding: 'utf8' });
|
|
20290
|
+
}
|
|
20291
|
+
catch (err) {
|
|
20292
|
+
console.error('❌ Failed to write call log:', err);
|
|
20293
|
+
}
|
|
20294
|
+
}
|
|
20295
|
+
|
|
20258
20296
|
async function callService(serviceName, options = {}) {
|
|
20259
|
-
var _a, _b, _c, _d;
|
|
20297
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
20260
20298
|
const { method = 'GET', path = '/', data, headers, params, } = options;
|
|
20299
|
+
const start = Date.now();
|
|
20261
20300
|
try {
|
|
20301
|
+
// ...
|
|
20262
20302
|
const instance = await getRandomServiceInstance(serviceName);
|
|
20263
20303
|
const url = `http://${instance.ServiceAddress}:${instance.ServicePort}${path}`;
|
|
20264
|
-
const response = await axios.request({
|
|
20265
|
-
|
|
20266
|
-
|
|
20267
|
-
|
|
20268
|
-
headers,
|
|
20269
|
-
params,
|
|
20270
|
-
});
|
|
20304
|
+
const response = await axios.request({ url, method, data, headers, params });
|
|
20305
|
+
const elapsed = Date.now() - start;
|
|
20306
|
+
// سجل في فولدر السيرفس الحالي (مش target)
|
|
20307
|
+
await appendCallLog(serviceName, url, method, response.status, elapsed);
|
|
20271
20308
|
return response.data;
|
|
20272
20309
|
}
|
|
20273
20310
|
catch (error) {
|
|
20311
|
+
const elapsed = Date.now() - start;
|
|
20312
|
+
const status = (_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : 0;
|
|
20313
|
+
const url = (_d = (_c = error.config) === null || _c === void 0 ? void 0 : _c.url) !== null && _d !== void 0 ? _d : '';
|
|
20314
|
+
const methodUsed = (_f = (_e = error.config) === null || _e === void 0 ? void 0 : _e.method) !== null && _f !== void 0 ? _f : method;
|
|
20315
|
+
const message = (_g = error.message) !== null && _g !== void 0 ? _g : 'Unknown error';
|
|
20316
|
+
// 📌 سجل الفشل مع رسالة الخطأ
|
|
20317
|
+
await appendCallLog(serviceName, url, methodUsed, status, elapsed, message);
|
|
20274
20318
|
return {
|
|
20275
20319
|
success: false,
|
|
20276
|
-
message
|
|
20277
|
-
status
|
|
20278
|
-
code: (
|
|
20279
|
-
data: (
|
|
20320
|
+
message,
|
|
20321
|
+
status,
|
|
20322
|
+
code: (_k = (_j = (_h = error.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.code) !== null && _k !== void 0 ? _k : "",
|
|
20323
|
+
data: (_l = error.response) === null || _l === void 0 ? void 0 : _l.data,
|
|
20280
20324
|
};
|
|
20281
20325
|
}
|
|
20282
20326
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function appendCallLog(targetService: string, url: string, method: string, status: number, elapsedMs: number, errorMessage?: string): Promise<void>;
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ServiceInstance } from '../consul/types';
|
|
2
|
-
export declare function appendDiscoveryLog(
|
|
2
|
+
export declare function appendDiscoveryLog(targetService: string, instance: ServiceInstance, elapsedMs?: number): Promise<void>;
|