@libp2p/webrtc 6.0.9 → 6.0.10-05acd0c35

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.
@@ -0,0 +1,58 @@
1
+ import { serviceCapabilities, transportSymbol } from '@libp2p/interface';
2
+ import type { DataChannelOptions } from '../index.js';
3
+ import type { WebRTCDialEvents } from '../private-to-private/transport.js';
4
+ import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Logger, Connection, CounterGroup, Metrics, PeerId, DialTransportOptions, PrivateKey, Upgrader } from '@libp2p/interface';
5
+ import type { TransportManager } from '@libp2p/interface-internal';
6
+ import type { Keychain } from '@libp2p/keychain';
7
+ import type { Multiaddr } from '@multiformats/multiaddr';
8
+ import type { Datastore } from 'interface-datastore';
9
+ export interface WebRTCDirectTransportComponents {
10
+ peerId: PeerId;
11
+ privateKey: PrivateKey;
12
+ metrics?: Metrics;
13
+ logger: ComponentLogger;
14
+ transportManager: TransportManager;
15
+ upgrader: Upgrader;
16
+ keychain?: Keychain;
17
+ datastore: Datastore;
18
+ }
19
+ export interface WebRTCMetrics {
20
+ dialerEvents: CounterGroup;
21
+ }
22
+ export interface WebRTCTransportDirectInit {
23
+ /**
24
+ * The default configuration used by all created RTCPeerConnections
25
+ */
26
+ rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>);
27
+ /**
28
+ * The default configuration used by all created RTCDataChannels
29
+ */
30
+ dataChannel?: DataChannelOptions;
31
+ }
32
+ export declare class WebRTCDirectTransport implements Transport {
33
+ protected readonly log: Logger;
34
+ protected readonly metrics?: WebRTCMetrics;
35
+ protected readonly components: WebRTCDirectTransportComponents;
36
+ protected readonly init: WebRTCTransportDirectInit;
37
+ constructor(components: WebRTCDirectTransportComponents, init?: WebRTCTransportDirectInit);
38
+ readonly [transportSymbol] = true;
39
+ readonly [Symbol.toStringTag] = "@libp2p/webrtc-direct";
40
+ readonly [serviceCapabilities]: string[];
41
+ /**
42
+ * Dial a given multiaddr
43
+ */
44
+ dial(ma: Multiaddr, options: DialTransportOptions<WebRTCDialEvents>): Promise<Connection>;
45
+ /**
46
+ * Create a transport listener - this will throw in browsers
47
+ */
48
+ createListener(options: CreateListenerOptions): Listener;
49
+ /**
50
+ * Filter check for all Multiaddrs that this transport can listen on
51
+ */
52
+ listenFilter(multiaddrs: Multiaddr[]): Multiaddr[];
53
+ /**
54
+ * Filter check for all Multiaddrs that this transport can dial
55
+ */
56
+ dialFilter(multiaddrs: Multiaddr[]): Multiaddr[];
57
+ }
58
+ //# sourceMappingURL=transport.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.browser.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACnM,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAE1F;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACjC;AAED,qBAAa,qBAAsB,YAAW,SAAS;IACrD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAA;IAC1C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAA;IAC9D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAA;gBAErC,UAAU,EAAE,+BAA+B,EAAE,IAAI,GAAE,yBAA8B;IAe9F,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA0B;IAEvD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA0ChG;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAIzD;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAGlD"}
@@ -0,0 +1,89 @@
1
+ import { serviceCapabilities, transportSymbol } from '@libp2p/interface';
2
+ import { peerIdFromString } from '@libp2p/peer-id';
3
+ import { CODE_P2P } from '@multiformats/multiaddr';
4
+ import { WebRTCDirect } from '@multiformats/multiaddr-matcher';
5
+ import { UnimplementedError } from "../error.js";
6
+ import { genUfrag } from '../util.js';
7
+ import { connect } from './utils/connect.js';
8
+ import { createDialerRTCPeerConnection } from './utils/get-rtcpeerconnection.js';
9
+ export class WebRTCDirectTransport {
10
+ log;
11
+ metrics;
12
+ components;
13
+ init;
14
+ constructor(components, init = {}) {
15
+ this.log = components.logger.forComponent('libp2p:webrtc-direct');
16
+ this.components = components;
17
+ this.init = init;
18
+ if (components.metrics != null) {
19
+ this.metrics = {
20
+ dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {
21
+ label: 'event',
22
+ help: 'Total count of WebRTC-direct dial events by type'
23
+ })
24
+ };
25
+ }
26
+ }
27
+ [transportSymbol] = true;
28
+ [Symbol.toStringTag] = '@libp2p/webrtc-direct';
29
+ [serviceCapabilities] = [
30
+ '@libp2p/transport'
31
+ ];
32
+ /**
33
+ * Dial a given multiaddr
34
+ */
35
+ async dial(ma, options) {
36
+ this.log('dial %a', ma);
37
+ // do not create RTCPeerConnection if the signal has already been aborted
38
+ options.signal.throwIfAborted();
39
+ let theirPeerId;
40
+ const remotePeerString = ma.getComponents().findLast(c => c.code === CODE_P2P)?.value;
41
+ if (remotePeerString != null) {
42
+ theirPeerId = peerIdFromString(remotePeerString);
43
+ }
44
+ const ufrag = genUfrag();
45
+ // https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md#browser-to-public-server
46
+ const { peerConnection, muxerFactory } = await createDialerRTCPeerConnection('client', ufrag, {
47
+ rtcConfiguration: typeof this.init.rtcConfiguration === 'function' ? await this.init.rtcConfiguration() : this.init.rtcConfiguration ?? {},
48
+ dataChannel: this.init.dataChannel
49
+ });
50
+ try {
51
+ return await connect(peerConnection, muxerFactory, ufrag, {
52
+ role: 'client',
53
+ log: this.log,
54
+ logger: this.components.logger,
55
+ events: this.metrics?.dialerEvents,
56
+ signal: options.signal,
57
+ remoteAddr: ma,
58
+ dataChannel: this.init.dataChannel,
59
+ upgrader: options.upgrader,
60
+ peerId: this.components.peerId,
61
+ remotePeer: theirPeerId,
62
+ privateKey: this.components.privateKey
63
+ });
64
+ }
65
+ catch (err) {
66
+ peerConnection.close();
67
+ throw err;
68
+ }
69
+ }
70
+ /**
71
+ * Create a transport listener - this will throw in browsers
72
+ */
73
+ createListener(options) {
74
+ throw new UnimplementedError('WebRTCDirectTransport.createListener');
75
+ }
76
+ /**
77
+ * Filter check for all Multiaddrs that this transport can listen on
78
+ */
79
+ listenFilter(multiaddrs) {
80
+ return [];
81
+ }
82
+ /**
83
+ * Filter check for all Multiaddrs that this transport can dial
84
+ */
85
+ dialFilter(multiaddrs) {
86
+ return multiaddrs.filter(WebRTCDirect.exactMatch);
87
+ }
88
+ }
89
+ //# sourceMappingURL=transport.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.browser.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.browser.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,12 @@
1
- import { serviceCapabilities, transportSymbol } from '@libp2p/interface';
2
1
  import { X509Certificate } from '@peculiar/x509';
3
2
  import { Key } from 'interface-datastore';
4
- import type { DataChannelOptions, TransportCertificate } from '../index.js';
5
- import type { WebRTCDialEvents } from '../private-to-private/transport.js';
6
- import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Connection, CounterGroup, Metrics, PeerId, DialTransportOptions, PrivateKey, Upgrader, Startable } from '@libp2p/interface';
7
- import type { TransportManager } from '@libp2p/interface-internal';
8
- import type { Keychain } from '@libp2p/keychain';
3
+ import { WebRTCDirectTransport as WebRTCDirectBrowserTransport } from './transport.browser.js';
4
+ import type { TransportCertificate } from '../index.js';
5
+ import type { WebRTCTransportDirectInit as WebRTCTransportDirectBrowserInit, WebRTCMetrics, WebRTCDirectTransportComponents } from './transport.browser.ts';
6
+ import type { CreateListenerOptions, Transport, Listener, Startable } from '@libp2p/interface';
9
7
  import type { Multiaddr } from '@multiformats/multiaddr';
10
- import type { Datastore } from 'interface-datastore';
11
- export interface WebRTCDirectTransportComponents {
12
- peerId: PeerId;
13
- privateKey: PrivateKey;
14
- metrics?: Metrics;
15
- logger: ComponentLogger;
16
- transportManager: TransportManager;
17
- upgrader: Upgrader;
18
- keychain?: Keychain;
19
- datastore: Datastore;
20
- }
21
- export interface WebRTCMetrics {
22
- dialerEvents: CounterGroup;
23
- }
24
- export interface WebRTCTransportDirectInit {
25
- /**
26
- * The default configuration used by all created RTCPeerConnections
27
- */
28
- rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>);
29
- /**
30
- * The default configuration used by all created RTCDataChannels
31
- */
32
- dataChannel?: DataChannelOptions;
8
+ export type { WebRTCMetrics, WebRTCDirectTransportComponents };
9
+ export interface WebRTCTransportDirectInit extends WebRTCTransportDirectBrowserInit {
33
10
  /**
34
11
  * Use an existing TLS certificate to secure incoming connections or supply
35
12
  * settings to generate one.
@@ -69,25 +46,15 @@ export interface WebRTCTransportDirectInit {
69
46
  export interface WebRTCDirectTransportCertificateEvents {
70
47
  'certificate:renew': CustomEvent<TransportCertificate>;
71
48
  }
72
- export declare class WebRTCDirectTransport implements Transport, Startable {
73
- private readonly log;
74
- private readonly metrics?;
75
- private readonly components;
76
- private readonly init;
49
+ export declare class WebRTCDirectTransport extends WebRTCDirectBrowserTransport implements Transport, Startable {
77
50
  private certificate?;
78
51
  private privateKey?;
79
52
  private readonly emitter;
80
53
  private renewCertificateTask?;
54
+ private certInit;
81
55
  constructor(components: WebRTCDirectTransportComponents, init?: WebRTCTransportDirectInit);
82
- readonly [transportSymbol] = true;
83
- readonly [Symbol.toStringTag] = "@libp2p/webrtc-direct";
84
- readonly [serviceCapabilities]: string[];
85
56
  start(): Promise<void>;
86
57
  stop(): Promise<void>;
87
- /**
88
- * Dial a given multiaddr
89
- */
90
- dial(ma: Multiaddr, options: DialTransportOptions<WebRTCDialEvents>): Promise<Connection>;
91
58
  /**
92
59
  * Create a transport listener - this will throw in browsers
93
60
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,eAAe,EAA4B,MAAM,gBAAgB,CAAA;AACrG,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAQzC,OAAO,EAAE,qBAAqB,IAAI,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAE9F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,KAAK,EAAE,yBAAyB,IAAI,gCAAgC,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AAC3J,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,QAAQ,EAAc,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE1G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGxD,YAAY,EAAE,aAAa,EAAE,+BAA+B,EAAE,CAAA;AAE9D,MAAM,WAAW,yBAA0B,SAAQ,gCAAgC;IACjF;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAElC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEhC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEhC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,sCAAsC;IACrD,mBAAmB,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAA;CACvD;AAUD,qBAAa,qBAAsB,SAAQ,4BAA6B,YAAW,SAAS,EAAE,SAAS;IACrG,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0D;IAClF,OAAO,CAAC,oBAAoB,CAAC,CAA+B;IAC5D,OAAO,CAAC,QAAQ,CAAU;gBAEb,UAAU,EAAE,+BAA+B,EAAE,IAAI,GAAE,yBAA8B;IAWxF,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAIvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAQ5B;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAazD;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;YAInC,cAAc;YAgBd,sBAAsB;YAmCtB,uBAAuB;IAuD/B,eAAe,CAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAiC9E,iBAAiB,CAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BtF,OAAO,CAAC,WAAW;CAKpB"}
@@ -1,7 +1,5 @@
1
1
  import { generateKeyPair, privateKeyToCryptoKeyPair } from '@libp2p/crypto/keys';
2
- import { InvalidParametersError, NotFoundError, NotStartedError, serviceCapabilities, transportSymbol } from '@libp2p/interface';
3
- import { peerIdFromString } from '@libp2p/peer-id';
4
- import { CODE_P2P } from '@multiformats/multiaddr';
2
+ import { InvalidParametersError, NotFoundError, NotStartedError } from '@libp2p/interface';
5
3
  import { WebRTCDirect } from '@multiformats/multiaddr-matcher';
6
4
  import { BasicConstraintsExtension, X509Certificate, X509CertificateGenerator } from '@peculiar/x509';
7
5
  import { Key } from 'interface-datastore';
@@ -11,42 +9,23 @@ import { sha256 } from 'multiformats/hashes/sha2';
11
9
  import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
12
10
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
13
11
  import { DEFAULT_CERTIFICATE_DATASTORE_KEY, DEFAULT_CERTIFICATE_LIFESPAN, DEFAULT_CERTIFICATE_PRIVATE_KEY_NAME, DEFAULT_CERTIFICATE_RENEWAL_THRESHOLD } from '../constants.js';
14
- import { genUfrag } from '../util.js';
15
12
  import { WebRTCDirectListener } from './listener.js';
16
- import { connect } from './utils/connect.js';
17
- import { createDialerRTCPeerConnection } from './utils/get-rtcpeerconnection.js';
13
+ import { WebRTCDirectTransport as WebRTCDirectBrowserTransport } from './transport.browser.js';
18
14
  import { formatAsPem } from './utils/pem.js';
19
- export class WebRTCDirectTransport {
20
- log;
21
- metrics;
22
- components;
23
- init;
15
+ export class WebRTCDirectTransport extends WebRTCDirectBrowserTransport {
24
16
  certificate;
25
17
  privateKey;
26
18
  emitter;
27
19
  renewCertificateTask;
20
+ certInit;
28
21
  constructor(components, init = {}) {
29
- this.log = components.logger.forComponent('libp2p:webrtc-direct');
30
- this.components = components;
31
- this.init = init;
22
+ super(components, init);
32
23
  this.emitter = new TypedEventEmitter();
24
+ this.certInit = init;
33
25
  if (init.certificateLifespan != null && init.certificateRenewalThreshold != null && init.certificateRenewalThreshold >= init.certificateLifespan) {
34
26
  throw new InvalidParametersError('Certificate renewal threshold must be less than certificate lifespan');
35
27
  }
36
- if (components.metrics != null) {
37
- this.metrics = {
38
- dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {
39
- label: 'event',
40
- help: 'Total count of WebRTC-direct dial events by type'
41
- })
42
- };
43
- }
44
28
  }
45
- [transportSymbol] = true;
46
- [Symbol.toStringTag] = '@libp2p/webrtc-direct';
47
- [serviceCapabilities] = [
48
- '@libp2p/transport'
49
- ];
50
29
  async start() {
51
30
  this.certificate = await this.getCertificate();
52
31
  }
@@ -56,44 +35,6 @@ export class WebRTCDirectTransport {
56
35
  }
57
36
  this.certificate = undefined;
58
37
  }
59
- /**
60
- * Dial a given multiaddr
61
- */
62
- async dial(ma, options) {
63
- this.log('dial %a', ma);
64
- // do not create RTCPeerConnection if the signal has already been aborted
65
- options.signal.throwIfAborted();
66
- let theirPeerId;
67
- const remotePeerString = ma.getComponents().findLast(c => c.code === CODE_P2P)?.value;
68
- if (remotePeerString != null) {
69
- theirPeerId = peerIdFromString(remotePeerString);
70
- }
71
- const ufrag = genUfrag();
72
- // https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md#browser-to-public-server
73
- const { peerConnection, muxerFactory } = await createDialerRTCPeerConnection('client', ufrag, {
74
- rtcConfiguration: typeof this.init.rtcConfiguration === 'function' ? await this.init.rtcConfiguration() : this.init.rtcConfiguration ?? {},
75
- dataChannel: this.init.dataChannel
76
- });
77
- try {
78
- return await connect(peerConnection, muxerFactory, ufrag, {
79
- role: 'client',
80
- log: this.log,
81
- logger: this.components.logger,
82
- events: this.metrics?.dialerEvents,
83
- signal: options.signal,
84
- remoteAddr: ma,
85
- dataChannel: this.init.dataChannel,
86
- upgrader: options.upgrader,
87
- peerId: this.components.peerId,
88
- remotePeer: theirPeerId,
89
- privateKey: this.components.privateKey
90
- });
91
- }
92
- catch (err) {
93
- peerConnection.close();
94
- throw err;
95
- }
96
- }
97
38
  /**
98
39
  * Create a transport listener - this will throw in browsers
99
40
  */
@@ -121,9 +62,9 @@ export class WebRTCDirectTransport {
121
62
  return this.listenFilter(multiaddrs);
122
63
  }
123
64
  async getCertificate(forceRenew) {
124
- if (isTransportCertificate(this.init.certificate)) {
65
+ if (isTransportCertificate(this.certInit.certificate)) {
125
66
  this.log('using provided TLS certificate');
126
- return this.init.certificate;
67
+ return this.certInit.certificate;
127
68
  }
128
69
  const privateKey = await this.loadOrCreatePrivateKey();
129
70
  const { pem, certhash } = await this.loadOrCreateCertificate(privateKey, forceRenew);
@@ -137,7 +78,7 @@ export class WebRTCDirectTransport {
137
78
  if (this.privateKey != null) {
138
79
  return this.privateKey;
139
80
  }
140
- const keychainName = this.init.certificateKeychainName ?? DEFAULT_CERTIFICATE_PRIVATE_KEY_NAME;
81
+ const keychainName = this.certInit.certificateKeychainName ?? DEFAULT_CERTIFICATE_PRIVATE_KEY_NAME;
141
82
  const keychain = this.getKeychain();
142
83
  try {
143
84
  if (keychain == null) {
@@ -168,7 +109,7 @@ export class WebRTCDirectTransport {
168
109
  return this.certificate;
169
110
  }
170
111
  let cert;
171
- const dsKey = new Key(this.init.certificateDatastoreKey ?? DEFAULT_CERTIFICATE_DATASTORE_KEY);
112
+ const dsKey = new Key(this.certInit.certificateDatastoreKey ?? DEFAULT_CERTIFICATE_DATASTORE_KEY);
172
113
  const keyPair = await privateKeyToCryptoKeyPair(privateKey);
173
114
  try {
174
115
  if (forceRenew === true) {
@@ -186,7 +127,7 @@ export class WebRTCDirectTransport {
186
127
  cert = await this.createCertificate(dsKey, keyPair);
187
128
  }
188
129
  // set timeout to renew certificate
189
- let renewTime = (cert.notAfter.getTime() - (this.init.certificateRenewalThreshold ?? DEFAULT_CERTIFICATE_RENEWAL_THRESHOLD)) - Date.now();
130
+ let renewTime = (cert.notAfter.getTime() - (this.certInit.certificateRenewalThreshold ?? DEFAULT_CERTIFICATE_RENEWAL_THRESHOLD)) - Date.now();
190
131
  if (renewTime < 0) {
191
132
  renewTime = 100;
192
133
  }
@@ -213,7 +154,7 @@ export class WebRTCDirectTransport {
213
154
  const buf = await this.components.datastore.get(dsKey);
214
155
  const cert = new X509Certificate(buf);
215
156
  // check expiry date
216
- const expiryTime = cert.notAfter.getTime() - (this.init.certificateRenewalThreshold ?? DEFAULT_CERTIFICATE_RENEWAL_THRESHOLD);
157
+ const expiryTime = cert.notAfter.getTime() - (this.certInit.certificateRenewalThreshold ?? DEFAULT_CERTIFICATE_RENEWAL_THRESHOLD);
217
158
  if (Date.now() > expiryTime) {
218
159
  this.log('stored TLS certificate has expired');
219
160
  // act as if no certificate was present
@@ -233,7 +174,7 @@ export class WebRTCDirectTransport {
233
174
  }
234
175
  async createCertificate(dsKey, keyPair) {
235
176
  const notBefore = new Date();
236
- const notAfter = new Date(Date.now() + (this.init.certificateLifespan ?? DEFAULT_CERTIFICATE_LIFESPAN));
177
+ const notAfter = new Date(Date.now() + (this.certInit.certificateLifespan ?? DEFAULT_CERTIFICATE_LIFESPAN));
237
178
  // have to set ms to 0 to work around https://github.com/PeculiarVentures/x509/issues/73
238
179
  notBefore.setMilliseconds(0);
239
180
  notAfter.setMilliseconds(0);
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/webrtc",
3
- "version": "6.0.9",
3
+ "version": "6.0.10-05acd0c35",
4
4
  "description": "A libp2p transport using WebRTC connections",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-webrtc#readme",
@@ -33,7 +33,7 @@
33
33
  "generate": "protons src/private-to-private/pb/message.proto",
34
34
  "build": "aegir build",
35
35
  "test": "aegir test -t node -t browser",
36
- "test:node": "aegir test -t node --cov",
36
+ "test:node": "aegir test -t node --cov -- --exit",
37
37
  "test:chrome": "aegir test -t browser --cov",
38
38
  "test:firefox": "aegir test -t browser -- --browser firefox",
39
39
  "test:webkit": "aegir test -t browser -- --browser webkit",
@@ -45,13 +45,13 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@chainsafe/is-ip": "^2.1.0",
48
- "@libp2p/crypto": "^5.1.13",
49
- "@libp2p/interface": "^3.1.0",
50
- "@libp2p/interface-internal": "^3.0.8",
51
- "@libp2p/keychain": "^6.0.8",
48
+ "@libp2p/crypto": "5.1.13-05acd0c35",
49
+ "@libp2p/interface": "3.1.0-05acd0c35",
50
+ "@libp2p/interface-internal": "3.0.9-05acd0c35",
51
+ "@libp2p/keychain": "6.0.9-05acd0c35",
52
52
  "@chainsafe/libp2p-noise": "^17.0.0",
53
- "@libp2p/peer-id": "^6.0.4",
54
- "@libp2p/utils": "^7.0.8",
53
+ "@libp2p/peer-id": "6.0.4-05acd0c35",
54
+ "@libp2p/utils": "7.0.9-05acd0c35",
55
55
  "@multiformats/multiaddr": "^13.0.1",
56
56
  "@multiformats/multiaddr-matcher": "^3.0.1",
57
57
  "@peculiar/webcrypto": "^1.5.0",
@@ -79,7 +79,7 @@
79
79
  "uint8arrays": "^5.1.0"
80
80
  },
81
81
  "devDependencies": {
82
- "@libp2p/logger": "^6.2.1",
82
+ "@libp2p/logger": "6.2.2-05acd0c35",
83
83
  "@types/sinon": "^20.0.0",
84
84
  "aegir": "^47.0.22",
85
85
  "any-signal": "^4.1.1",
@@ -94,6 +94,7 @@
94
94
  "browser": {
95
95
  "./dist/src/webrtc/index.js": "./dist/src/webrtc/index.browser.js",
96
96
  "./dist/src/private-to-public/listener.js": "./dist/src/private-to-public/listener.browser.js",
97
+ "./dist/src/private-to-public/transport.js": "./dist/src/private-to-public/transport.browser.js",
97
98
  "./dist/src/private-to-public/utils/get-rtcpeerconnection.js": "./dist/src/private-to-public/utils/get-rtcpeerconnection.browser.js",
98
99
  "node:net": false,
99
100
  "node:os": false
@@ -0,0 +1,138 @@
1
+ import { serviceCapabilities, transportSymbol } from '@libp2p/interface'
2
+ import { peerIdFromString } from '@libp2p/peer-id'
3
+ import { CODE_P2P } from '@multiformats/multiaddr'
4
+ import { WebRTCDirect } from '@multiformats/multiaddr-matcher'
5
+ import { UnimplementedError } from '../error.ts'
6
+ import { genUfrag } from '../util.js'
7
+ import { connect } from './utils/connect.js'
8
+ import { createDialerRTCPeerConnection } from './utils/get-rtcpeerconnection.js'
9
+ import type { DataChannelOptions } from '../index.js'
10
+ import type { WebRTCDialEvents } from '../private-to-private/transport.js'
11
+ import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Logger, Connection, CounterGroup, Metrics, PeerId, DialTransportOptions, PrivateKey, Upgrader } from '@libp2p/interface'
12
+ import type { TransportManager } from '@libp2p/interface-internal'
13
+ import type { Keychain } from '@libp2p/keychain'
14
+ import type { Multiaddr } from '@multiformats/multiaddr'
15
+ import type { Datastore } from 'interface-datastore'
16
+
17
+ export interface WebRTCDirectTransportComponents {
18
+ peerId: PeerId
19
+ privateKey: PrivateKey
20
+ metrics?: Metrics
21
+ logger: ComponentLogger
22
+ transportManager: TransportManager
23
+ upgrader: Upgrader
24
+ keychain?: Keychain
25
+ datastore: Datastore
26
+ }
27
+
28
+ export interface WebRTCMetrics {
29
+ dialerEvents: CounterGroup
30
+ }
31
+
32
+ export interface WebRTCTransportDirectInit {
33
+ /**
34
+ * The default configuration used by all created RTCPeerConnections
35
+ */
36
+ rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>)
37
+
38
+ /**
39
+ * The default configuration used by all created RTCDataChannels
40
+ */
41
+ dataChannel?: DataChannelOptions
42
+ }
43
+
44
+ export class WebRTCDirectTransport implements Transport {
45
+ protected readonly log: Logger
46
+ protected readonly metrics?: WebRTCMetrics
47
+ protected readonly components: WebRTCDirectTransportComponents
48
+ protected readonly init: WebRTCTransportDirectInit
49
+
50
+ constructor (components: WebRTCDirectTransportComponents, init: WebRTCTransportDirectInit = {}) {
51
+ this.log = components.logger.forComponent('libp2p:webrtc-direct')
52
+ this.components = components
53
+ this.init = init
54
+
55
+ if (components.metrics != null) {
56
+ this.metrics = {
57
+ dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {
58
+ label: 'event',
59
+ help: 'Total count of WebRTC-direct dial events by type'
60
+ })
61
+ }
62
+ }
63
+ }
64
+
65
+ readonly [transportSymbol] = true
66
+
67
+ readonly [Symbol.toStringTag] = '@libp2p/webrtc-direct'
68
+
69
+ readonly [serviceCapabilities]: string[] = [
70
+ '@libp2p/transport'
71
+ ]
72
+
73
+ /**
74
+ * Dial a given multiaddr
75
+ */
76
+ async dial (ma: Multiaddr, options: DialTransportOptions<WebRTCDialEvents>): Promise<Connection> {
77
+ this.log('dial %a', ma)
78
+ // do not create RTCPeerConnection if the signal has already been aborted
79
+ options.signal.throwIfAborted()
80
+
81
+ let theirPeerId: PeerId | undefined
82
+ const remotePeerString = ma.getComponents().findLast(c => c.code === CODE_P2P)?.value
83
+ if (remotePeerString != null) {
84
+ theirPeerId = peerIdFromString(remotePeerString)
85
+ }
86
+
87
+ const ufrag = genUfrag()
88
+
89
+ // https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md#browser-to-public-server
90
+ const {
91
+ peerConnection,
92
+ muxerFactory
93
+ } = await createDialerRTCPeerConnection('client', ufrag, {
94
+ rtcConfiguration: typeof this.init.rtcConfiguration === 'function' ? await this.init.rtcConfiguration() : this.init.rtcConfiguration ?? {},
95
+ dataChannel: this.init.dataChannel
96
+ })
97
+
98
+ try {
99
+ return await connect(peerConnection, muxerFactory, ufrag, {
100
+ role: 'client',
101
+ log: this.log,
102
+ logger: this.components.logger,
103
+ events: this.metrics?.dialerEvents,
104
+ signal: options.signal,
105
+ remoteAddr: ma,
106
+ dataChannel: this.init.dataChannel,
107
+ upgrader: options.upgrader,
108
+ peerId: this.components.peerId,
109
+ remotePeer: theirPeerId,
110
+ privateKey: this.components.privateKey
111
+ })
112
+ } catch (err) {
113
+ peerConnection.close()
114
+ throw err
115
+ }
116
+ }
117
+
118
+ /**
119
+ * Create a transport listener - this will throw in browsers
120
+ */
121
+ createListener (options: CreateListenerOptions): Listener {
122
+ throw new UnimplementedError('WebRTCDirectTransport.createListener')
123
+ }
124
+
125
+ /**
126
+ * Filter check for all Multiaddrs that this transport can listen on
127
+ */
128
+ listenFilter (multiaddrs: Multiaddr[]): Multiaddr[] {
129
+ return []
130
+ }
131
+
132
+ /**
133
+ * Filter check for all Multiaddrs that this transport can dial
134
+ */
135
+ dialFilter (multiaddrs: Multiaddr[]): Multiaddr[] {
136
+ return multiaddrs.filter(WebRTCDirect.exactMatch)
137
+ }
138
+ }