@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.
Files changed (129) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +45 -0
  3. package/dist/index.min.js +3 -0
  4. package/dist/src/connection/index.d.ts +188 -0
  5. package/dist/src/connection/index.d.ts.map +1 -0
  6. package/dist/src/connection/index.js +5 -0
  7. package/dist/src/connection/index.js.map +1 -0
  8. package/dist/src/connection/status.d.ts +4 -0
  9. package/dist/src/connection/status.d.ts.map +1 -0
  10. package/dist/src/connection/status.js +4 -0
  11. package/dist/src/connection/status.js.map +1 -0
  12. package/dist/src/connection-encrypter/index.d.ts +27 -0
  13. package/dist/src/connection-encrypter/index.d.ts.map +1 -0
  14. package/dist/src/connection-encrypter/index.js +2 -0
  15. package/dist/src/connection-encrypter/index.js.map +1 -0
  16. package/dist/src/connection-gater/index.d.ts +117 -0
  17. package/dist/src/connection-gater/index.d.ts.map +1 -0
  18. package/dist/src/connection-gater/index.js +2 -0
  19. package/dist/src/connection-gater/index.js.map +1 -0
  20. package/dist/src/content-routing/index.d.ts +79 -0
  21. package/dist/src/content-routing/index.d.ts.map +1 -0
  22. package/dist/src/content-routing/index.js +21 -0
  23. package/dist/src/content-routing/index.js.map +1 -0
  24. package/dist/src/errors.d.ts +33 -0
  25. package/dist/src/errors.d.ts.map +1 -0
  26. package/dist/src/errors.js +51 -0
  27. package/dist/src/errors.js.map +1 -0
  28. package/dist/src/events.d.ts +28 -0
  29. package/dist/src/events.d.ts.map +1 -0
  30. package/dist/src/events.js +70 -0
  31. package/dist/src/events.js.map +1 -0
  32. package/dist/src/index.d.ts +575 -0
  33. package/dist/src/index.d.ts.map +1 -0
  34. package/dist/src/index.js +17 -0
  35. package/dist/src/index.js.map +1 -0
  36. package/dist/src/keychain/index.d.ts +154 -0
  37. package/dist/src/keychain/index.d.ts.map +1 -0
  38. package/dist/src/keychain/index.js +23 -0
  39. package/dist/src/keychain/index.js.map +1 -0
  40. package/dist/src/keys/index.d.ts +35 -0
  41. package/dist/src/keys/index.d.ts.map +1 -0
  42. package/dist/src/keys/index.js +4 -0
  43. package/dist/src/keys/index.js.map +1 -0
  44. package/dist/src/metrics/index.d.ts +165 -0
  45. package/dist/src/metrics/index.d.ts.map +1 -0
  46. package/dist/src/metrics/index.js +2 -0
  47. package/dist/src/metrics/index.js.map +1 -0
  48. package/dist/src/metrics/tracked-map.d.ts +17 -0
  49. package/dist/src/metrics/tracked-map.d.ts.map +1 -0
  50. package/dist/src/metrics/tracked-map.js +38 -0
  51. package/dist/src/metrics/tracked-map.js.map +1 -0
  52. package/dist/src/peer-discovery/index.d.ts +28 -0
  53. package/dist/src/peer-discovery/index.d.ts.map +1 -0
  54. package/dist/src/peer-discovery/index.js +21 -0
  55. package/dist/src/peer-discovery/index.js.map +1 -0
  56. package/dist/src/peer-id/index.d.ts +30 -0
  57. package/dist/src/peer-id/index.d.ts.map +1 -0
  58. package/dist/src/peer-id/index.js +5 -0
  59. package/dist/src/peer-id/index.js.map +1 -0
  60. package/dist/src/peer-info/index.d.ts +8 -0
  61. package/dist/src/peer-info/index.d.ts.map +1 -0
  62. package/dist/src/peer-info/index.js +2 -0
  63. package/dist/src/peer-info/index.js.map +1 -0
  64. package/dist/src/peer-routing/index.d.ts +51 -0
  65. package/dist/src/peer-routing/index.d.ts.map +1 -0
  66. package/dist/src/peer-routing/index.js +21 -0
  67. package/dist/src/peer-routing/index.js.map +1 -0
  68. package/dist/src/peer-store/index.d.ts +247 -0
  69. package/dist/src/peer-store/index.d.ts.map +1 -0
  70. package/dist/src/peer-store/index.js +2 -0
  71. package/dist/src/peer-store/index.js.map +1 -0
  72. package/dist/src/peer-store/tags.d.ts +2 -0
  73. package/dist/src/peer-store/tags.d.ts.map +1 -0
  74. package/dist/src/peer-store/tags.js +2 -0
  75. package/dist/src/peer-store/tags.js.map +1 -0
  76. package/dist/src/record/index.d.ts +33 -0
  77. package/dist/src/record/index.d.ts.map +1 -0
  78. package/dist/src/record/index.js +2 -0
  79. package/dist/src/record/index.js.map +1 -0
  80. package/dist/src/startable.d.ts +46 -0
  81. package/dist/src/startable.d.ts.map +1 -0
  82. package/dist/src/startable.js +46 -0
  83. package/dist/src/startable.js.map +1 -0
  84. package/dist/src/stream-handler/index.d.ts +23 -0
  85. package/dist/src/stream-handler/index.d.ts.map +1 -0
  86. package/dist/src/stream-handler/index.js +2 -0
  87. package/dist/src/stream-handler/index.js.map +1 -0
  88. package/dist/src/stream-muxer/index.d.ts +51 -0
  89. package/dist/src/stream-muxer/index.d.ts.map +1 -0
  90. package/dist/src/stream-muxer/index.js +2 -0
  91. package/dist/src/stream-muxer/index.js.map +1 -0
  92. package/dist/src/stream-muxer/stream.d.ts +85 -0
  93. package/dist/src/stream-muxer/stream.d.ts.map +1 -0
  94. package/dist/src/stream-muxer/stream.js +255 -0
  95. package/dist/src/stream-muxer/stream.js.map +1 -0
  96. package/dist/src/topology/index.d.ts +9 -0
  97. package/dist/src/topology/index.d.ts.map +1 -0
  98. package/dist/src/topology/index.js +2 -0
  99. package/dist/src/topology/index.js.map +1 -0
  100. package/dist/src/transport/index.d.ts +96 -0
  101. package/dist/src/transport/index.d.ts.map +1 -0
  102. package/dist/src/transport/index.js +19 -0
  103. package/dist/src/transport/index.js.map +1 -0
  104. package/package.json +177 -0
  105. package/src/connection/index.ts +221 -0
  106. package/src/connection/status.ts +4 -0
  107. package/src/connection-encrypter/index.ts +30 -0
  108. package/src/connection-gater/index.ts +128 -0
  109. package/src/content-routing/index.ts +83 -0
  110. package/src/errors.ts +68 -0
  111. package/src/events.ts +100 -0
  112. package/src/index.ts +627 -0
  113. package/src/keychain/index.ts +167 -0
  114. package/src/keys/index.ts +38 -0
  115. package/src/metrics/index.ts +187 -0
  116. package/src/metrics/tracked-map.ts +65 -0
  117. package/src/peer-discovery/index.ts +29 -0
  118. package/src/peer-id/index.ts +39 -0
  119. package/src/peer-info/index.ts +8 -0
  120. package/src/peer-routing/index.ts +53 -0
  121. package/src/peer-store/index.ts +272 -0
  122. package/src/peer-store/tags.ts +2 -0
  123. package/src/record/index.ts +35 -0
  124. package/src/startable.ts +117 -0
  125. package/src/stream-handler/index.ts +27 -0
  126. package/src/stream-muxer/index.ts +58 -0
  127. package/src/stream-muxer/stream.ts +365 -0
  128. package/src/topology/index.ts +10 -0
  129. 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