Skip to content

Commit cc7b34c

Browse files
authored
fix: deduplicate typed event target (#3170)
Re-use main-event implementation to reduce bundle sizes slightly.
1 parent b8600fc commit cc7b34c

File tree

127 files changed

+234
-259
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+234
-259
lines changed

packages/integration-tests/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
"it-map": "^3.1.3",
7171
"it-pipe": "^3.0.1",
7272
"libp2p": "^2.8.8",
73+
"main-event": "^1.0.1",
7374
"multiformats": "^13.3.6",
7475
"p-defer": "^4.0.1",
7576
"p-event": "^6.0.1",

packages/integration-tests/test/bootstrap.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
import { bootstrap } from '@libp2p/bootstrap'
44
import { generateKeyPair } from '@libp2p/crypto/keys'
5-
import { TypedEventEmitter, peerDiscoverySymbol } from '@libp2p/interface'
5+
import { peerDiscoverySymbol } from '@libp2p/interface'
66
import { mplex } from '@libp2p/mplex'
77
import { peerIdFromPrivateKey } from '@libp2p/peer-id'
88
import { plaintext } from '@libp2p/plaintext'
99
import { webSockets } from '@libp2p/websockets'
1010
import { multiaddr } from '@multiformats/multiaddr'
1111
import { expect } from 'aegir/chai'
1212
import { createLibp2p } from 'libp2p'
13+
import { TypedEventEmitter } from 'main-event'
1314
import defer from 'p-defer'
1415
import sinon from 'sinon'
1516
import type { Libp2p, PeerDiscovery, PeerDiscoveryEvents, PeerId } from '@libp2p/interface'

packages/interface-compliance-tests/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
"it-stream-types": "^2.0.2",
127127
"it-to-buffer": "^4.0.9",
128128
"libp2p": "^2.8.8",
129+
"main-event": "^1.0.1",
129130
"p-defer": "^4.0.1",
130131
"p-event": "^6.0.1",
131132
"p-limit": "^6.2.0",

packages/interface-compliance-tests/src/mocks/connection-manager.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import { PeerMap } from '@libp2p/peer-collections'
33
import { peerIdFromString } from '@libp2p/peer-id'
44
import { isMultiaddr } from '@multiformats/multiaddr'
55
import { connectionPair } from './connection.js'
6-
import type { PrivateKey, PeerId, ComponentLogger, Libp2pEvents, PendingDial, Connection, TypedEventTarget, PubSub, Startable } from '@libp2p/interface'
6+
import type { PrivateKey, PeerId, ComponentLogger, Libp2pEvents, PendingDial, Connection, PubSub, Startable } from '@libp2p/interface'
77
import type { ConnectionManager, Registrar } from '@libp2p/interface-internal'
88
import type { Multiaddr } from '@multiformats/multiaddr'
99
import type { AbortOptions } from 'it-pushable'
10+
import type { TypedEventTarget } from 'main-event'
1011

1112
export interface MockNetworkComponents {
1213
peerId: PeerId

packages/interface-compliance-tests/src/mocks/upgrader.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { setMaxListeners } from '@libp2p/interface'
21
import { anySignal } from 'any-signal'
2+
import { setMaxListeners } from 'main-event'
33
import { mockConnection } from './connection.js'
4-
import type { Libp2pEvents, Connection, MultiaddrConnection, TypedEventTarget, Upgrader, UpgraderOptions, ClearableSignal, ConnectionEncrypter, StreamMuxerFactory } from '@libp2p/interface'
4+
import type { Libp2pEvents, Connection, MultiaddrConnection, Upgrader, UpgraderOptions, ClearableSignal, ConnectionEncrypter, StreamMuxerFactory } from '@libp2p/interface'
55
import type { Registrar } from '@libp2p/interface-internal'
6+
import type { TypedEventTarget } from 'main-event'
67

78
export interface MockUpgraderInit {
89
registrar?: Registrar

packages/interface-compliance-tests/src/pubsub/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { generateKeyPair } from '@libp2p/crypto/keys'
2-
import { TypedEventEmitter } from '@libp2p/interface'
32
import { defaultLogger } from '@libp2p/logger'
43
import { peerIdFromPrivateKey } from '@libp2p/peer-id'
4+
import { TypedEventEmitter } from 'main-event'
55
import { pEvent } from 'p-event'
66
import pWaitFor from 'p-wait-for'
77
import { mockConnectionManager, mockRegistrar, mockNetwork } from '../mocks/index.js'

packages/interface/package.json

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,13 @@
4444
"@multiformats/multiaddr": "^12.4.0",
4545
"it-pushable": "^3.2.3",
4646
"it-stream-types": "^2.0.2",
47+
"main-event": "^1.0.1",
4748
"multiformats": "^13.3.6",
4849
"progress-events": "^1.0.1",
4950
"uint8arraylist": "^2.4.8"
5051
},
5152
"devDependencies": {
5253
"aegir": "^47.0.14"
5354
},
54-
"browser": {
55-
"./dist/src/events.js": "./dist/src/events.browser.js"
56-
},
57-
"react-native": {
58-
"./dist/src/events.js": "./dist/src/events.browser.js"
59-
},
6055
"sideEffects": false
6156
}

packages/interface/src/event-target.ts

Lines changed: 0 additions & 106 deletions
This file was deleted.

packages/interface/src/events.browser.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/interface/src/events.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

packages/interface/src/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import type { Connection, NewStreamOptions, Stream } from './connection.js'
1818
import type { ContentRouting } from './content-routing.js'
19-
import type { TypedEventTarget } from './event-target.js'
2019
import type { Ed25519PublicKey, PublicKey, RSAPublicKey, Secp256k1PublicKey } from './keys.js'
2120
import type { Metrics } from './metrics.js'
2221
import type { Ed25519PeerId, PeerId, RSAPeerId, Secp256k1PeerId, URLPeerId } from './peer-id.js'
@@ -28,6 +27,7 @@ import type { StreamHandler, StreamHandlerOptions } from './stream-handler.js'
2827
import type { Topology } from './topology.js'
2928
import type { Listener, OutboundConnectionUpgradeEvents } from './transport.js'
3029
import type { Multiaddr } from '@multiformats/multiaddr'
30+
import type { TypedEventTarget } from 'main-event'
3131
import type { ProgressOptions, ProgressEvent } from 'progress-events'
3232

3333
/**
@@ -870,6 +870,5 @@ export * from './stream-muxer.js'
870870
export * from './topology.js'
871871
export * from './transport.js'
872872
export * from './errors.js'
873-
export * from './event-target.js'
874-
export * from './events.js'
873+
export * from 'main-event'
875874
export * from './startable.js'

packages/interface/src/peer-discovery.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type { TypedEventTarget } from './event-target.js'
21
import type { PeerInfo } from './peer-info.js'
2+
import type { TypedEventTarget } from 'main-event'
33

44
/**
55
* Any object that implements this Symbol as a property should return a

packages/interface/src/pubsub.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { Stream } from './connection.js'
2-
import type { TypedEventTarget } from './event-target.js'
32
import type { PublicKey } from './keys.js'
43
import type { PeerId } from './peer-id.js'
54
import type { Pushable } from 'it-pushable'
5+
import type { TypedEventTarget } from 'main-event'
66
import type { Uint8ArrayList } from 'uint8arraylist'
77

88
/**

packages/interface/src/transport.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { Connection, ConnectionLimits, MultiaddrConnection } from './connection.js'
2-
import type { TypedEventTarget } from './event-target.js'
32
import type { AbortOptions, ClearableSignal, ConnectionEncrypter } from './index.js'
43
import type { StreamMuxerFactory } from './stream-muxer.js'
54
import type { Multiaddr } from '@multiformats/multiaddr'
5+
import type { TypedEventTarget } from 'main-event'
66
import type { ProgressOptions, ProgressEvent } from 'progress-events'
77

88
export interface ListenerEvents {

packages/kad-dht/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"it-protobuf-stream": "^2.0.2",
6969
"it-pushable": "^3.2.3",
7070
"it-take": "^3.0.8",
71+
"main-event": "^1.0.1",
7172
"multiformats": "^13.3.6",
7273
"p-defer": "^4.0.1",
7374
"p-event": "^6.0.1",

packages/kad-dht/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,12 @@
135135
import { KadDHT as KadDHTClass } from './kad-dht.js'
136136
import { MessageType } from './message/dht.js'
137137
import { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper } from './utils.js'
138-
import type { Libp2pEvents, ComponentLogger, TypedEventTarget, Metrics, PeerId, PeerInfo, PeerStore, RoutingOptions, PrivateKey, AbortOptions } from '@libp2p/interface'
138+
import type { Libp2pEvents, ComponentLogger, Metrics, PeerId, PeerInfo, PeerStore, RoutingOptions, PrivateKey, AbortOptions } from '@libp2p/interface'
139139
import type { AddressManager, ConnectionManager, Registrar } from '@libp2p/interface-internal'
140140
import type { Ping } from '@libp2p/ping'
141141
import type { AdaptiveTimeoutInit } from '@libp2p/utils/adaptive-timeout'
142142
import type { Datastore } from 'interface-datastore'
143+
import type { TypedEventTarget } from 'main-event'
143144
import type { CID } from 'multiformats/cid'
144145
import type { ProgressEvent } from 'progress-events'
145146

packages/kad-dht/src/kad-dht.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { NotFoundError, TypedEventEmitter, contentRoutingSymbol, peerDiscoverySymbol, peerRoutingSymbol, serviceCapabilities, serviceDependencies, setMaxListeners, start, stop } from '@libp2p/interface'
1+
import { NotFoundError, contentRoutingSymbol, peerDiscoverySymbol, peerRoutingSymbol, serviceCapabilities, serviceDependencies, start, stop } from '@libp2p/interface'
22
import drain from 'it-drain'
3+
import { setMaxListeners, TypedEventEmitter } from 'main-event'
34
import pDefer from 'p-defer'
45
import { ALPHA, ON_PEER_CONNECT_TIMEOUT, PROTOCOL } from './constants.js'
56
import { ContentFetching } from './content-fetching/index.js'

packages/kad-dht/src/network.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import { InvalidParametersError, TypedEventEmitter } from '@libp2p/interface'
1+
import { InvalidParametersError } from '@libp2p/interface'
22
import { Libp2pRecord } from '@libp2p/record'
33
import { AdaptiveTimeout } from '@libp2p/utils/adaptive-timeout'
44
import { pbStream } from 'it-protobuf-stream'
5+
import { TypedEventEmitter } from 'main-event'
56
import { Message } from './message/dht.js'
67
import { fromPbPeerInfo } from './message/utils.js'
78
import {

packages/kad-dht/src/query-self.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { setMaxListeners } from '@libp2p/interface'
21
import { anySignal } from 'any-signal'
32
import length from 'it-length'
43
import { pipe } from 'it-pipe'
54
import take from 'it-take'
5+
import { setMaxListeners } from 'main-event'
66
import pDefer from 'p-defer'
77
import { QUERY_SELF_INTERVAL, QUERY_SELF_TIMEOUT, K, QUERY_SELF_INITIAL_INTERVAL } from './constants.js'
88
import { timeOperationMethod } from './utils.js'

packages/kad-dht/src/query/manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { setMaxListeners } from '@libp2p/interface'
21
import { createScalableCuckooFilter } from '@libp2p/utils/filters'
32
import { anySignal } from 'any-signal'
43
import merge from 'it-merge'
4+
import { setMaxListeners } from 'main-event'
55
import { pEvent } from 'p-event'
66
import { raceSignal } from 'race-signal'
77
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'

packages/kad-dht/src/reprovider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { TypedEventEmitter, setMaxListeners } from '@libp2p/interface'
21
import { AdaptiveTimeout } from '@libp2p/utils/adaptive-timeout'
32
import { Queue } from '@libp2p/utils/queue'
43
import drain from 'it-drain'
4+
import { TypedEventEmitter, setMaxListeners } from 'main-event'
55
import { PROVIDERS_VALIDITY, REPROVIDE_CONCURRENCY, REPROVIDE_INTERVAL, REPROVIDE_MAX_QUEUE_SIZE, REPROVIDE_THRESHOLD, REPROVIDE_TIMEOUT } from './constants.js'
66
import { parseProviderKey, readProviderTime, timeOperationMethod } from './utils.js'
77
import type { ContentRouting } from './content-routing/index.js'

packages/kad-dht/src/routing-table/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { TypedEventEmitter, setMaxListeners, start, stop } from '@libp2p/interface'
1+
import { start, stop } from '@libp2p/interface'
22
import { AdaptiveTimeout } from '@libp2p/utils/adaptive-timeout'
33
import { PeerQueue } from '@libp2p/utils/peer-queue'
44
import { anySignal } from 'any-signal'
55
import parallel from 'it-parallel'
6+
import { TypedEventEmitter, setMaxListeners } from 'main-event'
67
import * as utils from '../utils.js'
78
import { ClosestPeers } from './closest-peers.js'
89
import { KBucket, isLeafBucket } from './k-bucket.js'

packages/kad-dht/src/routing-table/refresh.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { randomBytes } from '@libp2p/crypto'
2-
import { setMaxListeners } from '@libp2p/interface'
32
import { peerIdFromMultihash } from '@libp2p/peer-id'
43
import { anySignal } from 'any-signal'
54
import length from 'it-length'
5+
import { setMaxListeners } from 'main-event'
66
import * as Digest from 'multiformats/hashes/digest'
77
import { sha256 } from 'multiformats/hashes/sha2'
88
import { xor as uint8ArrayXor } from 'uint8arrays/xor'

packages/kad-dht/src/topology-listener.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { TypedEventEmitter } from '@libp2p/interface'
1+
import { TypedEventEmitter } from 'main-event'
22
import type { KadDHTComponents } from './index.js'
33
import type { Logger, PeerId, Startable } from '@libp2p/interface'
44

packages/kad-dht/test/libp2p-routing.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { contentRoutingSymbol, TypedEventEmitter, start, stop, peerRoutingSymbol } from '@libp2p/interface'
1+
import { contentRoutingSymbol, start, stop, peerRoutingSymbol } from '@libp2p/interface'
22
import { defaultLogger } from '@libp2p/logger'
33
import { multiaddr } from '@multiformats/multiaddr'
44
import { expect } from 'aegir/chai'
@@ -7,6 +7,7 @@ import all from 'it-all'
77
import map from 'it-map'
88
import { duplexPair } from 'it-pair/duplex'
99
import { pbStream } from 'it-protobuf-stream'
10+
import { TypedEventEmitter } from 'main-event'
1011
import { CID } from 'multiformats/cid'
1112
import pDefer from 'p-defer'
1213
import { stubInterface } from 'sinon-ts'
@@ -17,10 +18,11 @@ import { createPeerIdsWithPrivateKey } from './utils/create-peer-id.js'
1718
import { sortClosestPeers } from './utils/sort-closest-peers.js'
1819
import type { KadDHT } from '../src/index.js'
1920
import type { PeerAndKey } from './utils/create-peer-id.js'
20-
import type { ContentRouting, PeerStore, PeerId, TypedEventTarget, ComponentLogger, Connection, Peer, Stream, PeerRouting, PrivateKey } from '@libp2p/interface'
21+
import type { ContentRouting, PeerStore, PeerId, ComponentLogger, Connection, Peer, Stream, PeerRouting, PrivateKey } from '@libp2p/interface'
2122
import type { AddressManager, ConnectionManager, Registrar } from '@libp2p/interface-internal'
2223
import type { Ping } from '@libp2p/ping'
2324
import type { Datastore } from 'interface-datastore'
25+
import type { TypedEventTarget } from 'main-event'
2426
import type { StubbedInstance } from 'sinon-ts'
2527

2628
interface StubbedKadDHTComponents {

packages/kad-dht/test/query-self.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/* eslint-env mocha */
22

33
import { generateKeyPair } from '@libp2p/crypto/keys'
4-
import { TypedEventEmitter } from '@libp2p/interface'
54
import { defaultLogger } from '@libp2p/logger'
65
import { peerIdFromPrivateKey } from '@libp2p/peer-id'
76
import { expect } from 'aegir/chai'
87
import delay from 'delay'
8+
import { TypedEventEmitter } from 'main-event'
99
import pDefer from 'p-defer'
1010
import { stubInterface } from 'sinon-ts'
1111
import { finalPeerEvent } from '../src/query/events.js'

0 commit comments

Comments
 (0)