@vworlds/dgram-server 1.0.6 → 1.0.8

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.
@@ -10,15 +10,22 @@ export class ServerSocket extends Socket {
10
10
  constructor(connection) {
11
11
  super();
12
12
  this.connection = connection;
13
+ let disconnected = false;
14
+ const emitDisconnect = () => {
15
+ if (disconnected) {
16
+ return;
17
+ }
18
+ disconnected = true;
19
+ this.emit('disconnect');
20
+ };
13
21
  this.connection.on(EVENTS.DATA_CHANNEL_IS_OPEN, (err) => {
14
22
  this.emit('connect', err);
15
23
  });
16
24
  this.connection.on(EVENTS.MESSAGE, (data) => {
17
25
  this.emit('receive', data);
18
26
  });
19
- this.connection.on(EVENTS.DISCONNECTED, () => {
20
- this.emit('disconnect');
21
- });
27
+ this.connection.on(EVENTS.DISCONNECTED, emitDisconnect);
28
+ this.connection.on(EVENTS.ERROR, emitDisconnect);
22
29
  }
23
30
  /** Connection id assigned by the server connection manager. */
24
31
  get id() {
@@ -1 +1 @@
1
- {"version":3,"file":"server-socket.js","sourceRoot":"","sources":["../../../../src/server/server-socket.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EACN,MAAM,GACP,MAAM,oCAAoC,CAAC;AAE5C,gEAAgE;AAChE,MAAM,OAAO,YAAa,SAAQ,MAAM;IAMnB;IALnB;;;;OAIG;IACH,YAAmB,UAA4B;QAC7C,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAkB;QAG7C,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,GAAoB,EAAE,EAAE;YACvE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,IAAgB;QACnB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,+DAA+D;IAC/D,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"server-socket.js","sourceRoot":"","sources":["../../../../src/server/server-socket.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EACN,MAAM,GACP,MAAM,oCAAoC,CAAC;AAE5C,gEAAgE;AAChE,MAAM,OAAO,YAAa,SAAQ,MAAM;IAMnB;IALnB;;;;OAIG;IACH,YAAmB,UAA4B;QAC7C,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAkB;QAG7C,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,YAAY,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,GAAoB,EAAE,EAAE;YACvE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC;IAED,+DAA+D;IAC/D,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,IAAgB;QACnB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,+DAA+D;IAC/D,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -8,7 +8,11 @@ export default class ConnectionsManager extends EventEmitter {
8
8
  private connections;
9
9
  /** @param options WebRTC and data channel settings applied to new connections. */
10
10
  constructor(options: ServerOptions);
11
- /** Creates a random connection id used by signaling routes. */
11
+ /**
12
+ * Creates a cryptographically strong connection id used by signaling
13
+ * routes. The id is the only credential controlling per-connection
14
+ * signaling endpoints, so it must be unguessable.
15
+ */
12
16
  private createId;
13
17
  /** Looks up an active server connection by id. */
14
18
  getConnection(id: string): WebRTCConnection | undefined;
@@ -1,6 +1,7 @@
1
1
  import { ReliabilityType, } from '../../server/server-options.js';
2
2
  import WebRTCConnection from './webrtc-connection.js';
3
3
  import { EventEmitter } from 'events';
4
+ import { randomUUID } from 'node:crypto';
4
5
  import { EVENTS } from '@vworlds/dgram-common';
5
6
  /** Creates, stores, and deletes server-side WebRTC connections. */
6
7
  export default class ConnectionsManager extends EventEmitter {
@@ -12,14 +13,13 @@ export default class ConnectionsManager extends EventEmitter {
12
13
  super();
13
14
  this.options = options;
14
15
  }
15
- /** Creates a random connection id used by signaling routes. */
16
+ /**
17
+ * Creates a cryptographically strong connection id used by signaling
18
+ * routes. The id is the only credential controlling per-connection
19
+ * signaling endpoints, so it must be unguessable.
20
+ */
16
21
  createId() {
17
- const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
18
- let id = '';
19
- for (let i = 0; i < 24; i++) {
20
- id += possible.charAt(Math.floor(Math.random() * possible.length));
21
- }
22
- return id;
22
+ return randomUUID();
23
23
  }
24
24
  /** Looks up an active server connection by id. */
25
25
  getConnection(id) {
@@ -62,9 +62,6 @@ export default class ConnectionsManager extends EventEmitter {
62
62
  reject(undefined);
63
63
  }
64
64
  this.connections.set(connection.id, connection);
65
- pc.onDataChannel((dc) => {
66
- // do nothing
67
- });
68
65
  pc.onStateChange(async (state) => {
69
66
  if (state === 'disconnected' ||
70
67
  state === 'failed' ||
@@ -73,7 +70,6 @@ export default class ConnectionsManager extends EventEmitter {
73
70
  }
74
71
  connection.setState(state);
75
72
  });
76
- pc.onGatheringStateChange((state) => { });
77
73
  pc.onLocalDescription((sdp, type) => {
78
74
  connection.localDescription = { sdp, type };
79
75
  resolve(connection);
@@ -1 +1 @@
1
- {"version":3,"file":"connections-manager.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/connections-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connections-manager.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/connections-manager.ts"],"names":[],"mappings":"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"}
@@ -41,9 +41,12 @@ export default class WebRTCConnection extends EventEmitter {
41
41
  this.emit(EVENTS.CONNECT);
42
42
  }
43
43
  else if (state === 'failed') {
44
- this.emit(EVENTS.ERROR);
44
+ if (this.listenerCount(EVENTS.ERROR) > 0) {
45
+ this.emit(EVENTS.ERROR);
46
+ }
47
+ this.emit(EVENTS.DISCONNECTED);
45
48
  }
46
- else if (state === 'closed') {
49
+ else if (state === 'disconnected' || state === 'closed') {
47
50
  this.emit(EVENTS.DISCONNECTED);
48
51
  }
49
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-connection.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/webrtc-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAUvD,kEAAkE;AAClE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,YAAY;IAsB/C;IACA;IACA;IAvBT,2CAA2C;IACpC,KAAK,CAAS;IAErB,wDAAwD;IACjD,cAAc,CAA8B;IACnD,4DAA4D;IACrD,WAAW,CAA2B;IAC7C,0EAA0E;IACnE,gBAAgB,CAAmB;IAE1C,+EAA+E;IACxE,aAAa,GAAsB,EAAE,CAAC;IAE7C;;;;;;OAMG;IACH,YACS,EAAU,EACV,MAAiB,EACjB,WAA0C;QAEjD,KAAK,EAAE,CAAC;QAJD,OAAE,GAAF,EAAE,CAAQ;QACV,WAAM,GAAN,MAAM,CAAW;QACjB,gBAAW,GAAX,WAAW,CAA+B;QAGjD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,gFAAgF;IACzE,QAAQ,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,+DAA+D;IACxD,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,qFAAqF;IAC9E,KAAK,CAAC,gBAAgB,CAC3B,KAAa,EACb,MAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,oDAAoD;IAC7C,KAAK,CAAC,WAAW,CAAC,IAAS;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,qEAAqE;IAC9D,WAAW;QAChB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"webrtc-connection.js","sourceRoot":"","sources":["../../../../../src/webrtc/datachannel/webrtc-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAUvD,kEAAkE;AAClE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,YAAY;IAsB/C;IACA;IACA;IAvBT,2CAA2C;IACpC,KAAK,CAAS;IAErB,wDAAwD;IACjD,cAAc,CAA8B;IACnD,4DAA4D;IACrD,WAAW,CAA2B;IAC7C,0EAA0E;IACnE,gBAAgB,CAAmB;IAE1C,+EAA+E;IACxE,aAAa,GAAsB,EAAE,CAAC;IAE7C;;;;;;OAMG;IACH,YACS,EAAU,EACV,MAAiB,EACjB,WAA0C;QAEjD,KAAK,EAAE,CAAC;QAJD,OAAE,GAAF,EAAE,CAAQ;QACV,WAAM,GAAN,MAAM,CAAW;QACjB,gBAAW,GAAX,WAAW,CAA+B;QAGjD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,gFAAgF;IACzE,QAAQ,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,+DAA+D;IACxD,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,qFAAqF;IAC9E,KAAK,CAAC,gBAAgB,CAC3B,KAAa,EACb,MAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,oDAAoD;IAC7C,KAAK,CAAC,WAAW,CAAC,IAAS;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,qEAAqE;IAC9D,WAAW;QAChB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@vworlds/dgram-common",
3
+ "version": "1.0.8",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./src/index.d.ts",
8
+ "default": "./src/index.js"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,18 @@
1
+ declare const EVENTS: {
2
+ CONNECT: string;
3
+ CONNECTION: string;
4
+ DATA_CHANNEL_IS_OPEN: string;
5
+ DISCONNECTED: string;
6
+ ERROR: string;
7
+ MESSAGE: string;
8
+ };
9
+ declare const ERRORS: {
10
+ BROWSER_NOT_SUPPORTED: string;
11
+ COULD_NOT_PARSE_MESSAGE: string;
12
+ DROPPED_FROM_BUFFERING: string;
13
+ MAX_MESSAGE_SIZE_EXCEEDED: string;
14
+ PEER_CONNECTION_NOT_CREATED: string;
15
+ DATA_CHANNEL_NOT_CREATED: string;
16
+ CONNECTION_CLOSED: string;
17
+ };
18
+ export { EVENTS, ERRORS };
@@ -0,0 +1,19 @@
1
+ const EVENTS = {
2
+ CONNECT: 'connect',
3
+ CONNECTION: 'connection',
4
+ DATA_CHANNEL_IS_OPEN: 'dataChannelIsOpen',
5
+ DISCONNECTED: 'disconnected',
6
+ ERROR: 'error',
7
+ MESSAGE: 'rawMessage',
8
+ };
9
+ const ERRORS = {
10
+ BROWSER_NOT_SUPPORTED: 'BROWSER_NOT_SUPPORTED',
11
+ COULD_NOT_PARSE_MESSAGE: 'COULD_NOT_PARSE_MESSAGE',
12
+ DROPPED_FROM_BUFFERING: 'DROPPED_FROM_BUFFERING',
13
+ MAX_MESSAGE_SIZE_EXCEEDED: 'MAX_MESSAGE_SIZE_EXCEEDED',
14
+ PEER_CONNECTION_NOT_CREATED: 'PEER_CONNECTION_NOT_CREATED',
15
+ DATA_CHANNEL_NOT_CREATED: 'DATA_CHANNEL_NOT_CREATED',
16
+ CONNECTION_CLOSED: 'CONNECTION_CLOSED',
17
+ };
18
+ export { EVENTS, ERRORS };
19
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../dgram-common/src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,oBAAoB,EAAE,mBAAmB;IACzC,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,2BAA2B,EAAE,6BAA6B;IAC1D,wBAAwB,EAAE,0BAA0B;IACpD,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Socket } from './socket.js';
2
+ export type { ConnectionError } from './socket.js';
3
+ export { EVENTS, ERRORS } from './constants.js';
@@ -0,0 +1,3 @@
1
+ export { Socket } from './socket.js';
2
+ export { EVENTS, ERRORS } from './constants.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dgram-common/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ /** Describes a connection failure reported through the socket `connect` event. */
3
+ export interface ConnectionError extends Error {
4
+ /** Numeric status code for the failure. Browser support failures use `-1`. */
5
+ status: number;
6
+ /** Human-readable status text suitable for logs or UI. */
7
+ statusText: string;
8
+ }
9
+ /** Events emitted by dgram socket implementations. */
10
+ interface SocketEvents {
11
+ /** Fired after the peer connection or data channel closes. */
12
+ disconnect: () => void;
13
+ /** Fired when binary payload data arrives from the remote peer. */
14
+ receive: (data: Uint8Array) => void;
15
+ /** Fired when the socket connects, or with an error when setup fails. */
16
+ connect: (err?: ConnectionError) => void;
17
+ }
18
+ /** Common socket-shaped interface implemented by browser and server dgram sockets. */
19
+ export declare abstract class Socket extends EventEmitter<SocketEvents> {
20
+ /** Stable connection id assigned by the signaling server. */
21
+ abstract get id(): string;
22
+ /** Sends one binary datagram-like payload over the underlying WebRTC data channel. */
23
+ abstract send(data: Uint8Array): void;
24
+ /** Closes the underlying WebRTC connection and releases resources. */
25
+ abstract close(): void;
26
+ }
27
+ export {};
@@ -0,0 +1,5 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ /** Common socket-shaped interface implemented by browser and server dgram sockets. */
3
+ export class Socket extends EventEmitter {
4
+ }
5
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../../dgram-common/src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAoB7C,sFAAsF;AACtF,MAAM,OAAgB,MAAO,SAAQ,YAA0B;CAO9D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vworlds/dgram-server",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "type": "module",
5
5
  "main": "./dgram-server/src/index.js",
6
6
  "types": "./dgram-server/src/index.d.ts",
@@ -15,10 +15,13 @@
15
15
  "url": "https://github.com/vworlds/dgram"
16
16
  },
17
17
  "dependencies": {
18
- "@vworlds/dgram-common": "file:../dgram-common",
18
+ "@vworlds/dgram-common": "1.0.8",
19
19
  "eventemitter3": "^5.0.4",
20
20
  "express": "^4.18.2",
21
21
  "node-datachannel": "^0.32.3"
22
22
  },
23
+ "bundledDependencies": [
24
+ "@vworlds/dgram-common"
25
+ ],
23
26
  "license": "UNLICENSED"
24
27
  }