@dxos/network-manager 0.1.57 → 0.1.58-main.0e9c99e

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 (37) hide show
  1. package/dist/lib/browser/{chunk-UKMTAO4L.mjs → chunk-CNQ55TFQ.mjs} +197 -112
  2. package/dist/lib/browser/chunk-CNQ55TFQ.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +155 -22
  6. package/dist/lib/browser/testing/index.mjs.map +4 -4
  7. package/dist/lib/node/index.cjs +207 -122
  8. package/dist/lib/node/index.cjs.map +3 -3
  9. package/dist/lib/node/meta.json +1 -1
  10. package/dist/lib/node/testing/index.cjs +363 -145
  11. package/dist/lib/node/testing/index.cjs.map +4 -4
  12. package/dist/types/src/swarm/connection-limiter.d.ts +1 -1
  13. package/dist/types/src/swarm/connection-limiter.d.ts.map +1 -1
  14. package/dist/types/src/swarm/connection.d.ts +3 -1
  15. package/dist/types/src/swarm/connection.d.ts.map +1 -1
  16. package/dist/types/src/swarm/peer.d.ts +1 -1
  17. package/dist/types/src/swarm/peer.d.ts.map +1 -1
  18. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  19. package/dist/types/src/tests/tcp-transport.test.d.ts +2 -0
  20. package/dist/types/src/tests/tcp-transport.test.d.ts.map +1 -0
  21. package/dist/types/src/transport/simplepeer-transport-proxy.d.ts.map +1 -1
  22. package/dist/types/src/transport/simplepeer-transport.d.ts.map +1 -1
  23. package/dist/types/src/transport/tcp-transport.d.ts +23 -0
  24. package/dist/types/src/transport/tcp-transport.d.ts.map +1 -0
  25. package/dist/types/src/transport/transport.d.ts +2 -1
  26. package/dist/types/src/transport/transport.d.ts.map +1 -1
  27. package/package.json +17 -18
  28. package/src/swarm/connection-limiter.ts +2 -2
  29. package/src/swarm/connection.ts +53 -27
  30. package/src/swarm/peer.ts +4 -1
  31. package/src/testing/test-builder.ts +5 -1
  32. package/src/tests/tcp-transport.test.ts +67 -0
  33. package/src/transport/simplepeer-transport-proxy.ts +28 -2
  34. package/src/transport/simplepeer-transport.ts +39 -3
  35. package/src/transport/tcp-transport.ts +107 -0
  36. package/src/transport/transport.ts +1 -0
  37. package/dist/lib/browser/chunk-UKMTAO4L.mjs.map +0 -7
@@ -1,6 +1,6 @@
1
1
  import { DeferredTask } from '@dxos/async';
2
2
  import { PublicKey } from '@dxos/keys';
3
- export declare const MAX_CONCURRENT_INITIATING_CONNECTIONS = 10;
3
+ export declare const MAX_CONCURRENT_INITIATING_CONNECTIONS = 50;
4
4
  export type ConnectionLimiterOptions = {
5
5
  maxConcurrentInitConnections?: number;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"connection-limiter.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection-limiter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,eAAO,MAAM,qCAAqC,KAAK,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC/C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;IAEF,sBAAsB,eAMnB;gBAES,EAAE,4BAAoE,EAAE,GAAE,wBAA6B;IAInH;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS;CASpC"}
1
+ {"version":3,"file":"connection-limiter.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection-limiter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,eAAO,MAAM,qCAAqC,KAAK,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC/C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;IAEF,sBAAsB,eAMnB;gBAES,EAAE,4BAAoE,EAAE,GAAE,wBAA6B;IAInH;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS;CASpC"}
@@ -42,7 +42,9 @@ export declare enum ConnectionState {
42
42
  /**
43
43
  * Connection closed.
44
44
  */
45
- CLOSED = "CLOSED"
45
+ CLOSED = "CLOSED",
46
+ ABORTING = "ABORTING",
47
+ ABORTED = "ABORTED"
46
48
  }
47
49
  /**
48
50
  * Represents a connection to a remote peer.
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAuB,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAahD,UAAU,mBAAmB;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB;;OAEG;IACH,OAAO,YAAY;IAEnB;;;OAGG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,UAAU,eAAe;IAEzB;;OAEG;IACH,SAAS,cAAc;IAEvB;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,qBAAa,UAAU;aAsBH,KAAK,EAAE,SAAS;aAChB,KAAK,EAAE,SAAS;aAChB,QAAQ,EAAE,SAAS;aACnB,SAAS,EAAE,SAAS;aACpB,SAAS,EAAE,OAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IA7B9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,UAAU,CAAwB;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,QAAQ,CAAC,YAAY,yBAAgC;IACrD,QAAQ,CAAC,MAAM,cAAqB;IAE7B,WAAW,SAA8B;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE7B;IAEH,OAAO,CAAC,gBAAgB,CAA6B;gBAGnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAAE,wBAAwB;IAC1C,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,OAAO,EACjB,gBAAgB,EAAE,eAAe,EACjC,SAAS,EAAE,YAAY,EACvB,iBAAiB,EAAE,gBAAgB,EACnC,UAAU,CAAC,iCAAqB;IAWnD,IAAI,KAAK,oBAER;IAED,IAAI,SAAS,0BAEZ;IAED,IAAI,QAAQ,iBAEX;IAED;;OAEG;IACG,cAAc;IAsEd,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAkCjB,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAgCvB,OAAO,CAAC,WAAW;YAKL,kBAAkB;IAgChC;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,aAAa;IA2B/B,QAAQ;IAIR,OAAO,CAAC,YAAY;CAMrB"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAuB,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYvC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAahD,UAAU,mBAAmB;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB;;OAEG;IACH,OAAO,YAAY;IAEnB;;;OAGG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,UAAU,eAAe;IAEzB;;OAEG;IACH,SAAS,cAAc;IAEvB;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,MAAM,WAAW;IAEjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,qBAAa,UAAU;aAsBH,KAAK,EAAE,SAAS;aAChB,KAAK,EAAE,SAAS;aAChB,QAAQ,EAAE,SAAS;aACnB,SAAS,EAAE,SAAS;aACpB,SAAS,EAAE,OAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IA7B9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,UAAU,CAAwB;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,QAAQ,CAAC,YAAY,yBAAgC;IACrD,QAAQ,CAAC,MAAM,cAAqB;IAE7B,WAAW,SAA8B;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE7B;IAEH,OAAO,CAAC,gBAAgB,CAA6B;gBAGnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAAE,wBAAwB;IAC1C,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,OAAO,EACjB,gBAAgB,EAAE,eAAe,EACjC,SAAS,EAAE,YAAY,EACvB,iBAAiB,EAAE,gBAAgB,EACnC,UAAU,CAAC,iCAAqB;IAWnD,IAAI,KAAK,oBAER;IAED,IAAI,SAAS,0BAEZ;IAED,IAAI,QAAQ,iBAEX;IAED;;OAEG;IACG,cAAc;IA4Ed,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAsCjB,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAuCvB,OAAO,CAAC,WAAW;YAKL,kBAAkB;IAgChC;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,aAAa;IA2B/B,QAAQ;IAIR,OAAO,CAAC,YAAY;CAMrB"}
@@ -1,6 +1,6 @@
1
1
  import { Event } from '@dxos/async';
2
- import { SystemError } from '@dxos/errors';
3
2
  import { PublicKey } from '@dxos/keys';
3
+ import { SystemError } from '@dxos/protocols';
4
4
  import { Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';
5
5
  import { OfferMessage, SignalMessage, SignalMessenger } from '../signal';
6
6
  import { TransportFactory } from '../transport';
@@ -1 +1 @@
1
- {"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../../src/swarm/peer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAA8B,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAkB,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBAAa,wBAAyB,SAAQ,WAAW;;CAIxD;AAED,UAAU,aAAa;IACrB;;OAEG;IACH,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD;;OAEG;IACH,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAOD;;;GAGG;AACH,qBAAa,IAAI;aAwBG,EAAE,EAAE,SAAS;aACb,KAAK,EAAE,SAAS;aAChB,WAAW,EAAE,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IA9B7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAK;IACrB,kBAAkB,UAAQ;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAC,CAAU;IAE1B,UAAU,CAAC,EAAE,UAAU,CAAC;IAE/B;;OAEG;IACI,WAAW,UAAS;IAEpB,UAAU,UAAS;IAE1B,SAAgB,mBAAmB,oBAA2B;gBAI5C,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,SAAS,EACrB,gBAAgB,EAAE,eAAe,EACjC,iBAAiB,EAAE,oBAAoB,EACvC,iBAAiB,EAAE,gBAAgB,EACnC,kBAAkB,EAAE,iBAAiB,EACrC,UAAU,EAAE,aAAa;IAG5C;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDrD;;OAEG;IACG,kBAAkB;IA0CxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAsGnB,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK;IAgB3B,QAAQ,CAAC,OAAO,EAAE,aAAa;IAU/B,OAAO;CAOd"}
1
+ {"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../../src/swarm/peer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAA8B,MAAM,aAAa,CAAC;AAGhE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAkB,WAAW,EAAgB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBAAa,wBAAyB,SAAQ,WAAW;;CAIxD;AAED,UAAU,aAAa;IACrB;;OAEG;IACH,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD;;OAEG;IACH,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAOD;;;GAGG;AACH,qBAAa,IAAI;aAwBG,EAAE,EAAE,SAAS;aACb,KAAK,EAAE,SAAS;aAChB,WAAW,EAAE,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IA9B7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAK;IACrB,kBAAkB,UAAQ;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAC,CAAU;IAE1B,UAAU,CAAC,EAAE,UAAU,CAAC;IAE/B;;OAEG;IACI,WAAW,UAAS;IAEpB,UAAU,UAAS;IAE1B,SAAgB,mBAAmB,oBAA2B;gBAI5C,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,SAAS,EACrB,gBAAgB,EAAE,eAAe,EACjC,iBAAiB,EAAE,oBAAoB,EACvC,iBAAiB,EAAE,gBAAgB,EACnC,kBAAkB,EAAE,iBAAiB,EACrC,UAAU,EAAE,aAAa;IAG5C;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDrD;;OAEG;IACG,kBAAkB;IA6CxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAsGnB,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK;IAgB3B,QAAQ,CAAC,OAAO,EAAE,aAAa;IAU/B,OAAO;CAOd"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EACL,mBAAmB,EAGnB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAOL,aAAa,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,KAAK,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAI3F,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAEtD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAW;aAGM,OAAO,EAAE,kBAAkB;IAFvD,OAAO,CAAC,cAAc,CAAoC;gBAE9B,OAAO,GAAE,kBAAuB;IAE5D,mBAAmB;IAQnB,UAAU,CAAC,MAAM,GAAE,SAA8B;CAGlD;AAED;;GAEG;AACH,qBAAa,QAAQ;IAiBjB,OAAO,CAAC,QAAQ,CAAC,WAAW;aACZ,MAAM,EAAE,SAAS;aACjB,SAAS,CAAC;IAlB5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkE;IAY1F,OAAO,CAAC,MAAM,CAAC,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAoB;gBAGlB,WAAW,EAAE,WAAW,EACzB,MAAM,EAAE,SAAS,EACjB,SAAS,CAAC,2BAAe;IAc3C,oBAAoB,CAAC,SAAS,EAAE,aAAa;IA6DvC,IAAI;IAMJ,KAAK;IASX,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB;IAS/C,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,GAAE,4BAAuC,GAAG,mBAAmB;IAWvG,SAAS;IAIT,QAAQ;CAGf;AAGD,qBAAa,mBAAmB;IAI5B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS;IACzB,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B;IALzD,QAAQ,EAAE,gBAAgB,CAAC;gBAGhB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,4BAA4B;IASnD,IAAI,CAAC,QAAQ,yBAA+B;IAW5C,KAAK;CAIZ"}
1
+ {"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EACL,mBAAmB,EAGnB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAOL,aAAa,EACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,KAAK,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAI3F,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAEtD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAW;aAGM,OAAO,EAAE,kBAAkB;IAFvD,OAAO,CAAC,cAAc,CAAoC;gBAE9B,OAAO,GAAE,kBAAuB;IAE5D,mBAAmB;IAQnB,UAAU,CAAC,MAAM,GAAE,SAA8B;CAGlD;AAED;;GAEG;AACH,qBAAa,QAAQ;IAiBjB,OAAO,CAAC,QAAQ,CAAC,WAAW;aACZ,MAAM,EAAE,SAAS;aACjB,SAAS,CAAC;IAlB5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkE;IAY1F,OAAO,CAAC,MAAM,CAAC,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAoB;gBAGlB,WAAW,EAAE,WAAW,EACzB,MAAM,EAAE,SAAS,EACjB,SAAS,CAAC,2BAAe;IAc3C,oBAAoB,CAAC,SAAS,EAAE,aAAa;IAgEvC,IAAI;IAMJ,KAAK;IASX,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB;IAS/C,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,GAAE,4BAAuC,GAAG,mBAAmB;IAWvG,SAAS;IAIT,QAAQ;CAGf;AAGD,qBAAa,mBAAmB;IAI5B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS;IACzB,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B;IALzD,QAAQ,EAAE,gBAAgB,CAAC;gBAGhB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,4BAA4B;IASnD,IAAI,CAAC,QAAQ,yBAA+B;IAW5C,KAAK;CAIZ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tcp-transport.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp-transport.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/tcp-transport.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"simplepeer-transport-proxy.d.ts","sourceRoot":"","sources":["../../../../src/transport/simplepeer-transport-proxy.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAgC,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,8BAA8B,GAAG;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,qBAAa,wBAAyB,YAAW,SAAS;IAatD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAuB;gBAI1B,OAAO,EAAE,8BAA8B;YAsC5C,iBAAiB;IAiB/B,OAAO,CAAC,WAAW;YAKL,aAAa;IAI3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;OAEG;IAEH,UAAU;CAKX;AAGD,qBAAa,+BAAgC,YAAW,gBAAgB;IACtE,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,YAAY,CAAuC;IAE3D;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAShE,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;CAatD"}
1
+ {"version":3,"file":"simplepeer-transport-proxy.d.ts","sourceRoot":"","sources":["../../../../src/transport/simplepeer-transport-proxy.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW1C,OAAO,EAAgC,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,8BAA8B,GAAG;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,qBAAa,wBAAyB,YAAW,SAAS;IAatD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAuB;gBAI1B,OAAO,EAAE,8BAA8B;YAsC5C,iBAAiB;IAiB/B,OAAO,CAAC,WAAW;YAKL,aAAa;IAI3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;OAEG;IAEH,UAAU;CAKX;AAGD,qBAAa,+BAAgC,YAAW,gBAAgB;IACtE,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,YAAY,CAAuC;IAE3D;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAShE,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;CAatD"}
@@ -1 +1 @@
1
- {"version":3,"file":"simplepeer-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/simplepeer-transport.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IAUvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,OAAO,CAAS;IAExB,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE7B,MAAM,EAAE,yBAAyB;IA+CxD,OAAO;IASb,MAAM,CAAC,MAAM,EAAE,MAAM;YASP,kBAAkB;CAIjC;AAED,eAAO,MAAM,gCAAgC,kBAAmB,GAAG,KAAG,gBAMpE,CAAC"}
1
+ {"version":3,"file":"simplepeer-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/simplepeer-transport.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IAUvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,OAAO,CAAS;IAExB,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE7B,MAAM,EAAE,yBAAyB;IAkFxD,OAAO;IASb,MAAM,CAAC,MAAM,EAAE,MAAM;YASP,kBAAkB;CAIjC;AAED,eAAO,MAAM,gCAAgC,kBAAmB,GAAG,KAAG,gBAMpE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Event } from '@dxos/async';
2
+ import { ErrorStream } from '@dxos/debug';
3
+ import { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
4
+ import { Transport, TransportFactory, TransportOptions } from './transport';
5
+ export declare const TcpTransportFactory: TransportFactory;
6
+ /**
7
+ * Fake transport.
8
+ */
9
+ export declare class TcpTransport implements Transport {
10
+ private readonly options;
11
+ private _server?;
12
+ private _socket?;
13
+ readonly closed: Event<void>;
14
+ readonly connected: Event<void>;
15
+ readonly errors: ErrorStream;
16
+ private _destroyed;
17
+ private _connected;
18
+ constructor(options: TransportOptions);
19
+ destroy(): Promise<void>;
20
+ signal({ payload }: Signal): void;
21
+ private _handleSocket;
22
+ }
23
+ //# sourceMappingURL=tcp-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/tcp-transport.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,eAAO,MAAM,mBAAmB,EAAE,gBAEjC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAYhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXpC,OAAO,CAAC,OAAO,CAAC,CAAqB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAqB;IAErC,SAAgB,MAAM,cAAqB;IAC3C,SAAgB,SAAS,cAAqB;IAC9C,SAAgB,MAAM,cAAqB;IAE3C,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,UAAU,CAAS;gBAEE,OAAO,EAAE,gBAAgB;IAsChD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM;IAW1B,OAAO,CAAC,aAAa;CAiBtB"}
@@ -6,7 +6,8 @@ export declare enum TransportKind {
6
6
  SIMPLE_PEER = "SIMPLE_PEER",
7
7
  LIBDATACHANNEL = "LIBDATACHANNEL",
8
8
  SIMPLE_PEER_PROXY = "SIMPLE_PEER_PROXY",
9
- MEMORY = "MEMORY"
9
+ MEMORY = "MEMORY",
10
+ TCP = "TCP"
10
11
  }
11
12
  /**
12
13
  * Abstraction over a P2P connection transport. Currently either WebRTC or in-memory.
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/transport.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,oBAAY,aAAa;IACvB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IAEpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACvD"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/transport.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,oBAAY,aAAa;IACvB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IAEpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACvD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/network-manager",
3
- "version": "0.1.57",
3
+ "version": "0.1.58-main.0e9c99e",
4
4
  "description": "Network Manager",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -30,22 +30,21 @@
30
30
  "tiny-invariant": "^1.3.1",
31
31
  "ws": "^7.4.4",
32
32
  "xor-distance": "^2.0.0",
33
- "@dxos/async": "0.1.57",
34
- "@dxos/codec-protobuf": "0.1.57",
35
- "@dxos/context": "0.1.57",
36
- "@dxos/credentials": "0.1.57",
37
- "@dxos/crypto": "0.1.57",
38
- "@dxos/errors": "0.1.57",
39
- "@dxos/invariant": "0.1.57",
40
- "@dxos/keys": "0.1.57",
41
- "@dxos/log": "0.1.57",
42
- "@dxos/messaging": "0.1.57",
43
- "@dxos/node-std": "0.1.57",
44
- "@dxos/protocols": "0.1.57",
45
- "@dxos/rpc": "0.1.57",
46
- "@dxos/teleport": "0.1.57",
47
- "@dxos/util": "0.1.57",
48
- "@dxos/debug": "0.1.57"
33
+ "@dxos/async": "0.1.58-main.0e9c99e",
34
+ "@dxos/codec-protobuf": "0.1.58-main.0e9c99e",
35
+ "@dxos/context": "0.1.58-main.0e9c99e",
36
+ "@dxos/credentials": "0.1.58-main.0e9c99e",
37
+ "@dxos/crypto": "0.1.58-main.0e9c99e",
38
+ "@dxos/debug": "0.1.58-main.0e9c99e",
39
+ "@dxos/invariant": "0.1.58-main.0e9c99e",
40
+ "@dxos/keys": "0.1.58-main.0e9c99e",
41
+ "@dxos/log": "0.1.58-main.0e9c99e",
42
+ "@dxos/messaging": "0.1.58-main.0e9c99e",
43
+ "@dxos/node-std": "0.1.58-main.0e9c99e",
44
+ "@dxos/protocols": "0.1.58-main.0e9c99e",
45
+ "@dxos/rpc": "0.1.58-main.0e9c99e",
46
+ "@dxos/teleport": "0.1.58-main.0e9c99e",
47
+ "@dxos/util": "0.1.58-main.0e9c99e"
49
48
  },
50
49
  "devDependencies": {
51
50
  "@swc-node/register": "1.5.4",
@@ -55,7 +54,7 @@
55
54
  "earljs": "~0.1.10",
56
55
  "fast-check": "~3.3.0",
57
56
  "typescript": "^5.2.2",
58
- "@dxos/signal": "0.1.57"
57
+ "@dxos/signal": "0.1.58-main.0e9c99e"
59
58
  },
60
59
  "publishConfig": {
61
60
  "access": "public"
@@ -4,13 +4,13 @@
4
4
 
5
5
  import { DeferredTask } from '@dxos/async';
6
6
  import { Context } from '@dxos/context';
7
- import { CancelledError } from '@dxos/errors';
8
7
  import { invariant } from '@dxos/invariant';
9
8
  import { PublicKey } from '@dxos/keys';
10
9
  import { log } from '@dxos/log';
10
+ import { CancelledError } from '@dxos/protocols';
11
11
  import { ComplexMap } from '@dxos/util';
12
12
 
13
- export const MAX_CONCURRENT_INITIATING_CONNECTIONS = 10;
13
+ export const MAX_CONCURRENT_INITIATING_CONNECTIONS = 50;
14
14
 
15
15
  export type ConnectionLimiterOptions = {
16
16
  maxConcurrentInitConnections?: number;
@@ -5,11 +5,17 @@
5
5
  import { DeferredTask, Event, sleep, synchronized } from '@dxos/async';
6
6
  import { Context, cancelWithContext } from '@dxos/context';
7
7
  import { ErrorStream } from '@dxos/debug';
8
- import { CancelledError } from '@dxos/errors';
9
8
  import { invariant } from '@dxos/invariant';
10
9
  import { PublicKey } from '@dxos/keys';
11
10
  import { log } from '@dxos/log';
12
- import { trace } from '@dxos/protocols';
11
+ import {
12
+ CancelledError,
13
+ ProtocolError,
14
+ ConnectionResetError,
15
+ ConnectivityError,
16
+ UnknownProtocolError,
17
+ trace,
18
+ } from '@dxos/protocols';
13
19
  import { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
14
20
 
15
21
  import { SignalMessage, SignalMessenger } from '../signal';
@@ -73,6 +79,9 @@ export enum ConnectionState {
73
79
  * Connection closed.
74
80
  */
75
81
  CLOSED = 'CLOSED',
82
+
83
+ ABORTING = 'ABORTING',
84
+ ABORTED = 'ABORTED',
76
85
  }
77
86
 
78
87
  /**
@@ -156,7 +165,7 @@ export class Connection {
156
165
  // TODO(dmaretskyi): Piped streams should do this automatically, but it break's without this code.
157
166
  this._protocol.stream.on('close', () => {
158
167
  log('protocol stream closed');
159
- this.close().catch((err) => this.errors.raise(err));
168
+ this.close(new ProtocolError('protocol stream closed')).catch((err) => this.errors.raise(err));
160
169
  });
161
170
 
162
171
  invariant(!this._transport);
@@ -179,13 +188,19 @@ export class Connection {
179
188
 
180
189
  this._transport.errors.handle((err) => {
181
190
  log('transport error:', { err });
182
- // TODO(nf): collect a list of errors?
183
191
  if (!this.closeReason) {
184
192
  this.closeReason = err?.message;
185
193
  }
186
- if (err?.message.includes('OperationError')) {
187
- log('aborting due to transport OperationError');
194
+
195
+ // TODO(nf): fix ErrorStream so instanceof works here
196
+ if (err instanceof ConnectionResetError) {
197
+ log('aborting due to transport ConnectionResetError');
188
198
  this.abort().catch((err) => this.errors.raise(err));
199
+ } else if (err instanceof ConnectivityError) {
200
+ log('aborting due to transport ConnectivityError');
201
+ this.abort().catch((err) => this.errors.raise(err));
202
+ } else if (err instanceof UnknownProtocolError) {
203
+ log('unsure what to do for UnknownProtocolError', { err });
189
204
  }
190
205
 
191
206
  if (this._state !== ConnectionState.CLOSED && this._state !== ConnectionState.CLOSING) {
@@ -207,15 +222,15 @@ export class Connection {
207
222
  // TODO(nf): make the caller responsible for recording the reason and determining flow control.
208
223
  async abort(err?: Error) {
209
224
  log('aborting...', { err });
225
+ if (this._state === ConnectionState.CLOSED || this._state === ConnectionState.ABORTED) {
226
+ log(`abort ignored: already ${this._state}`, this.closeReason);
227
+ return;
228
+ }
229
+
230
+ this._changeState(ConnectionState.ABORTING);
210
231
  if (!this.closeReason) {
211
232
  this.closeReason = err?.message;
212
233
  }
213
- if (this._state === ConnectionState.CLOSED) {
214
- log('abort ignored: already closed', this.closeReason);
215
- return;
216
- }
217
- // TODO(nf): different state?
218
- this._changeState(ConnectionState.CLOSING);
219
234
 
220
235
  await this._ctx.dispose();
221
236
 
@@ -234,8 +249,12 @@ export class Connection {
234
249
  log.catch(err);
235
250
  }
236
251
 
237
- this._changeState(ConnectionState.CLOSED);
238
- this._callbacks?.onClosed?.(err);
252
+ try {
253
+ this._callbacks?.onClosed?.(err);
254
+ } catch (err) {
255
+ log.catch(err);
256
+ }
257
+ this._changeState(ConnectionState.ABORTED);
239
258
  }
240
259
 
241
260
  @synchronized
@@ -243,27 +262,34 @@ export class Connection {
243
262
  if (!this.closeReason) {
244
263
  this.closeReason = err?.message;
245
264
  }
246
- if (this._state === ConnectionState.CLOSED) {
265
+ if (
266
+ this._state === ConnectionState.CLOSED ||
267
+ this._state === ConnectionState.ABORTING ||
268
+ this._state === ConnectionState.ABORTED
269
+ ) {
247
270
  return;
248
271
  }
272
+ const lastState = this._state;
249
273
  this._changeState(ConnectionState.CLOSING);
250
274
 
251
275
  await this._ctx.dispose();
252
276
 
253
277
  log('closing...', { peerId: this.ownId });
254
278
 
255
- try {
256
- // Gracefully close the stream flushing any unsent data packets.
257
- await this._protocol.close();
258
- } catch (err: any) {
259
- log.catch(err);
260
- }
279
+ if (lastState === ConnectionState.CONNECTED) {
280
+ try {
281
+ // Gracefully close the stream flushing any unsent data packets.
282
+ await this._protocol.close();
283
+ } catch (err: any) {
284
+ log.catch(err);
285
+ }
261
286
 
262
- try {
263
- // After the transport is closed streams are disconnected.
264
- await this._transport?.destroy();
265
- } catch (err: any) {
266
- log.catch(err);
287
+ try {
288
+ // After the transport is closed streams are disconnected.
289
+ await this._transport?.destroy();
290
+ } catch (err: any) {
291
+ log.catch(err);
292
+ }
267
293
  }
268
294
 
269
295
  log('closed', { peerId: this.ownId });
@@ -343,7 +369,7 @@ export class Connection {
343
369
  }
344
370
 
345
371
  private _changeState(state: ConnectionState): void {
346
- log('stateChanged', { from: this._state, too: state, peerId: this.ownId });
372
+ log('stateChanged', { from: this._state, to: state, peerId: this.ownId });
347
373
  invariant(state !== this._state, 'Already in this state.');
348
374
  this._state = state;
349
375
  this.stateChanged.emit(state);
package/src/swarm/peer.ts CHANGED
@@ -4,10 +4,10 @@
4
4
 
5
5
  import { Event, scheduleTask, synchronized } from '@dxos/async';
6
6
  import { Context } from '@dxos/context';
7
- import { CancelledError, SystemError } from '@dxos/errors';
8
7
  import { invariant } from '@dxos/invariant';
9
8
  import { PublicKey } from '@dxos/keys';
10
9
  import { log } from '@dxos/log';
10
+ import { CancelledError, SystemError, TimeoutError } from '@dxos/protocols';
11
11
  import { Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';
12
12
 
13
13
  import { OfferMessage, SignalMessage, SignalMessenger } from '../signal';
@@ -194,6 +194,9 @@ export class Peer {
194
194
  this._callbacks.onAccepted();
195
195
  } catch (err: any) {
196
196
  log('initiation error', { err, topic: this.topic, peerId: this.localPeerId, remoteId: this.id });
197
+ if (err instanceof TimeoutError) {
198
+ await connection.abort(err);
199
+ }
197
200
  // Calls `onStateChange` with CLOSED state.
198
201
  await this.closeConnection(err);
199
202
  throw err;
@@ -27,6 +27,7 @@ import {
27
27
  createLibDataChannelTransportFactory,
28
28
  TransportKind,
29
29
  } from '../transport';
30
+ import { TcpTransportFactory } from '../transport/tcp-transport';
30
31
  import { TestWireProtocol, type TestTeleportExtensionFactory } from './test-wire-protocol';
31
32
 
32
33
  // Signal server will be started by the setup script.
@@ -105,6 +106,9 @@ export class TestPeer {
105
106
  switch (transport) {
106
107
  case TransportKind.MEMORY:
107
108
  throw new Error('Memory transport not supported with signal server.');
109
+ case TransportKind.TCP:
110
+ transportFactory = TcpTransportFactory;
111
+ break;
108
112
  case TransportKind.SIMPLE_PEER:
109
113
  transportFactory = createSimplePeerTransportFactory();
110
114
  break;
@@ -146,7 +150,7 @@ export class TestPeer {
146
150
  throw new Error(`Unsupported transport: ${transport}`);
147
151
  }
148
152
  } else {
149
- if (transport !== TransportKind.MEMORY) {
153
+ if (transport !== TransportKind.MEMORY && transport !== TransportKind.TCP) {
150
154
  log.warn(`specified transport ${transport} but no signalling configured, using memory transport instead`);
151
155
  }
152
156
  log.info(`using ${transport} transport without signal server.`);
@@ -0,0 +1,67 @@
1
+ //
2
+ // Copyright 2021 DXOS.org
3
+ //
4
+
5
+ import { randomBytes } from 'crypto';
6
+
7
+ import { PublicKey } from '@dxos/keys';
8
+ import { test } from '@dxos/test';
9
+ import { range } from '@dxos/util';
10
+
11
+ import { TestBuilder } from '../testing';
12
+ import { FullyConnectedTopology } from '../topology';
13
+ import { TransportKind } from '../transport';
14
+ import { basicTestSuite } from './basic-test-suite';
15
+ import { exchangeMessages, joinSwarm, leaveSwarm, openAndCloseAfterTest } from './utils';
16
+
17
+ describe('Tcp transport', () => {
18
+ const testBuilder = new TestBuilder({
19
+ transport: TransportKind.TCP,
20
+ });
21
+
22
+ basicTestSuite(testBuilder);
23
+
24
+ test
25
+ .skip('load', async () => {
26
+ const NUM_PAIRS = 100;
27
+ const NUM_ROUNDS = 10_000;
28
+ const PACKET_SIZE = 1_000;
29
+
30
+ const pairs = await Promise.all(
31
+ range(NUM_PAIRS).map(async () => {
32
+ const peer1 = testBuilder.createPeer();
33
+ const peer2 = testBuilder.createPeer();
34
+ await openAndCloseAfterTest([peer1, peer2]);
35
+
36
+ const topic = PublicKey.random();
37
+ const [swarm1, swarm2] = await joinSwarm([peer1, peer2], topic, () => new FullyConnectedTopology());
38
+
39
+ return {
40
+ peer1,
41
+ peer2,
42
+ topic,
43
+ swarm1,
44
+ swarm2,
45
+ };
46
+ }),
47
+ );
48
+
49
+ const message = randomBytes(PACKET_SIZE / 2).toString('hex');
50
+
51
+ for (let i = 0; i < NUM_ROUNDS; i++) {
52
+ // console.log(`Round ${i}/${NUM_ROUNDS}`);
53
+ await Promise.all(
54
+ pairs.map(async ({ swarm1, swarm2 }) => {
55
+ await exchangeMessages(swarm1, swarm2, message);
56
+ }),
57
+ );
58
+ }
59
+
60
+ await Promise.all(
61
+ pairs.map(async ({ peer1, peer2, topic }) => {
62
+ await leaveSwarm([peer1, peer2], topic);
63
+ }),
64
+ );
65
+ })
66
+ .timeout(1_000_000);
67
+ });
@@ -11,6 +11,13 @@ import { ErrorStream } from '@dxos/debug';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { PublicKey } from '@dxos/keys';
13
13
  import { log } from '@dxos/log';
14
+ import {
15
+ ConnectionResetError,
16
+ TimeoutError,
17
+ ProtocolError,
18
+ ConnectivityError,
19
+ UnknownProtocolError,
20
+ } from '@dxos/protocols';
14
21
  import { ConnectionState, BridgeEvent, BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';
15
22
  import { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
16
23
  import { arrayToBuffer } from '@dxos/util';
@@ -78,7 +85,7 @@ export class SimplePeerTransportProxy implements Transport {
78
85
 
79
86
  private async _handleConnection(connectionEvent: BridgeEvent.ConnectionEvent): Promise<void> {
80
87
  if (connectionEvent.error) {
81
- this.errors.raise(new Error(connectionEvent.error));
88
+ this.errors.raise(decodeError(connectionEvent.error));
82
89
  }
83
90
 
84
91
  switch (connectionEvent.state) {
@@ -108,7 +115,7 @@ export class SimplePeerTransportProxy implements Transport {
108
115
  proxyId: this._proxyId,
109
116
  signal,
110
117
  })
111
- .catch((err) => this.errors.raise(err));
118
+ .catch((err) => this.errors.raise(decodeError(err)));
112
119
  }
113
120
 
114
121
  // TODO(burdon): Move open from constructor.
@@ -173,3 +180,22 @@ export class SimplePeerTransportProxyFactory implements TransportFactory {
173
180
  return transport;
174
181
  }
175
182
  }
183
+
184
+ // TODO(nf): fix so Errors crossing RPC boundary preserve class
185
+ const decodeError = (err: Error | string) => {
186
+ const message = typeof err === 'string' ? err : err.message;
187
+
188
+ if (message.includes('ConnectionResetError')) {
189
+ return new ConnectionResetError(message);
190
+ } else if (message.includes('TimeoutError')) {
191
+ return new TimeoutError(message);
192
+ } else if (message.includes('ProtocolError')) {
193
+ return new ProtocolError(message);
194
+ } else if (message.includes('ConnectivityError')) {
195
+ return new ConnectivityError(message);
196
+ } else if (message.includes('UnknownProtocolError')) {
197
+ return new UnknownProtocolError(message);
198
+ } else {
199
+ return typeof err === 'string' ? new Error(err) : err;
200
+ }
201
+ };
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-fallthrough */
1
2
  //
2
3
  // Copyright 2020 DXOS.org
3
4
  //
@@ -9,7 +10,7 @@ import { Event } from '@dxos/async';
9
10
  import { ErrorStream, raise } from '@dxos/debug';
10
11
  import { PublicKey } from '@dxos/keys';
11
12
  import { log } from '@dxos/log';
12
- import { trace } from '@dxos/protocols';
13
+ import { ConnectionResetError, ConnectivityError, ProtocolError, UnknownProtocolError, trace } from '@dxos/protocols';
13
14
  import { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
14
15
 
15
16
  import { Transport, TransportFactory } from './transport';
@@ -63,7 +64,40 @@ export class SimplePeerTransport implements Transport {
63
64
  });
64
65
 
65
66
  this._peer.on('error', async (err) => {
66
- this.errors.raise(err);
67
+ // https://developer.mozilla.org/en-US/docs/Web/API/RTCError
68
+ if (typeof RTCError !== 'undefined' && err instanceof RTCError) {
69
+ // Sent when connection is unexpectedly severed
70
+ if (err.errorDetail === 'sctp-failure') {
71
+ this.errors.raise(new ConnectionResetError('sctp-failure from RTCError', err));
72
+ } else {
73
+ this.errors.raise(new UnknownProtocolError('unknown RTCError', err));
74
+ }
75
+
76
+ // Safari specific? are all errors of code: "DATA_CHANNEL_ERROR" connection aborts?
77
+ } else if (err.name === 'InvalidStateError') {
78
+ this.errors.raise(new ConnectionResetError('safari WebRTC error', err));
79
+ // catch more generic simple-peer errors: https://github.com/feross/simple-peer/blob/master/README.md#error-codes
80
+ } else if ('code' in err) {
81
+ switch (err.code) {
82
+ case 'ERR_WEBRTC_SUPPORT':
83
+ this.errors.raise(new ProtocolError('WebRTC not supported', err));
84
+ case 'ERR_ICE_CONNECTION_FAILURE':
85
+ case 'ERR_DATA_CHANNEL':
86
+ case 'ERR_CONNECTION_FAILURE':
87
+ case 'ERR_SIGNALING':
88
+ this.errors.raise(new ConnectivityError('unknown communication failure', err));
89
+ case 'ERR_CREATE_OFFER':
90
+ case 'ERR_CREATE_ANSWER':
91
+ case 'ERR_SET_LOCAL_DESCRIPTION':
92
+ case 'ERR_SET_REMOTE_DESCRIPTION':
93
+ case 'ERR_ADD_ICE_CANDIDATE':
94
+ this.errors.raise(new UnknownProtocolError('unknown simple-peer library failure', err));
95
+ default:
96
+ this.errors.raise(new Error('unknown simple-peer error'));
97
+ }
98
+ } else {
99
+ this.errors.raise(err);
100
+ }
67
101
 
68
102
  // Try to gather additional information about the connection.
69
103
  try {
@@ -75,7 +109,9 @@ export class SimplePeerTransport implements Transport {
75
109
  });
76
110
  });
77
111
  }
78
- } catch {} // TODO(burdon): Ignored?
112
+ } catch (err) {
113
+ log.catch(err);
114
+ }
79
115
 
80
116
  await this.destroy();
81
117
  });