@peerbit/stream-interface 1.0.11 → 2.0.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.
@@ -1,10 +1,19 @@
1
1
  import { PublicSignKey } from "@peerbit/crypto";
2
2
  import type { PeerId } from "@libp2p/interface/peer-id";
3
+ import { DataMessage, Message } from "./messages.js";
3
4
  export interface PeerEvents {
4
5
  "peer:reachable": CustomEvent<PublicSignKey>;
5
6
  "peer:unreachable": CustomEvent<PublicSignKey>;
6
7
  }
8
+ export interface MessageEvents {
9
+ message: CustomEvent<Message>;
10
+ }
11
+ export interface StreamEvents extends PeerEvents, MessageEvents {
12
+ data: CustomEvent<DataMessage>;
13
+ }
7
14
  export * from "./messages.js";
8
15
  export interface WaitForPeer {
9
- waitFor(peer: PeerId | PublicSignKey): Promise<void>;
16
+ waitFor(peer: PeerId | PublicSignKey, options?: {
17
+ signal?: AbortSignal;
18
+ }): Promise<void>;
10
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,eAAe,CAAC"}
@@ -1,133 +1,141 @@
1
1
  import { Uint8ArrayList } from "uint8arraylist";
2
2
  import { PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
3
+ import type { PeerId } from "@libp2p/interface/peer-id";
4
+ export declare const ID_LENGTH = 32;
3
5
  /**
4
6
  * The default msgID implementation
5
7
  * Child class can override this.
6
8
  */
7
9
  export declare const getMsgId: (msg: Uint8ArrayList | Uint8Array) => Promise<string>;
8
- export declare const ID_LENGTH = 32;
9
- export declare class MessageHeader {
10
+ export declare abstract class DeliveryMode {
11
+ }
12
+ /**
13
+ * when you just want to deliver at paths, but does not expect acknowledgement
14
+ */
15
+ export declare class SilentDelivery extends DeliveryMode {
16
+ to: string[];
17
+ redundancy: number;
18
+ constructor(properties: {
19
+ to: (string | PublicSignKey | PeerId)[] | Set<string>;
20
+ redundancy: number;
21
+ });
22
+ }
23
+ /**
24
+ * Deliver and expect acknowledgement
25
+ */
26
+ export declare class AcknowledgeDelivery extends DeliveryMode {
27
+ to: string[];
28
+ redundancy: number;
29
+ constructor(properties: {
30
+ to: (string | PublicSignKey | PeerId)[] | Set<string>;
31
+ redundancy: number;
32
+ });
33
+ }
34
+ /**
35
+ * Deliver but with greedy fanout so that we eventually reach our target
36
+ * Expect acknowledgement
37
+ */
38
+ export declare class SeekDelivery extends DeliveryMode {
39
+ to?: string[];
40
+ redundancy: number;
41
+ constructor(properties: {
42
+ to?: (string | PublicSignKey | PeerId)[] | Set<string>;
43
+ redundancy: number;
44
+ });
45
+ }
46
+ export declare class TracedDelivery extends DeliveryMode {
47
+ trace: string[];
48
+ constructor(trace: string[]);
49
+ }
50
+ export declare class AnyWhere extends DeliveryMode {
51
+ constructor();
52
+ }
53
+ export declare class Signatures {
54
+ signatures: SignatureWithKey[];
55
+ constructor(signatures?: SignatureWithKey[]);
56
+ equals(other: Signatures): boolean;
57
+ get publicKeys(): PublicSignKey[];
58
+ }
59
+ declare abstract class PeerInfo {
60
+ }
61
+ export declare class MultiAddrinfo extends PeerInfo {
62
+ multiaddrs: string[];
63
+ constructor(multiaddrs: string[]);
64
+ }
65
+ export declare class MessageHeader<T extends DeliveryMode = DeliveryMode> {
10
66
  private _id;
11
67
  private _timestamp;
12
68
  private _expires;
13
- constructor(properties?: {
69
+ private _origin?;
70
+ mode: T;
71
+ signatures: Signatures | undefined;
72
+ constructor(properties: {
73
+ origin?: MultiAddrinfo;
14
74
  expires?: bigint;
15
75
  id?: Uint8Array;
76
+ mode: T;
16
77
  });
17
78
  get id(): Uint8Array;
18
79
  get expires(): bigint;
19
80
  get timetamp(): bigint;
81
+ get origin(): MultiAddrinfo | undefined;
20
82
  equals(other: MessageHeader): boolean;
21
83
  verify(): boolean;
22
84
  }
23
- export declare class Signatures {
24
- signatures: SignatureWithKey[];
25
- constructor(signatures?: SignatureWithKey[]);
26
- equals(other: Signatures): boolean;
27
- get publicKeys(): PublicSignKey[];
28
- hashPublicKeys(): Promise<string>;
29
- }
30
- export declare abstract class Message {
31
- static from(bytes: Uint8ArrayList): DataMessage | Hello | Goodbye | PingPong;
85
+ export declare abstract class Message<T extends DeliveryMode = DeliveryMode> {
86
+ static from(bytes: Uint8ArrayList): DataMessage<SilentDelivery | AcknowledgeDelivery | SeekDelivery | AnyWhere> | ACK | Hello | Goodbye;
87
+ abstract get header(): MessageHeader<T>;
88
+ sign(signer: (bytes: Uint8Array) => Promise<SignatureWithKey>): Promise<this>;
32
89
  abstract bytes(): Uint8ArrayList | Uint8Array;
33
- abstract equals(other: Message): boolean;
34
- abstract verify(expectSignatures: boolean): Promise<boolean>;
90
+ _verified: boolean;
91
+ verify(expectSignatures: boolean): Promise<boolean>;
35
92
  }
36
- export declare class DataMessage extends Message {
93
+ export declare class DataMessage<T extends SilentDelivery | SeekDelivery | AcknowledgeDelivery | AnyWhere = SilentDelivery | SeekDelivery | AcknowledgeDelivery | AnyWhere> extends Message<T> {
37
94
  private _header;
38
- private _to;
39
- private _signatures;
40
- private _data;
95
+ private _data?;
41
96
  constructor(properties: {
42
- header?: MessageHeader;
43
- to?: string[];
44
- data: Uint8Array;
45
- signatures?: Signatures;
97
+ header: MessageHeader<T>;
98
+ data?: Uint8Array;
46
99
  });
47
100
  get id(): Uint8Array;
48
- get signatures(): Signatures;
49
- get header(): MessageHeader;
50
- get to(): string[];
51
- set to(to: string[]);
52
- get sender(): PublicSignKey;
53
- get data(): Uint8Array;
54
- _serialized: Uint8Array | undefined;
55
- get serialized(): Uint8Array | undefined;
56
- _prefix: Uint8Array | undefined;
57
- get prefix(): Uint8Array;
58
- createPrefix(): Promise<Uint8Array>;
59
- getSuffix(iteration: number): Uint8Array;
60
- sign(sign: (bytes: Uint8Array) => Promise<SignatureWithKey>): Promise<this>;
61
- verify(expectSignatures: boolean): Promise<boolean>;
101
+ get header(): MessageHeader<T>;
102
+ get data(): Uint8Array | undefined;
62
103
  /** Manually ser/der for performance gains */
63
104
  bytes(): Uint8Array;
64
105
  static from(bytes: Uint8ArrayList): DataMessage;
65
- equals(other: Message): boolean;
66
106
  }
67
- export declare class NetworkInfo {
68
- pingLatencies: number[];
69
- constructor(pingLatencies: number[]);
107
+ export declare class ACK extends Message {
108
+ header: MessageHeader<TracedDelivery>;
109
+ messageIdToAcknowledge: Uint8Array;
110
+ seenCounter: number;
111
+ constructor(properties: {
112
+ messageIdToAcknowledge: Uint8Array;
113
+ seenCounter: number;
114
+ header: MessageHeader<TracedDelivery>;
115
+ });
116
+ get id(): Uint8Array;
117
+ bytes(): Uint8Array;
118
+ static from(bytes: Uint8ArrayList): ACK;
70
119
  }
71
120
  export declare class Hello extends Message {
72
121
  header: MessageHeader;
73
- multiaddrs: string[];
74
- data?: Uint8Array;
75
- networkInfo: NetworkInfo;
76
- signatures: Signatures;
77
- constructor(options?: {
78
- multiaddrs?: string[];
79
- data?: Uint8Array;
122
+ joined: string[];
123
+ constructor(properties: {
124
+ joined: string[];
80
125
  });
81
- get sender(): PublicSignKey;
126
+ get id(): Uint8Array;
82
127
  bytes(): Uint8Array;
83
128
  static from(bytes: Uint8ArrayList): Hello;
84
- _prefix: Uint8Array | undefined;
85
- get prefix(): Uint8Array;
86
- createPrefix(): Promise<Uint8Array>;
87
- getSuffix(iteration: number): Uint8Array[];
88
- sign(sign: (bytes: Uint8Array) => Promise<SignatureWithKey>): Promise<this>;
89
- verify(expectSignatures: boolean): Promise<boolean>;
90
- equals(other: Message): boolean;
91
129
  }
92
130
  export declare class Goodbye extends Message {
93
- header: MessageHeader;
94
- early?: boolean;
95
- data?: Uint8Array;
96
- signatures: Signatures;
97
- constructor(properties?: {
98
- header?: MessageHeader;
99
- data?: Uint8Array;
100
- early?: boolean;
131
+ header: MessageHeader<SilentDelivery>;
132
+ leaving: string[];
133
+ constructor(properties: {
134
+ leaving: string[];
135
+ header: MessageHeader<SilentDelivery>;
101
136
  });
102
- get sender(): PublicSignKey;
137
+ get id(): Uint8Array;
103
138
  bytes(): Uint8Array;
104
139
  static from(bytes: Uint8ArrayList): Goodbye;
105
- _prefix: Uint8Array | undefined;
106
- get prefix(): Uint8Array;
107
- createPrefix(): Promise<Uint8Array>;
108
- getSuffix(iteration: number): Uint8Array;
109
- sign(sign: (bytes: Uint8Array) => Promise<SignatureWithKey>): Promise<this>;
110
- verify(expectSignatures: boolean): Promise<boolean>;
111
- equals(other: Message): boolean;
112
- }
113
- export declare abstract class PingPong extends Message {
114
- static from(bytes: Uint8ArrayList): PingPong;
115
- bytes(): Uint8ArrayList | Uint8Array;
116
- verify(_expectSignatures: boolean): Promise<boolean>;
117
- abstract get pingBytes(): Uint8Array;
118
- }
119
- export declare class Ping extends PingPong {
120
- pingBytes: Uint8Array;
121
- constructor();
122
- equals(other: Message): boolean;
123
- }
124
- export declare class Pong extends PingPong {
125
- pingBytes: Uint8Array;
126
- constructor(pingBytes: Uint8Array);
127
- equals(other: Message): boolean;
128
- }
129
- export declare class Connections {
130
- connections: [string, string][];
131
- constructor(connections: [string, string][]);
132
- equals(other: Connections): boolean;
133
140
  }
141
+ export {};