@beblurt/blurt-nodes-checker 2.0.3 → 2.2.0

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/README.md CHANGED
@@ -11,6 +11,7 @@ A sophisticated, **0-dependency**, and **Isomorphic** utility to monitor, score,
11
11
  - **Isomorphic Support**: Runs natively in Node.js >= 18 and all modern browsers. Fully Tree-Shakable.
12
12
  - **Micro-Subject Architecture**: Safely drop `rxjs` and Node `EventEmitter` without breaking the `.subscribe()` api flow.
13
13
  - **Two-Phase Consensus Detection**: Calculates Median Head Block across the cluster and validates `block_ids` backward in time to guarantee **extremely robust fork detection with minimized false positives**.
14
+ - **Sliding Window Elasticity**: Score reliability evaluates a real-time sliding memory window (e.g. last 60 checks) instead of absolute history, dynamically forgiving repaired nodes over time.
14
15
  - **Dynamic Scoring Matrix**: Ranks nodes (0-100 score) using historic latency averages, network fault degradations, success reliability, and stale-block penalties.
15
16
 
16
17
  ## Installation
@@ -39,6 +40,7 @@ const checker = new BlurtNodesChecker(rpcList, {
39
40
  maxRetries: 2, // Exponential backoff network retries
40
41
  retryDelay: 500, // Time between retries (ms)
41
42
  staleThreshold: 50, // Node is "stale" if lagging 50 blocks behind consensus median
43
+ historySize: 60, // Size of the sliding memory window for reliability calculations
42
44
  tests: createDefaultTests("beblurt") // Inject dynamic queries
43
45
  });
44
46
 
@@ -54,6 +56,12 @@ checker.message.subscribe((nodes) => {
54
56
  case "stale":
55
57
  console.log(`⚠️ ${node.url} - Syncing slowly (${node.lag} blocks behind).`);
56
58
  break;
59
+ case "experimental":
60
+ console.log(`🧪 ${node.url} - Healthy but running an Alpha/Beta build.`);
61
+ break;
62
+ case "throttled":
63
+ console.log(`⏳ ${node.url} - HTTP 429 Rate Limit Exceeded.`);
64
+ break;
57
65
  case "forked":
58
66
  console.log(`🚨 ${node.url} - Network Forked / Mismatched Block Identity!`);
59
67
  break;
@@ -74,7 +82,7 @@ checker.start();
74
82
  ### Returned Node Properties
75
83
  The `checker.message.subscribe()` emits an array of node objects perfectly structured for frontend or load balancer architectures. Each node object contains:
76
84
  - `url`: The RPC endpoint URL string.
77
- - `status`: String union (`online` | `unknown` | `degraded` | `error` | `stale` | `forked` | `outdated`).
85
+ - `status`: String union (`online` | `experimental` | `unknown` | `degraded` | `error` | `stale` | `forked` | `outdated` | `throttled`).
78
86
  - `score`: Number (0-100) combining latency, reliability, version and test suite performances.
79
87
  - `block_number` & `block_id`: The current blockchain parameters of the node.
80
88
  - `version` & `chain_id`: The running component version strings.
@@ -96,6 +104,28 @@ const nexusTests = node.test_result?.filter(t => t.name.startsWith("Nexus | "))
96
104
  const isNexusSupported = nexusTests.length > 0 && nexusTests.every(t => t.success);
97
105
  ```
98
106
 
107
+ ### Allowing users to opt-in to Experimental Nodes (Frontend Example)
108
+
109
+ By default, bleeding edge nodes (`alpha`/`beta`) are tagged natively as `experimental`. If these nodes fail critical queries, they still correctly fallback to `degraded` or `error` just like `online` nodes do.
110
+ This means you can easily create an opt-in toggle in your UI (React/Angular) for power-users wanting to test the latest features:
111
+
112
+ ```typescript
113
+ // Example: A dynamic getter in your Frontend Service
114
+ export const getActiveNodes = (allowExperimental: boolean = false): string[] => {
115
+ const allowedStatuses = ["online"];
116
+
117
+ if (allowExperimental) {
118
+ allowedStatuses.push("experimental"); // Include Alpha/Beta safely
119
+ }
120
+
121
+ // Filter checker nodes against allowed statuses and return URLs
122
+ return myChecker.nodes
123
+ .filter(node => allowedStatuses.includes(node.status))
124
+ .sort((a, b) => b.score - a.score)
125
+ .map(node => node.url);
126
+ }
127
+ ```
128
+
99
129
  ### Full vs Light Testing (Customizing Tests)
100
130
 
101
131
  In v1, you passed flags like `{ full: true, nexus: true }` to the constructor.
@@ -13,10 +13,12 @@ export declare class BlurtNodesChecker {
13
13
  retryDelay: number;
14
14
  staleThreshold: number;
15
15
  versionTolerance: "major" | "minor" | "patch";
16
+ historySize: number;
16
17
  tests: FULL_TEST[];
17
18
  constructor(nodes: string[], options?: OPTIONS);
18
19
  start(): Promise<void>;
19
20
  stop(): void;
20
21
  restart(): void;
21
22
  private check;
23
+ private updateNodeHistory;
22
24
  }
package/dist/cjs/index.js CHANGED
@@ -33,6 +33,7 @@ class BlurtNodesChecker {
33
33
  retryDelay = 500;
34
34
  staleThreshold = 50;
35
35
  versionTolerance = "minor";
36
+ historySize = 60;
36
37
  tests;
37
38
  constructor(nodes, options) {
38
39
  if (options) {
@@ -50,6 +51,8 @@ class BlurtNodesChecker {
50
51
  this.staleThreshold = options.staleThreshold;
51
52
  if (options.versionTolerance !== undefined)
52
53
  this.versionTolerance = options.versionTolerance;
54
+ if (options.historySize !== undefined)
55
+ this.historySize = options.historySize;
53
56
  }
54
57
  this.tests = options?.tests || (0, test_js_1.createDefaultTests)();
55
58
  for (const node of nodes) {
@@ -62,6 +65,7 @@ class BlurtNodesChecker {
62
65
  last_check: Date.now(),
63
66
  status: "unknown",
64
67
  score: 0,
68
+ history: [],
65
69
  test_result: [],
66
70
  });
67
71
  }
@@ -121,7 +125,7 @@ class BlurtNodesChecker {
121
125
  catch (error) {
122
126
  node.status = "error";
123
127
  node.error = error.message;
124
- node.nb_error++;
128
+ this.updateNodeHistory(node, "error");
125
129
  node.score = 0;
126
130
  return node;
127
131
  }
@@ -209,7 +213,10 @@ class BlurtNodesChecker {
209
213
  continue;
210
214
  }
211
215
  // 1. Version Compatibility Check
212
- if (node.version && canonicalVersion && node.version !== canonicalVersion) {
216
+ if (node.version && (node.version.toLowerCase().includes("alpha") || node.version.toLowerCase().includes("beta"))) {
217
+ node.status = "experimental";
218
+ }
219
+ else if (node.version && canonicalVersion && node.version !== canonicalVersion) {
213
220
  let consideredCanonical = canonicalVersion;
214
221
  let consideredNode = node.version;
215
222
  if (this.versionTolerance === "major" || this.versionTolerance === "minor") {
@@ -251,6 +258,9 @@ class BlurtNodesChecker {
251
258
  }
252
259
  catch (e) {
253
260
  testError = e.message;
261
+ if (e.name === "RateLimitError") {
262
+ node.status = "throttled";
263
+ }
254
264
  }
255
265
  const duration = Date.now() - startTest;
256
266
  const r = {
@@ -278,17 +288,19 @@ class BlurtNodesChecker {
278
288
  });
279
289
  await Promise.allSettled(testPromises);
280
290
  // 3. Final Scoring Calculations (0-100)
281
- if (criticalFailed && node.status !== "stale") {
291
+ if (node.status === "throttled") {
292
+ this.updateNodeHistory(node, "degraded");
293
+ }
294
+ else if (criticalFailed && node.status !== "stale") {
282
295
  node.status = "degraded";
283
- node.nb_degraded++;
296
+ this.updateNodeHistory(node, "degraded");
284
297
  }
285
298
  else {
286
- node.nb_ok++;
299
+ this.updateNodeHistory(node, "ok");
287
300
  }
288
- node.reliability = node.nb_ok / (node.nb_ok + node.nb_error + node.nb_degraded) || 0;
289
301
  let score = 0;
290
302
  // Base Health (40 points)
291
- score += node.reliability * 40;
303
+ score += (node.reliability || 0) * 40;
292
304
  // Latency (30 points). Max points if < 200ms. 0 points if approaches timeout.
293
305
  if (node.latency_avg) {
294
306
  const latencyScore = Math.max(0, 30 - ((node.latency_avg - 200) / this.timeout) * 30);
@@ -312,6 +324,16 @@ class BlurtNodesChecker {
312
324
  this.nodes.sort((a, b) => b.score - a.score);
313
325
  this.message.next(this.nodes);
314
326
  }
327
+ updateNodeHistory(node, status) {
328
+ node.history.push(status);
329
+ if (node.history.length > this.historySize) {
330
+ node.history.shift();
331
+ }
332
+ node.nb_ok = node.history.filter(s => s === "ok").length;
333
+ node.nb_error = node.history.filter(s => s === "error").length;
334
+ node.nb_degraded = node.history.filter(s => s === "degraded").length;
335
+ node.reliability = node.nb_ok / node.history.length || 0;
336
+ }
315
337
  }
316
338
  exports.BlurtNodesChecker = BlurtNodesChecker;
317
339
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/cjs/rpc.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ export declare class RateLimitError extends Error {
2
+ constructor(message: string);
3
+ }
1
4
  export declare class RpcClient {
2
5
  private url;
3
6
  private timeout;
package/dist/cjs/rpc.js CHANGED
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RpcClient = void 0;
3
+ exports.RpcClient = exports.RateLimitError = void 0;
4
+ class RateLimitError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = "RateLimitError";
8
+ }
9
+ }
10
+ exports.RateLimitError = RateLimitError;
4
11
  class RpcClient {
5
12
  url;
6
13
  timeout;
@@ -38,6 +45,9 @@ class RpcClient {
38
45
  });
39
46
  clearTimeout(timeoutId);
40
47
  if (!response.ok) {
48
+ if (response.status === 429) {
49
+ throw new RateLimitError(`Rate Limit Exceeded (HTTP 429)`);
50
+ }
41
51
  throw new Error(`HTTP Error ${response.status}: ${response.statusText}`);
42
52
  }
43
53
  const data = await response.json();
@@ -51,6 +61,10 @@ class RpcClient {
51
61
  if (this.debug) {
52
62
  console.warn(`[RpcClient] Call failed on ${this.url} (${method}) - Attempt ${attempt + 1}/${this.maxRetries}. Error: ${error.message}`);
53
63
  }
64
+ // Do not retry on explicit Rate Limits, fail fast
65
+ if (error.name === "RateLimitError") {
66
+ throw error;
67
+ }
54
68
  attempt++;
55
69
  if (attempt >= this.maxRetries) {
56
70
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/rpc.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAEV;IACA;IACA;IACA;IACA;IALV,YACU,GAAW,EACX,UAAkB,IAAI,EACtB,aAAqB,CAAC,EACtB,aAAqB,GAAG,EACxB,QAAiB,KAAK;QAJtB,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAe;QACtB,eAAU,GAAV,UAAU,CAAY;QACtB,eAAU,GAAV,UAAU,CAAc;QACxB,UAAK,GAAL,KAAK,CAAiB;IAC7B,CAAC;IAEI,KAAK,CAAC,KAAK,CAAC,EAAU;QAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,SAAc,EAAE;QAChD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;oBACrC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,EAAE,EAAE,CAAC;wBACL,MAAM;wBACN,MAAM;qBACP,CAAC;oBACF,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAED,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,GAAG,KAAK,MAAM,eAAe,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1I,CAAC;gBAED,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,sBAAsB;gBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAjED,8BAiEC"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/rpc.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export declare type OPTIONS = {
3
3
  timeout?: number;
4
4
  interval?: number;
5
5
  versionTolerance?: "major" | "minor" | "patch";
6
+ historySize?: number;
6
7
  maxRetries?: number;
7
8
  retryDelay?: number;
8
9
  staleThreshold?: number;
@@ -26,13 +27,14 @@ export declare type RPC_NODE = {
26
27
  nb_degraded: number;
27
28
  error?: string;
28
29
  last_check: number;
29
- status: "unknown" | "online" | "degraded" | "error" | "stale" | "forked" | "outdated";
30
+ status: "unknown" | "online" | "degraded" | "error" | "stale" | "forked" | "outdated" | "experimental" | "throttled";
30
31
  duration?: number;
31
32
  latency_avg?: number;
32
33
  reliability?: number;
33
34
  version?: string;
34
35
  deactivated?: boolean;
35
36
  score: number;
37
+ history: Array<"ok" | "error" | "degraded">;
36
38
  chain_id?: string;
37
39
  block_number?: number;
38
40
  block_id?: string;
package/lib/index.d.ts CHANGED
@@ -13,10 +13,12 @@ export declare class BlurtNodesChecker {
13
13
  retryDelay: number;
14
14
  staleThreshold: number;
15
15
  versionTolerance: "major" | "minor" | "patch";
16
+ historySize: number;
16
17
  tests: FULL_TEST[];
17
18
  constructor(nodes: string[], options?: OPTIONS);
18
19
  start(): Promise<void>;
19
20
  stop(): void;
20
21
  restart(): void;
21
22
  private check;
23
+ private updateNodeHistory;
22
24
  }
package/lib/index.js CHANGED
@@ -15,6 +15,7 @@ export class BlurtNodesChecker {
15
15
  retryDelay = 500;
16
16
  staleThreshold = 50;
17
17
  versionTolerance = "minor";
18
+ historySize = 60;
18
19
  tests;
19
20
  constructor(nodes, options) {
20
21
  if (options) {
@@ -32,6 +33,8 @@ export class BlurtNodesChecker {
32
33
  this.staleThreshold = options.staleThreshold;
33
34
  if (options.versionTolerance !== undefined)
34
35
  this.versionTolerance = options.versionTolerance;
36
+ if (options.historySize !== undefined)
37
+ this.historySize = options.historySize;
35
38
  }
36
39
  this.tests = options?.tests || createDefaultTests();
37
40
  for (const node of nodes) {
@@ -44,6 +47,7 @@ export class BlurtNodesChecker {
44
47
  last_check: Date.now(),
45
48
  status: "unknown",
46
49
  score: 0,
50
+ history: [],
47
51
  test_result: [],
48
52
  });
49
53
  }
@@ -103,7 +107,7 @@ export class BlurtNodesChecker {
103
107
  catch (error) {
104
108
  node.status = "error";
105
109
  node.error = error.message;
106
- node.nb_error++;
110
+ this.updateNodeHistory(node, "error");
107
111
  node.score = 0;
108
112
  return node;
109
113
  }
@@ -191,7 +195,10 @@ export class BlurtNodesChecker {
191
195
  continue;
192
196
  }
193
197
  // 1. Version Compatibility Check
194
- if (node.version && canonicalVersion && node.version !== canonicalVersion) {
198
+ if (node.version && (node.version.toLowerCase().includes("alpha") || node.version.toLowerCase().includes("beta"))) {
199
+ node.status = "experimental";
200
+ }
201
+ else if (node.version && canonicalVersion && node.version !== canonicalVersion) {
195
202
  let consideredCanonical = canonicalVersion;
196
203
  let consideredNode = node.version;
197
204
  if (this.versionTolerance === "major" || this.versionTolerance === "minor") {
@@ -233,6 +240,9 @@ export class BlurtNodesChecker {
233
240
  }
234
241
  catch (e) {
235
242
  testError = e.message;
243
+ if (e.name === "RateLimitError") {
244
+ node.status = "throttled";
245
+ }
236
246
  }
237
247
  const duration = Date.now() - startTest;
238
248
  const r = {
@@ -260,17 +270,19 @@ export class BlurtNodesChecker {
260
270
  });
261
271
  await Promise.allSettled(testPromises);
262
272
  // 3. Final Scoring Calculations (0-100)
263
- if (criticalFailed && node.status !== "stale") {
273
+ if (node.status === "throttled") {
274
+ this.updateNodeHistory(node, "degraded");
275
+ }
276
+ else if (criticalFailed && node.status !== "stale") {
264
277
  node.status = "degraded";
265
- node.nb_degraded++;
278
+ this.updateNodeHistory(node, "degraded");
266
279
  }
267
280
  else {
268
- node.nb_ok++;
281
+ this.updateNodeHistory(node, "ok");
269
282
  }
270
- node.reliability = node.nb_ok / (node.nb_ok + node.nb_error + node.nb_degraded) || 0;
271
283
  let score = 0;
272
284
  // Base Health (40 points)
273
- score += node.reliability * 40;
285
+ score += (node.reliability || 0) * 40;
274
286
  // Latency (30 points). Max points if < 200ms. 0 points if approaches timeout.
275
287
  if (node.latency_avg) {
276
288
  const latencyScore = Math.max(0, 30 - ((node.latency_avg - 200) / this.timeout) * 30);
@@ -294,5 +306,15 @@ export class BlurtNodesChecker {
294
306
  this.nodes.sort((a, b) => b.score - a.score);
295
307
  this.message.next(this.nodes);
296
308
  }
309
+ updateNodeHistory(node, status) {
310
+ node.history.push(status);
311
+ if (node.history.length > this.historySize) {
312
+ node.history.shift();
313
+ }
314
+ node.nb_ok = node.history.filter(s => s === "ok").length;
315
+ node.nb_error = node.history.filter(s => s === "error").length;
316
+ node.nb_degraded = node.history.filter(s => s === "degraded").length;
317
+ node.reliability = node.nb_ok / node.history.length || 0;
318
+ }
297
319
  }
298
320
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/rpc.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ export declare class RateLimitError extends Error {
2
+ constructor(message: string);
3
+ }
1
4
  export declare class RpcClient {
2
5
  private url;
3
6
  private timeout;
package/lib/rpc.js CHANGED
@@ -1,3 +1,9 @@
1
+ export class RateLimitError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "RateLimitError";
5
+ }
6
+ }
1
7
  export class RpcClient {
2
8
  url;
3
9
  timeout;
@@ -35,6 +41,9 @@ export class RpcClient {
35
41
  });
36
42
  clearTimeout(timeoutId);
37
43
  if (!response.ok) {
44
+ if (response.status === 429) {
45
+ throw new RateLimitError(`Rate Limit Exceeded (HTTP 429)`);
46
+ }
38
47
  throw new Error(`HTTP Error ${response.status}: ${response.statusText}`);
39
48
  }
40
49
  const data = await response.json();
@@ -48,6 +57,10 @@ export class RpcClient {
48
57
  if (this.debug) {
49
58
  console.warn(`[RpcClient] Call failed on ${this.url} (${method}) - Attempt ${attempt + 1}/${this.maxRetries}. Error: ${error.message}`);
50
59
  }
60
+ // Do not retry on explicit Rate Limits, fail fast
61
+ if (error.name === "RateLimitError") {
62
+ throw error;
63
+ }
51
64
  attempt++;
52
65
  if (attempt >= this.maxRetries) {
53
66
  throw error;
package/lib/rpc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;IAEV;IACA;IACA;IACA;IACA;IALV,YACU,GAAW,EACX,UAAkB,IAAI,EACtB,aAAqB,CAAC,EACtB,aAAqB,GAAG,EACxB,QAAiB,KAAK;QAJtB,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAe;QACtB,eAAU,GAAV,UAAU,CAAY;QACtB,eAAU,GAAV,UAAU,CAAc;QACxB,UAAK,GAAL,KAAK,CAAiB;IAC7B,CAAC;IAEI,KAAK,CAAC,KAAK,CAAC,EAAU;QAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,SAAc,EAAE;QAChD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;oBACrC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,EAAE,EAAE,CAAC;wBACL,MAAM;wBACN,MAAM;qBACP,CAAC;oBACF,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAED,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,GAAG,KAAK,MAAM,eAAe,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1I,CAAC;gBAED,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,sBAAsB;gBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,SAAS;IAEV;IACA;IACA;IACA;IACA;IALV,YACU,GAAW,EACX,UAAkB,IAAI,EACtB,aAAqB,CAAC,EACtB,aAAqB,GAAG,EACxB,QAAiB,KAAK;QAJtB,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAe;QACtB,eAAU,GAAV,UAAU,CAAY;QACtB,eAAU,GAAV,UAAU,CAAc;QACxB,UAAK,GAAL,KAAK,CAAiB;IAC7B,CAAC;IAEI,KAAK,CAAC,KAAK,CAAC,EAAU;QAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,SAAc,EAAE;QAChD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;oBACrC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,EAAE,EAAE,CAAC;wBACL,MAAM;wBACN,MAAM;qBACP,CAAC;oBACF,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;wBAC5B,MAAM,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAC;oBAC7D,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAED,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,GAAG,KAAK,MAAM,eAAe,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1I,CAAC;gBAED,kDAAkD;gBAClD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACpC,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,sBAAsB;gBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
package/lib/types.d.ts CHANGED
@@ -3,6 +3,7 @@ export declare type OPTIONS = {
3
3
  timeout?: number;
4
4
  interval?: number;
5
5
  versionTolerance?: "major" | "minor" | "patch";
6
+ historySize?: number;
6
7
  maxRetries?: number;
7
8
  retryDelay?: number;
8
9
  staleThreshold?: number;
@@ -26,13 +27,14 @@ export declare type RPC_NODE = {
26
27
  nb_degraded: number;
27
28
  error?: string;
28
29
  last_check: number;
29
- status: "unknown" | "online" | "degraded" | "error" | "stale" | "forked" | "outdated";
30
+ status: "unknown" | "online" | "degraded" | "error" | "stale" | "forked" | "outdated" | "experimental" | "throttled";
30
31
  duration?: number;
31
32
  latency_avg?: number;
32
33
  reliability?: number;
33
34
  version?: string;
34
35
  deactivated?: boolean;
35
36
  score: number;
37
+ history: Array<"ok" | "error" | "degraded">;
36
38
  chain_id?: string;
37
39
  block_number?: number;
38
40
  block_id?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beblurt/blurt-nodes-checker",
3
- "version": "2.0.3",
3
+ "version": "2.2.0",
4
4
  "description": "BLURT blockchain RPC nodes servers checker (latency, availability, methods)",
5
5
  "type": "module",
6
6
  "node": ">=14.16",
@@ -29,7 +29,8 @@
29
29
  "build:cjs": "tsc -p tsconfig.cjs.json && tsc-alias -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
30
30
  "build": "npm run build:esm && npm run build:cjs",
31
31
  "prepare": "husky install",
32
- "release": "changeset publish"
32
+ "release:local": "changeset version && npm run build && git add . && git commit --no-verify -m 'chore(release): publish new version' && npm run tag:local && git push --follow-tags",
33
+ "tag:local": "git tag v$(node -p \"require('./package.json').version\")"
33
34
  },
34
35
  "publishConfig": {
35
36
  "access": "public"