Skip to content

Commit f768e80

Browse files
0.1.14
1 parent 40c3d82 commit f768e80

File tree

9 files changed

+84
-31
lines changed

9 files changed

+84
-31
lines changed

index.d.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,33 @@ export interface CoinSpend {
4444
solution: string
4545
offset: number
4646
}
47+
export interface NewPeakHeightEvent {
48+
oldPeak?: number | null
49+
newPeak: number
50+
peerId: string
51+
}
4752
export declare function initTracing(): void
4853
export declare class ChiaBlockListener {
4954
constructor()
5055
addPeer(host: string, port: number, networkId: string): string
5156
disconnectPeer(peerId: string): boolean
5257
disconnectAllPeers(): void
5358
getConnectedPeers(): Array<string>
59+
// Typed event method overloads
60+
61+
on(event: 'blockReceived', callback: (event: BlockReceivedEvent) => void): void
62+
63+
on(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
64+
65+
on(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
66+
5467
on(event: string, callback: (...args: any[]) => any): void
68+
off(event: 'blockReceived', callback: (event: BlockReceivedEvent) => void): void
69+
70+
off(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
71+
72+
off(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
73+
5574
off(event: string, callback: (...args: any[]) => any): void
5675
getBlockByHeight(peerId: string, height: number): BlockReceivedEvent
5776
getBlocksRange(peerId: string, startHeight: number, endHeight: number): Array<BlockReceivedEvent>
@@ -64,6 +83,13 @@ export declare class ChiaPeerPool {
6483
shutdown(): Promise<void>
6584
getConnectedPeers(): Promise<Array<string>>
6685
getPeakHeight(): Promise<number | null>
86+
// Typed event method overloads for ChiaPeerPool
87+
on(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
88+
on(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
89+
on(event: 'newPeakHeight', callback: (event: NewPeakHeightEvent) => void): void
6790
on(event: string, callback: (...args: any[]) => any): void
91+
off(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
92+
off(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
93+
off(event: 'newPeakHeight', callback: (event: NewPeakHeightEvent) => void): void
6894
off(event: string, callback: (...args: any[]) => any): void
6995
}

npm/darwin-arm64/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dignetwork/chia-block-listener-darwin-arm64",
3-
"version": "0.1.13",
3+
"version": "0.1.14",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/DIG-Network/chia-block-listener"

npm/darwin-x64/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dignetwork/chia-block-listener-darwin-x64",
3-
"version": "0.1.13",
3+
"version": "0.1.14",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/DIG-Network/chia-block-listener"

npm/linux-arm64-gnu/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dignetwork/chia-block-listener-linux-arm64-gnu",
3-
"version": "0.1.13",
3+
"version": "0.1.14",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/DIG-Network/chia-block-listener"

npm/linux-x64-gnu/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dignetwork/chia-block-listener-linux-x64-gnu",
3-
"version": "0.1.13",
3+
"version": "0.1.14",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/DIG-Network/chia-block-listener"

npm/win32-x64-msvc/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dignetwork/chia-block-listener-win32-x64-msvc",
3-
"version": "0.1.13",
3+
"version": "0.1.14",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/DIG-Network/chia-block-listener"

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dignetwork/chia-block-listener",
3-
"version": "0.1.13",
3+
"version": "0.1.14",
44
"main": "index.js",
55
"types": "index.d.ts",
66
"repository": {

scripts/post-build.js

Lines changed: 47 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,43 +28,65 @@ function addTypedOverloads() {
2828
return;
2929
}
3030

31-
// Find the on and off method declarations and add overloads before them
32-
const onMethodRegex = /(\s+)(on\(event: string, callback: \(\.\.\.args: any\[\]\) => any\): void)/;
33-
const offMethodRegex = /(\s+)(off\(event: string, callback: \(\.\.\.args: any\[\]\) => any\): void)/;
31+
// Add NewPeakHeightEvent interface if not present
32+
if (!content.includes('NewPeakHeightEvent')) {
33+
const insertPosition = content.indexOf('export declare function initTracing(): void');
34+
if (insertPosition !== -1) {
35+
const newInterface = `export interface NewPeakHeightEvent {
36+
oldPeak?: number | null
37+
newPeak: number
38+
peerId: string
39+
}
40+
`;
41+
content = content.substring(0, insertPosition) + newInterface + content.substring(insertPosition);
42+
console.log('✅ Added NewPeakHeightEvent interface');
43+
}
44+
}
3445

35-
// Add typed overloads for 'on' method
36-
if (onMethodRegex.test(content)) {
46+
// Handle ChiaBlockListener events - find the class and add typed overloads
47+
let blockListenerMatch = content.match(/(export declare class ChiaBlockListener \{[\s\S]*?)(\s+)(on\(event: string, callback: \(\.\.\.args: any\[\]\) => any\): void)/);
48+
if (blockListenerMatch) {
49+
const replacement = `${blockListenerMatch[1]}${blockListenerMatch[2]}// Typed event method overloads for ChiaBlockListener
50+
${blockListenerMatch[2]}on(event: 'blockReceived', callback: (event: BlockReceivedEvent) => void): void
51+
${blockListenerMatch[2]}on(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
52+
${blockListenerMatch[2]}on(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
53+
${blockListenerMatch[2]}${blockListenerMatch[3]}`;
54+
content = content.replace(blockListenerMatch[0], replacement);
55+
56+
// Also add off method overloads
3757
content = content.replace(
38-
onMethodRegex,
39-
`$1// Typed event method overloads
40-
$1on(event: 'blockReceived', callback: (event: BlockReceivedEvent) => void): void
41-
$1on(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
42-
$1on(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
43-
$1$2`
58+
/(export declare class ChiaBlockListener \{[\s\S]*?)(\s+)(off\(event: string, callback: \(\.\.\.args: any\[\]\) => any\): void)/,
59+
`$1$2off(event: 'blockReceived', callback: (event: BlockReceivedEvent) => void): void
60+
$2off(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
61+
$2off(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
62+
$2$3`
4463
);
45-
} else {
46-
console.error('❌ Could not find on() method in index.d.ts');
47-
return;
4864
}
4965

50-
// Add typed overloads for 'off' method
51-
if (offMethodRegex.test(content)) {
66+
// Handle ChiaPeerPool events - find the class and add typed overloads
67+
let peerPoolMatch = content.match(/(export declare class ChiaPeerPool \{[\s\S]*?)(\s+)(on\(event: string, callback: \(\.\.\.args: any\[\]\) => any\): void)/);
68+
if (peerPoolMatch) {
69+
const replacement = `${peerPoolMatch[1]}${peerPoolMatch[2]}// Typed event method overloads for ChiaPeerPool
70+
${peerPoolMatch[2]}on(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
71+
${peerPoolMatch[2]}on(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
72+
${peerPoolMatch[2]}on(event: 'newPeakHeight', callback: (event: NewPeakHeightEvent) => void): void
73+
${peerPoolMatch[2]}${peerPoolMatch[3]}`;
74+
content = content.replace(peerPoolMatch[0], replacement);
75+
76+
// Also add off method overloads
5277
content = content.replace(
53-
offMethodRegex,
54-
`$1off(event: 'blockReceived', callback: (event: BlockReceivedEvent) => void): void
55-
$1off(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
56-
$1off(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
57-
$1$2`
78+
/(export declare class ChiaPeerPool \{[\s\S]*?)(\s+)(off\(event: string, callback: \(\.\.\.args: any\[\]\) => any\): void)/,
79+
`$1$2off(event: 'peerConnected', callback: (event: PeerConnectedEvent) => void): void
80+
$2off(event: 'peerDisconnected', callback: (event: PeerDisconnectedEvent) => void): void
81+
$2off(event: 'newPeakHeight', callback: (event: NewPeakHeightEvent) => void): void
82+
$2$3`
5883
);
59-
} else {
60-
console.error('❌ Could not find off() method in index.d.ts');
61-
return;
6284
}
6385

6486
// Write the updated content back to the file
6587
fs.writeFileSync(indexDtsPath, content, 'utf8');
6688

67-
console.log('✅ Successfully added typed event method overloads to index.d.ts');
89+
console.log('✅ Successfully added typed event method overloads for both ChiaBlockListener and ChiaPeerPool');
6890
} catch (error) {
6991
console.error('❌ Error adding typed overloads:', error.message);
7092
process.exit(1);

src/peer_pool.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use crate::peer::PeerConnection;
66
use chia_generator_parser::{BlockParser, ParsedBlock};
77
use chia_protocol::FullBlock;
88
use hex::encode as hex_encode;
9+
use napi_derive::napi;
910
use std::collections::{HashMap, VecDeque};
1011
use std::sync::Arc;
1112
use std::time::{Duration, Instant};
@@ -24,9 +25,13 @@ pub type PeerDisconnectedCallback = Box<dyn Fn(PeerDisconnectedEvent) + Send + S
2425
pub type NewPeakHeightCallback = Box<dyn Fn(NewPeakHeightEvent) + Send + Sync + 'static>;
2526

2627
#[derive(Debug, Clone)]
28+
#[napi(object)]
2729
pub struct NewPeakHeightEvent {
30+
#[napi(js_name = "oldPeak")]
2831
pub old_peak: Option<u32>,
32+
#[napi(js_name = "newPeak")]
2933
pub new_peak: u32,
34+
#[napi(js_name = "peerId")]
3035
pub peer_id: String,
3136
}
3237

0 commit comments

Comments
 (0)