@libp2p/webrtc 2.0.11 → 3.0.0-72e81dc1
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.
- package/README.md +7 -2
- package/dist/index.min.js +18 -19
- package/dist/src/error.d.ts +2 -2
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +1 -1
- package/dist/src/error.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/maconn.d.ts +5 -4
- package/dist/src/maconn.d.ts.map +1 -1
- package/dist/src/maconn.js +8 -5
- package/dist/src/maconn.js.map +1 -1
- package/dist/src/muxer.d.ts +10 -5
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +6 -2
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/handler.d.ts +4 -3
- package/dist/src/private-to-private/handler.d.ts.map +1 -1
- package/dist/src/private-to-private/handler.js +104 -84
- package/dist/src/private-to-private/handler.js.map +1 -1
- package/dist/src/private-to-private/listener.d.ts +4 -3
- package/dist/src/private-to-private/listener.d.ts.map +1 -1
- package/dist/src/private-to-private/listener.js +1 -1
- package/dist/src/private-to-private/listener.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +6 -5
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +13 -6
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-private/util.d.ts.map +1 -1
- package/dist/src/private-to-private/util.js +1 -0
- package/dist/src/private-to-private/util.js.map +1 -1
- package/dist/src/private-to-public/options.d.ts +1 -1
- package/dist/src/private-to-public/sdp.js +1 -1
- package/dist/src/private-to-public/transport.d.ts +4 -4
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +99 -92
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/private-to-public/util.d.ts.map +1 -1
- package/dist/src/private-to-public/util.js.map +1 -1
- package/dist/src/stream.d.ts +34 -3
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +24 -14
- package/dist/src/stream.js.map +1 -1
- package/dist/src/webrtc/index.browser.d.ts +15 -0
- package/dist/src/webrtc/index.browser.d.ts.map +1 -0
- package/dist/src/webrtc/index.browser.js +5 -0
- package/dist/src/webrtc/index.browser.js.map +1 -0
- package/dist/src/webrtc/index.d.ts +8 -0
- package/dist/src/webrtc/index.d.ts.map +1 -0
- package/dist/src/webrtc/index.js +11 -0
- package/dist/src/webrtc/index.js.map +1 -0
- package/dist/src/webrtc/rtc-data-channel.d.ts +29 -0
- package/dist/src/webrtc/rtc-data-channel.d.ts.map +1 -0
- package/dist/src/webrtc/rtc-data-channel.js +115 -0
- package/dist/src/webrtc/rtc-data-channel.js.map +1 -0
- package/dist/src/webrtc/rtc-events.d.ts +9 -0
- package/dist/src/webrtc/rtc-events.d.ts.map +1 -0
- package/dist/src/webrtc/rtc-events.js +15 -0
- package/dist/src/webrtc/rtc-events.js.map +1 -0
- package/dist/src/webrtc/rtc-ice-candidate.d.ts +22 -0
- package/dist/src/webrtc/rtc-ice-candidate.d.ts.map +1 -0
- package/dist/src/webrtc/rtc-ice-candidate.js +47 -0
- package/dist/src/webrtc/rtc-ice-candidate.js.map +1 -0
- package/dist/src/webrtc/rtc-peer-connection.d.ts +47 -0
- package/dist/src/webrtc/rtc-peer-connection.d.ts.map +1 -0
- package/dist/src/webrtc/rtc-peer-connection.js +245 -0
- package/dist/src/webrtc/rtc-peer-connection.js.map +1 -0
- package/dist/src/webrtc/rtc-session-description.d.ts +10 -0
- package/dist/src/webrtc/rtc-session-description.d.ts.map +1 -0
- package/dist/src/webrtc/rtc-session-description.js +18 -0
- package/dist/src/webrtc/rtc-session-description.js.map +1 -0
- package/package.json +29 -121
- package/src/error.ts +2 -2
- package/src/index.ts +1 -1
- package/src/maconn.ts +13 -8
- package/src/muxer.ts +11 -5
- package/src/private-to-private/handler.ts +124 -103
- package/src/private-to-private/listener.ts +4 -3
- package/src/private-to-private/transport.ts +20 -12
- package/src/private-to-private/util.ts +1 -0
- package/src/private-to-public/options.ts +1 -1
- package/src/private-to-public/sdp.ts +1 -1
- package/src/private-to-public/transport.ts +113 -107
- package/src/private-to-public/util.ts +0 -1
- package/src/stream.ts +29 -16
- package/src/webrtc/index.browser.ts +4 -0
- package/src/webrtc/index.ts +12 -0
- package/src/webrtc/rtc-data-channel.ts +140 -0
- package/src/webrtc/rtc-events.ts +19 -0
- package/src/webrtc/rtc-ice-candidate.ts +50 -0
- package/src/webrtc/rtc-peer-connection.ts +306 -0
- package/src/webrtc/rtc-session-description.ts +19 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAgD,MAAM,EAAgD,MAAM,6BAA6B,CAAA;AAChJ,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAkB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAQlD,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAExC,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAClC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AAC9C,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AACpD,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAA;AAc5C,MAAM,OAAO,eAAe;IAIP;IACA;IAJX,QAAQ,GAAG,KAAK,CAAA;IAExB,YACmB,UAAqC,EACrC,OAA4B,EAAE;QAD9B,eAAU,GAAV,UAAU,CAA2B;QACrC,SAAI,GAAJ,IAAI,CAA0B;IAEjD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,IAAwB,EAAE,EAAE;YACtF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAClI,CAAC,EAAE;YACD,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC5D,OAAO,EAAE,CAAA;QACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;IACvB,CAAC;IAED,cAAc,CAAE,OAA8B;QAC5C,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAA;IAEvC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAExB,MAAM,CAAE,UAAuB;QAC7B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,EAAE,CAAA;YAC7B,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;MAME;IACF,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAoB;QAC7C,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;QAE1C,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;SACnC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACjF,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACrE,GAAG,OAAO;YACV,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QAEF,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAkB,CAAC;gBACnE,MAAM,EAAE,eAAe;gBACvB,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC5C,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBACzC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CACnD,IAAI,yBAAyB,CAAC;gBAC5B,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC9B,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;aAC9E,CAAC,EACF;gBACE,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,YAAY;aACb,CACF,CAAA;YAED,0DAA0D;YAC1D,MAAM,eAAe,CAAC,KAAK,EAAE,CAAA;YAC7B,OAAO,MAAM,CAAA;SACd;QAAC,OAAO,GAAQ,EAAE;YACjB,wCAAwC;YACxC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC1B,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,iCAAiC;YACjC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAsB;QAC3D,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,oBAAoB,CAAC;gBACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC5C,UAAU;gBACV,MAAM;gBACN,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;aAC1C,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC;gBAC1E,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC1C,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;aAC7F,CAAC,EAAE;gBACF,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,YAAY;aACb,CAAC,CAAA;SACH;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,iCAAiC;YACjC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAE,EAAa;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAA;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,MAAM,IAAI,SAAS,CAAC,8CAA8C,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACjG;IAED,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;QAC/C,MAAM,IAAI,SAAS,CAAC,mDAAmD,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACtG;IAED,yBAAyB;IACzB,IAAI,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7C,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,EAAE,CAAA;IACnD,IAAI,mBAAmB,IAAI,IAAI,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACpF;IAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAA;IACnD,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACnC,MAAM,IAAI,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACtE;IACD,IAAI,iBAAiB,CAAC,IAAI,KAAK,KAAK,EAAE;QACpC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,mBAAmB,EAAE,CAAC,CAAA;KACnE;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,CAAA;AAChF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAID,eAAO,MAAM,4BAA4B,qBAA4B,gBAAgB,IAAI,CAAC,MAAM,iBAAiB,UAAU,aAAa,KAAG,QAAQ,IAAI,CA4BtJ,CAAA;AAED,wBAAgB,kBAAkB,CAAE,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAgB/F"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { logger } from '@libp2p/logger';
|
|
2
2
|
import { isFirefox } from '../util.js';
|
|
3
|
+
import { RTCIceCandidate } from '../webrtc/index.js';
|
|
3
4
|
import { Message } from './pb/message.js';
|
|
4
5
|
const log = logger('libp2p:webrtc:peer:util');
|
|
5
6
|
export const readCandidatesUntilConnected = async (connectedPromise, pc, stream) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAQzC,MAAM,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,gBAAuC,EAAE,EAAqB,EAAE,MAAqB,EAAiB,EAAE;IACzJ,OAAO,IAAI,EAAE;QACX,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAChF,mCAAmC;QACnC,IAAI,UAAU,YAAY,MAAM,EAAE;YAChC,MAAM,OAAO,GAAG,UAAU,CAAA;YAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YACD,uCAAuC;YACvC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE;gBAC/C,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBACvC,MAAK;aACN;YAED,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACzD,IAAI;gBACF,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACxE;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;gBAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;aAC1C;SACF;aAAM;YACL,6BAA6B;YAC7B,MAAK;SACN;KACF;IACD,MAAM,gBAAgB,CAAC,OAAO,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAE,EAAqB,EAAE,OAA8B;IACvF,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;QAC/E,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAA;QACrE,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE;YAC9D,KAAK,WAAW;gBACd,OAAO,CAAC,OAAO,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,QAAQ,CAAC;YACd,KAAK,cAAc,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;gBACzD,MAAK;YACP;gBACE,MAAK;SACR;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAQzC,MAAM,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,gBAAuC,EAAE,EAAqB,EAAE,MAAqB,EAAiB,EAAE;IACzJ,OAAO,IAAI,EAAE;QACX,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAChF,mCAAmC;QACnC,IAAI,UAAU,YAAY,MAAM,EAAE;YAChC,MAAM,OAAO,GAAG,UAAU,CAAA;YAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YACD,uCAAuC;YACvC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE;gBAC/C,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBACvC,MAAK;aACN;YAED,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACzD,IAAI;gBACF,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACxE;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;gBAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;aAC1C;SACF;aAAM;YACL,6BAA6B;YAC7B,MAAK;SACN;KACF;IACD,MAAM,gBAAgB,CAAC,OAAO,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAE,EAAqB,EAAE,OAA8B;IACvF,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;QAC/E,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAA;QACrE,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE;YAC9D,KAAK,WAAW;gBACd,OAAO,CAAC,OAAO,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,QAAQ,CAAC;YACd,KAAK,cAAc,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;gBACzD,MAAK;YACP;gBACE,MAAK;SACR;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CreateListenerOptions, DialOptions } from '@libp2p/interface
|
|
1
|
+
import type { CreateListenerOptions, DialOptions } from '@libp2p/interface/transport';
|
|
2
2
|
export interface WebRTCListenerOptions extends CreateListenerOptions {
|
|
3
3
|
}
|
|
4
4
|
export interface WebRTCDialOptions extends DialOptions {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type CreateListenerOptions,
|
|
1
|
+
import { type CreateListenerOptions, symbol, type Transport, type Listener } from '@libp2p/interface/transport';
|
|
2
2
|
import type { WebRTCDialOptions } from './options.js';
|
|
3
3
|
import type { DataChannelOpts } from '../stream.js';
|
|
4
|
-
import type { Connection } from '@libp2p/interface
|
|
5
|
-
import type { CounterGroup, Metrics } from '@libp2p/interface
|
|
6
|
-
import type { PeerId } from '@libp2p/interface
|
|
4
|
+
import type { Connection } from '@libp2p/interface/connection';
|
|
5
|
+
import type { CounterGroup, Metrics } from '@libp2p/interface/metrics';
|
|
6
|
+
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
7
7
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
8
8
|
/**
|
|
9
9
|
* Created by converting the hexadecimal protocol code to an integer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAe/G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASxD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,MAAwC,CAAA;AAElE;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,MAAmC,CAAA;AAE/D;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CACvC;AAED,qBAAa,qBAAsB,YAAW,SAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;gBACnC,UAAU,EAAE,+BAA+B,EAAE,IAAI,GAAE,yBAA8B;IAa9F;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAM3E;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAIzD;;OAEG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAI7C;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA0B;IAEvD;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAO;IAExB;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6I/E;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAkB9B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { noise as Noise } from '@chainsafe/libp2p-noise';
|
|
2
|
-
import { symbol } from '@libp2p/interface
|
|
2
|
+
import { symbol } from '@libp2p/interface/transport';
|
|
3
3
|
import { logger } from '@libp2p/logger';
|
|
4
4
|
import * as p from '@libp2p/peer-id';
|
|
5
5
|
import { protocols } from '@multiformats/multiaddr';
|
|
@@ -11,6 +11,7 @@ import { WebRTCMultiaddrConnection } from '../maconn.js';
|
|
|
11
11
|
import { DataChannelMuxerFactory } from '../muxer.js';
|
|
12
12
|
import { createStream } from '../stream.js';
|
|
13
13
|
import { isFirefox } from '../util.js';
|
|
14
|
+
import { RTCPeerConnection } from '../webrtc/index.js';
|
|
14
15
|
import * as sdp from './sdp.js';
|
|
15
16
|
import { genUfrag } from './util.js';
|
|
16
17
|
const log = logger('libp2p:webrtc:transport');
|
|
@@ -96,99 +97,105 @@ export class WebRTCDirectTransport {
|
|
|
96
97
|
hash: sdp.toSupportedHashFunction(remoteCerthash.name)
|
|
97
98
|
});
|
|
98
99
|
const peerConnection = new RTCPeerConnection({ certificates: [certificate] });
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
for (const
|
|
153
|
-
|
|
100
|
+
try {
|
|
101
|
+
// create data channel for running the noise handshake. Once the data channel is opened,
|
|
102
|
+
// the remote will initiate the noise handshake. This is used to confirm the identity of
|
|
103
|
+
// the peer.
|
|
104
|
+
const dataChannelOpenPromise = new Promise((resolve, reject) => {
|
|
105
|
+
const handshakeDataChannel = peerConnection.createDataChannel('', { negotiated: true, id: 0 });
|
|
106
|
+
const handshakeTimeout = setTimeout(() => {
|
|
107
|
+
const error = `Data channel was never opened: state: ${handshakeDataChannel.readyState}`;
|
|
108
|
+
log.error(error);
|
|
109
|
+
this.metrics?.dialerEvents.increment({ open_error: true });
|
|
110
|
+
reject(dataChannelError('data', error));
|
|
111
|
+
}, HANDSHAKE_TIMEOUT_MS);
|
|
112
|
+
handshakeDataChannel.onopen = (_) => {
|
|
113
|
+
clearTimeout(handshakeTimeout);
|
|
114
|
+
resolve(handshakeDataChannel);
|
|
115
|
+
};
|
|
116
|
+
// ref: https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/error_event
|
|
117
|
+
handshakeDataChannel.onerror = (event) => {
|
|
118
|
+
clearTimeout(handshakeTimeout);
|
|
119
|
+
const errorTarget = event.target?.toString() ?? 'not specified';
|
|
120
|
+
const error = `Error opening a data channel for handshaking: ${errorTarget}`;
|
|
121
|
+
log.error(error);
|
|
122
|
+
// NOTE: We use unknown error here but this could potentially be considered a reset by some standards.
|
|
123
|
+
this.metrics?.dialerEvents.increment({ unknown_error: true });
|
|
124
|
+
reject(dataChannelError('data', error));
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
const ufrag = 'libp2p+webrtc+v1/' + genUfrag(32);
|
|
128
|
+
// Create offer and munge sdp with ufrag == pwd. This allows the remote to
|
|
129
|
+
// respond to STUN messages without performing an actual SDP exchange.
|
|
130
|
+
// This is because it can infer the passwd field by reading the USERNAME
|
|
131
|
+
// attribute of the STUN message.
|
|
132
|
+
const offerSdp = await peerConnection.createOffer();
|
|
133
|
+
const mungedOfferSdp = sdp.munge(offerSdp, ufrag);
|
|
134
|
+
await peerConnection.setLocalDescription(mungedOfferSdp);
|
|
135
|
+
// construct answer sdp from multiaddr and ufrag
|
|
136
|
+
const answerSdp = sdp.fromMultiAddr(ma, ufrag);
|
|
137
|
+
await peerConnection.setRemoteDescription(answerSdp);
|
|
138
|
+
// wait for peerconnection.onopen to fire, or for the datachannel to open
|
|
139
|
+
const handshakeDataChannel = await dataChannelOpenPromise;
|
|
140
|
+
const myPeerId = this.components.peerId;
|
|
141
|
+
// Do noise handshake.
|
|
142
|
+
// Set the Noise Prologue to libp2p-webrtc-noise:<FINGERPRINTS> before starting the actual Noise handshake.
|
|
143
|
+
// <FINGERPRINTS> is the concatenation of the of the two TLS fingerprints of A and B in their multihash byte representation, sorted in ascending order.
|
|
144
|
+
const fingerprintsPrologue = this.generateNoisePrologue(peerConnection, remoteCerthash.code, ma);
|
|
145
|
+
// Since we use the default crypto interface and do not use a static key or early data,
|
|
146
|
+
// we pass in undefined for these parameters.
|
|
147
|
+
const noise = Noise({ prologueBytes: fingerprintsPrologue })();
|
|
148
|
+
const wrappedChannel = createStream({ channel: handshakeDataChannel, direction: 'inbound', dataChannelOptions: this.init.dataChannel });
|
|
149
|
+
const wrappedDuplex = {
|
|
150
|
+
...wrappedChannel,
|
|
151
|
+
sink: wrappedChannel.sink.bind(wrappedChannel),
|
|
152
|
+
source: (async function* () {
|
|
153
|
+
for await (const list of wrappedChannel.source) {
|
|
154
|
+
for (const buf of list) {
|
|
155
|
+
yield buf;
|
|
156
|
+
}
|
|
154
157
|
}
|
|
158
|
+
}())
|
|
159
|
+
};
|
|
160
|
+
// Creating the connection before completion of the noise
|
|
161
|
+
// handshake ensures that the stream opening callback is set up
|
|
162
|
+
const maConn = new WebRTCMultiaddrConnection({
|
|
163
|
+
peerConnection,
|
|
164
|
+
remoteAddr: ma,
|
|
165
|
+
timeline: {
|
|
166
|
+
open: Date.now()
|
|
167
|
+
},
|
|
168
|
+
metrics: this.metrics?.dialerEvents
|
|
169
|
+
});
|
|
170
|
+
const eventListeningName = isFirefox ? 'iceconnectionstatechange' : 'connectionstatechange';
|
|
171
|
+
peerConnection.addEventListener(eventListeningName, () => {
|
|
172
|
+
switch (peerConnection.connectionState) {
|
|
173
|
+
case 'failed':
|
|
174
|
+
case 'disconnected':
|
|
175
|
+
case 'closed':
|
|
176
|
+
maConn.close().catch((err) => {
|
|
177
|
+
log.error('error closing connection', err);
|
|
178
|
+
}).finally(() => {
|
|
179
|
+
// Remove the event listener once the connection is closed
|
|
180
|
+
controller.abort();
|
|
181
|
+
});
|
|
182
|
+
break;
|
|
183
|
+
default:
|
|
184
|
+
break;
|
|
155
185
|
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
peerConnection.addEventListener(eventListeningName, () => {
|
|
170
|
-
switch (peerConnection.connectionState) {
|
|
171
|
-
case 'failed':
|
|
172
|
-
case 'disconnected':
|
|
173
|
-
case 'closed':
|
|
174
|
-
maConn.close().catch((err) => {
|
|
175
|
-
log.error('error closing connection', err);
|
|
176
|
-
}).finally(() => {
|
|
177
|
-
// Remove the event listener once the connection is closed
|
|
178
|
-
controller.abort();
|
|
179
|
-
});
|
|
180
|
-
break;
|
|
181
|
-
default:
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
}, { signal });
|
|
185
|
-
// Track opened peer connection
|
|
186
|
-
this.metrics?.dialerEvents.increment({ peer_connection: true });
|
|
187
|
-
const muxerFactory = new DataChannelMuxerFactory({ peerConnection, metrics: this.metrics?.dialerEvents, dataChannelOptions: this.init.dataChannel });
|
|
188
|
-
// For outbound connections, the remote is expected to start the noise handshake.
|
|
189
|
-
// Therefore, we need to secure an inbound noise connection from the remote.
|
|
190
|
-
await noise.secureInbound(myPeerId, wrappedDuplex, theirPeerId);
|
|
191
|
-
return options.upgrader.upgradeOutbound(maConn, { skipProtection: true, skipEncryption: true, muxerFactory });
|
|
186
|
+
}, { signal });
|
|
187
|
+
// Track opened peer connection
|
|
188
|
+
this.metrics?.dialerEvents.increment({ peer_connection: true });
|
|
189
|
+
const muxerFactory = new DataChannelMuxerFactory({ peerConnection, metrics: this.metrics?.dialerEvents, dataChannelOptions: this.init.dataChannel });
|
|
190
|
+
// For outbound connections, the remote is expected to start the noise handshake.
|
|
191
|
+
// Therefore, we need to secure an inbound noise connection from the remote.
|
|
192
|
+
await noise.secureInbound(myPeerId, wrappedDuplex, theirPeerId);
|
|
193
|
+
return await options.upgrader.upgradeOutbound(maConn, { skipProtection: true, skipEncryption: true, muxerFactory });
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
peerConnection.close();
|
|
197
|
+
throw err;
|
|
198
|
+
}
|
|
192
199
|
}
|
|
193
200
|
/**
|
|
194
201
|
* Generate a noise prologue from the peer connection's certificate.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/util.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,MAAoG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-public/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-public/util.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;AAC9F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA"}
|
package/dist/src/stream.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type AbstractStreamInit } from '@libp2p/interface
|
|
2
|
-
import
|
|
1
|
+
import { AbstractStream, type AbstractStreamInit } from '@libp2p/interface/stream-muxer/stream';
|
|
2
|
+
import { Uint8ArrayList } from 'uint8arraylist';
|
|
3
|
+
import type { Direction } from '@libp2p/interface/connection';
|
|
3
4
|
export interface DataChannelOpts {
|
|
4
5
|
maxMessageSize: number;
|
|
5
6
|
maxBufferedAmount: number;
|
|
@@ -14,6 +15,36 @@ export interface WebRTCStreamInit extends AbstractStreamInit {
|
|
|
14
15
|
*/
|
|
15
16
|
channel: RTCDataChannel;
|
|
16
17
|
dataChannelOptions?: Partial<DataChannelOpts>;
|
|
18
|
+
maxDataSize: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class WebRTCStream extends AbstractStream {
|
|
21
|
+
/**
|
|
22
|
+
* The data channel used to send and receive data
|
|
23
|
+
*/
|
|
24
|
+
private readonly channel;
|
|
25
|
+
/**
|
|
26
|
+
* Data channel options
|
|
27
|
+
*/
|
|
28
|
+
private readonly dataChannelOptions;
|
|
29
|
+
/**
|
|
30
|
+
* push data from the underlying datachannel to the length prefix decoder
|
|
31
|
+
* and then the protobuf decoder.
|
|
32
|
+
*/
|
|
33
|
+
private readonly incomingData;
|
|
34
|
+
private messageQueue?;
|
|
35
|
+
private readonly maxDataSize;
|
|
36
|
+
constructor(init: WebRTCStreamInit);
|
|
37
|
+
sendNewStream(): void;
|
|
38
|
+
_sendMessage(data: Uint8ArrayList, checkBuffer?: boolean): Promise<void>;
|
|
39
|
+
sendData(data: Uint8ArrayList): Promise<void>;
|
|
40
|
+
sendReset(): Promise<void>;
|
|
41
|
+
sendCloseWrite(): Promise<void>;
|
|
42
|
+
sendCloseRead(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Handle incoming
|
|
45
|
+
*/
|
|
46
|
+
private processIncomingProtobuf;
|
|
47
|
+
private _sendFlag;
|
|
17
48
|
}
|
|
18
49
|
export interface WebRTCStreamOptions {
|
|
19
50
|
/**
|
|
@@ -31,5 +62,5 @@ export interface WebRTCStreamOptions {
|
|
|
31
62
|
maxMsgSize?: number;
|
|
32
63
|
onEnd?: (err?: Error | undefined) => void;
|
|
33
64
|
}
|
|
34
|
-
export declare function createStream(options: WebRTCStreamOptions):
|
|
65
|
+
export declare function createStream(options: WebRTCStreamOptions): WebRTCStream;
|
|
35
66
|
//# sourceMappingURL=stream.d.ts.map
|
package/dist/src/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAK/F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,6BAA6B,EAAE,MAAM,CAAA;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAE7C,WAAW,EAAE,MAAM,CAAA;CACpB;AAcD,qBAAa,YAAa,SAAQ,cAAc;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;IAEpD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;gBAEvB,IAAI,EAAE,gBAAgB;IAuFnC,aAAa,IAAK,IAAI;IAIhB,YAAY,CAAE,IAAI,EAAE,cAAc,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC/E,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;IAI3B,cAAc,IAAK,OAAO,CAAC,IAAI,CAAC;IAIhC,aAAa,IAAK,OAAO,CAAC,IAAI,CAAC;IAIrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;YAwBjB,SAAS;CAOxB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAE7C,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAA;CAC1C;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAYxE"}
|
package/dist/src/stream.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
+
import { AbstractStream } from '@libp2p/interface/stream-muxer/stream';
|
|
3
3
|
import { logger } from '@libp2p/logger';
|
|
4
4
|
import * as lengthPrefixed from 'it-length-prefixed';
|
|
5
5
|
import { pushable } from 'it-pushable';
|
|
@@ -15,7 +15,7 @@ const MAX_BUFFERED_AMOUNT = 16 * 1024 * 1024;
|
|
|
15
15
|
const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;
|
|
16
16
|
// protobuf field definition overhead
|
|
17
17
|
const PROTOBUF_OVERHEAD = 3;
|
|
18
|
-
class WebRTCStream extends AbstractStream {
|
|
18
|
+
export class WebRTCStream extends AbstractStream {
|
|
19
19
|
/**
|
|
20
20
|
* The data channel used to send and receive data
|
|
21
21
|
*/
|
|
@@ -30,6 +30,7 @@ class WebRTCStream extends AbstractStream {
|
|
|
30
30
|
*/
|
|
31
31
|
incomingData;
|
|
32
32
|
messageQueue;
|
|
33
|
+
maxDataSize;
|
|
33
34
|
constructor(init) {
|
|
34
35
|
super(init);
|
|
35
36
|
this.channel = init.channel;
|
|
@@ -41,14 +42,15 @@ class WebRTCStream extends AbstractStream {
|
|
|
41
42
|
maxBufferedAmount: init.dataChannelOptions?.maxBufferedAmount ?? MAX_BUFFERED_AMOUNT,
|
|
42
43
|
maxMessageSize: init.dataChannelOptions?.maxMessageSize ?? MAX_MESSAGE_SIZE
|
|
43
44
|
};
|
|
45
|
+
this.maxDataSize = init.maxDataSize;
|
|
44
46
|
// set up initial state
|
|
45
47
|
switch (this.channel.readyState) {
|
|
46
48
|
case 'open':
|
|
47
49
|
break;
|
|
48
50
|
case 'closed':
|
|
49
51
|
case 'closing':
|
|
50
|
-
if (this.
|
|
51
|
-
this.
|
|
52
|
+
if (this.timeline.close === undefined || this.timeline.close === 0) {
|
|
53
|
+
this.timeline.close = Date.now();
|
|
52
54
|
}
|
|
53
55
|
break;
|
|
54
56
|
case 'connecting':
|
|
@@ -60,7 +62,7 @@ class WebRTCStream extends AbstractStream {
|
|
|
60
62
|
}
|
|
61
63
|
// handle RTCDataChannel events
|
|
62
64
|
this.channel.onopen = (_evt) => {
|
|
63
|
-
this.
|
|
65
|
+
this.timeline.open = new Date().getTime();
|
|
64
66
|
if (this.messageQueue != null) {
|
|
65
67
|
// send any queued messages
|
|
66
68
|
this._sendMessage(this.messageQueue)
|
|
@@ -71,7 +73,9 @@ class WebRTCStream extends AbstractStream {
|
|
|
71
73
|
}
|
|
72
74
|
};
|
|
73
75
|
this.channel.onclose = (_evt) => {
|
|
74
|
-
this.close()
|
|
76
|
+
void this.close().catch(err => {
|
|
77
|
+
log.error('error closing stream after channel closed', err);
|
|
78
|
+
});
|
|
75
79
|
};
|
|
76
80
|
this.channel.onerror = (evt) => {
|
|
77
81
|
const err = evt.error;
|
|
@@ -109,7 +113,6 @@ class WebRTCStream extends AbstractStream {
|
|
|
109
113
|
}
|
|
110
114
|
catch (err) {
|
|
111
115
|
if (err instanceof TimeoutError) {
|
|
112
|
-
this.abort(err);
|
|
113
116
|
throw new Error('Timed out waiting for DataChannel buffer to clear');
|
|
114
117
|
}
|
|
115
118
|
throw err;
|
|
@@ -137,9 +140,15 @@ class WebRTCStream extends AbstractStream {
|
|
|
137
140
|
}
|
|
138
141
|
}
|
|
139
142
|
async sendData(data) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
+
data = data.sublist();
|
|
144
|
+
while (data.byteLength > 0) {
|
|
145
|
+
const toSend = Math.min(data.byteLength, this.maxDataSize);
|
|
146
|
+
const buf = data.subarray(0, toSend);
|
|
147
|
+
const msgbuf = Message.encode({ message: buf });
|
|
148
|
+
const sendbuf = lengthPrefixed.encode.single(msgbuf);
|
|
149
|
+
await this._sendMessage(sendbuf);
|
|
150
|
+
data.consume(toSend);
|
|
151
|
+
}
|
|
143
152
|
}
|
|
144
153
|
async sendReset() {
|
|
145
154
|
await this._sendFlag(Message.Flag.RESET);
|
|
@@ -159,7 +168,7 @@ class WebRTCStream extends AbstractStream {
|
|
|
159
168
|
if (message.flag === Message.Flag.FIN) {
|
|
160
169
|
// We should expect no more data from the remote, stop reading
|
|
161
170
|
this.incomingData.end();
|
|
162
|
-
this.
|
|
171
|
+
this.remoteCloseWrite();
|
|
163
172
|
}
|
|
164
173
|
if (message.flag === Message.Flag.RESET) {
|
|
165
174
|
// Stop reading and writing to the stream immediately
|
|
@@ -167,7 +176,7 @@ class WebRTCStream extends AbstractStream {
|
|
|
167
176
|
}
|
|
168
177
|
if (message.flag === Message.Flag.STOP_SENDING) {
|
|
169
178
|
// The remote has stopped reading
|
|
170
|
-
this.
|
|
179
|
+
this.remoteCloseRead();
|
|
171
180
|
}
|
|
172
181
|
}
|
|
173
182
|
return message.message;
|
|
@@ -187,7 +196,8 @@ export function createStream(options) {
|
|
|
187
196
|
maxDataSize: (dataChannelOptions?.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD,
|
|
188
197
|
dataChannelOptions,
|
|
189
198
|
onEnd,
|
|
190
|
-
channel
|
|
199
|
+
channel,
|
|
200
|
+
log: logger(`libp2p:mplex:stream:${direction}:${channel.id}`)
|
|
191
201
|
});
|
|
192
202
|
}
|
|
193
203
|
//# sourceMappingURL=stream.js.map
|
package/dist/src/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,cAAc,EAA2B,MAAM,uCAAuC,CAAA;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAiB,QAAQ,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGzC,MAAM,GAAG,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAsB1C,uDAAuD;AACvD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAElC,sDAAsD;AACtD,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAE5C,wEAAwE;AACxE,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAA;AAE7C,qCAAqC;AACrC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C;;OAEG;IACc,OAAO,CAAgB;IAExC;;OAEG;IACc,kBAAkB,CAAiB;IAEpD;;;OAGG;IACc,YAAY,CAAsB;IAE3C,YAAY,CAAiB;IACpB,WAAW,CAAQ;IAEpC,YAAa,IAAsB;QACjC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAA;QACvC,IAAI,CAAC,YAAY,GAAG,QAAQ,EAAE,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,cAAc,EAAE,CAAA;QACxC,IAAI,CAAC,kBAAkB,GAAG;YACxB,6BAA6B,EAAE,IAAI,CAAC,kBAAkB,EAAE,6BAA6B,IAAI,2BAA2B;YACpH,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,IAAI,mBAAmB;YACpF,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,IAAI,gBAAgB;SAC5E,CAAA;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAEnC,uBAAuB;QACvB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC/B,KAAK,MAAM;gBACT,MAAK;YAEP,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS;gBACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE;oBAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;iBACjC;gBACD,MAAK;YACP,KAAK,YAAY;gBACf,OAAO;gBACP,MAAK;YAEP;gBACE,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;gBAClE,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAA;SACxE;QAED,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;YAEzC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;gBAC7B,2BAA2B;gBAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;qBACjC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACjB,CAAC,CAAC,CAAA;gBACJ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;aAC9B;QACH,CAAC,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE;YAC9B,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC5B,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAI,GAAqB,CAAC,KAAK,CAAA;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,MAAM,IAAI,GAAG,IAAI,CAAA;QAEjB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,KAAgC,EAAE,EAAE;YAClE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;YAEtB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;gBAC1C,OAAM;aACP;YAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAClE,CAAC,CAAA;QAED,uEAAuE;QACvE,kEAAkE;QAClE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAE5D,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;iBAC7C;aACF;QACH,CAAC,CAAC;aACC,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,GAAG,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;IACN,CAAC;IAED,aAAa;QACX,6DAA6D;IAC/D,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,IAAoB,EAAE,cAAuB,IAAI;QACnE,IAAI,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;YAC1F,IAAI;gBACF,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,CAAC,CAAA;aACpH;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAI,GAAG,YAAY,YAAY,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;iBACrE;gBAED,MAAM,GAAG,CAAA;aACV;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE;YACjF,MAAM,IAAI,SAAS,CAAC,+CAA+C,EAAE,mBAAmB,CAAC,CAAA;SAC1F;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE;YACtC,oCAAoC;YACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACvB;SACF;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,YAAY,EAAE;YACnD,qCAAqC;YACrC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;gBAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,cAAc,EAAE,CAAA;aACzC;YAED,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;SAC/B;aAAM;YACL,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAClE,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAA;SACtE;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,IAAoB;QAClC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAErB,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;YAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAEhC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SACrB;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAE,MAAkB;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAEtC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;gBACrC,8DAA8D;gBAC9D,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;gBACvB,IAAI,CAAC,gBAAgB,EAAE,CAAA;aACxB;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;gBACvC,qDAAqD;gBACrD,IAAI,CAAC,KAAK,EAAE,CAAA;aACb;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC9C,iCAAiC;gBACjC,IAAI,CAAC,eAAe,EAAE,CAAA;aACvB;SACF;QAED,OAAO,OAAO,CAAC,OAAO,CAAA;IACxB,CAAC;IAEO,KAAK,CAAC,SAAS,CAAE,IAAkB;QACzC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QACvC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAExD,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAC7C,CAAC;CACF;AAuBD,MAAM,UAAU,YAAY,CAAE,OAA4B;IACxD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAA;IAEjE,OAAO,IAAI,YAAY,CAAC;QACtB,EAAE,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE;QACnE,SAAS;QACT,WAAW,EAAE,CAAC,kBAAkB,EAAE,cAAc,IAAI,gBAAgB,CAAC,GAAG,iBAAiB;QACzF,kBAAkB;QAClB,KAAK;QACL,OAAO;QACP,GAAG,EAAE,MAAM,CAAC,uBAAuB,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;KAC9D,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const RTCPeerConnection: {
|
|
2
|
+
new (configuration?: RTCConfiguration | undefined): RTCPeerConnection;
|
|
3
|
+
prototype: RTCPeerConnection;
|
|
4
|
+
generateCertificate(keygenAlgorithm: AlgorithmIdentifier): Promise<RTCCertificate>;
|
|
5
|
+
};
|
|
6
|
+
export declare const RTCSessionDescription: {
|
|
7
|
+
new (descriptionInitDict: RTCSessionDescriptionInit): RTCSessionDescription;
|
|
8
|
+
prototype: RTCSessionDescription;
|
|
9
|
+
};
|
|
10
|
+
export declare const RTCIceCandidate: {
|
|
11
|
+
new (candidateInitDict?: RTCIceCandidateInit | undefined): RTCIceCandidate;
|
|
12
|
+
prototype: RTCIceCandidate;
|
|
13
|
+
};
|
|
14
|
+
export declare function cleanup(): void;
|
|
15
|
+
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../../src/webrtc/index.browser.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;CAA+B,CAAA;AAC7D,eAAO,MAAM,qBAAqB;;;CAAmC,CAAA;AACrE,eAAO,MAAM,eAAe;;;CAA6B,CAAA;AACzD,wBAAgB,OAAO,IAAK,IAAI,CAAG"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const RTCPeerConnection = globalThis.RTCPeerConnection;
|
|
2
|
+
export const RTCSessionDescription = globalThis.RTCSessionDescription;
|
|
3
|
+
export const RTCIceCandidate = globalThis.RTCIceCandidate;
|
|
4
|
+
export function cleanup() { }
|
|
5
|
+
//# sourceMappingURL=index.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../../src/webrtc/index.browser.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAA;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,qBAAqB,CAAA;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAA;AACzD,MAAM,UAAU,OAAO,KAAW,CAAC"}
|