node-consul-service 1.0.71 → 1.0.72

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/index.cjs.js CHANGED
@@ -88,10 +88,10 @@ async function deregisterService(id) {
88
88
  console.log(`🛑 Service "${id}" deregistered successfully.`);
89
89
  }
90
90
 
91
- const BASE_LOG_DIR$1 = '/home/log';
91
+ const BASE_LOG_DIR$2 = '/home/log';
92
92
  // اسم السيرفس الحالي اللي بيعمل الـ discovery
93
- const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
94
- async function ensureLogDir$1(dir) {
93
+ const CURRENT_SERVICE$2 = process.env.SERVICE_NAME || 'unknown-service';
94
+ async function ensureLogDir$2(dir) {
95
95
  await require$$6.promises.mkdir(dir, { recursive: true });
96
96
  }
97
97
  function formatLogLine(targetService, instance, elapsedMs) {
@@ -107,8 +107,8 @@ function formatLogLine(targetService, instance, elapsedMs) {
107
107
  async function appendDiscoveryLog(targetService, instance, elapsedMs) {
108
108
  try {
109
109
  // فولدر خاص بالسيرفس الحالي
110
- const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
111
- await ensureLogDir$1(serviceDir);
110
+ const serviceDir = path.join(BASE_LOG_DIR$2, CURRENT_SERVICE$2);
111
+ await ensureLogDir$2(serviceDir);
112
112
  // اللوج يروح في ملف ثابت detect.log
113
113
  const file = path.join(serviceDir, 'detect.log');
114
114
  const line = formatLogLine(targetService, instance, elapsedMs);
@@ -145,7 +145,7 @@ function get$1(key) {
145
145
  return record.value;
146
146
  }
147
147
 
148
- const CACHE_TTL = 10000; // 10 ثواني – عدلها حسب احتياجك
148
+ const CACHE_TTL = 60000;
149
149
  async function listServices() {
150
150
  const cacheKey = 'services:list';
151
151
  const cached = get$1(cacheKey);
@@ -20312,14 +20312,14 @@ const {
20312
20312
  mergeConfig
20313
20313
  } = axios;
20314
20314
 
20315
- const BASE_LOG_DIR = '/home/log';
20316
- const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
20317
- async function ensureLogDir(dir) {
20315
+ const BASE_LOG_DIR$1 = '/home/log';
20316
+ const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
20317
+ async function ensureLogDir$1(dir) {
20318
20318
  await require$$6.promises.mkdir(dir, { recursive: true });
20319
20319
  }
20320
20320
  function getLogFileForStatus(status) {
20321
20321
  const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
20322
- const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
20322
+ const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
20323
20323
  if (status >= 200 && status < 300)
20324
20324
  return path.join(serviceDir, `calls-2xx-${date}.log`);
20325
20325
  if (status >= 400 && status < 500)
@@ -20331,13 +20331,13 @@ function getLogFileForStatus(status) {
20331
20331
  function formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage) {
20332
20332
  const ts = new Date().toISOString();
20333
20333
  const errPart = errorMessage ? ` | Error="${errorMessage}"` : '';
20334
- return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
20334
+ return `${ts} | Caller=${CURRENT_SERVICE$1} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
20335
20335
  }
20336
20336
  async function appendCallLog(targetService, url, method, status, elapsedMs, errorMessage) {
20337
20337
  try {
20338
20338
  const file = getLogFileForStatus(status);
20339
20339
  const dir = path.dirname(file);
20340
- await ensureLogDir(dir);
20340
+ await ensureLogDir$1(dir);
20341
20341
  const line = formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage);
20342
20342
  await require$$6.promises.appendFile(file, line, { encoding: 'utf8' });
20343
20343
  }
@@ -20346,18 +20346,48 @@ async function appendCallLog(targetService, url, method, status, elapsedMs, erro
20346
20346
  }
20347
20347
  }
20348
20348
 
20349
+ const BASE_LOG_DIR = '/home/log';
20350
+ const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
20351
+ const THRESHOLD = Number(process.env.SLOW_CALL_THRESHOLD || 200); // الافتراضي 200ms
20352
+ async function ensureLogDir(dir) {
20353
+ await require$$6.promises.mkdir(dir, { recursive: true });
20354
+ }
20355
+ function getLogFile() {
20356
+ const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
20357
+ return path.join(serviceDir, 'slow-calls.log');
20358
+ }
20359
+ function formatSlowCallLine(targetService, url, method, status, elapsedMs) {
20360
+ const ts = new Date().toISOString();
20361
+ return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms\n`;
20362
+ }
20363
+ async function appendSlowCallLog(targetService, url, method, status, elapsedMs) {
20364
+ if (elapsedMs < THRESHOLD)
20365
+ return; // ما يكتبش غير اللي عدّى الحد
20366
+ try {
20367
+ const file = getLogFile();
20368
+ const dir = path.dirname(file);
20369
+ await ensureLogDir(dir);
20370
+ const line = formatSlowCallLine(targetService, url, method, status, elapsedMs);
20371
+ await require$$6.promises.appendFile(file, line, { encoding: 'utf8' });
20372
+ }
20373
+ catch (err) {
20374
+ console.error('❌ Failed to write slow call log:', err);
20375
+ }
20376
+ }
20377
+
20349
20378
  async function callService(serviceName, options = {}) {
20350
20379
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
20351
20380
  const { method = 'GET', path = '/', data, headers, params, } = options;
20352
20381
  const start = Date.now();
20353
20382
  try {
20354
- // ...
20355
20383
  const instance = await getRandomServiceInstance(serviceName);
20356
20384
  const url = `http://${instance.ServiceAddress}:${instance.ServicePort}${path}`;
20357
20385
  const response = await axios.request({ url, method, data, headers, params });
20358
20386
  const elapsed = Date.now() - start;
20359
- // سجل في فولدر السيرفس الحالي (مش target)
20387
+ // 📌 سجل الكول
20360
20388
  await appendCallLog(serviceName, url, method, response.status, elapsed);
20389
+ // 📌 لو بطيء → يتسجل في slow-calls.log
20390
+ await appendSlowCallLog(serviceName, url, method, response.status, elapsed);
20361
20391
  return response.data;
20362
20392
  }
20363
20393
  catch (error) {
@@ -20366,13 +20396,15 @@ async function callService(serviceName, options = {}) {
20366
20396
  const url = (_d = (_c = error.config) === null || _c === void 0 ? void 0 : _c.url) !== null && _d !== void 0 ? _d : '';
20367
20397
  const methodUsed = (_f = (_e = error.config) === null || _e === void 0 ? void 0 : _e.method) !== null && _f !== void 0 ? _f : method;
20368
20398
  const message = (_g = error.message) !== null && _g !== void 0 ? _g : 'Unknown error';
20369
- // 📌 سجل الفشل مع رسالة الخطأ
20399
+ // 📌 سجل الفشل
20370
20400
  await appendCallLog(serviceName, url, methodUsed, status, elapsed, message);
20401
+ // 📌 لو بطيء → يتسجل برضه في slow-calls.log
20402
+ await appendSlowCallLog(serviceName, url, methodUsed, status, elapsed);
20371
20403
  return {
20372
20404
  success: false,
20373
20405
  message,
20374
20406
  status,
20375
- 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 : "",
20407
+ 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 : '',
20376
20408
  data: (_l = error.response) === null || _l === void 0 ? void 0 : _l.data,
20377
20409
  };
20378
20410
  }
package/dist/index.esm.js CHANGED
@@ -86,10 +86,10 @@ async function deregisterService(id) {
86
86
  console.log(`🛑 Service "${id}" deregistered successfully.`);
87
87
  }
88
88
 
89
- const BASE_LOG_DIR$1 = '/home/log';
89
+ const BASE_LOG_DIR$2 = '/home/log';
90
90
  // اسم السيرفس الحالي اللي بيعمل الـ discovery
91
- const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
92
- async function ensureLogDir$1(dir) {
91
+ const CURRENT_SERVICE$2 = process.env.SERVICE_NAME || 'unknown-service';
92
+ async function ensureLogDir$2(dir) {
93
93
  await promises.mkdir(dir, { recursive: true });
94
94
  }
95
95
  function formatLogLine(targetService, instance, elapsedMs) {
@@ -105,8 +105,8 @@ function formatLogLine(targetService, instance, elapsedMs) {
105
105
  async function appendDiscoveryLog(targetService, instance, elapsedMs) {
106
106
  try {
107
107
  // فولدر خاص بالسيرفس الحالي
108
- const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
109
- await ensureLogDir$1(serviceDir);
108
+ const serviceDir = path.join(BASE_LOG_DIR$2, CURRENT_SERVICE$2);
109
+ await ensureLogDir$2(serviceDir);
110
110
  // اللوج يروح في ملف ثابت detect.log
111
111
  const file = path.join(serviceDir, 'detect.log');
112
112
  const line = formatLogLine(targetService, instance, elapsedMs);
@@ -143,7 +143,7 @@ function get$1(key) {
143
143
  return record.value;
144
144
  }
145
145
 
146
- const CACHE_TTL = 10000; // 10 ثواني – عدلها حسب احتياجك
146
+ const CACHE_TTL = 60000;
147
147
  async function listServices() {
148
148
  const cacheKey = 'services:list';
149
149
  const cached = get$1(cacheKey);
@@ -20310,14 +20310,14 @@ const {
20310
20310
  mergeConfig
20311
20311
  } = axios;
20312
20312
 
20313
- const BASE_LOG_DIR = '/home/log';
20314
- const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
20315
- async function ensureLogDir(dir) {
20313
+ const BASE_LOG_DIR$1 = '/home/log';
20314
+ const CURRENT_SERVICE$1 = process.env.SERVICE_NAME || 'unknown-service';
20315
+ async function ensureLogDir$1(dir) {
20316
20316
  await promises.mkdir(dir, { recursive: true });
20317
20317
  }
20318
20318
  function getLogFileForStatus(status) {
20319
20319
  const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
20320
- const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
20320
+ const serviceDir = path.join(BASE_LOG_DIR$1, CURRENT_SERVICE$1);
20321
20321
  if (status >= 200 && status < 300)
20322
20322
  return path.join(serviceDir, `calls-2xx-${date}.log`);
20323
20323
  if (status >= 400 && status < 500)
@@ -20329,13 +20329,13 @@ function getLogFileForStatus(status) {
20329
20329
  function formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage) {
20330
20330
  const ts = new Date().toISOString();
20331
20331
  const errPart = errorMessage ? ` | Error="${errorMessage}"` : '';
20332
- return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
20332
+ return `${ts} | Caller=${CURRENT_SERVICE$1} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms${errPart}\n`;
20333
20333
  }
20334
20334
  async function appendCallLog(targetService, url, method, status, elapsedMs, errorMessage) {
20335
20335
  try {
20336
20336
  const file = getLogFileForStatus(status);
20337
20337
  const dir = path.dirname(file);
20338
- await ensureLogDir(dir);
20338
+ await ensureLogDir$1(dir);
20339
20339
  const line = formatCallLogLine(targetService, url, method, status, elapsedMs, errorMessage);
20340
20340
  await promises.appendFile(file, line, { encoding: 'utf8' });
20341
20341
  }
@@ -20344,18 +20344,48 @@ async function appendCallLog(targetService, url, method, status, elapsedMs, erro
20344
20344
  }
20345
20345
  }
20346
20346
 
20347
+ const BASE_LOG_DIR = '/home/log';
20348
+ const CURRENT_SERVICE = process.env.SERVICE_NAME || 'unknown-service';
20349
+ const THRESHOLD = Number(process.env.SLOW_CALL_THRESHOLD || 200); // الافتراضي 200ms
20350
+ async function ensureLogDir(dir) {
20351
+ await promises.mkdir(dir, { recursive: true });
20352
+ }
20353
+ function getLogFile() {
20354
+ const serviceDir = path.join(BASE_LOG_DIR, CURRENT_SERVICE);
20355
+ return path.join(serviceDir, 'slow-calls.log');
20356
+ }
20357
+ function formatSlowCallLine(targetService, url, method, status, elapsedMs) {
20358
+ const ts = new Date().toISOString();
20359
+ return `${ts} | Caller=${CURRENT_SERVICE} | Target=${targetService} | ${method.toUpperCase()} ${url} | Status=${status} | Elapsed=${elapsedMs}ms\n`;
20360
+ }
20361
+ async function appendSlowCallLog(targetService, url, method, status, elapsedMs) {
20362
+ if (elapsedMs < THRESHOLD)
20363
+ return; // ما يكتبش غير اللي عدّى الحد
20364
+ try {
20365
+ const file = getLogFile();
20366
+ const dir = path.dirname(file);
20367
+ await ensureLogDir(dir);
20368
+ const line = formatSlowCallLine(targetService, url, method, status, elapsedMs);
20369
+ await promises.appendFile(file, line, { encoding: 'utf8' });
20370
+ }
20371
+ catch (err) {
20372
+ console.error('❌ Failed to write slow call log:', err);
20373
+ }
20374
+ }
20375
+
20347
20376
  async function callService(serviceName, options = {}) {
20348
20377
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
20349
20378
  const { method = 'GET', path = '/', data, headers, params, } = options;
20350
20379
  const start = Date.now();
20351
20380
  try {
20352
- // ...
20353
20381
  const instance = await getRandomServiceInstance(serviceName);
20354
20382
  const url = `http://${instance.ServiceAddress}:${instance.ServicePort}${path}`;
20355
20383
  const response = await axios.request({ url, method, data, headers, params });
20356
20384
  const elapsed = Date.now() - start;
20357
- // سجل في فولدر السيرفس الحالي (مش target)
20385
+ // 📌 سجل الكول
20358
20386
  await appendCallLog(serviceName, url, method, response.status, elapsed);
20387
+ // 📌 لو بطيء → يتسجل في slow-calls.log
20388
+ await appendSlowCallLog(serviceName, url, method, response.status, elapsed);
20359
20389
  return response.data;
20360
20390
  }
20361
20391
  catch (error) {
@@ -20364,13 +20394,15 @@ async function callService(serviceName, options = {}) {
20364
20394
  const url = (_d = (_c = error.config) === null || _c === void 0 ? void 0 : _c.url) !== null && _d !== void 0 ? _d : '';
20365
20395
  const methodUsed = (_f = (_e = error.config) === null || _e === void 0 ? void 0 : _e.method) !== null && _f !== void 0 ? _f : method;
20366
20396
  const message = (_g = error.message) !== null && _g !== void 0 ? _g : 'Unknown error';
20367
- // 📌 سجل الفشل مع رسالة الخطأ
20397
+ // 📌 سجل الفشل
20368
20398
  await appendCallLog(serviceName, url, methodUsed, status, elapsed, message);
20399
+ // 📌 لو بطيء → يتسجل برضه في slow-calls.log
20400
+ await appendSlowCallLog(serviceName, url, methodUsed, status, elapsed);
20369
20401
  return {
20370
20402
  success: false,
20371
20403
  message,
20372
20404
  status,
20373
- 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 : "",
20405
+ 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 : '',
20374
20406
  data: (_l = error.response) === null || _l === void 0 ? void 0 : _l.data,
20375
20407
  };
20376
20408
  }
@@ -0,0 +1 @@
1
+ export declare function appendSlowCallLog(targetService: string, url: string, method: string, status: number, elapsedMs: number): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-consul-service",
3
- "version": "1.0.71",
3
+ "version": "1.0.72",
4
4
  "main": "dist/index.cjs.js",
5
5
  "module": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",