@leofcoin/chain 1.9.15 → 1.9.17

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.
@@ -6302,36 +6302,6 @@ class Chain extends VersionControl {
6302
6302
  console.log("init");
6303
6303
  await super.init();
6304
6304
  console.log("super init done");
6305
- const peernetAny = globalThis.peernet;
6306
- if (typeof peernetAny.removePeer === "function" && !peernetAny.__chainRemovePeerGuardInstalled) {
6307
- const originalRemovePeer = peernetAny.removePeer.bind(peernetAny);
6308
- peernetAny.removePeer = async (peer) => {
6309
- if (!peer || typeof peer !== "object") {
6310
- debug("removePeer called with invalid peer (ignored)");
6311
- return;
6312
- }
6313
- const peerId = peer?.id || peer?.peerId;
6314
- if (!peerId || typeof peerId !== "string") {
6315
- debug("removePeer called with peer missing id (ignored)");
6316
- return;
6317
- }
6318
- const trackedPeers = Object.values(peernetAny.connections || {});
6319
- const isStillTracked = trackedPeers.some((trackedPeer) => {
6320
- const trackedId = trackedPeer?.id || trackedPeer?.peerId;
6321
- return trackedPeer === peer || trackedId === peerId;
6322
- });
6323
- if (!isStillTracked) {
6324
- debug(`removePeer called for unknown peer ${peerId} (ignored)`);
6325
- return;
6326
- }
6327
- try {
6328
- return await originalRemovePeer(peer);
6329
- } catch (error) {
6330
- debug("removePeer failed (ignored):", error?.message ?? error);
6331
- }
6332
- };
6333
- peernetAny.__chainRemovePeerGuardInstalled = true;
6334
- }
6335
6305
  this.#connectionMonitor.start(this.version);
6336
6306
  await globalThis.peernet.addRequestHandler("bw-request-message", () => {
6337
6307
  const bw = globalThis.peernet.client?.bw || { up: 0, down: 0 };
@@ -6395,10 +6365,41 @@ class Chain extends VersionControl {
6395
6365
  try {
6396
6366
  let response = await peer.request(node.encoded);
6397
6367
  response = await new globalThis.peernet.protos["peernet-response"](response);
6398
- if (!(response.decoded.response instanceof Uint8Array)) {
6399
- console.warn(`Deprecated: ${response.decoded.response} is not an Uint8Array`);
6400
- }
6401
- return response.decoded.response;
6368
+ const normalizeResponse = async (payload) => {
6369
+ if (payload && typeof payload === "object" && "response" in payload) {
6370
+ return normalizeResponse(payload.response);
6371
+ }
6372
+ if (payload instanceof Uint8Array || typeof Buffer !== "undefined" && Buffer.isBuffer(payload)) {
6373
+ let bytes = payload;
6374
+ for (let i = 0; i < 3; i++) {
6375
+ try {
6376
+ const nested = await new globalThis.peernet.protos["peernet-response"](bytes);
6377
+ payload = nested?.decoded?.response;
6378
+ if (!(payload instanceof Uint8Array)) break;
6379
+ bytes = payload;
6380
+ } catch {
6381
+ break;
6382
+ }
6383
+ }
6384
+ if (payload instanceof Uint8Array) {
6385
+ try {
6386
+ return JSON.parse(new TextDecoder().decode(payload));
6387
+ } catch {
6388
+ return payload;
6389
+ }
6390
+ }
6391
+ return payload;
6392
+ }
6393
+ if (typeof payload === "string") {
6394
+ try {
6395
+ return JSON.parse(payload);
6396
+ } catch {
6397
+ return payload;
6398
+ }
6399
+ }
6400
+ return payload;
6401
+ };
6402
+ return await normalizeResponse(response.decoded.response);
6402
6403
  } catch (error) {
6403
6404
  const peerId = peer?.peerId || peer?.id || peer?.address || "unknown";
6404
6405
  debug(`peernet request failed: ${request} -> ${peerId}:`, error?.message ?? error);
@@ -6483,16 +6484,6 @@ class Chain extends VersionControl {
6483
6484
  debug(`peer not found: ${peerId}`);
6484
6485
  return;
6485
6486
  }
6486
- const peerAny = peer;
6487
- if (typeof peerAny.on === "function" && !peerAny.__chainErrorListenerInstalled) {
6488
- peerAny.on("error", async (error) => {
6489
- const reason = error?.message ?? String(error);
6490
- const peerName = peerAny?.peerId || peerAny?.id || peerAny?.address || peerId || "unknown";
6491
- debug(`peer error: ${peerName}:`, reason);
6492
- await this.#recordPeerFailure(peerId, `peer error: ${reason}`);
6493
- });
6494
- peerAny.__chainErrorListenerInstalled = true;
6495
- }
6496
6487
  if (!peer.version) {
6497
6488
  try {
6498
6489
  let versionResponse = await this.#makeRequest(peer, "version");
package/exports/chain.js CHANGED
@@ -2525,36 +2525,6 @@ class Chain extends VersionControl {
2525
2525
  console.log("init");
2526
2526
  await super.init();
2527
2527
  console.log("super init done");
2528
- const peernetAny = globalThis.peernet;
2529
- if (typeof peernetAny.removePeer === "function" && !peernetAny.__chainRemovePeerGuardInstalled) {
2530
- const originalRemovePeer = peernetAny.removePeer.bind(peernetAny);
2531
- peernetAny.removePeer = async (peer) => {
2532
- if (!peer || typeof peer !== "object") {
2533
- debug("removePeer called with invalid peer (ignored)");
2534
- return;
2535
- }
2536
- const peerId = peer?.id || peer?.peerId;
2537
- if (!peerId || typeof peerId !== "string") {
2538
- debug("removePeer called with peer missing id (ignored)");
2539
- return;
2540
- }
2541
- const trackedPeers = Object.values(peernetAny.connections || {});
2542
- const isStillTracked = trackedPeers.some((trackedPeer) => {
2543
- const trackedId = trackedPeer?.id || trackedPeer?.peerId;
2544
- return trackedPeer === peer || trackedId === peerId;
2545
- });
2546
- if (!isStillTracked) {
2547
- debug(`removePeer called for unknown peer ${peerId} (ignored)`);
2548
- return;
2549
- }
2550
- try {
2551
- return await originalRemovePeer(peer);
2552
- } catch (error) {
2553
- debug("removePeer failed (ignored):", error?.message ?? error);
2554
- }
2555
- };
2556
- peernetAny.__chainRemovePeerGuardInstalled = true;
2557
- }
2558
2528
  this.#connectionMonitor.start(this.version);
2559
2529
  await globalThis.peernet.addRequestHandler("bw-request-message", () => {
2560
2530
  const bw = globalThis.peernet.client?.bw || { up: 0, down: 0 };
@@ -2618,10 +2588,41 @@ class Chain extends VersionControl {
2618
2588
  try {
2619
2589
  let response = await peer.request(node.encoded);
2620
2590
  response = await new globalThis.peernet.protos["peernet-response"](response);
2621
- if (!(response.decoded.response instanceof Uint8Array)) {
2622
- console.warn(`Deprecated: ${response.decoded.response} is not an Uint8Array`);
2623
- }
2624
- return response.decoded.response;
2591
+ const normalizeResponse = async (payload) => {
2592
+ if (payload && typeof payload === "object" && "response" in payload) {
2593
+ return normalizeResponse(payload.response);
2594
+ }
2595
+ if (payload instanceof Uint8Array || typeof Buffer !== "undefined" && Buffer.isBuffer(payload)) {
2596
+ let bytes = payload;
2597
+ for (let i = 0; i < 3; i++) {
2598
+ try {
2599
+ const nested = await new globalThis.peernet.protos["peernet-response"](bytes);
2600
+ payload = nested?.decoded?.response;
2601
+ if (!(payload instanceof Uint8Array)) break;
2602
+ bytes = payload;
2603
+ } catch {
2604
+ break;
2605
+ }
2606
+ }
2607
+ if (payload instanceof Uint8Array) {
2608
+ try {
2609
+ return JSON.parse(new TextDecoder().decode(payload));
2610
+ } catch {
2611
+ return payload;
2612
+ }
2613
+ }
2614
+ return payload;
2615
+ }
2616
+ if (typeof payload === "string") {
2617
+ try {
2618
+ return JSON.parse(payload);
2619
+ } catch {
2620
+ return payload;
2621
+ }
2622
+ }
2623
+ return payload;
2624
+ };
2625
+ return await normalizeResponse(response.decoded.response);
2625
2626
  } catch (error) {
2626
2627
  const peerId = peer?.peerId || peer?.id || peer?.address || "unknown";
2627
2628
  debug(`peernet request failed: ${request} -> ${peerId}:`, error?.message ?? error);
@@ -2706,16 +2707,6 @@ class Chain extends VersionControl {
2706
2707
  debug(`peer not found: ${peerId}`);
2707
2708
  return;
2708
2709
  }
2709
- const peerAny = peer;
2710
- if (typeof peerAny.on === "function" && !peerAny.__chainErrorListenerInstalled) {
2711
- peerAny.on("error", async (error) => {
2712
- const reason = error?.message ?? String(error);
2713
- const peerName = peerAny?.peerId || peerAny?.id || peerAny?.address || peerId || "unknown";
2714
- debug(`peer error: ${peerName}:`, reason);
2715
- await this.#recordPeerFailure(peerId, `peer error: ${reason}`);
2716
- });
2717
- peerAny.__chainErrorListenerInstalled = true;
2718
- }
2719
2710
  if (!peer.version) {
2720
2711
  try {
2721
2712
  let versionResponse = await this.#makeRequest(peer, "version");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/chain",
3
- "version": "1.9.15",
3
+ "version": "1.9.17",
4
4
  "description": "Official javascript implementation",
5
5
  "private": false,
6
6
  "exports": {