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.
@@ -3,4 +3,5 @@ export interface ServiceInstance {
3
3
  ServiceName: string;
4
4
  ServiceAddress: string;
5
5
  ServicePort: number;
6
+ Address: any;
6
7
  }
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 LOG_DIR = '/home/log';
92
- const LOG_FILE = path.join(LOG_DIR, 'detect.log');
93
- // تأكد من وجود المجلد
94
- async function ensureLogDir() {
95
- await require$$6.promises.mkdir(LOG_DIR, { recursive: true });
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.ServiceAddress) !== null && _b !== void 0 ? _b : 'unknown';
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} | ${serviceName} | ${addr}:${port} | Node=${node} | ID=${id}${elapsed}\n`;
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
- await ensureLogDir();
112
- const line = formatLogLine(serviceName, instance, elapsedMs);
113
- await require$$6.promises.appendFile(LOG_FILE, line, { encoding: 'utf8' });
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
- url,
20268
- method,
20269
- data,
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: error.message,
20279
- status: (_a = error.response) === null || _a === void 0 ? void 0 : _a.status,
20280
- code: (_c = (_b = error.response) === null || _b === void 0 ? void 0 : _b.data.code) !== null && _c !== void 0 ? _c : "",
20281
- data: (_d = error.response) === null || _d === void 0 ? void 0 : _d.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 LOG_DIR = '/home/log';
90
- const LOG_FILE = path.join(LOG_DIR, 'detect.log');
91
- // تأكد من وجود المجلد
92
- async function ensureLogDir() {
93
- await promises.mkdir(LOG_DIR, { recursive: true });
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.ServiceAddress) !== null && _b !== void 0 ? _b : 'unknown';
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} | ${serviceName} | ${addr}:${port} | Node=${node} | ID=${id}${elapsed}\n`;
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
- await ensureLogDir();
110
- const line = formatLogLine(serviceName, instance, elapsedMs);
111
- await promises.appendFile(LOG_FILE, line, { encoding: 'utf8' });
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
- url,
20266
- method,
20267
- data,
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: error.message,
20277
- status: (_a = error.response) === null || _a === void 0 ? void 0 : _a.status,
20278
- code: (_c = (_b = error.response) === null || _b === void 0 ? void 0 : _b.data.code) !== null && _c !== void 0 ? _c : "",
20279
- data: (_d = error.response) === null || _d === void 0 ? void 0 : _d.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>;
@@ -1,2 +1,2 @@
1
1
  import { ServiceInstance } from '../consul/types';
2
- export declare function appendDiscoveryLog(serviceName: string, instance: ServiceInstance, elapsedMs?: number): Promise<void>;
2
+ export declare function appendDiscoveryLog(targetService: string, instance: ServiceInstance, elapsedMs?: number): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-consul-service",
3
- "version": "1.0.68",
3
+ "version": "1.0.70",
4
4
  "main": "dist/index.cjs.js",
5
5
  "module": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",