@libp2p/interface 0.0.1-6fdaa7dc
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/LICENSE +4 -0
- package/README.md +45 -0
- package/dist/index.min.js +3 -0
- package/dist/src/connection/index.d.ts +188 -0
- package/dist/src/connection/index.d.ts.map +1 -0
- package/dist/src/connection/index.js +5 -0
- package/dist/src/connection/index.js.map +1 -0
- package/dist/src/connection/status.d.ts +4 -0
- package/dist/src/connection/status.d.ts.map +1 -0
- package/dist/src/connection/status.js +4 -0
- package/dist/src/connection/status.js.map +1 -0
- package/dist/src/connection-encrypter/index.d.ts +27 -0
- package/dist/src/connection-encrypter/index.d.ts.map +1 -0
- package/dist/src/connection-encrypter/index.js +2 -0
- package/dist/src/connection-encrypter/index.js.map +1 -0
- package/dist/src/connection-gater/index.d.ts +117 -0
- package/dist/src/connection-gater/index.d.ts.map +1 -0
- package/dist/src/connection-gater/index.js +2 -0
- package/dist/src/connection-gater/index.js.map +1 -0
- package/dist/src/content-routing/index.d.ts +79 -0
- package/dist/src/content-routing/index.d.ts.map +1 -0
- package/dist/src/content-routing/index.js +21 -0
- package/dist/src/content-routing/index.js.map +1 -0
- package/dist/src/errors.d.ts +33 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +51 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/events.d.ts +28 -0
- package/dist/src/events.d.ts.map +1 -0
- package/dist/src/events.js +70 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/index.d.ts +575 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +17 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/keychain/index.d.ts +154 -0
- package/dist/src/keychain/index.d.ts.map +1 -0
- package/dist/src/keychain/index.js +23 -0
- package/dist/src/keychain/index.js.map +1 -0
- package/dist/src/keys/index.d.ts +35 -0
- package/dist/src/keys/index.d.ts.map +1 -0
- package/dist/src/keys/index.js +4 -0
- package/dist/src/keys/index.js.map +1 -0
- package/dist/src/metrics/index.d.ts +165 -0
- package/dist/src/metrics/index.d.ts.map +1 -0
- package/dist/src/metrics/index.js +2 -0
- package/dist/src/metrics/index.js.map +1 -0
- package/dist/src/metrics/tracked-map.d.ts +17 -0
- package/dist/src/metrics/tracked-map.d.ts.map +1 -0
- package/dist/src/metrics/tracked-map.js +38 -0
- package/dist/src/metrics/tracked-map.js.map +1 -0
- package/dist/src/peer-discovery/index.d.ts +28 -0
- package/dist/src/peer-discovery/index.d.ts.map +1 -0
- package/dist/src/peer-discovery/index.js +21 -0
- package/dist/src/peer-discovery/index.js.map +1 -0
- package/dist/src/peer-id/index.d.ts +30 -0
- package/dist/src/peer-id/index.d.ts.map +1 -0
- package/dist/src/peer-id/index.js +5 -0
- package/dist/src/peer-id/index.js.map +1 -0
- package/dist/src/peer-info/index.d.ts +8 -0
- package/dist/src/peer-info/index.d.ts.map +1 -0
- package/dist/src/peer-info/index.js +2 -0
- package/dist/src/peer-info/index.js.map +1 -0
- package/dist/src/peer-routing/index.d.ts +51 -0
- package/dist/src/peer-routing/index.d.ts.map +1 -0
- package/dist/src/peer-routing/index.js +21 -0
- package/dist/src/peer-routing/index.js.map +1 -0
- package/dist/src/peer-store/index.d.ts +247 -0
- package/dist/src/peer-store/index.d.ts.map +1 -0
- package/dist/src/peer-store/index.js +2 -0
- package/dist/src/peer-store/index.js.map +1 -0
- package/dist/src/peer-store/tags.d.ts +2 -0
- package/dist/src/peer-store/tags.d.ts.map +1 -0
- package/dist/src/peer-store/tags.js +2 -0
- package/dist/src/peer-store/tags.js.map +1 -0
- package/dist/src/record/index.d.ts +33 -0
- package/dist/src/record/index.d.ts.map +1 -0
- package/dist/src/record/index.js +2 -0
- package/dist/src/record/index.js.map +1 -0
- package/dist/src/startable.d.ts +46 -0
- package/dist/src/startable.d.ts.map +1 -0
- package/dist/src/startable.js +46 -0
- package/dist/src/startable.js.map +1 -0
- package/dist/src/stream-handler/index.d.ts +23 -0
- package/dist/src/stream-handler/index.d.ts.map +1 -0
- package/dist/src/stream-handler/index.js +2 -0
- package/dist/src/stream-handler/index.js.map +1 -0
- package/dist/src/stream-muxer/index.d.ts +51 -0
- package/dist/src/stream-muxer/index.d.ts.map +1 -0
- package/dist/src/stream-muxer/index.js +2 -0
- package/dist/src/stream-muxer/index.js.map +1 -0
- package/dist/src/stream-muxer/stream.d.ts +85 -0
- package/dist/src/stream-muxer/stream.d.ts.map +1 -0
- package/dist/src/stream-muxer/stream.js +255 -0
- package/dist/src/stream-muxer/stream.js.map +1 -0
- package/dist/src/topology/index.d.ts +9 -0
- package/dist/src/topology/index.d.ts.map +1 -0
- package/dist/src/topology/index.js +2 -0
- package/dist/src/topology/index.js.map +1 -0
- package/dist/src/transport/index.d.ts +96 -0
- package/dist/src/transport/index.d.ts.map +1 -0
- package/dist/src/transport/index.js +19 -0
- package/dist/src/transport/index.js.map +1 -0
- package/package.json +177 -0
- package/src/connection/index.ts +221 -0
- package/src/connection/status.ts +4 -0
- package/src/connection-encrypter/index.ts +30 -0
- package/src/connection-gater/index.ts +128 -0
- package/src/content-routing/index.ts +83 -0
- package/src/errors.ts +68 -0
- package/src/events.ts +100 -0
- package/src/index.ts +627 -0
- package/src/keychain/index.ts +167 -0
- package/src/keys/index.ts +38 -0
- package/src/metrics/index.ts +187 -0
- package/src/metrics/tracked-map.ts +65 -0
- package/src/peer-discovery/index.ts +29 -0
- package/src/peer-id/index.ts +39 -0
- package/src/peer-info/index.ts +8 -0
- package/src/peer-routing/index.ts +53 -0
- package/src/peer-store/index.ts +272 -0
- package/src/peer-store/tags.ts +2 -0
- package/src/record/index.ts +35 -0
- package/src/startable.ts +117 -0
- package/src/stream-handler/index.ts +27 -0
- package/src/stream-muxer/index.ts +58 -0
- package/src/stream-muxer/stream.ts +365 -0
- package/src/topology/index.ts +10 -0
- package/src/transport/index.ts +111 -0
package/src/errors.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* When this error is thrown it means an operation was aborted,
|
|
4
|
+
* usually in response to the `abort` event being emitted by an
|
|
5
|
+
* AbortSignal.
|
|
6
|
+
*/
|
|
7
|
+
export class AbortError extends Error {
|
|
8
|
+
public readonly code: string
|
|
9
|
+
public readonly type: string
|
|
10
|
+
|
|
11
|
+
constructor (message: string = 'The operation was aborted') {
|
|
12
|
+
super(message)
|
|
13
|
+
this.code = AbortError.code
|
|
14
|
+
this.type = AbortError.type
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static readonly code = 'ABORT_ERR'
|
|
18
|
+
|
|
19
|
+
static readonly type = 'aborted'
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class CodeError<T extends Record<string, any> = Record<string, never>> extends Error {
|
|
23
|
+
public readonly props: T
|
|
24
|
+
|
|
25
|
+
constructor (
|
|
26
|
+
message: string,
|
|
27
|
+
public readonly code: string,
|
|
28
|
+
props?: T
|
|
29
|
+
) {
|
|
30
|
+
super(message)
|
|
31
|
+
|
|
32
|
+
this.name = props?.name ?? 'CodeError'
|
|
33
|
+
this.props = props ?? {} as T // eslint-disable-line @typescript-eslint/consistent-type-assertions
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class UnexpectedPeerError extends Error {
|
|
38
|
+
public code: string
|
|
39
|
+
|
|
40
|
+
constructor (message = 'Unexpected Peer') {
|
|
41
|
+
super(message)
|
|
42
|
+
this.code = UnexpectedPeerError.code
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static readonly code = 'ERR_UNEXPECTED_PEER'
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export class InvalidCryptoExchangeError extends Error {
|
|
49
|
+
public code: string
|
|
50
|
+
|
|
51
|
+
constructor (message = 'Invalid crypto exchange') {
|
|
52
|
+
super(message)
|
|
53
|
+
this.code = InvalidCryptoExchangeError.code
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static readonly code = 'ERR_INVALID_CRYPTO_EXCHANGE'
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export class InvalidCryptoTransmissionError extends Error {
|
|
60
|
+
public code: string
|
|
61
|
+
|
|
62
|
+
constructor (message = 'Invalid crypto transmission') {
|
|
63
|
+
super(message)
|
|
64
|
+
this.code = InvalidCryptoTransmissionError.code
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static readonly code = 'ERR_INVALID_CRYPTO_TRANSMISSION'
|
|
68
|
+
}
|
package/src/events.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export interface EventCallback<EventType> { (evt: EventType): void }
|
|
2
|
+
export interface EventObject<EventType> { handleEvent: EventCallback<EventType> }
|
|
3
|
+
export type EventHandler<EventType> = EventCallback<EventType> | EventObject<EventType>
|
|
4
|
+
|
|
5
|
+
interface Listener {
|
|
6
|
+
once: boolean
|
|
7
|
+
callback: any
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Adds types to the EventTarget class. Hopefully this won't be necessary forever.
|
|
12
|
+
*
|
|
13
|
+
* https://github.com/microsoft/TypeScript/issues/28357
|
|
14
|
+
* https://github.com/microsoft/TypeScript/issues/43477
|
|
15
|
+
* https://github.com/microsoft/TypeScript/issues/299
|
|
16
|
+
* etc
|
|
17
|
+
*/
|
|
18
|
+
export class EventEmitter<EventMap extends Record<string, any>> extends EventTarget {
|
|
19
|
+
#listeners = new Map<any, Listener[]>()
|
|
20
|
+
|
|
21
|
+
listenerCount (type: string): number {
|
|
22
|
+
const listeners = this.#listeners.get(type)
|
|
23
|
+
|
|
24
|
+
if (listeners == null) {
|
|
25
|
+
return 0
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return listeners.length
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
addEventListener<K extends keyof EventMap>(type: K, listener: EventHandler<EventMap[K]> | null, options?: boolean | AddEventListenerOptions): void
|
|
32
|
+
addEventListener (type: string, listener: EventHandler<Event>, options?: boolean | AddEventListenerOptions): void {
|
|
33
|
+
super.addEventListener(type, listener, options)
|
|
34
|
+
|
|
35
|
+
let list = this.#listeners.get(type)
|
|
36
|
+
|
|
37
|
+
if (list == null) {
|
|
38
|
+
list = []
|
|
39
|
+
this.#listeners.set(type, list)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
list.push({
|
|
43
|
+
callback: listener,
|
|
44
|
+
once: (options !== true && options !== false && options?.once) ?? false
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
removeEventListener<K extends keyof EventMap>(type: K, listener?: EventHandler<EventMap[K]> | null, options?: boolean | EventListenerOptions): void
|
|
49
|
+
removeEventListener (type: string, listener?: EventHandler<Event>, options?: boolean | EventListenerOptions): void {
|
|
50
|
+
super.removeEventListener(type.toString(), listener ?? null, options)
|
|
51
|
+
|
|
52
|
+
let list = this.#listeners.get(type)
|
|
53
|
+
|
|
54
|
+
if (list == null) {
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
list = list.filter(({ callback }) => callback !== listener)
|
|
59
|
+
this.#listeners.set(type, list)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
dispatchEvent (event: Event): boolean {
|
|
63
|
+
const result = super.dispatchEvent(event)
|
|
64
|
+
|
|
65
|
+
let list = this.#listeners.get(event.type)
|
|
66
|
+
|
|
67
|
+
if (list == null) {
|
|
68
|
+
return result
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
list = list.filter(({ once }) => !once)
|
|
72
|
+
this.#listeners.set(event.type, list)
|
|
73
|
+
|
|
74
|
+
return result
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
safeDispatchEvent<Detail>(type: keyof EventMap, detail: CustomEventInit<Detail>): boolean {
|
|
78
|
+
return this.dispatchEvent(new CustomEvent<Detail>(type as string, detail))
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* CustomEvent is a standard event but it's not supported by node.
|
|
84
|
+
*
|
|
85
|
+
* Remove this when https://github.com/nodejs/node/issues/40678 is closed.
|
|
86
|
+
*
|
|
87
|
+
* Ref: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
|
|
88
|
+
*/
|
|
89
|
+
class CustomEventPolyfill<T = any> extends Event {
|
|
90
|
+
/** Returns any custom data event was created with. Typically used for synthetic events. */
|
|
91
|
+
public detail: T
|
|
92
|
+
|
|
93
|
+
constructor (message: string, data?: EventInit & { detail: T }) {
|
|
94
|
+
super(message, data)
|
|
95
|
+
// @ts-expect-error could be undefined
|
|
96
|
+
this.detail = data?.detail
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export const CustomEvent = globalThis.CustomEvent ?? CustomEventPolyfill
|