@libp2p/websockets 0.16.2 → 1.0.3

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,27 +1,29 @@
1
+ /// <reference types="node" />
1
2
  import { WebSocketOptions } from 'it-ws/client';
2
- import type { Transport, Upgrader, MultiaddrFilter } from '@libp2p/interfaces/transport';
3
+ import { Transport, MultiaddrFilter, symbol, CreateListenerOptions, DialOptions } from '@libp2p/interfaces/transport';
3
4
  import type { AbortOptions } from '@libp2p/interfaces';
4
- import type { WebSocketListenerOptions } from './listener.js';
5
5
  import type { Multiaddr } from '@multiformats/multiaddr';
6
- import type { DuplexWebSocket } from 'it-ws/dist/src/duplex';
7
- /**
8
- * @class WebSockets
9
- */
10
- export declare class WebSockets implements Transport<AbortOptions & WebSocketOptions, WebSocketListenerOptions> {
11
- private readonly upgrader;
12
- private readonly _filter?;
13
- constructor(opts: {
14
- upgrader: Upgrader;
15
- filter?: MultiaddrFilter;
16
- });
17
- dial(ma: Multiaddr, options?: AbortOptions & WebSocketOptions): Promise<import("@libp2p/interfaces/dist/src/connection").Connection>;
18
- _connect(ma: Multiaddr, options: AbortOptions & WebSocketOptions): Promise<DuplexWebSocket>;
6
+ import type { DuplexWebSocket } from 'it-ws/duplex';
7
+ import type { ClientOptions } from 'ws';
8
+ import type { Server } from 'http';
9
+ export interface WebSocketsInit extends AbortOptions, WebSocketOptions {
10
+ filter?: MultiaddrFilter;
11
+ websocket?: ClientOptions;
12
+ server?: Server;
13
+ }
14
+ export declare class WebSockets implements Transport {
15
+ private readonly init?;
16
+ constructor(init?: WebSocketsInit);
17
+ get [Symbol.toStringTag](): string;
18
+ get [symbol](): true;
19
+ dial(ma: Multiaddr, options: DialOptions): Promise<import("@libp2p/interfaces/dist/src/connection").Connection>;
20
+ _connect(ma: Multiaddr, options: AbortOptions): Promise<DuplexWebSocket>;
19
21
  /**
20
22
  * Creates a Websockets listener. The provided `handler` function will be called
21
23
  * anytime a new incoming Connection has been successfully upgraded via
22
24
  * `upgrader.upgradeInbound`
23
25
  */
24
- createListener(options?: WebSocketListenerOptions): import("@libp2p/interfaces/transport").Listener;
26
+ createListener(options: CreateListenerOptions): import("@libp2p/interfaces/transport").Listener;
25
27
  /**
26
28
  * Takes a list of `Multiaddr`s and returns only valid Websockets addresses.
27
29
  * By default, in a browser environment only DNS+WSS multiaddr is accepted,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,gBAAgB,EAAE,MAAM,cAAc,CAAA;AASxD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAI5D;;GAEG;AACH,qBAAa,UAAW,YAAW,SAAS,CAAC,YAAY,GAAG,gBAAgB,EAAE,wBAAwB,CAAC;IACrG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB;gBAE7B,IAAI,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,CAAC,EAAE,eAAe,CAAA;KAAE;IAW7D,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,gBAAgB;IAa9D,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA8DlG;;;;OAIG;IACH,cAAc,CAAE,OAAO,CAAC,EAAE,wBAAwB;IAIlD;;;;OAIG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE;CAchC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAW,gBAAgB,EAAE,MAAM,cAAc,CAAA;AASxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AACrH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAIlC,MAAM,WAAW,cAAe,SAAQ,YAAY,EAAE,gBAAgB;IACpE,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,UAAW,YAAW,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAgB;gBAEzB,IAAI,CAAC,EAAE,cAAc;IAIlC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAEK,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW;IAazC,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA8D/E;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB;IAI9C;;;;OAIG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE;CAchC"}
package/dist/src/index.js CHANGED
@@ -7,18 +7,17 @@ import env from 'wherearewe';
7
7
  import { createListener } from './listener.js';
8
8
  import { socketToMaConn } from './socket-to-conn.js';
9
9
  import * as filters from './filters.js';
10
+ import { symbol } from '@libp2p/interfaces/transport';
10
11
  const log = logger('libp2p:websockets');
11
- /**
12
- * @class WebSockets
13
- */
14
12
  export class WebSockets {
15
- constructor(opts) {
16
- const { upgrader, filter } = opts;
17
- if (upgrader == null) {
18
- throw new Error('An upgrader must be provided. See https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport#upgrader');
19
- }
20
- this.upgrader = upgrader;
21
- this._filter = filter;
13
+ constructor(init) {
14
+ this.init = init;
15
+ }
16
+ get [Symbol.toStringTag]() {
17
+ return this.constructor.name;
18
+ }
19
+ get [symbol]() {
20
+ return true;
22
21
  }
23
22
  async dial(ma, options) {
24
23
  log('dialing %s', ma);
@@ -26,7 +25,7 @@ export class WebSockets {
26
25
  const socket = await this._connect(ma, options);
27
26
  const maConn = socketToMaConn(socket, ma);
28
27
  log('new outbound connection %s', maConn.remoteAddr);
29
- const conn = await this.upgrader.upgradeOutbound(maConn);
28
+ const conn = await options.upgrader.upgradeOutbound(maConn);
30
29
  log('outbound connection %s upgraded', maConn.remoteAddr);
31
30
  return conn;
32
31
  }
@@ -41,7 +40,7 @@ export class WebSockets {
41
40
  log.error('connection error:', err);
42
41
  errorPromise.reject(err);
43
42
  };
44
- const rawSocket = connect(toUri(ma), options);
43
+ const rawSocket = connect(toUri(ma), this.init);
45
44
  if (rawSocket.socket.on != null) {
46
45
  rawSocket.socket.on('error', errfn);
47
46
  }
@@ -88,7 +87,7 @@ export class WebSockets {
88
87
  * `upgrader.upgradeInbound`
89
88
  */
90
89
  createListener(options) {
91
- return createListener(this.upgrader, options);
90
+ return createListener({ ...this.init, ...options });
92
91
  }
93
92
  /**
94
93
  * Takes a list of `Multiaddr`s and returns only valid Websockets addresses.
@@ -97,8 +96,8 @@ export class WebSockets {
97
96
  */
98
97
  filter(multiaddrs) {
99
98
  multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];
100
- if (this._filter != null) {
101
- return this._filter(multiaddrs);
99
+ if (this.init?.filter != null) {
100
+ return this.init?.filter(multiaddrs);
102
101
  }
103
102
  // Browser
104
103
  if (env.isBrowser || env.isWebWorker) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,GAAG,MAAM,YAAY,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAOvC,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAEvC;;GAEG;AACH,MAAM,OAAO,UAAU;IAIrB,YAAa,IAAsD;QACjE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAEjC,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,gJAAgJ,CAAC,CAAA;SAClK;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAyC;QAClE,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QACrB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACzC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAEpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACxD,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QACzD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,EAAa,EAAE,OAAwC;QACrE,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;YACrC,MAAM,IAAI,UAAU,EAAE,CAAA;SACvB;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,EAAE,CAAA;QAC5B,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAE5C,MAAM,YAAY,GAAG,MAAM,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAQ,EAAE,EAAE;YACzB,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAA;YAEnC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC,CAAA;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;QAE7C,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE;YAC/B,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;SACpC;aAAM;YACL,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAA;SACjC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;YAC1B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;YAEjE,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;YACvB,OAAO,SAAS,CAAA;SACjB;QAED,wCAAwC;QACxC,IAAI,OAAO,CAAA;QACX,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,OAAO,GAAG,GAAG,EAAE;gBACb,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC,CAAA;gBACxB,mEAAmE;gBACnE,UAAU,CAAC,GAAG,EAAE;oBACd,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBAC5B,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;oBAC5C,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA;YAED,mBAAmB;YACnB,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE;gBACrC,OAAO,OAAO,EAAE,CAAA;aACjB;YAED,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,IAAI;YACF,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;SACzE;gBAAS;YACR,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;aACvD;SACF;QAED,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAE,OAAkC;QAChD,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAE,UAAuB;QAC7B,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAElE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;SAChC;QAED,UAAU;QACV,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,EAAE;YACpC,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;SAClC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /// <reference types="node" />
2
- import type { ListenerOptions, Upgrader, Listener } from '@libp2p/interfaces/transport';
2
+ import type { Listener, CreateListenerOptions } from '@libp2p/interfaces/transport';
3
3
  import type { Server } from 'http';
4
- export interface WebSocketListenerOptions extends ListenerOptions {
4
+ export interface WebSocketListenerInit extends CreateListenerOptions {
5
5
  server?: Server;
6
6
  }
7
- export declare function createListener(upgrader: Upgrader, options?: WebSocketListenerOptions): Listener;
7
+ export declare function createListener(init: WebSocketListenerInit): Listener;
8
8
  //# sourceMappingURL=listener.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAkB,MAAM,8BAA8B,CAAA;AACvG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAgJlC,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,cAAc,CAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,QAAQ,CAIhG"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,QAAQ,EAAkB,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAiJlC,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,cAAc,CAAE,IAAI,EAAE,qBAAqB,GAAG,QAAQ,CAErE"}
@@ -7,13 +7,13 @@ import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multi
7
7
  import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
8
8
  const log = logger('libp2p:websockets:listener');
9
9
  class WebSocketListener extends EventEmitter {
10
- constructor(upgrader, options) {
10
+ constructor(init) {
11
11
  super();
12
12
  // Keep track of open connections to destroy when the listener is closed
13
13
  this.connections = new Set();
14
14
  const self = this; // eslint-disable-line @typescript-eslint/no-this-alias
15
15
  this.server = createServer({
16
- ...options,
16
+ ...init,
17
17
  onConnection: (stream) => {
18
18
  const maConn = socketToMaConn(stream, toMultiaddr(stream.remoteAddress ?? '', stream.remotePort ?? 0));
19
19
  log('new inbound connection %s', maConn.remoteAddr);
@@ -22,11 +22,11 @@ class WebSocketListener extends EventEmitter {
22
22
  self.connections.delete(stream);
23
23
  });
24
24
  try {
25
- void upgrader.upgradeInbound(maConn)
25
+ void init.upgrader.upgradeInbound(maConn)
26
26
  .then((conn) => {
27
27
  log('inbound connection %s upgraded', maConn.remoteAddr);
28
- if (options?.handler != null) {
29
- options?.handler(conn);
28
+ if (init?.handler != null) {
29
+ init?.handler(conn);
30
30
  }
31
31
  self.dispatchEvent(new CustomEvent('connection', {
32
32
  detail: conn
@@ -114,8 +114,7 @@ class WebSocketListener extends EventEmitter {
114
114
  return multiaddrs;
115
115
  }
116
116
  }
117
- export function createListener(upgrader, options) {
118
- options = options ?? {};
119
- return new WebSocketListener(upgrader, options);
117
+ export function createListener(init) {
118
+ return new WebSocketListener(init);
120
119
  }
121
120
  //# sourceMappingURL=listener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/websockets",
3
- "version": "0.16.2",
3
+ "version": "1.0.3",
4
4
  "description": "JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p-websockets#readme",
@@ -20,6 +20,22 @@
20
20
  },
21
21
  "type": "module",
22
22
  "types": "./dist/src/index.d.ts",
23
+ "typesVersions": {
24
+ "*": {
25
+ "*": [
26
+ "*",
27
+ "dist/*",
28
+ "dist/src/*",
29
+ "dist/src/*/index"
30
+ ],
31
+ "src/*": [
32
+ "*",
33
+ "dist/*",
34
+ "dist/src/*",
35
+ "dist/src/*/index"
36
+ ]
37
+ }
38
+ },
23
39
  "files": [
24
40
  "src",
25
41
  "dist/src",
@@ -29,6 +45,9 @@
29
45
  "exports": {
30
46
  ".": {
31
47
  "import": "./dist/src/index.js"
48
+ },
49
+ "./filters": {
50
+ "import": "./dist/src/filters.js"
32
51
  }
33
52
  },
34
53
  "eslintConfig": {
@@ -133,10 +152,10 @@
133
152
  "release": "semantic-release"
134
153
  },
135
154
  "dependencies": {
136
- "@libp2p/logger": "^1.0.2",
137
- "@libp2p/utils": "^1.0.0",
138
- "@multiformats/mafmt": "^11.0.1",
139
- "@multiformats/multiaddr": "^10.0.0",
155
+ "@libp2p/logger": "^1.1.2",
156
+ "@libp2p/utils": "^1.0.9",
157
+ "@multiformats/mafmt": "^11.0.2",
158
+ "@multiformats/multiaddr": "^10.1.5",
140
159
  "@multiformats/multiaddr-to-uri": "^9.0.0",
141
160
  "abortable-iterator": "^4.0.2",
142
161
  "err-code": "^3.0.1",
@@ -146,19 +165,18 @@
146
165
  "wherearewe": "^1.0.0"
147
166
  },
148
167
  "devDependencies": {
149
- "@libp2p/interface-compliance-tests": "^1.1.2",
150
- "@libp2p/interfaces": "^1.3.2",
168
+ "@libp2p/interface-compliance-tests": "^1.1.17",
169
+ "@libp2p/interfaces": "^1.3.14",
151
170
  "@types/ws": "^8.2.2",
152
171
  "aegir": "^36.1.3",
153
172
  "is-loopback-addr": "^2.0.1",
154
173
  "it-all": "^1.0.6",
155
174
  "it-drain": "^1.0.5",
156
175
  "it-goodbye": "^4.0.1",
157
- "it-pipe": "^2.0.2",
176
+ "it-pipe": "^2.0.3",
158
177
  "it-take": "^1.0.2",
159
178
  "p-wait-for": "^4.1.0",
160
- "uint8arrays": "^3.0.0",
161
- "util": "^0.12.3"
179
+ "uint8arrays": "^3.0.0"
162
180
  },
163
181
  "browser": {
164
182
  "./dist/src/listener.js": "./dist/src/listener.browser.js"
package/src/index.ts CHANGED
@@ -7,33 +7,37 @@ import env from 'wherearewe'
7
7
  import { createListener } from './listener.js'
8
8
  import { socketToMaConn } from './socket-to-conn.js'
9
9
  import * as filters from './filters.js'
10
- import type { Transport, Upgrader, MultiaddrFilter } from '@libp2p/interfaces/transport'
10
+ import { Transport, MultiaddrFilter, symbol, CreateListenerOptions, DialOptions } from '@libp2p/interfaces/transport'
11
11
  import type { AbortOptions } from '@libp2p/interfaces'
12
- import type { WebSocketListenerOptions } from './listener.js'
13
12
  import type { Multiaddr } from '@multiformats/multiaddr'
14
- import type { DuplexWebSocket } from 'it-ws/dist/src/duplex'
13
+ import type { DuplexWebSocket } from 'it-ws/duplex'
14
+ import type { ClientOptions } from 'ws'
15
+ import type { Server } from 'http'
15
16
 
16
17
  const log = logger('libp2p:websockets')
17
18
 
18
- /**
19
- * @class WebSockets
20
- */
21
- export class WebSockets implements Transport<AbortOptions & WebSocketOptions, WebSocketListenerOptions> {
22
- private readonly upgrader: Upgrader
23
- private readonly _filter?: MultiaddrFilter
19
+ export interface WebSocketsInit extends AbortOptions, WebSocketOptions {
20
+ filter?: MultiaddrFilter
21
+ websocket?: ClientOptions
22
+ server?: Server
23
+ }
24
24
 
25
- constructor (opts: { upgrader: Upgrader, filter?: MultiaddrFilter }) {
26
- const { upgrader, filter } = opts
25
+ export class WebSockets implements Transport {
26
+ private readonly init?: WebSocketsInit
27
27
 
28
- if (upgrader == null) {
29
- throw new Error('An upgrader must be provided. See https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport#upgrader')
30
- }
28
+ constructor (init?: WebSocketsInit) {
29
+ this.init = init
30
+ }
31
+
32
+ get [Symbol.toStringTag] () {
33
+ return this.constructor.name
34
+ }
31
35
 
32
- this.upgrader = upgrader
33
- this._filter = filter
36
+ get [symbol] (): true {
37
+ return true
34
38
  }
35
39
 
36
- async dial (ma: Multiaddr, options?: AbortOptions & WebSocketOptions) {
40
+ async dial (ma: Multiaddr, options: DialOptions) {
37
41
  log('dialing %s', ma)
38
42
  options = options ?? {}
39
43
 
@@ -41,12 +45,12 @@ export class WebSockets implements Transport<AbortOptions & WebSocketOptions, We
41
45
  const maConn = socketToMaConn(socket, ma)
42
46
  log('new outbound connection %s', maConn.remoteAddr)
43
47
 
44
- const conn = await this.upgrader.upgradeOutbound(maConn)
48
+ const conn = await options.upgrader.upgradeOutbound(maConn)
45
49
  log('outbound connection %s upgraded', maConn.remoteAddr)
46
50
  return conn
47
51
  }
48
52
 
49
- async _connect (ma: Multiaddr, options: AbortOptions & WebSocketOptions): Promise<DuplexWebSocket> {
53
+ async _connect (ma: Multiaddr, options: AbortOptions): Promise<DuplexWebSocket> {
50
54
  if (options?.signal?.aborted === true) {
51
55
  throw new AbortError()
52
56
  }
@@ -60,7 +64,7 @@ export class WebSockets implements Transport<AbortOptions & WebSocketOptions, We
60
64
  errorPromise.reject(err)
61
65
  }
62
66
 
63
- const rawSocket = connect(toUri(ma), options)
67
+ const rawSocket = connect(toUri(ma), this.init)
64
68
 
65
69
  if (rawSocket.socket.on != null) {
66
70
  rawSocket.socket.on('error', errfn)
@@ -113,8 +117,8 @@ export class WebSockets implements Transport<AbortOptions & WebSocketOptions, We
113
117
  * anytime a new incoming Connection has been successfully upgraded via
114
118
  * `upgrader.upgradeInbound`
115
119
  */
116
- createListener (options?: WebSocketListenerOptions) {
117
- return createListener(this.upgrader, options)
120
+ createListener (options: CreateListenerOptions) {
121
+ return createListener({ ...this.init, ...options })
118
122
  }
119
123
 
120
124
  /**
@@ -125,8 +129,8 @@ export class WebSockets implements Transport<AbortOptions & WebSocketOptions, We
125
129
  filter (multiaddrs: Multiaddr[]) {
126
130
  multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs]
127
131
 
128
- if (this._filter != null) {
129
- return this._filter(multiaddrs)
132
+ if (this.init?.filter != null) {
133
+ return this.init?.filter(multiaddrs)
130
134
  }
131
135
 
132
136
  // Browser
package/src/listener.ts CHANGED
@@ -4,11 +4,12 @@ import { createServer } from 'it-ws/server'
4
4
  import { logger } from '@libp2p/logger'
5
5
  import { socketToMaConn } from './socket-to-conn.js'
6
6
  import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multiaddr'
7
- import type { ListenerOptions, Upgrader, Listener, ListenerEvents } from '@libp2p/interfaces/transport'
7
+ import type { Listener, ListenerEvents, CreateListenerOptions } from '@libp2p/interfaces/transport'
8
8
  import type { Server } from 'http'
9
9
  import type { WebSocketServer } from 'it-ws/server'
10
10
  import type { DuplexWebSocket } from 'it-ws/duplex'
11
11
  import { EventEmitter, CustomEvent } from '@libp2p/interfaces'
12
+ import type { Connection } from '@libp2p/interfaces/connection'
12
13
 
13
14
  const log = logger('libp2p:websockets:listener')
14
15
 
@@ -17,7 +18,7 @@ class WebSocketListener extends EventEmitter<ListenerEvents> implements Listener
17
18
  private listeningMultiaddr?: Multiaddr
18
19
  private readonly server: WebSocketServer
19
20
 
20
- constructor (upgrader: Upgrader, options: WebSocketListenerOptions) {
21
+ constructor (init: WebSocketListenerInit) {
21
22
  super()
22
23
 
23
24
  // Keep track of open connections to destroy when the listener is closed
@@ -26,7 +27,7 @@ class WebSocketListener extends EventEmitter<ListenerEvents> implements Listener
26
27
  const self = this // eslint-disable-line @typescript-eslint/no-this-alias
27
28
 
28
29
  this.server = createServer({
29
- ...options,
30
+ ...init,
30
31
  onConnection: (stream: DuplexWebSocket) => {
31
32
  const maConn = socketToMaConn(stream, toMultiaddr(stream.remoteAddress ?? '', stream.remotePort ?? 0))
32
33
  log('new inbound connection %s', maConn.remoteAddr)
@@ -38,15 +39,15 @@ class WebSocketListener extends EventEmitter<ListenerEvents> implements Listener
38
39
  })
39
40
 
40
41
  try {
41
- void upgrader.upgradeInbound(maConn)
42
+ void init.upgrader.upgradeInbound(maConn)
42
43
  .then((conn) => {
43
44
  log('inbound connection %s upgraded', maConn.remoteAddr)
44
45
 
45
- if (options?.handler != null) {
46
- options?.handler(conn)
46
+ if (init?.handler != null) {
47
+ init?.handler(conn)
47
48
  }
48
49
 
49
- self.dispatchEvent(new CustomEvent('connection', {
50
+ self.dispatchEvent(new CustomEvent<Connection>('connection', {
50
51
  detail: conn
51
52
  }))
52
53
  })
@@ -149,12 +150,10 @@ class WebSocketListener extends EventEmitter<ListenerEvents> implements Listener
149
150
  }
150
151
  }
151
152
 
152
- export interface WebSocketListenerOptions extends ListenerOptions {
153
+ export interface WebSocketListenerInit extends CreateListenerOptions {
153
154
  server?: Server
154
155
  }
155
156
 
156
- export function createListener (upgrader: Upgrader, options?: WebSocketListenerOptions): Listener {
157
- options = options ?? {}
158
-
159
- return new WebSocketListener(upgrader, options)
157
+ export function createListener (init: WebSocketListenerInit): Listener {
158
+ return new WebSocketListener(init)
160
159
  }