Files
AR-Menu/AR Menu/Needle/MenuScene/node_modules/peerjs/dist/bundler.cjs.map
2025-11-30 08:35:03 +02:00

1 line
136 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"mappings":"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I,4B,G,a,U,M,I,S,C,E,C,E;I,I,C,G,O,M,K,U,I,C,C,M,C,Q,C,A;I,I,C,C,E,O,C,C;I,I,C,G,C,C,I,C,C,C,E,C,E,E,G,E,E,C,A;I,I;Q,M,A,C,C,K,K,C,I,C,E,G,C,C,I,C,A,C,C,G,C,C,I,E,C,C,I,C,E,C,I,C,C,C,K,C,C;K,C,O,K,E;Q,C,G;Y,K,E,K;S,C;K,Q;Q,I;Y,I,C,I,C,C,C,I,I,C,C,G,C,C,Q,C,C,A,E,C,C,I,C,C,C,C;S,Q;Y,I,C,E,M,C,C,K,C;S;K;I,O,E,C;C,A;A,I,mC,G,a,U,a,I,S,E,E,I,E,I,E;I,I,I,I,S,C,M,K,C,E;Q,I,I,C,G,C,E,C,G,I,C,M,E,E,E,C,G,C,E,C,E,C,I,E,I,C,C,C,I,I,C,A,E;Y,I,C,E,E,E,G,K,C,S,C,K,C,I,C,I,E,C,E,C,C,C;Y,E,C,C,C,G,I,C,C,C,C;S;K;I,O,E,C,M,C,E,I,K,C,S,C,K,C,I,C,I,C,C,C;C,A;AIAA,IAAM,gCAAU,GAAG,UAAU,AAAC;AAS9B,IAAY,yCAKX,AALD;AAAA,CAAA,SAAY,yCAAQ,EAApB;IACC,yCAAA,CAAA,yCAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;IACR,yCAAA,CAAA,yCAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;IACN,yCAAA,CAAA,yCAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;IACR,yCAAA,CAAA,yCAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;CACH,CAAA,CALW,yCAAQ,IAAR,CAAA,yCAAQ,GAAA,EAAA,CAAA,AAAA,CAAA,CAKnB;AAED,IAAA,4BAAA,GAAA,aAAA,CAAA,WAAA;IAAA,SAAA,MAAA,GAAA;QACS,IAAA,CAAA,SAAS,GAAG,yCAAQ,CAAC,QAAQ,CAAC;KAiDtC;IA/CA,MAAA,CAAA,cAAA,CAAI,MAAA,CAAA,SAAA,EAAA,UAAQ,EAAZ;QAAA,GAAA,EAAA,WAAA;YACC,OAAO,IAAI,CAAC,SAAS,CAAC;SACtB;QAED,GAAA,EAAA,SA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AAmB,CAAA;IACnB,yCAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;IAC7B,yCAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,yCAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;CACf,CAAA,CALW,yCAAe,IAAf,CAAA,yCAAe,GAAA,EAAA,CAAA,AAAA,CAAA,CAK1B;AAED,IAAY,yCAWX,AAXD;AAAA,CAAA,SAAY,yCAAiB,EAA7B;IACC,yCAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;IACvB,yCAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;IACvB,yCAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,yCAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;IACjB,yCAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;IACb,yCAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,yCAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;IACpB,yCAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;IAC1B,yCAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;IACf,yCAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;CACjB,CAAA,CAXW,yCAAiB,IAAjB,CAAA,yCAAiB,GAAA,EAAA,CAAA,AAAA,CAAA,CAW5B;;;;AC5CD,yBAAc,GAAG,IAAI,CAAC,KAAK,CAAC,+/KAA6/K,CAAC,CAAC;;;A,I,+B,G,a,U,S,I,A,W;I,I,a,G,S,E,E,E,E;Q,a,G,M,C,c,I,C;Y,S,E,E;S,C,Y,K,I,S,C,E,C,E;Y,C,C,S,G,C,C;S,I,S,C,E,C,E;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S,C;Q,O,a,C,E,E,E,C,C;K,A;I,O,S,C,E,C,E;Q,I,O,C,K,U,I,C,K,I,E,M,I,S,C,sB,G,M,C,C,C,G,+B,C,C;Q,a,C,C,E,C,C,C;Q,S,E,G;Y,I,C,W,G,C,C;S;Q,C,C,S,G,C,K,I,G,M,C,M,C,C,C,G,C,E,C,S,G,C,C,S,E,I,E,E,C,A,C;K,C;C,E,A;A,I,4B,G,a,U,M,I,S,C,E,C,E;I,I,C,G,O,M,K,U,I,C,C,M,C,Q,C,A;I,I,C,C,E,O,C,C;I,I,C,G,C,C,I,C,C,C,E,C,E,E,G,E,E,C,A;I,I;Q,M,A,C,C,K,K,C,I,C,E,G,C,C,I,C,A,C,C,G,C,C,I,E,C,C,I,C,E,C,I,C,C,C,K,C,C;K,C,O,K,E;Q,C,G;Y,K,E,K;S,C;K,Q;Q,I;Y,I,C,I,C,C,C,I,I,C,C,G,C,C,Q,C,C,A,E,C,C,I,C,C,C,C;S,Q;Y,I,C,E,M,C,C,K,C;S;K;I,O,E,C;C,A;A,I,mC,G,a,U,a,I,S,E,E,I,E,I,E;I,I,I,I,S,C,M,K,C,E;Q,I,I,C,G,C,E,C,G,I,C,M,E,E,E,C,G,C,E,C,E,C,I,E,I,C,C,C,I,I,C,A,E;Y,I,C,E,E,E,G,K,C,S,C,K,C,I,C,I,E,C,E,C,C,C;Y,E,C,C,C,G,I,C,C,C,C;S;K;I,O,E,C,M,C,E,I,K,C,S,C,K,C,I,C,I,C,C,C;C,A;A,I,8B,G,a,U,Q,I,S,C,E;I,I,C,G,O,M,K,U,I,M,C,Q,E,C,G,C,I,C,C,C,C,E,C,G,C,A;I,I,C,E,O,C,C,I,C,C,C,C;I,I,C,I,O,C,C,M,K,Q,E,O;Q,I,E,W;Y,I,C,I,C,I,C,C,M,E,C,G,K,C,C;Y,O;gB,K,E,C,I,C,C,C,E,C;gB,I,E,C,C;a,C;S;K,C;I,M,I,S,C,C,G,yB,G,iC,C,C;C,A;AFK3hL;;;GAGG,CACH,IAAA,yCAAA,GAAA,aAAA,CAAA,SAAA,MAAA,EAAA;IAA4B,+BAAA,CAAA,yCAAA,EAAA,MAAA,CAAA,CAAY;IAQvC,SAAA,yCAAA,CACC,MAAW,EACX,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,GAAW,EACM,YAA2B,EAN7C;QAMkB,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,YAAA,GAAA,IAA2B,CAA3B;QANlB,IAAA,KAAA,GAQC,MAAA,CAAA,IAAA,CAAA,IAAA,CAAO,IAAA,IAAA,AAKP;QAPiB,KAAA,CAAA,YAAY,GAAZ,YAAY,CAAe;QAbrC,KAAA,CAAA,aAAa,GAAY,IAAI,CAAC;QAE9B,KAAA,CAAA,cAAc,GAAkB,EAAE,CAAC;QAe1C,IAAM,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CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SACzB;QAED,YAAY,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;KACjC,CAAD;IACD,OAAA,yCAAC,CAAD;CAAC,CAlK2B,iCAAY,CAAA,AAAA,AAkKvC;;;;;;A;;;;;A;;;A,I,8B,G,a,U,Q,I,W;I,8B,G,M,C,M,I,S,C,E;Q,I,I,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,E,C;Y,C,G,S,C,C,C,C;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S;Q,O,C,C;K,C;I,O,8B,C,K,C,I,E,S,C,C;C,A;A,I,+B,G,a,U,S,I,S,O,E,U,E,C,E,S,E;I,S,K,C,K,E;Q,O,K,Y,C,G,K,G,I,C,C,S,O,E;Y,O,C,K,C,C;S,C,C;K;I,O,I,C,C,I,C,C,G,O,C,A,C,C,S,O,E,M,E;Q,S,S,C,K,E;Y,I;gB,I,C,S,C,I,C,K,C,C,C;a,C,O,C,E;gB,M,C,C,C,C;a;S;Q,S,Q,C,K,E;Y,I;gB,I,C,S,C,O,C,C,K,C,C,C;a,C,O,C,E;gB,M,C,C,C,C;a;S;Q,S,I,C,M,E;Y,M,C,I,G,O,C,M,C,K,C,G,K,C,M,C,K,C,C,I,C,S,E,Q,C,C;S;Q,I,C,A,C,S,G,S,C,K,C,O,E,U,I,E,C,C,C,I,E,C,C;K,C,C;C,A;A,I,iC,G,a,U,W,I,S,O,E,I,E;I,I,C,G;Q,K,E,C;Q,I,E,W;Y,I,C,C,C,C,G,C,E,M,C,C,C,C,C;Y,O,C,C,C,C,C;S;Q,I,E,E;Q,G,E,E;K,E,C,E,C,E,C,E,C,A;I,O,C,G;Q,I,E,I,C,C,C;Q,O,E,I,C,C,C;Q,Q,E,I,C,C,C;K,E,O,M,K,U,I,C,C,C,M,C,Q,C,G,W;Q,O,I,C;K,C,A,E,C,C;I,S,I,C,C,E;Q,O,S,C,E;Y,O,I,C;gB,C;gB,C;a,C,C;S,C;K;I,S,I,C,E,E;Q,I,C,E,M,I,S,C,iC,C,C;Q,M,C,C,I;Y,I,C,G,C,E,C,I,C,C,G,E,C,C,C,G,C,G,C,C,Q,C,G,E,C,C,C,G,C,C,O,C,I,C,A,C,C,G,C,C,Q,C,C,I,C,C,I,C,C,C,E,C,C,A,G,C,C,I,C,I,C,A,C,C,G,C,C,I,C,C,E,E,C,C,C,C,C,C,I,E,O,C,C;Y,I,C,G,C,E,C,E,E,G;gB,E,C,C,C,G,C;gB,C,C,K;a,C;Y,O,E,C,C,C;gB,K,C,C;gB,K,C;oB,C,G,E,C;oB,M;gB,K,C;oB,C,C,K,E,C;oB,O;wB,K,E,E,C,C,C;wB,I,E,K;qB,C;gB,K,C;oB,C,C,K,E,C;oB,C,G,E,C,C,C,C;oB,E,G;A,yB;qB,C;oB,S;gB,K,C;oB,E,G,C,C,G,C,G,E,C;oB,C,C,I,C,G,E,C;oB,S;gB;oB,I,C,C,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,C,C,A,I,C,E,C,C,C,K,C,I,E,C,C,C,K,C,C,A,E;wB,C,G,C,C;wB,S;qB;oB,I,E,C,C,C,K,C,I,C,C,C,I,E,C,C,C,G,C,C,C,C,I,E,C,C,C,G,C,C,C,C,A,C,A,E;wB,C,C,K,G,E,C,C,C,C;wB,M;qB;oB,I,E,C,C,C,K,C,I,C,C,K,G,C,C,C,C,E;wB,C,C,K,G,C,C,C,C,C;wB,C,G,E,C;wB,M;qB;oB,I,C,I,C,C,K,G,C,C,C,C,E;wB,C,C,K,G,C,C,C,C,C;wB,C,C,G,C,I,C,E,C,C;wB,M;qB;oB,I,C,C,C,C,E,C,C,G,C,G,E,C;oB,C,C,I,C,G,E,C;oB,S;a;Y,E,G,I,C,I,C,O,E,C,C,C;S,C,O,C,E;Y,E,G;A,iB;gB,C;a,C;Y,C,G,C,C;S,Q;Y,C,G,C,G,C,C;S;Q,I,E,C,C,C,G,C,E,M,E,C,C,C,C;Q,O;Y,K,E,E,C,C,C,G,E,C,C,C,G,K,C;Y,I,E,I;S,C;K;C,A;AInKD;;GAEG,CACH,IAAA,wCAAA,GAAA,aAAA,CAAA,WAAA;IAIC,SAAA,wCAAA,CAAqB,UAAa,EAAlC;QAAqB,IAAA,CAAA,UAAU,GAAV,UAAU,CAAG;KAAI;IAEtC,0EAA0E,CAC1E,wCAAA,CAAA,SAAA,CAAA,eAAe,GAAf,SAAgB,OAAY,EAA5B;QACC,IAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,AAAC;QAEnD,2BAA2B;QAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;Q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C,c,I,C;Y,S,E,E;S,C,Y,K,I,S,C,E,C,E;Y,C,C,S,G,C,C;S,I,S,C,E,C,E;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S,C;Q,O,a,C,E,E,E,C,C;K,A;I,O,S,C,E,C,E;Q,I,O,C,K,U,I,C,K,I,E,M,I,S,C,sB,G,M,C,C,C,G,+B,C,C;Q,a,C,C,E,C,C,C;Q,S,E,G;Y,I,C,W,G,C,C;S;Q,C,C,S,G,C,K,I,G,M,C,M,C,C,C,G,C,E,C,S,G,C,C,S,E,I,E,E,C,A,C;K,C;C,E,A;AC/WD,IAAA,yCAAA,GAAA,aAAA,CAAA,SAAA,MAAA,EAAA;IAEU,+BAAA,CAAA,yCAAA,EAAA,MAAA,CAAA,CAAsC;IAc/C,SAAA,yCAAA,CACU,IAAY,EACd,QAAc,EACZ,OAAY,EAHtB;QAAA,IAAA,KAAA,GAKC,MAAA,CAAA,IAAA,CAAA,IAAA,CAAO,IAAA,IAAA,AAGP;QAPS,KAAA,CAAA,IAAI,GAAJ,IAAI,CAAQ;QACd,KAAA,CAAA,QAAQ,GAAR,QAAQ,CAAM;QACZ,KAAA,CAAA,OAAO,GAAP,OAAO,CAAK;QAhBZ,KAAA,CAAA,KAAK,GAAG,KAAK,CAAC;QAoBvB,KAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;Q,O,K,C;KACjC;IAZD,MAAA,CAAA,cAAA,CAAI,yCAAA,CAAA,SAAA,EAAA,MAAI,EAAR;QAAA,GAAA,EAAA,WAAA;YACC,OAAO,IAAI,CAAC,KAAK,CAAC;SAClB;Q,U,E,K;Q,Y,E,I;KAAA,CAAA,CAAA;IAeF,OAAA,yCAAC,CAAD;CAAC,CA3BS,iCAAY,CAAA,AAAA,AA2BrB;;;A,I,+B,G,a,U,S,I,A,W;I,I,a,G,S,E,E,E,E;Q,a,G,M,C,c,I,C;Y,S,E,E;S,C,Y,K,I,S,C,E,C,E;Y,C,C,S,G,C,C;S,I,S,C,E,C,E;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S,C;Q,O,a,C,E,E,E,C,C;K,A;I,O,S,C,E,C,E;Q,I,O,C,K,U,I,C,K,I,E,M,I,S,C,sB,G,M,C,C,C,G,+B,C,C;Q,a,C,C,E,C,C,C;Q,S,E,G;Y,I,C,W,G,C,C;S;Q,C,C,S,G,C,K,I,G,M,C,M,C,C,C,G,C,E,C,S,G,C,C,S,E,I,E,E,C,A,C;K,C;C,E,A;A,I,8B,G,a,U,Q,I,W;I,8B,G,M,C,M,I,S,C,E;Q,I,I,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,E,C;Y,C,G,S,C,C,C,C;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S;Q,O,C,C;K,C;I,O,8B,C,K,C,I,E,S,C,C;C,A;A,I,8B,G,a,U,Q,I,S,C,E;I,I,C,G,O,M,K,U,I,M,C,Q,E,C,G,C,I,C,C,C,C,E,C,G,C,A;I,I,C,E,O,C,C,I,C,C,C,C;I,I,C,I,O,C,C,M,K,Q,E,O;Q,I,E,W;Y,I,C,I,C,I,C,C,M,E,C,G,K,C,C;Y,O;gB,K,E,C,I,C,C,C,E,C;gB,I,E,C,C;a,C;S;K,C;I,M,I,S,C,C,G,yB,G,iC,C,C;C,A;AF3BD;;GAEG,CACH,IAAA,yCAAA,GAAA,aAAA,CAAA,SAAA,MAAA,EAAA;IAAqC,+BAAA,CAAA,yCAAA,EAAA,MAAA,CAAA,CAAqC;IAkBzE,SAAA,yCAAA,CAAY,MAAc,EAAE,QAAc,EAAE,OAAY,EAAxD;QAAA,IAAA,KAAA,GACC,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAA,IAAA,AAehC;QAbA,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,KAAI,CAAC,YAAY,GAChB,KAAI,CAAC,OAAO,CAAC,YAAY,IACzB,yCAAe,CAAC,SAAS,GAAG,yCAAI,CAAC,WAAW,EAAE,CAAC;QAEhD,KAAI,CAAC,WAAW,GAAG,IAAI,oCAAU,CAAC,KAAI,CAAC,CAAC;QAExC,IAAI,KAAI,CAAC,YAAY,EACpB,KAAI,CAAC,WAAW,CAAC,eAAe,CAAC;YAChC,OAAO,EAAE,KAAI,CAAC,YAAY;YAC1B,UAAU,EAAE,IAAI;SAChB,CAAC,CAAC;Q,O,K,C;KAEJ;IA3BD,MAAA,CAAA,cAAA,CAAI,yCAAA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Y,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACrB;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EACvC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QAG7B,IAAI,CAAC,IAAI,CAAC,IAAI,EACb,OAAO;QAGR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAA,CAAA,SAAA,CAAM,IAAI,CAAA,IAAA,CAAA,IAAA,EAAC,OAAO,CAAC,CAAC;KACpB,CAAD;IAxHwB,yCAAA,CAAA,SAAS,GAAG,KAAK,CAAC;IAyH3C,OAAA,yCAAC,CAAD;CA1HA,CAAqC,wCAAc,CAAA,AAAA,AA0HlD;;;;;;A;;;;;;;;A;;A,I,+B,G,a,U,S,I,A,W;I,I,a,G,S,E,E,E,E;Q,a,G,M,C,c,I,C;Y,S,E,E;S,C,Y,K,I,S,C,E,C,E;Y,C,C,S,G,C,C;S,I,S,C,E,C,E;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S,C;Q,O,a,C,E,E,E,C,C;K,A;I,O,S,C,E,C,E;Q,I,O,C,K,U,I,C,K,I,E,M,I,S,C,sB,G,M,C,C,C,G,+B,C,C;Q,a,C,C,E,C,C,C;Q,S,E,G;Y,I,C,W,G,C,C;S;Q,C,C,S,G,C,K,I,G,M,C,M,C,C,C,G,C,E,C,S,G,C,C,S,E,I,E,E,C,A,C;K,C;C,E,A;AI1ID,IAAA,yCAAA,GAAA,aAAA,CAAA,SAAA,MAAA,EAAA;IAAmC,+BAAA,CAAA,yCAAA,EAAA,MAAA,CAAA,CAAY;IAM9C,SAAA,yCAAA,GAAA;QAAA,IAAA,KAAA,GACC,MAAA,CAAA,IAAA,CAAA,IAAA,CAAO,IAAA,IAAA,AAkBP;QAxBQ,KAAA,CAAA,UAAU,GAAe,IAAI,UAAU,EAAE,CAAC;QAE3C,KAAA,CAAA,MAAM,GAAW,EAAE,CAAC;QACpB,KAAA,CAAA,WAAW,GAAY,KAAK,CAAC;QAKpC,KAAI,CAAC,UAAU,CAAC,MAAM,GAAG,SAAC,GAAG,EAA7B;YACC,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,IAAI,GAAG,CAAC,MAAM,EACb,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAqB,CAAC,CAAC;YAGrD,KAAI,CAAC,UAAU,EAAE,CAAC;SAClB,CAAC;QAEF,KAAI,CAAC,UAAU,CAAC,OAAO,GAAG,SAAC,GAAG,EAA9B;YACC,iCAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;YAC1C,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,KAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SACxB,CAAC;Q,O,K,C;KACF;IAED,MAAA,CAAA,cAAA,CAAI,yCAAA,CAAA,SAAA,EAAA,OAAK,EAAT;QAAA,GAAA,EAAA,WAAA;YACC,OAAO,IAAI,CAAC,MAAM,CAAC;SACnB;Q,U,E,K;Q,Y,E,I;KAAA,CAAA,CAAA;IAED,MAAA,CAAA,cAAA,CAAI,yCAAA,CAAA,SAAA,EAAA,MAAI,EAAR;QAAA,GAAA,EAAA,WAAA;YACC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SACzB;Q,U,E,K;Q,Y,E,I;KAAA,CAAA,CAAA;IAED,MAAA,CAAA,cAAA,CAAI,yCAAA,CAAA,SAAA,EAAA,YAAU,EAAd;QAAA,GAAA,EAAA,WAAA;YACC,OAAO,IAAI,CAAC,WAAW,CAAC;SACxB;Q,U,E,K;Q,Y,E,I;KAAA,CAAA,CAAA;IAED,yCAAA,CAAA,SAAA,CAAA,KAAK,GAAL,SAAM,IAAU,EAAhB;QACC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO;QAE5B,IAAI,CAAC,UAAU,EAAE,CAAC;KAClB,CAAD;IAEA,yCAAA,CAAA,SAAA,CAAA,OAAO,GAAP,WAAA;QACC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KACjB,CAAD;IAEQ,yCAAA,CAAA,SAAA,CAAA,UAAU,GAAlB,WAAQ;QACP,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO;QAE5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;KACtD,CAAD;IACD,OAAA,yCAAC,CAAD;CAAC,CA5DkC,iCAAY,CAAA,AAAA,AA4D9C;;;A,I,+B,G,a,U,S,I,A,W;I,I,a,G,S,E,E,E,E;Q,a,G,M,C,c,I,C;Y,S,E,E;S,C,Y,K,I,S,C,E,C,E;Y,C,C,S,G,C,C;S,I,S,C,E,C,E;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S,C;Q,O,a,C,E,E,E,C,C;K,A;I,O,S,C,E,C,E;Q,I,O,C,K,U,I,C,K,I,E,M,I,S,C,sB,G,M,C,C,C,G,+B,C,C;Q,a,C,C,E,C,C,C;Q,S,E,G;Y,I,C,W,G,C,C;S;Q,C,C,S,G,C,K,I,G,M,C,M,C,C,C,G,C,E,C,S,G,C,C,S,E,I,E,E,C,A,C;K,C;C,E,A;A,I,8B,G,a,U,Q,I,S,C,E;I,I,C,G,O,M,K,U,I,M,C,Q,E,C,G,C,I,C,C,C,C,E,C,G,C,A;I,I,C,E,O,C,C,I,C,C,C,C;I,I,C,I,O,C,C,M,K,Q,E,O;Q,I,E,W;Y,I,C,I,C,I,C,C,M,E,C,G,K,C,C;Y,O;gB,K,E,C,I,C,C,C,E,C;gB,I,E,C,C;a,C;S;K,C;I,M,I,S,C,C,G,yB,G,iC,C,C;C,A;AD1CD;;GAEG,CACH,IAAA,yCAAA,GAAA,aAAA,CAAA,SAAA,MAAA,EAAA;IACS,+BAAA,CAAA,yCAAA,EAAA,MAAA,CAAA,CAAoC;IAuC5C,SAAA,yCAAA,CAAY,MAAc,EAAE,QAAc,EAAE,OAAY,EAAxD;QAAA,IAAA,KAAA,GACC,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAA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,CAAC,IAAI,CACV,4BAA4B,EAC5B,OAAO,CAAC,IAAI,EACZ,YAAY,EACZ,IAAI,CAAC,IAAI,CACT,CAAC;gBACF,MAAM;SACP;KACD,CAAD;IAzUwB,yCAAA,CAAA,SAAS,GAAG,KAAK,CAAC;IAClB,yCAAA,CAAA,mBAAmB,GAAG,OAAe,CAAC;IAyU/D,OAAA,yCAAC,CAAD;CA9UA,CACS,wCAAc,CAAA,AAAA,AA6UtB;;;;;;;A;;;A,I,+B,G,a,U,S,I,S,O,E,U,E,C,E,S,E;I,S,K,C,K,E;Q,O,K,Y,C,G,K,G,I,C,C,S,O,E;Y,O,C,K,C,C;S,C,C;K;I,O,I,C,C,I,C,C,G,O,C,A,C,C,S,O,E,M,E;Q,S,S,C,K,E;Y,I;gB,I,C,S,C,I,C,K,C,C,C;a,C,O,C,E;gB,M,C,C,C,C;a;S;Q,S,Q,C,K,E;Y,I;gB,I,C,S,C,O,C,C,K,C,C,C;a,C,O,C,E;gB,M,C,C,C,C;a;S;Q,S,I,C,M,E;Y,M,C,I,G,O,C,M,C,K,C,G,K,C,M,C,K,C,C,I,C,S,E,Q,C,C;S;Q,I,C,A,C,S,G,S,C,K,C,O,E,U,I,E,C,C,C,I,E,C,C;K,C,C;C,A;A,I,iC,G,a,U,W,I,S,O,E,I,E;I,I,C,G;Q,K,E,C;Q,I,E,W;Y,I,C,C,C,C,G,C,E,M,C,C,C,C,C;Y,O,C,C,C,C,C;S;Q,I,E,E;Q,G,E,E;K,E,C,E,C,E,C,E,C,A;I,O,C,G;Q,I,E,I,C,C,C;Q,O,E,I,C,C,C;Q,Q,E,I,C,C,C;K,E,O,M,K,U,I,C,C,C,M,C,Q,C,G,W;Q,O,I,C;K,C,A,E,C,C;I,S,I,C,C,E;Q,O,S,C,E;Y,O,I,C;gB,C;gB,C;a,C,C;S,C;K;I,S,I,C,E,E;Q,I,C,E,M,I,S,C,iC,C,C;Q,M,C,C,I;Y,I,C,G,C,E,C,I,C,C,G,E,C,C,C,G,C,G,C,C,Q,C,G,E,C,C,C,G,C,C,O,C,I,C,A,C,C,G,C,C,Q,C,C,I,C,C,I,C,C,C,E,C,C,A,G,C,C,I,C,I,C,A,C,C,G,C,C,I,C,C,E,E,C,C,C,C,C,C,I,E,O,C,C;Y,I,C,G,C,E,C,E,E,G;gB,E,C,C,C,G,C;gB,C,C,K;a,C;Y,O,E,C,C,C;gB,K,C,C;gB,K,C;oB,C,G,E,C;oB,M;gB,K,C;oB,C,C,K,E,C;oB,O;wB,K,E,E,C,C,C;wB,I,E,K;qB,C;gB,K,C;oB,C,C,K,E,C;oB,C,G,E,C,C,C,C;oB,E,G;A,yB;qB,C;oB,S;gB,K,C;oB,E,G,C,C,G,C,G,E,C;oB,C,C,I,C,G,E,C;oB,S;gB;oB,I,C,C,C,G,C,C,I,E,C,G,C,C,M,G,C,I,C,C,C,C,M,G,C,C,C,A,I,C,E,C,C,C,K,C,I,E,C,C,C,K,C,C,A,E;wB,C,G,C,C;wB,S;qB;oB,I,E,C,C,C,K,C,I,C,C,C,I,E,C,C,C,G,C,C,C,C,I,E,C,C,C,G,C,C,C,C,A,C,A,E;wB,C,C,K,G,E,C,C,C,C;wB,M;qB;oB,I,E,C,C,C,K,C,I,C,C,K,G,C,C,C,C,E;wB,C,C,K,G,C,C,C,C,C;wB,C,G,E,C;wB,M;qB;oB,I,C,I,C,C,K,G,C,C,C,C,E;wB,C,C,K,G,C,C,C,C,C;wB,C,C,G,C,I,C,E,C,C;wB,M;qB;oB,I,C,C,C,C,E,C,C,G,C,G,E,C;oB,C,C,I,C,G,E,C;oB,S;a;Y,E,G,I,C,I,C,O,E,C,C,C;S,C,O,C,E;Y,E,G;A,iB;gB,C;a,C;Y,C,G,C,C;S,Q;Y,C,G,C,G,C,C;S;Q,I,E,C,C,C,G,C,E,M,E,C,C,C,C;Q,O;Y,K,E,E,C,C,C,G,E,C,C,C,G,K,C;Y,I,E,I;S,C;K;C,A;AEjWD,IAAA,yCAAA,GAAA,aAAA,CAAA,WAAA;IACC,SAAA,yCAAA,CAA6B,QAAsB,EAAnD;QAA6B,IAAA,CAAA,QAAQ,GAAR,QAAQ,CAAc;KAAI;IAE/C,yCAAA,CAAA,SAAA,CAAA,aAAa,GAArB,SAAsB,MAAc,EAA5B;QACP,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,AAAC;QACnD,IAAA,EAAA,GAA4B,IAAI,CAAC,QAAQ,EAAvC,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,GAAG,GAAA,EAAA,CAAA,GAAkB,AAAC;QAChD,IAAM,GA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A+EC;;;A,I,+B,G,a,U,S,I,A,W;I,I,a,G,S,E,E,E,E;Q,a,G,M,C,c,I,C;Y,S,E,E;S,C,Y,K,I,S,C,E,C,E;Y,C,C,S,G,C,C;S,I,S,C,E,C,E;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S,C;Q,O,a,C,E,E,E,C,C;K,A;I,O,S,C,E,C,E;Q,I,O,C,K,U,I,C,K,I,E,M,I,S,C,sB,G,M,C,C,C,G,+B,C,C;Q,a,C,C,E,C,C,C;Q,S,E,G;Y,I,C,W,G,C,C;S;Q,C,C,S,G,C,K,I,G,M,C,M,C,C,C,G,C,E,C,S,G,C,C,S,E,I,E,E,C,A,C;K,C;C,E,A;A,I,8B,G,a,U,Q,I,W;I,8B,G,M,C,M,I,S,C,E;Q,I,I,C,E,C,G,C,E,C,G,S,C,M,E,C,G,C,E,C,E,C;Y,C,G,S,C,C,C,C;Y,I,I,C,I,C,C,I,M,C,S,C,c,C,I,C,C,E,C,C,E,C,C,C,C,G,C,C,C,C,C;S;Q,O,C,C;K,C;I,O,8B,C,K,C,I,E,S,C,C;C,A;A,I,8B,G,a,U,Q,I,S,C,E;I,I,C,G,O,M,K,U,I,M,C,Q,E,C,G,C,I,C,C,C,C,E,C,G,C,A;I,I,C,E,O,C,C,I,C,C,C,C;I,I,C,I,O,C,C,M,K,Q,E,O;Q,I,E,W;Y,I,C,I,C,I,C,C,M,E,C,G,K,C,C;Y,O;gB,K,E,C,I,C,C,C,E,C;gB,I,E,C,C;a,C;S;K,C;I,M,I,S,C,C,G,yB,G,iC,C,C;C,A;A,I,4B,G,a,U,M,I,S,C,E,C,E;I,I,C,G,O,M,K,U,I,C,C,M,C,Q,C,A;I,I,C,C,E,O,C,C;I,I,C,G,C,C,I,C,C,C,E,C,E,E,G,E,E,C,A;I,I;Q,M,A,C,C,K,K,C,I,C,E,G,C,C,I,C,A,C,C,G,C,C,I,E,C,C,I,C,E,C,I,C,C,C,K,C,C;K,C,O,K,E;Q,C,G;Y,K,E,K;S,C;K,Q;Q,I;Y,I,C,I,C,C,C,I,I,C,C,G,C,C,Q,C,C,A,E,C,C,I,C,C,C,C;S,Q;Y,I,C,E,M,C,C,K,C;S;K;I,O,E,C;C,A;AVhED,IAAA,iCAAA,GAAA,aAAA,CAAA,WAAA;IAAA,SAAA,WAAA,GAAA,EA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","sources":["lib/exports.ts","lib/util.ts","lib/supports.ts","lib/peer.ts","lib/logger.ts","lib/socket.ts","lib/enums.ts","package.json","lib/mediaconnection.ts","lib/negotiator.ts","lib/baseconnection.ts","lib/dataconnection.ts","lib/encodingQueue.ts","lib/api.ts"],"sourcesContent":["import { util } from \"./util\";\nimport { Peer } from \"./peer\";\n\nexport type {\n\tPeerJSOption,\n\tPeerConnectOption,\n\tAnswerOption,\n\tCallOption,\n} from \"./optionInterfaces\";\nexport type { UtilSupportsObj } from \"./util\";\nexport type { DataConnection } from \"./dataconnection\";\nexport type { MediaConnection } from \"./mediaconnection\";\nexport type { LogLevel } from \"./logger\";\nexport type {\n\tConnectionType,\n\tPeerErrorType,\n\tSerializationType,\n\tSocketEventType,\n\tServerMessageType,\n} from \"./enums\";\n\nexport { Peer, util };\nexport default Peer;\n","// Types arent accurate\n//@ts-ignore\nimport BinaryPack from \"peerjs-js-binarypack\";\nimport { Supports } from \"./supports\";\n\nexport interface UtilSupportsObj {\n\tbrowser: boolean;\n\twebRTC: boolean;\n\taudioVideo: boolean;\n\tdata: boolean;\n\tbinaryBlob: boolean;\n\treliable: boolean;\n}\n\nconst DEFAULT_CONFIG = {\n\ticeServers: [\n\t\t{ urls: \"stun:stun.l.google.com:19302\" },\n\t\t{\n\t\t\turls: [\n\t\t\t\t\"turn:eu-0.turn.peerjs.com:3478\",\n\t\t\t\t\"turn:us-0.turn.peerjs.com:3478\",\n\t\t\t],\n\t\t\tusername: \"peerjs\",\n\t\t\tcredential: \"peerjsp\",\n\t\t},\n\t],\n\tsdpSemantics: \"unified-plan\",\n};\n\nclass Util {\n\tnoop(): void {}\n\n\treadonly CLOUD_HOST = \"0.peerjs.com\";\n\treadonly CLOUD_PORT = 443;\n\n\t// Browsers that need chunking:\n\treadonly chunkedBrowsers = { Chrome: 1, chrome: 1 };\n\treadonly chunkedMTU = 16300; // The original 60000 bytes setting does not work when sending data from Firefox to Chrome, which is \"cut off\" after 16384 bytes and delivered individually.\n\n\t// Returns browser-agnostic default config\n\treadonly defaultConfig = DEFAULT_CONFIG;\n\n\treadonly browser = Supports.getBrowser();\n\treadonly browserVersion = Supports.getVersion();\n\n\t// Lists which features are supported\n\treadonly supports = (function () {\n\t\tconst supported: UtilSupportsObj = {\n\t\t\tbrowser: Supports.isBrowserSupported(),\n\t\t\twebRTC: Supports.isWebRTCSupported(),\n\t\t\taudioVideo: false,\n\t\t\tdata: false,\n\t\t\tbinaryBlob: false,\n\t\t\treliable: false,\n\t\t};\n\n\t\tif (!supported.webRTC) return supported;\n\n\t\tlet pc: RTCPeerConnection;\n\n\t\ttry {\n\t\t\tpc = new RTCPeerConnection(DEFAULT_CONFIG);\n\n\t\t\tsupported.audioVideo = true;\n\n\t\t\tlet dc: RTCDataChannel;\n\n\t\t\ttry {\n\t\t\t\tdc = pc.createDataChannel(\"_PEERJSTEST\", { ordered: true });\n\t\t\t\tsupported.data = true;\n\t\t\t\tsupported.reliable = !!dc.ordered;\n\n\t\t\t\t// Binary test\n\t\t\t\ttry {\n\t\t\t\t\tdc.binaryType = \"blob\";\n\t\t\t\t\tsupported.binaryBlob = !Supports.isIOS;\n\t\t\t\t} catch (e) {}\n\t\t\t} catch (e) {\n\t\t\t} finally {\n\t\t\t\tif (dc) {\n\t\t\t\t\tdc.close();\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t} finally {\n\t\t\tif (pc) {\n\t\t\t\tpc.close();\n\t\t\t}\n\t\t}\n\n\t\treturn supported;\n\t})();\n\n\t// Ensure alphanumeric ids\n\tvalidateId(id: string): boolean {\n\t\t// Allow empty ids\n\t\treturn !id || /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(id);\n\t}\n\n\tpack = BinaryPack.pack;\n\tunpack = BinaryPack.unpack;\n\n\t// Binary stuff\n\n\tprivate _dataCount: number = 1;\n\n\tchunk(\n\t\tblob: Blob,\n\t): { __peerData: number; n: number; total: number; data: Blob }[] {\n\t\tconst chunks = [];\n\t\tconst size = blob.size;\n\t\tconst total = Math.ceil(size / util.chunkedMTU);\n\n\t\tlet index = 0;\n\t\tlet start = 0;\n\n\t\twhile (start < size) {\n\t\t\tconst end = Math.min(size, start + util.chunkedMTU);\n\t\t\tconst b = blob.slice(start, end);\n\n\t\t\tconst chunk = {\n\t\t\t\t__peerData: this._dataCount,\n\t\t\t\tn: index,\n\t\t\t\tdata: b,\n\t\t\t\ttotal,\n\t\t\t};\n\n\t\t\tchunks.push(chunk);\n\n\t\t\tstart = end;\n\t\t\tindex++;\n\t\t}\n\n\t\tthis._dataCount++;\n\n\t\treturn chunks;\n\t}\n\n\tblobToArrayBuffer(\n\t\tblob: Blob,\n\t\tcb: (arg: ArrayBuffer | null) => void,\n\t): FileReader {\n\t\tconst fr = new FileReader();\n\n\t\tfr.onload = function (evt) {\n\t\t\tif (evt.target) {\n\t\t\t\tcb(evt.target.result as ArrayBuffer);\n\t\t\t}\n\t\t};\n\n\t\tfr.readAsArrayBuffer(blob);\n\n\t\treturn fr;\n\t}\n\n\tbinaryStringToArrayBuffer(binary: string): ArrayBuffer | SharedArrayBuffer {\n\t\tconst byteArray = new Uint8Array(binary.length);\n\n\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\tbyteArray[i] = binary.charCodeAt(i) & 0xff;\n\t\t}\n\n\t\treturn byteArray.buffer;\n\t}\n\n\trandomToken(): string {\n\t\treturn Math.random().toString(36).slice(2);\n\t}\n\n\tisSecure(): boolean {\n\t\treturn location.protocol === \"https:\";\n\t}\n}\nexport const util = new Util();\n","import webRTCAdapter_import from \"webrtc-adapter\";\n\nconst webRTCAdapter: typeof webRTCAdapter_import =\n\t//@ts-ignore\n\twebRTCAdapter_import.default || webRTCAdapter_import;\n\nexport const Supports = new (class {\n\treadonly isIOS = [\"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform);\n\treadonly supportedBrowsers = [\"firefox\", \"chrome\", \"safari\"];\n\n\treadonly minFirefoxVersion = 59;\n\treadonly minChromeVersion = 72;\n\treadonly minSafariVersion = 605;\n\n\tisWebRTCSupported(): boolean {\n\t\treturn typeof RTCPeerConnection !== \"undefined\";\n\t}\n\n\tisBrowserSupported(): boolean {\n\t\tconst browser = this.getBrowser();\n\t\tconst version = this.getVersion();\n\n\t\tconst validBrowser = this.supportedBrowsers.includes(browser);\n\n\t\tif (!validBrowser) return false;\n\n\t\tif (browser === \"chrome\") return version >= this.minChromeVersion;\n\t\tif (browser === \"firefox\") return version >= this.minFirefoxVersion;\n\t\tif (browser === \"safari\")\n\t\t\treturn !this.isIOS && version >= this.minSafariVersion;\n\n\t\treturn false;\n\t}\n\n\tgetBrowser(): string {\n\t\treturn webRTCAdapter.browserDetails.browser;\n\t}\n\n\tgetVersion(): number {\n\t\treturn webRTCAdapter.browserDetails.version || 0;\n\t}\n\n\tisUnifiedPlanSupported(): boolean {\n\t\tconst browser = this.getBrowser();\n\t\tconst version = webRTCAdapter.browserDetails.version || 0;\n\n\t\tif (browser === \"chrome\" && version < this.minChromeVersion) return false;\n\t\tif (browser === \"firefox\" && version >= this.minFirefoxVersion) return true;\n\t\tif (\n\t\t\t!window.RTCRtpTransceiver ||\n\t\t\t!(\"currentDirection\" in RTCRtpTransceiver.prototype)\n\t\t)\n\t\t\treturn false;\n\n\t\tlet tempPc: RTCPeerConnection;\n\t\tlet supported = false;\n\n\t\ttry {\n\t\t\ttempPc = new RTCPeerConnection();\n\t\t\ttempPc.addTransceiver(\"audio\");\n\t\t\tsupported = true;\n\t\t} catch (e) {\n\t\t} finally {\n\t\t\tif (tempPc) {\n\t\t\t\ttempPc.close();\n\t\t\t}\n\t\t}\n\n\t\treturn supported;\n\t}\n\n\ttoString(): string {\n\t\treturn `Supports:\n browser:${this.getBrowser()}\n version:${this.getVersion()}\n isIOS:${this.isIOS}\n isWebRTCSupported:${this.isWebRTCSupported()}\n isBrowserSupported:${this.isBrowserSupported()}\n isUnifiedPlanSupported:${this.isUnifiedPlanSupported()}`;\n\t}\n})();\n","import { EventEmitter } from \"eventemitter3\";\nimport { util } from \"./util\";\nimport logger, { LogLevel } from \"./logger\";\nimport { Socket } from \"./socket\";\nimport { MediaConnection } from \"./mediaconnection\";\nimport { DataConnection } from \"./dataconnection\";\nimport {\n\tConnectionType,\n\tPeerErrorType,\n\tSocketEventType,\n\tServerMessageType,\n} from \"./enums\";\nimport { ServerMessage } from \"./servermessage\";\nimport { API } from \"./api\";\nimport type {\n\tPeerConnectOption,\n\tPeerJSOption,\n\tCallOption,\n} from \"./optionInterfaces\";\n\nclass PeerOptions implements PeerJSOption {\n\tdebug?: LogLevel; // 1: Errors, 2: Warnings, 3: All logs\n\thost?: string;\n\tport?: number;\n\tpath?: string;\n\tkey?: string;\n\ttoken?: string;\n\tconfig?: any;\n\tsecure?: boolean;\n\tpingInterval?: number;\n\treferrerPolicy?: ReferrerPolicy;\n\tlogFunction?: (logLevel: LogLevel, ...rest: any[]) => void;\n}\n\ntype PeerEvents = {\n\t/**\n\t * Emitted when a connection to the PeerServer is established.\n\t */\n\topen: (id: string) => void;\n\t/**\n\t * Emitted when a new data connection is established from a remote peer.\n\t */\n\tconnection: (dataConnection: DataConnection) => void;\n\t/**\n\t * Emitted when a remote peer attempts to call you.\n\t */\n\tcall: (mediaConnection: MediaConnection) => void;\n\t/**\n\t * Emitted when the peer is destroyed and can no longer accept or create any new connections.\n\t */\n\tclose: () => void;\n\t/**\n\t * Emitted when the peer is disconnected from the signalling server\n\t */\n\tdisconnected: (currentId: string) => void;\n\t/**\n\t * Errors on the peer are almost always fatal and will destroy the peer.\n\t */\n\terror: (error: Error) => void;\n};\n/**\n * A peer who can initiate connections with other peers.\n */\nexport class Peer extends EventEmitter<PeerEvents> {\n\tprivate static readonly DEFAULT_KEY = \"peerjs\";\n\n\tprivate readonly _options: PeerOptions;\n\tprivate readonly _api: API;\n\tprivate readonly _socket: Socket;\n\n\tprivate _id: string | null = null;\n\tprivate _lastServerId: string | null = null;\n\n\t// States.\n\tprivate _destroyed = false; // Connections have been killed\n\tprivate _disconnected = false; // Connection to PeerServer killed but P2P connections still active\n\tprivate _open = false; // Sockets and such are not yet open.\n\tprivate readonly _connections: Map<\n\t\tstring,\n\t\t(DataConnection | MediaConnection)[]\n\t> = new Map(); // All connections for this peer.\n\tprivate readonly _lostMessages: Map<string, ServerMessage[]> = new Map(); // src => [list of messages]\n\t/**\n\t * The brokering ID of this peer\n\t */\n\tget id() {\n\t\treturn this._id;\n\t}\n\n\tget options() {\n\t\treturn this._options;\n\t}\n\n\tget open() {\n\t\treturn this._open;\n\t}\n\n\tget socket() {\n\t\treturn this._socket;\n\t}\n\n\t/**\n\t * A hash of all connections associated with this peer, keyed by the remote peer's ID.\n\t * @deprecated\n\t * Return type will change from Object to Map<string,[]>\n\t */\n\tget connections(): Object {\n\t\tconst plainConnections = Object.create(null);\n\n\t\tfor (let [k, v] of this._connections) {\n\t\t\tplainConnections[k] = v;\n\t\t}\n\n\t\treturn plainConnections;\n\t}\n\n\t/**\n\t * true if this peer and all of its connections can no longer be used.\n\t */\n\tget destroyed() {\n\t\treturn this._destroyed;\n\t}\n\t/**\n\t * false if there is an active connection to the PeerServer.\n\t */\n\tget disconnected() {\n\t\treturn this._disconnected;\n\t}\n\n\t/**\n\t * A peer can connect to other peers and listen for connections.\n\t */\n\tconstructor();\n\n\t/**\n\t * A peer can connect to other peers and listen for connections.\n\t * @param options for specifying details about PeerServer\n\t */\n\tconstructor(options: PeerOptions);\n\n\t/**\n\t * A peer can connect to other peers and listen for connections.\n\t * @param id Other peers can connect to this peer using the provided ID.\n\t * If no ID is given, one will be generated by the brokering server.\n\t * @param options for specifying details about PeerServer\n\t */\n\tconstructor(id: string, options?: PeerOptions);\n\n\tconstructor(id?: string | PeerOptions, options?: PeerOptions) {\n\t\tsuper();\n\n\t\tlet userId: string | undefined;\n\n\t\t// Deal with overloading\n\t\tif (id && id.constructor == Object) {\n\t\t\toptions = id as PeerOptions;\n\t\t} else if (id) {\n\t\t\tuserId = id.toString();\n\t\t}\n\n\t\t// Configurize options\n\t\toptions = {\n\t\t\tdebug: 0, // 1: Errors, 2: Warnings, 3: All logs\n\t\t\thost: util.CLOUD_HOST,\n\t\t\tport: util.CLOUD_PORT,\n\t\t\tpath: \"/\",\n\t\t\tkey: Peer.DEFAULT_KEY,\n\t\t\ttoken: util.randomToken(),\n\t\t\tconfig: util.defaultConfig,\n\t\t\treferrerPolicy: \"strict-origin-when-cross-origin\",\n\t\t\t...options,\n\t\t};\n\t\tthis._options = options;\n\n\t\t// Detect relative URL host.\n\t\tif (this._options.host === \"/\") {\n\t\t\tthis._options.host = window.location.hostname;\n\t\t}\n\n\t\t// Set path correctly.\n\t\tif (this._options.path) {\n\t\t\tif (this._options.path[0] !== \"/\") {\n\t\t\t\tthis._options.path = \"/\" + this._options.path;\n\t\t\t}\n\t\t\tif (this._options.path[this._options.path.length - 1] !== \"/\") {\n\t\t\t\tthis._options.path += \"/\";\n\t\t\t}\n\t\t}\n\n\t\t// Set whether we use SSL to same as current host\n\t\tif (\n\t\t\tthis._options.secure === undefined &&\n\t\t\tthis._options.host !== util.CLOUD_HOST\n\t\t) {\n\t\t\tthis._options.secure = util.isSecure();\n\t\t} else if (this._options.host == util.CLOUD_HOST) {\n\t\t\tthis._options.secure = true;\n\t\t}\n\t\t// Set a custom log function if present\n\t\tif (this._options.logFunction) {\n\t\t\tlogger.setLogFunction(this._options.logFunction);\n\t\t}\n\n\t\tlogger.logLevel = this._options.debug || 0;\n\n\t\tthis._api = new API(options);\n\t\tthis._socket = this._createServerConnection();\n\n\t\t// Sanity checks\n\t\t// Ensure WebRTC supported\n\t\tif (!util.supports.audioVideo && !util.supports.data) {\n\t\t\tthis._delayedAbort(\n\t\t\t\tPeerErrorType.BrowserIncompatible,\n\t\t\t\t\"The current browser does not support WebRTC\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure alphanumeric id\n\t\tif (!!userId && !util.validateId(userId)) {\n\t\t\tthis._delayedAbort(PeerErrorType.InvalidID, `ID \"${userId}\" is invalid`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (userId) {\n\t\t\tthis._initialize(userId);\n\t\t} else {\n\t\t\tthis._api\n\t\t\t\t.retrieveId()\n\t\t\t\t.then((id) => this._initialize(id))\n\t\t\t\t.catch((error) => this._abort(PeerErrorType.ServerError, error));\n\t\t}\n\t}\n\n\tprivate _createServerConnection(): Socket {\n\t\tconst socket = new Socket(\n\t\t\tthis._options.secure,\n\t\t\tthis._options.host!,\n\t\t\tthis._options.port!,\n\t\t\tthis._options.path!,\n\t\t\tthis._options.key!,\n\t\t\tthis._options.pingInterval,\n\t\t);\n\n\t\tsocket.on(SocketEventType.Message, (data: ServerMessage) => {\n\t\t\tthis._handleMessage(data);\n\t\t});\n\n\t\tsocket.on(SocketEventType.Error, (error: string) => {\n\t\t\tthis._abort(PeerErrorType.SocketError, error);\n\t\t});\n\n\t\tsocket.on(SocketEventType.Disconnected, () => {\n\t\t\tif (this.disconnected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.emitError(PeerErrorType.Network, \"Lost connection to server.\");\n\t\t\tthis.disconnect();\n\t\t});\n\n\t\tsocket.on(SocketEventType.Close, () => {\n\t\t\tif (this.disconnected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._abort(\n\t\t\t\tPeerErrorType.SocketClosed,\n\t\t\t\t\"Underlying socket is already closed.\",\n\t\t\t);\n\t\t});\n\n\t\treturn socket;\n\t}\n\n\t/** Initialize a connection with the server. */\n\tprivate _initialize(id: string): void {\n\t\tthis._id = id;\n\t\tthis.socket.start(id, this._options.token!);\n\t}\n\n\t/** Handles messages from the server. */\n\tprivate _handleMessage(message: ServerMessage): void {\n\t\tconst type = message.type;\n\t\tconst payload = message.payload;\n\t\tconst peerId = message.src;\n\n\t\tswitch (type) {\n\t\t\tcase ServerMessageType.Open: // The connection to the server is open.\n\t\t\t\tthis._lastServerId = this.id;\n\t\t\t\tthis._open = true;\n\t\t\t\tthis.emit(\"open\", this.id);\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.Error: // Server error.\n\t\t\t\tthis._abort(PeerErrorType.ServerError, payload.msg);\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.IdTaken: // The selected ID is taken.\n\t\t\t\tthis._abort(PeerErrorType.UnavailableID, `ID \"${this.id}\" is taken`);\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.InvalidKey: // The given API key cannot be found.\n\t\t\t\tthis._abort(\n\t\t\t\t\tPeerErrorType.InvalidKey,\n\t\t\t\t\t`API KEY \"${this._options.key}\" is invalid`,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.Leave: // Another peer has closed its connection to this peer.\n\t\t\t\tlogger.log(`Received leave message from ${peerId}`);\n\t\t\t\tthis._cleanupPeer(peerId);\n\t\t\t\tthis._connections.delete(peerId);\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.Expire: // The offer sent to a peer has expired without response.\n\t\t\t\tthis.emitError(\n\t\t\t\t\tPeerErrorType.PeerUnavailable,\n\t\t\t\t\t`Could not connect to peer ${peerId}`,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.Offer: {\n\t\t\t\t// we should consider switching this to CALL/CONNECT, but this is the least breaking option.\n\t\t\t\tconst connectionId = payload.connectionId;\n\t\t\t\tlet connection = this.getConnection(peerId, connectionId);\n\n\t\t\t\tif (connection) {\n\t\t\t\t\tconnection.close();\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`Offer received for existing Connection ID:${connectionId}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Create a new connection.\n\t\t\t\tif (payload.type === ConnectionType.Media) {\n\t\t\t\t\tconst mediaConnection = new MediaConnection(peerId, this, {\n\t\t\t\t\t\tconnectionId: connectionId,\n\t\t\t\t\t\t_payload: payload,\n\t\t\t\t\t\tmetadata: payload.metadata,\n\t\t\t\t\t});\n\t\t\t\t\tconnection = mediaConnection;\n\t\t\t\t\tthis._addConnection(peerId, connection);\n\t\t\t\t\tthis.emit(\"call\", mediaConnection);\n\t\t\t\t} else if (payload.type === ConnectionType.Data) {\n\t\t\t\t\tconst dataConnection = new DataConnection(peerId, this, {\n\t\t\t\t\t\tconnectionId: connectionId,\n\t\t\t\t\t\t_payload: payload,\n\t\t\t\t\t\tmetadata: payload.metadata,\n\t\t\t\t\t\tlabel: payload.label,\n\t\t\t\t\t\tserialization: payload.serialization,\n\t\t\t\t\t\treliable: payload.reliable,\n\t\t\t\t\t});\n\t\t\t\t\tconnection = dataConnection;\n\t\t\t\t\tthis._addConnection(peerId, connection);\n\t\t\t\t\tthis.emit(\"connection\", dataConnection);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.warn(`Received malformed connection type:${payload.type}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Find messages.\n\t\t\t\tconst messages = this._getMessages(connectionId);\n\t\t\t\tfor (let message of messages) {\n\t\t\t\t\tconnection.handleMessage(message);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (!payload) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`You received a malformed message from ${peerId} of type ${type}`,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst connectionId = payload.connectionId;\n\t\t\t\tconst connection = this.getConnection(peerId, connectionId);\n\n\t\t\t\tif (connection && connection.peerConnection) {\n\t\t\t\t\t// Pass it on.\n\t\t\t\t\tconnection.handleMessage(message);\n\t\t\t\t} else if (connectionId) {\n\t\t\t\t\t// Store for possible later use\n\t\t\t\t\tthis._storeMessage(connectionId, message);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.warn(\"You received an unrecognized message:\", message);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Stores messages without a set up connection, to be claimed later. */\n\tprivate _storeMessage(connectionId: string, message: ServerMessage): void {\n\t\tif (!this._lostMessages.has(connectionId)) {\n\t\t\tthis._lostMessages.set(connectionId, []);\n\t\t}\n\n\t\tthis._lostMessages.get(connectionId).push(message);\n\t}\n\n\t/** Retrieve messages from lost message store */\n\t//TODO Change it to private\n\tpublic _getMessages(connectionId: string): ServerMessage[] {\n\t\tconst messages = this._lostMessages.get(connectionId);\n\n\t\tif (messages) {\n\t\t\tthis._lostMessages.delete(connectionId);\n\t\t\treturn messages;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\t/**\n\t * Connects to the remote peer specified by id and returns a data connection.\n\t * @param peer The brokering ID of the remote peer (their peer.id).\n\t * @param options for specifying details about Peer Connection\n\t */\n\tconnect(peer: string, options: PeerConnectOption = {}): DataConnection {\n\t\tif (this.disconnected) {\n\t\t\tlogger.warn(\n\t\t\t\t\"You cannot connect to a new Peer because you called \" +\n\t\t\t\t\t\".disconnect() on this Peer and ended your connection with the \" +\n\t\t\t\t\t\"server. You can create a new Peer to reconnect, or call reconnect \" +\n\t\t\t\t\t\"on this peer if you believe its ID to still be available.\",\n\t\t\t);\n\t\t\tthis.emitError(\n\t\t\t\tPeerErrorType.Disconnected,\n\t\t\t\t\"Cannot connect to new Peer after disconnecting from server.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst dataConnection = new DataConnection(peer, this, options);\n\t\tthis._addConnection(peer, dataConnection);\n\t\treturn dataConnection;\n\t}\n\n\t/**\n\t * Calls the remote peer specified by id and returns a media connection.\n\t * @param peer The brokering ID of the remote peer (their peer.id).\n\t * @param stream The caller's media stream\n\t * @param options Metadata associated with the connection, passed in by whoever initiated the connection.\n\t */\n\tcall(\n\t\tpeer: string,\n\t\tstream: MediaStream,\n\t\toptions: CallOption = {},\n\t): MediaConnection {\n\t\tif (this.disconnected) {\n\t\t\tlogger.warn(\n\t\t\t\t\"You cannot connect to a new Peer because you called \" +\n\t\t\t\t\t\".disconnect() on this Peer and ended your connection with the \" +\n\t\t\t\t\t\"server. You can create a new Peer to reconnect.\",\n\t\t\t);\n\t\t\tthis.emitError(\n\t\t\t\tPeerErrorType.Disconnected,\n\t\t\t\t\"Cannot connect to new Peer after disconnecting from server.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!stream) {\n\t\t\tlogger.error(\n\t\t\t\t\"To call a peer, you must provide a stream from your browser's `getUserMedia`.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst mediaConnection = new MediaConnection(peer, this, {\n\t\t\t...options,\n\t\t\t_stream: stream,\n\t\t});\n\t\tthis._addConnection(peer, mediaConnection);\n\t\treturn mediaConnection;\n\t}\n\n\t/** Add a data/media connection to this peer. */\n\tprivate _addConnection(\n\t\tpeerId: string,\n\t\tconnection: MediaConnection | DataConnection,\n\t): void {\n\t\tlogger.log(\n\t\t\t`add connection ${connection.type}:${connection.connectionId} to peerId:${peerId}`,\n\t\t);\n\n\t\tif (!this._connections.has(peerId)) {\n\t\t\tthis._connections.set(peerId, []);\n\t\t}\n\t\tthis._connections.get(peerId).push(connection);\n\t}\n\n\t//TODO should be private\n\t_removeConnection(connection: DataConnection | MediaConnection): void {\n\t\tconst connections = this._connections.get(connection.peer);\n\n\t\tif (connections) {\n\t\t\tconst index = connections.indexOf(connection);\n\n\t\t\tif (index !== -1) {\n\t\t\t\tconnections.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\t//remove from lost messages\n\t\tthis._lostMessages.delete(connection.connectionId);\n\t}\n\n\t/** Retrieve a data/media connection for this peer. */\n\tgetConnection(\n\t\tpeerId: string,\n\t\tconnectionId: string,\n\t): null | DataConnection | MediaConnection {\n\t\tconst connections = this._connections.get(peerId);\n\t\tif (!connections) {\n\t\t\treturn null;\n\t\t}\n\n\t\tfor (let connection of connections) {\n\t\t\tif (connection.connectionId === connectionId) {\n\t\t\t\treturn connection;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate _delayedAbort(type: PeerErrorType, message: string | Error): void {\n\t\tsetTimeout(() => {\n\t\t\tthis._abort(type, message);\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Emits an error message and destroys the Peer.\n\t * The Peer is not destroyed if it's in a disconnected state, in which case\n\t * it retains its disconnected state and its existing connections.\n\t */\n\tprivate _abort(type: PeerErrorType, message: string | Error): void {\n\t\tlogger.error(\"Aborting!\");\n\n\t\tthis.emitError(type, message);\n\n\t\tif (!this._lastServerId) {\n\t\t\tthis.destroy();\n\t\t} else {\n\t\t\tthis.disconnect();\n\t\t}\n\t}\n\n\t/** Emits a typed error message. */\n\temitError(type: PeerErrorType, err: string | Error): void {\n\t\tlogger.error(\"Error:\", err);\n\n\t\tlet error: Error & { type?: PeerErrorType };\n\n\t\tif (typeof err === \"string\") {\n\t\t\terror = new Error(err);\n\t\t} else {\n\t\t\terror = err as Error;\n\t\t}\n\n\t\terror.type = type;\n\n\t\tthis.emit(\"error\", error);\n\t}\n\n\t/**\n\t * Destroys the Peer: closes all active connections as well as the connection\n\t * to the server.\n\t * Warning: The peer can no longer create or accept connections after being\n\t * destroyed.\n\t */\n\tdestroy(): void {\n\t\tif (this.destroyed) {\n\t\t\treturn;\n\t\t}\n\n\t\tlogger.log(`Destroy peer with ID:${this.id}`);\n\n\t\tthis.disconnect();\n\t\tthis._cleanup();\n\n\t\tthis._destroyed = true;\n\n\t\tthis.emit(\"close\");\n\t}\n\n\t/** Disconnects every connection on this peer. */\n\tprivate _cleanup(): void {\n\t\tfor (let peerId of this._connections.keys()) {\n\t\t\tthis._cleanupPeer(peerId);\n\t\t\tthis._connections.delete(peerId);\n\t\t}\n\n\t\tthis.socket.removeAllListeners();\n\t}\n\n\t/** Closes all connections to this peer. */\n\tprivate _cleanupPeer(peerId: string): void {\n\t\tconst connections = this._connections.get(peerId);\n\n\t\tif (!connections) return;\n\n\t\tfor (let connection of connections) {\n\t\t\tconnection.close();\n\t\t}\n\t}\n\n\t/**\n\t * Disconnects the Peer's connection to the PeerServer. Does not close any\n\t * active connections.\n\t * Warning: The peer can no longer create or accept connections after being\n\t * disconnected. It also cannot reconnect to the server.\n\t */\n\tdisconnect(): void {\n\t\tif (this.disconnected) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentId = this.id;\n\n\t\tlogger.log(`Disconnect peer with ID:${currentId}`);\n\n\t\tthis._disconnected = true;\n\t\tthis._open = false;\n\n\t\tthis.socket.close();\n\n\t\tthis._lastServerId = currentId;\n\t\tthis._id = null;\n\n\t\tthis.emit(\"disconnected\", currentId);\n\t}\n\n\t/** Attempts to reconnect with the same ID. */\n\treconnect(): void {\n\t\tif (this.disconnected && !this.destroyed) {\n\t\t\tlogger.log(\n\t\t\t\t`Attempting reconnection to server with ID ${this._lastServerId}`,\n\t\t\t);\n\t\t\tthis._disconnected = false;\n\t\t\tthis._initialize(this._lastServerId!);\n\t\t} else if (this.destroyed) {\n\t\t\tthrow new Error(\n\t\t\t\t\"This peer cannot reconnect to the server. It has already been destroyed.\",\n\t\t\t);\n\t\t} else if (!this.disconnected && !this.open) {\n\t\t\t// Do nothing. We're still connecting the first time.\n\t\t\tlogger.error(\n\t\t\t\t\"In a hurry? We're still trying to make the initial connection!\",\n\t\t\t);\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`Peer ${this.id} cannot reconnect because it is not disconnected from the server!`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Get a list of available peer IDs. If you're running your own server, you'll\n\t * want to set allow_discovery: true in the PeerServer options. If you're using\n\t * the cloud server, email team@peerjs.com to get the functionality enabled for\n\t * your key.\n\t */\n\tlistAllPeers(cb = (_: any[]) => {}): void {\n\t\tthis._api\n\t\t\t.listAllPeers()\n\t\t\t.then((peers) => cb(peers))\n\t\t\t.catch((error) => this._abort(PeerErrorType.ServerError, error));\n\t}\n}\n","const LOG_PREFIX = \"PeerJS: \";\n\n/*\nPrints log messages depending on the debug level passed in. Defaults to 0.\n0 Prints no logs.\n1 Prints only errors.\n2 Prints errors and warnings.\n3 Prints all logs.\n*/\nexport enum LogLevel {\n\tDisabled,\n\tErrors,\n\tWarnings,\n\tAll,\n}\n\nclass Logger {\n\tprivate _logLevel = LogLevel.Disabled;\n\n\tget logLevel(): LogLevel {\n\t\treturn this._logLevel;\n\t}\n\n\tset logLevel(logLevel: LogLevel) {\n\t\tthis._logLevel = logLevel;\n\t}\n\n\tlog(...args: any[]) {\n\t\tif (this._logLevel >= LogLevel.All) {\n\t\t\tthis._print(LogLevel.All, ...args);\n\t\t}\n\t}\n\n\twarn(...args: any[]) {\n\t\tif (this._logLevel >= LogLevel.Warnings) {\n\t\t\tthis._print(LogLevel.Warnings, ...args);\n\t\t}\n\t}\n\n\terror(...args: any[]) {\n\t\tif (this._logLevel >= LogLevel.Errors) {\n\t\t\tthis._print(LogLevel.Errors, ...args);\n\t\t}\n\t}\n\n\tsetLogFunction(fn: (logLevel: LogLevel, ..._: any[]) => void): void {\n\t\tthis._print = fn;\n\t}\n\n\tprivate _print(logLevel: LogLevel, ...rest: any[]): void {\n\t\tconst copy = [LOG_PREFIX, ...rest];\n\n\t\tfor (let i in copy) {\n\t\t\tif (copy[i] instanceof Error) {\n\t\t\t\tcopy[i] = \"(\" + copy[i].name + \") \" + copy[i].message;\n\t\t\t}\n\t\t}\n\n\t\tif (logLevel >= LogLevel.All) {\n\t\t\tconsole.log(...copy);\n\t\t} else if (logLevel >= LogLevel.Warnings) {\n\t\t\tconsole.warn(\"WARNING\", ...copy);\n\t\t} else if (logLevel >= LogLevel.Errors) {\n\t\t\tconsole.error(\"ERROR\", ...copy);\n\t\t}\n\t}\n}\n\nexport default new Logger();\n","import { EventEmitter } from \"eventemitter3\";\nimport logger from \"./logger\";\nimport { SocketEventType, ServerMessageType } from \"./enums\";\nimport { version } from \"../package.json\";\n\n/**\n * An abstraction on top of WebSockets to provide fastest\n * possible connection for peers.\n */\nexport class Socket extends EventEmitter {\n\tprivate _disconnected: boolean = true;\n\tprivate _id?: string;\n\tprivate _messagesQueue: Array<object> = [];\n\tprivate _socket?: WebSocket;\n\tprivate _wsPingTimer?: any;\n\tprivate readonly _baseUrl: string;\n\n\tconstructor(\n\t\tsecure: any,\n\t\thost: string,\n\t\tport: number,\n\t\tpath: string,\n\t\tkey: string,\n\t\tprivate readonly pingInterval: number = 5000,\n\t) {\n\t\tsuper();\n\n\t\tconst wsProtocol = secure ? \"wss://\" : \"ws://\";\n\n\t\tthis._baseUrl = wsProtocol + host + \":\" + port + path + \"peerjs?key=\" + key;\n\t}\n\n\tstart(id: string, token: string): void {\n\t\tthis._id = id;\n\n\t\tconst wsUrl = `${this._baseUrl}&id=${id}&token=${token}`;\n\n\t\tif (!!this._socket || !this._disconnected) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._socket = new WebSocket(wsUrl + \"&version=\" + version);\n\t\tthis._disconnected = false;\n\n\t\tthis._socket.onmessage = (event) => {\n\t\t\tlet data;\n\n\t\t\ttry {\n\t\t\t\tdata = JSON.parse(event.data);\n\t\t\t\tlogger.log(\"Server message received:\", data);\n\t\t\t} catch (e) {\n\t\t\t\tlogger.log(\"Invalid server message\", event.data);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.emit(SocketEventType.Message, data);\n\t\t};\n\n\t\tthis._socket.onclose = (event) => {\n\t\t\tif (this._disconnected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlogger.log(\"Socket closed.\", event);\n\n\t\t\tthis._cleanup();\n\t\t\tthis._disconnected = true;\n\n\t\t\tthis.emit(SocketEventType.Disconnected);\n\t\t};\n\n\t\t// Take care of the queue of connections if necessary and make sure Peer knows\n\t\t// socket is open.\n\t\tthis._socket.onopen = () => {\n\t\t\tif (this._disconnected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._sendQueuedMessages();\n\n\t\t\tlogger.log(\"Socket open\");\n\n\t\t\tthis._scheduleHeartbeat();\n\t\t};\n\t}\n\n\tprivate _scheduleHeartbeat(): void {\n\t\tthis._wsPingTimer = setTimeout(() => {\n\t\t\tthis._sendHeartbeat();\n\t\t}, this.pingInterval);\n\t}\n\n\tprivate _sendHeartbeat(): void {\n\t\tif (!this._wsOpen()) {\n\t\t\tlogger.log(`Cannot send heartbeat, because socket closed`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = JSON.stringify({ type: ServerMessageType.Heartbeat });\n\n\t\tthis._socket!.send(message);\n\n\t\tthis._scheduleHeartbeat();\n\t}\n\n\t/** Is the websocket currently open? */\n\tprivate _wsOpen(): boolean {\n\t\treturn !!this._socket && this._socket.readyState === 1;\n\t}\n\n\t/** Send queued messages. */\n\tprivate _sendQueuedMessages(): void {\n\t\t//Create copy of queue and clear it,\n\t\t//because send method push the message back to queue if smth will go wrong\n\t\tconst copiedQueue = [...this._messagesQueue];\n\t\tthis._messagesQueue = [];\n\n\t\tfor (const message of copiedQueue) {\n\t\t\tthis.send(message);\n\t\t}\n\t}\n\n\t/** Exposed send for DC & Peer. */\n\tsend(data: any): void {\n\t\tif (this._disconnected) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If we didn't get an ID yet, we can't yet send anything so we should queue\n\t\t// up these messages.\n\t\tif (!this._id) {\n\t\t\tthis._messagesQueue.push(data);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!data.type) {\n\t\t\tthis.emit(SocketEventType.Error, \"Invalid message\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._wsOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = JSON.stringify(data);\n\n\t\tthis._socket!.send(message);\n\t}\n\n\tclose(): void {\n\t\tif (this._disconnected) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._cleanup();\n\n\t\tthis._disconnected = true;\n\t}\n\n\tprivate _cleanup(): void {\n\t\tif (this._socket) {\n\t\t\tthis._socket.onopen =\n\t\t\t\tthis._socket.onmessage =\n\t\t\t\tthis._socket.onclose =\n\t\t\t\t\tnull;\n\t\t\tthis._socket.close();\n\t\t\tthis._socket = undefined;\n\t\t}\n\n\t\tclearTimeout(this._wsPingTimer!);\n\t}\n}\n","export enum ConnectionType {\n\tData = \"data\",\n\tMedia = \"media\",\n}\n\nexport enum PeerErrorType {\n\tBrowserIncompatible = \"browser-incompatible\",\n\tDisconnected = \"disconnected\",\n\tInvalidID = \"invalid-id\",\n\tInvalidKey = \"invalid-key\",\n\tNetwork = \"network\",\n\tPeerUnavailable = \"peer-unavailable\",\n\tSslUnavailable = \"ssl-unavailable\",\n\tServerError = \"server-error\",\n\tSocketError = \"socket-error\",\n\tSocketClosed = \"socket-closed\",\n\tUnavailableID = \"unavailable-id\",\n\tWebRTC = \"webrtc\",\n}\n\nexport enum SerializationType {\n\tBinary = \"binary\",\n\tBinaryUTF8 = \"binary-utf8\",\n\tJSON = \"json\",\n}\n\nexport enum SocketEventType {\n\tMessage = \"message\",\n\tDisconnected = \"disconnected\",\n\tError = \"error\",\n\tClose = \"close\",\n}\n\nexport enum ServerMessageType {\n\tHeartbeat = \"HEARTBEAT\",\n\tCandidate = \"CANDIDATE\",\n\tOffer = \"OFFER\",\n\tAnswer = \"ANSWER\",\n\tOpen = \"OPEN\", // The connection to the server is open.\n\tError = \"ERROR\", // Server error.\n\tIdTaken = \"ID-TAKEN\", // The selected ID is taken.\n\tInvalidKey = \"INVALID-KEY\", // The given API key cannot be found.\n\tLeave = \"LEAVE\", // Another peer has closed its connection to this peer.\n\tExpire = \"EXPIRE\", // The offer sent to a peer has expired without response.\n}\n","{\n\t\"name\": \"peerjs\",\n\t\"version\": \"1.4.7\",\n\t\"keywords\": [\n\t\t\"peerjs\",\n\t\t\"webrtc\",\n\t\t\"p2p\",\n\t\t\"rtc\"\n\t],\n\t\"description\": \"PeerJS client\",\n\t\"homepage\": \"https://peerjs.com\",\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/peers/peerjs/issues\"\n\t},\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/peers/peerjs\"\n\t},\n\t\"license\": \"MIT\",\n\t\"contributors\": [\n\t\t\"Michelle Bu <michelle@michellebu.com>\",\n\t\t\"afrokick <devbyru@gmail.com>\",\n\t\t\"ericz <really.ez@gmail.com>\",\n\t\t\"Jairo <kidandcat@gmail.com>\",\n\t\t\"Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>\",\n\t\t\"Jairo Caro-Accino Viciana <jairo@galax.be>\",\n\t\t\"Carlos Caballero <carlos.caballero.gonzalez@gmail.com>\",\n\t\t\"hc <hheennrryy@gmail.com>\",\n\t\t\"Muhammad Asif <capripio@gmail.com>\",\n\t\t\"PrashoonB <prashoonbhattacharjee@gmail.com>\",\n\t\t\"Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>\",\n\t\t\"akotynski <aleksanderkotbury@gmail.com>\",\n\t\t\"lmb <i@lmb.io>\",\n\t\t\"Jairooo <jairocaro@msn.com>\",\n\t\t\"Moritz Stückler <moritz.stueckler@gmail.com>\",\n\t\t\"Simon <crydotsnakegithub@gmail.com>\",\n\t\t\"Denis Lukov <denismassters@gmail.com>\",\n\t\t\"Philipp Hancke <fippo@andyet.net>\",\n\t\t\"Hans Oksendahl <hansoksendahl@gmail.com>\",\n\t\t\"Jess <jessachandler@gmail.com>\",\n\t\t\"khankuan <khankuan@gmail.com>\",\n\t\t\"DUODVK <kurmanov.work@gmail.com>\",\n\t\t\"XiZhao <kwang1imsa@gmail.com>\",\n\t\t\"Matthias Lohr <matthias@lohr.me>\",\n\t\t\"=frank tree <=frnktrb@googlemail.com>\",\n\t\t\"Andre Eckardt <aeckardt@outlook.com>\",\n\t\t\"Chris Cowan <agentme49@gmail.com>\",\n\t\t\"Alex Chuev <alex@chuev.com>\",\n\t\t\"alxnull <alxnull@e.mail.de>\",\n\t\t\"Yemel Jardi <angel.jardi@gmail.com>\",\n\t\t\"Ben Parnell <benjaminparnell.94@gmail.com>\",\n\t\t\"Benny Lichtner <bennlich@gmail.com>\",\n\t\t\"fresheneesz <bitetrudpublic@gmail.com>\",\n\t\t\"bob.barstead@exaptive.com <bob.barstead@exaptive.com>\",\n\t\t\"chandika <chandika@gmail.com>\",\n\t\t\"emersion <contact@emersion.fr>\",\n\t\t\"Christopher Van <cvan@users.noreply.github.com>\",\n\t\t\"eddieherm <edhermoso@gmail.com>\",\n\t\t\"Eduardo Pinho <enet4mikeenet@gmail.com>\",\n\t\t\"Evandro Zanatta <ezanatta@tray.net.br>\",\n\t\t\"Gardner Bickford <gardner@users.noreply.github.com>\",\n\t\t\"Gian Luca <gianluca.cecchi@cynny.com>\",\n\t\t\"PatrickJS <github@gdi2290.com>\",\n\t\t\"jonnyf <github@jonathanfoss.co.uk>\",\n\t\t\"Hizkia Felix <hizkifw@gmail.com>\",\n\t\t\"Hristo Oskov <hristo.oskov@gmail.com>\",\n\t\t\"Isaac Madwed <i.madwed@gmail.com>\",\n\t\t\"Ilya Konanykhin <ilya.konanykhin@gmail.com>\",\n\t\t\"jasonbarry <jasbarry@me.com>\",\n\t\t\"Jonathan Burke <jonathan.burke.1311@googlemail.com>\",\n\t\t\"Josh Hamit <josh.hamit@gmail.com>\",\n\t\t\"Jordan Austin <jrax86@gmail.com>\",\n\t\t\"Joel Wetzell <jwetzell@yahoo.com>\",\n\t\t\"xizhao <kevin.wang@cloudera.com>\",\n\t\t\"Alberto Torres <kungfoobar@gmail.com>\",\n\t\t\"Jonathan Mayol <mayoljonathan@gmail.com>\",\n\t\t\"Jefferson Felix <me@jsfelix.dev>\",\n\t\t\"Rolf Erik Lekang <me@rolflekang.com>\",\n\t\t\"Kevin Mai-Husan Chia <mhchia@users.noreply.github.com>\",\n\t\t\"Pepijn de Vos <pepijndevos@gmail.com>\",\n\t\t\"JooYoung <qkdlql@naver.com>\",\n\t\t\"Tobias Speicher <rootcommander@gmail.com>\",\n\t\t\"Steve Blaurock <sblaurock@gmail.com>\",\n\t\t\"Kyrylo Shegeda <shegeda@ualberta.ca>\",\n\t\t\"Diwank Singh Tomer <singh@diwank.name>\",\n\t\t\"Sören Balko <Soeren.Balko@gmail.com>\",\n\t\t\"Arpit Solanki <solankiarpit1997@gmail.com>\",\n\t\t\"Yuki Ito <yuki@gnnk.net>\",\n\t\t\"Artur Zayats <zag2art@gmail.com>\"\n\t],\n\t\"funding\": {\n\t\t\"type\": \"opencollective\",\n\t\t\"url\": \"https://opencollective.com/peer\"\n\t},\n\t\"collective\": {\n\t\t\"type\": \"opencollective\",\n\t\t\"url\": \"https://opencollective.com/peer\"\n\t},\n\t\"files\": [\n\t\t\"dist/*\"\n\t],\n\t\"sideEffects\": [\n\t\t\"lib/global.ts\",\n\t\t\"lib/supports.ts\"\n\t],\n\t\"main\": \"dist/bundler.cjs\",\n\t\"module\": \"dist/bundler.mjs\",\n\t\"browser-minified\": \"dist/peerjs.min.js\",\n\t\"browser-unminified\": \"dist/peerjs.js\",\n\t\"types\": \"dist/types.d.ts\",\n\t\"engines\": {\n\t\t\"node\": \">= 10\"\n\t},\n\t\"targets\": {\n\t\t\"types\": {\n\t\t\t\"source\": \"lib/exports.ts\"\n\t\t},\n\t\t\"main\": {\n\t\t\t\"source\": \"lib/exports.ts\",\n\t\t\t\"sourceMap\": {\n\t\t\t\t\"inlineSources\": true\n\t\t\t}\n\t\t},\n\t\t\"module\": {\n\t\t\t\"source\": \"lib/exports.ts\",\n\t\t\t\"includeNodeModules\": [\n\t\t\t\t\"eventemitter3\"\n\t\t\t],\n\t\t\t\"sourceMap\": {\n\t\t\t\t\"inlineSources\": true\n\t\t\t}\n\t\t},\n\t\t\"browser-minified\": {\n\t\t\t\"context\": \"browser\",\n\t\t\t\"outputFormat\": \"global\",\n\t\t\t\"optimize\": true,\n\t\t\t\"engines\": {\n\t\t\t\t\"browsers\": \"cover 99%, not dead\"\n\t\t\t},\n\t\t\t\"source\": \"lib/global.ts\"\n\t\t},\n\t\t\"browser-unminified\": {\n\t\t\t\"context\": \"browser\",\n\t\t\t\"outputFormat\": \"global\",\n\t\t\t\"optimize\": false,\n\t\t\t\"engines\": {\n\t\t\t\t\"browsers\": \"cover 99%, not dead\"\n\t\t\t},\n\t\t\t\"source\": \"lib/global.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"contributors\": \"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\\"chore(contributors): update and sort contributors list\\\"\",\n\t\t\"check\": \"tsc --noEmit\",\n\t\t\"watch\": \"parcel watch\",\n\t\t\"build\": \"rm -rf dist && parcel build\",\n\t\t\"prepublishOnly\": \"npm run build\",\n\t\t\"test\": \"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts\",\n\t\t\"format\": \"prettier --write .\",\n\t\t\"semantic-release\": \"semantic-release\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@parcel/config-default\": \"^2.5.0\",\n\t\t\"@parcel/packager-ts\": \"^2.5.0\",\n\t\t\"@parcel/transformer-typescript-tsc\": \"^2.5.0\",\n\t\t\"@parcel/transformer-typescript-types\": \"^2.5.0\",\n\t\t\"@semantic-release/changelog\": \"^6.0.1\",\n\t\t\"@semantic-release/git\": \"^10.0.1\",\n\t\t\"@types/chai\": \"^4.3.0\",\n\t\t\"@types/mocha\": \"^9.1.0\",\n\t\t\"@types/node\": \"^17.0.18\",\n\t\t\"chai\": \"^4.3.6\",\n\t\t\"git-authors-cli\": \"^1.0.40\",\n\t\t\"jsdom\": \"^19.0.0\",\n\t\t\"jsdom-global\": \"^3.0.2\",\n\t\t\"mocha\": \"^9.2.0\",\n\t\t\"mock-socket\": \"8.0.5\",\n\t\t\"parcel\": \"^2.5.0\",\n\t\t\"parcel-transformer-tsc-sourcemaps\": \"^1.0.2\",\n\t\t\"prettier\": \"^2.6.2\",\n\t\t\"semantic-release\": \"^19.0.2\",\n\t\t\"standard\": \"^16.0.4\",\n\t\t\"ts-node\": \"^10.5.0\",\n\t\t\"typescript\": \"^4.5.5\"\n\t},\n\t\"dependencies\": {\n\t\t\"@swc/helpers\": \"^0.3.13\",\n\t\t\"eventemitter3\": \"^4.0.7\",\n\t\t\"peerjs-js-binarypack\": \"1.0.1\",\n\t\t\"webrtc-adapter\": \"^7.7.1\"\n\t}\n}\n","import { util } from \"./util\";\nimport logger from \"./logger\";\nimport { Negotiator } from \"./negotiator\";\nimport { ConnectionType, ServerMessageType } from \"./enums\";\nimport { Peer } from \"./peer\";\nimport { BaseConnection } from \"./baseconnection\";\nimport { ServerMessage } from \"./servermessage\";\nimport type { AnswerOption } from \"./optionInterfaces\";\n\ntype MediaConnectionEvents = {\n\t/**\n\t * Emitted when a connection to the PeerServer is established.\n\t */\n\tstream: (stream: MediaStream) => void;\n};\n\n/**\n * Wraps the streaming interface between two Peers.\n */\nexport class MediaConnection extends BaseConnection<MediaConnectionEvents> {\n\tprivate static readonly ID_PREFIX = \"mc_\";\n\n\tprivate _negotiator: Negotiator<MediaConnectionEvents, MediaConnection>;\n\tprivate _localStream: MediaStream;\n\tprivate _remoteStream: MediaStream;\n\n\tget type() {\n\t\treturn ConnectionType.Media;\n\t}\n\n\tget localStream(): MediaStream {\n\t\treturn this._localStream;\n\t}\n\tget remoteStream(): MediaStream {\n\t\treturn this._remoteStream;\n\t}\n\n\tconstructor(peerId: string, provider: Peer, options: any) {\n\t\tsuper(peerId, provider, options);\n\n\t\tthis._localStream = this.options._stream;\n\t\tthis.connectionId =\n\t\t\tthis.options.connectionId ||\n\t\t\tMediaConnection.ID_PREFIX + util.randomToken();\n\n\t\tthis._negotiator = new Negotiator(this);\n\n\t\tif (this._localStream) {\n\t\t\tthis._negotiator.startConnection({\n\t\t\t\t_stream: this._localStream,\n\t\t\t\toriginator: true,\n\t\t\t});\n\t\t}\n\t}\n\n\taddStream(remoteStream) {\n\t\tlogger.log(\"Receiving stream\", remoteStream);\n\n\t\tthis._remoteStream = remoteStream;\n\t\tsuper.emit(\"stream\", remoteStream); // Should we call this `open`?\n\t}\n\n\thandleMessage(message: ServerMessage): void {\n\t\tconst type = message.type;\n\t\tconst payload = message.payload;\n\n\t\tswitch (message.type) {\n\t\t\tcase ServerMessageType.Answer:\n\t\t\t\t// Forward to negotiator\n\t\t\t\tthis._negotiator.handleSDP(type, payload.sdp);\n\t\t\t\tthis._open = true;\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.Candidate:\n\t\t\t\tthis._negotiator.handleCandidate(payload.candidate);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlogger.warn(`Unrecognized message type:${type} from peer:${this.peer}`);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tanswer(stream?: MediaStream, options: AnswerOption = {}): void {\n\t\tif (this._localStream) {\n\t\t\tlogger.warn(\n\t\t\t\t\"Local stream already exists on this MediaConnection. Are you answering a call twice?\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._localStream = stream;\n\n\t\tif (options && options.sdpTransform) {\n\t\t\tthis.options.sdpTransform = options.sdpTransform;\n\t\t}\n\n\t\tthis._negotiator.startConnection({\n\t\t\t...this.options._payload,\n\t\t\t_stream: stream,\n\t\t});\n\t\t// Retrieve lost messages stored because PeerConnection not set up.\n\t\tconst messages = this.provider._getMessages(this.connectionId);\n\n\t\tfor (let message of messages) {\n\t\t\tthis.handleMessage(message);\n\t\t}\n\n\t\tthis._open = true;\n\t}\n\n\t/**\n\t * Exposed functionality for users.\n\t */\n\n\t/** Allows user to close connection. */\n\tclose(): void {\n\t\tif (this._negotiator) {\n\t\t\tthis._negotiator.cleanup();\n\t\t\tthis._negotiator = null;\n\t\t}\n\n\t\tthis._localStream = null;\n\t\tthis._remoteStream = null;\n\n\t\tif (this.provider) {\n\t\t\tthis.provider._removeConnection(this);\n\n\t\t\tthis.provider = null;\n\t\t}\n\n\t\tif (this.options && this.options._stream) {\n\t\t\tthis.options._stream = null;\n\t\t}\n\n\t\tif (!this.open) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._open = false;\n\n\t\tsuper.emit(\"close\");\n\t}\n}\n","import { util } from \"./util\";\nimport logger from \"./logger\";\nimport { MediaConnection } from \"./mediaconnection\";\nimport { DataConnection } from \"./dataconnection\";\nimport { ConnectionType, PeerErrorType, ServerMessageType } from \"./enums\";\nimport { BaseConnection, BaseConnectionEvents } from \"./baseconnection\";\nimport { ValidEventTypes } from \"eventemitter3\";\n\n/**\n * Manages all negotiations between Peers.\n */\nexport class Negotiator<\n\tA extends ValidEventTypes,\n\tT extends BaseConnection<A | BaseConnectionEvents>,\n> {\n\tconstructor(readonly connection: T) {}\n\n\t/** Returns a PeerConnection object set up correctly (for data, media). */\n\tstartConnection(options: any) {\n\t\tconst peerConnection = this._startPeerConnection();\n\n\t\t// Set the connection's PC.\n\t\tthis.connection.peerConnection = peerConnection;\n\n\t\tif (this.connection.type === ConnectionType.Media && options._stream) {\n\t\t\tthis._addTracksToConnection(options._stream, peerConnection);\n\t\t}\n\n\t\t// What do we need to do now?\n\t\tif (options.originator) {\n\t\t\tif (this.connection.type === ConnectionType.Data) {\n\t\t\t\tconst dataConnection = <DataConnection>(<unknown>this.connection);\n\n\t\t\t\tconst config: RTCDataChannelInit = { ordered: !!options.reliable };\n\n\t\t\t\tconst dataChannel = peerConnection.createDataChannel(\n\t\t\t\t\tdataConnection.label,\n\t\t\t\t\tconfig,\n\t\t\t\t);\n\t\t\t\tdataConnection.initialize(dataChannel);\n\t\t\t}\n\n\t\t\tthis._makeOffer();\n\t\t} else {\n\t\t\tthis.handleSDP(\"OFFER\", options.sdp);\n\t\t}\n\t}\n\n\t/** Start a PC. */\n\tprivate _startPeerConnection(): RTCPeerConnection {\n\t\tlogger.log(\"Creating RTCPeerConnection.\");\n\n\t\tconst peerConnection = new RTCPeerConnection(\n\t\t\tthis.connection.provider.options.config,\n\t\t);\n\n\t\tthis._setupListeners(peerConnection);\n\n\t\treturn peerConnection;\n\t}\n\n\t/** Set up various WebRTC listeners. */\n\tprivate _setupListeners(peerConnection: RTCPeerConnection) {\n\t\tconst peerId = this.connection.peer;\n\t\tconst connectionId = this.connection.connectionId;\n\t\tconst connectionType = this.connection.type;\n\t\tconst provider = this.connection.provider;\n\n\t\t// ICE CANDIDATES.\n\t\tlogger.log(\"Listening for ICE candidates.\");\n\n\t\tpeerConnection.onicecandidate = (evt) => {\n\t\t\tif (!evt.candidate || !evt.candidate.candidate) return;\n\n\t\t\tlogger.log(`Received ICE candidates for ${peerId}:`, evt.candidate);\n\n\t\t\tprovider.socket.send({\n\t\t\t\ttype: ServerMessageType.Candidate,\n\t\t\t\tpayload: {\n\t\t\t\t\tcandidate: evt.candidate,\n\t\t\t\t\ttype: connectionType,\n\t\t\t\t\tconnectionId: connectionId,\n\t\t\t\t},\n\t\t\t\tdst: peerId,\n\t\t\t});\n\t\t};\n\n\t\tpeerConnection.oniceconnectionstatechange = () => {\n\t\t\tswitch (peerConnection.iceConnectionState) {\n\t\t\t\tcase \"failed\":\n\t\t\t\t\tlogger.log(\n\t\t\t\t\t\t\"iceConnectionState is failed, closing connections to \" + peerId,\n\t\t\t\t\t);\n\t\t\t\t\tthis.connection.emit(\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\tnew Error(\"Negotiation of connection to \" + peerId + \" failed.\"),\n\t\t\t\t\t);\n\t\t\t\t\tthis.connection.close();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"closed\":\n\t\t\t\t\tlogger.log(\n\t\t\t\t\t\t\"iceConnectionState is closed, closing connections to \" + peerId,\n\t\t\t\t\t);\n\t\t\t\t\tthis.connection.emit(\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\tnew Error(\"Connection to \" + peerId + \" closed.\"),\n\t\t\t\t\t);\n\t\t\t\t\tthis.connection.close();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"disconnected\":\n\t\t\t\t\tlogger.log(\n\t\t\t\t\t\t\"iceConnectionState changed to disconnected on the connection with \" +\n\t\t\t\t\t\t\tpeerId,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"completed\":\n\t\t\t\t\tpeerConnection.onicecandidate = util.noop;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.connection.emit(\n\t\t\t\t\"iceStateChanged\",\n\t\t\t\tpeerConnection.iceConnectionState,\n\t\t\t);\n\t\t};\n\n\t\t// DATACONNECTION.\n\t\tlogger.log(\"Listening for data channel\");\n\t\t// Fired between offer and answer, so options should already be saved\n\t\t// in the options hash.\n\t\tpeerConnection.ondatachannel = (evt) => {\n\t\t\tlogger.log(\"Received data channel\");\n\n\t\t\tconst dataChannel = evt.channel;\n\t\t\tconst connection = <DataConnection>(\n\t\t\t\tprovider.getConnection(peerId, connectionId)\n\t\t\t);\n\n\t\t\tconnection.initialize(dataChannel);\n\t\t};\n\n\t\t// MEDIACONNECTION.\n\t\tlogger.log(\"Listening for remote stream\");\n\n\t\tpeerConnection.ontrack = (evt) => {\n\t\t\tlogger.log(\"Received remote stream\");\n\n\t\t\tconst stream = evt.streams[0];\n\t\t\tconst connection = provider.getConnection(peerId, connectionId);\n\n\t\t\tif (connection.type === ConnectionType.Media) {\n\t\t\t\tconst mediaConnection = <MediaConnection>connection;\n\n\t\t\t\tthis._addStreamToMediaConnection(stream, mediaConnection);\n\t\t\t}\n\t\t};\n\t}\n\n\tcleanup(): void {\n\t\tlogger.log(\"Cleaning up PeerConnection to \" + this.connection.peer);\n\n\t\tconst peerConnection = this.connection.peerConnection;\n\n\t\tif (!peerConnection) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connection.peerConnection = null;\n\n\t\t//unsubscribe from all PeerConnection's events\n\t\tpeerConnection.onicecandidate =\n\t\t\tpeerConnection.oniceconnectionstatechange =\n\t\t\tpeerConnection.ondatachannel =\n\t\t\tpeerConnection.ontrack =\n\t\t\t\t() => {};\n\n\t\tconst peerConnectionNotClosed = peerConnection.signalingState !== \"closed\";\n\t\tlet dataChannelNotClosed = false;\n\n\t\tif (this.connection.type === ConnectionType.Data) {\n\t\t\tconst dataConnection = <DataConnection>(<unknown>this.connection);\n\t\t\tconst dataChannel = dataConnection.dataChannel;\n\n\t\t\tif (dataChannel) {\n\t\t\t\tdataChannelNotClosed =\n\t\t\t\t\t!!dataChannel.readyState && dataChannel.readyState !== \"closed\";\n\t\t\t}\n\t\t}\n\n\t\tif (peerConnectionNotClosed || dataChannelNotClosed) {\n\t\t\tpeerConnection.close();\n\t\t}\n\t}\n\n\tprivate async _makeOffer(): Promise<void> {\n\t\tconst peerConnection = this.connection.peerConnection;\n\t\tconst provider = this.connection.provider;\n\n\t\ttry {\n\t\t\tconst offer = await peerConnection.createOffer(\n\t\t\t\tthis.connection.options.constraints,\n\t\t\t);\n\n\t\t\tlogger.log(\"Created offer.\");\n\n\t\t\tif (\n\t\t\t\tthis.connection.options.sdpTransform &&\n\t\t\t\ttypeof this.connection.options.sdpTransform === \"function\"\n\t\t\t) {\n\t\t\t\toffer.sdp =\n\t\t\t\t\tthis.connection.options.sdpTransform(offer.sdp) || offer.sdp;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait peerConnection.setLocalDescription(offer);\n\n\t\t\t\tlogger.log(\n\t\t\t\t\t\"Set localDescription:\",\n\t\t\t\t\toffer,\n\t\t\t\t\t`for:${this.connection.peer}`,\n\t\t\t\t);\n\n\t\t\t\tlet payload: any = {\n\t\t\t\t\tsdp: offer,\n\t\t\t\t\ttype: this.connection.type,\n\t\t\t\t\tconnectionId: this.connection.connectionId,\n\t\t\t\t\tmetadata: this.connection.metadata,\n\t\t\t\t\tbrowser: util.browser,\n\t\t\t\t};\n\n\t\t\t\tif (this.connection.type === ConnectionType.Data) {\n\t\t\t\t\tconst dataConnection = <DataConnection>(<unknown>this.connection);\n\n\t\t\t\t\tpayload = {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tlabel: dataConnection.label,\n\t\t\t\t\t\treliable: dataConnection.reliable,\n\t\t\t\t\t\tserialization: dataConnection.serialization,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tprovider.socket.send({\n\t\t\t\t\ttype: ServerMessageType.Offer,\n\t\t\t\t\tpayload,\n\t\t\t\t\tdst: this.connection.peer,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\t// TODO: investigate why _makeOffer is being called from the answer\n\t\t\t\tif (\n\t\t\t\t\terr !=\n\t\t\t\t\t\"OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer\"\n\t\t\t\t) {\n\t\t\t\t\tprovider.emitError(PeerErrorType.WebRTC, err);\n\t\t\t\t\tlogger.log(\"Failed to setLocalDescription, \", err);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err_1) {\n\t\t\tprovider.emitError(PeerErrorType.WebRTC, err_1);\n\t\t\tlogger.log(\"Failed to createOffer, \", err_1);\n\t\t}\n\t}\n\n\tprivate async _makeAnswer(): Promise<void> {\n\t\tconst peerConnection = this.connection.peerConnection;\n\t\tconst provider = this.connection.provider;\n\n\t\ttry {\n\t\t\tconst answer = await peerConnection.createAnswer();\n\t\t\tlogger.log(\"Created answer.\");\n\n\t\t\tif (\n\t\t\t\tthis.connection.options.sdpTransform &&\n\t\t\t\ttypeof this.connection.options.sdpTransform === \"function\"\n\t\t\t) {\n\t\t\t\tanswer.sdp =\n\t\t\t\t\tthis.connection.options.sdpTransform(answer.sdp) || answer.sdp;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait peerConnection.setLocalDescription(answer);\n\n\t\t\t\tlogger.log(\n\t\t\t\t\t`Set localDescription:`,\n\t\t\t\t\tanswer,\n\t\t\t\t\t`for:${this.connection.peer}`,\n\t\t\t\t);\n\n\t\t\t\tprovider.socket.send({\n\t\t\t\t\ttype: ServerMessageType.Answer,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tsdp: answer,\n\t\t\t\t\t\ttype: this.connection.type,\n\t\t\t\t\t\tconnectionId: this.connection.connectionId,\n\t\t\t\t\t\tbrowser: util.browser,\n\t\t\t\t\t},\n\t\t\t\t\tdst: this.connection.peer,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tprovider.emitError(PeerErrorType.WebRTC, err);\n\t\t\t\tlogger.log(\"Failed to setLocalDescription, \", err);\n\t\t\t}\n\t\t} catch (err_1) {\n\t\t\tprovider.emitError(PeerErrorType.WebRTC, err_1);\n\t\t\tlogger.log(\"Failed to create answer, \", err_1);\n\t\t}\n\t}\n\n\t/** Handle an SDP. */\n\tasync handleSDP(type: string, sdp: any): Promise<void> {\n\t\tsdp = new RTCSessionDescription(sdp);\n\t\tconst peerConnection = this.connection.peerConnection;\n\t\tconst provider = this.connection.provider;\n\n\t\tlogger.log(\"Setting remote description\", sdp);\n\n\t\tconst self = this;\n\n\t\ttry {\n\t\t\tawait peerConnection.setRemoteDescription(sdp);\n\t\t\tlogger.log(`Set remoteDescription:${type} for:${this.connection.peer}`);\n\t\t\tif (type === \"OFFER\") {\n\t\t\t\tawait self._makeAnswer();\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tprovider.emitError(PeerErrorType.WebRTC, err);\n\t\t\tlogger.log(\"Failed to setRemoteDescription, \", err);\n\t\t}\n\t}\n\n\t/** Handle a candidate. */\n\tasync handleCandidate(ice: any): Promise<void> {\n\t\tlogger.log(`handleCandidate:`, ice);\n\n\t\tconst candidate = ice.candidate;\n\t\tconst sdpMLineIndex = ice.sdpMLineIndex;\n\t\tconst sdpMid = ice.sdpMid;\n\t\tconst peerConnection = this.connection.peerConnection;\n\t\tconst provider = this.connection.provider;\n\n\t\ttry {\n\t\t\tawait peerConnection.addIceCandidate(\n\t\t\t\tnew RTCIceCandidate({\n\t\t\t\t\tsdpMid: sdpMid,\n\t\t\t\t\tsdpMLineIndex: sdpMLineIndex,\n\t\t\t\t\tcandidate: candidate,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tlogger.log(`Added ICE candidate for:${this.connection.peer}`);\n\t\t} catch (err) {\n\t\t\tprovider.emitError(PeerErrorType.WebRTC, err);\n\t\t\tlogger.log(\"Failed to handleCandidate, \", err);\n\t\t}\n\t}\n\n\tprivate _addTracksToConnection(\n\t\tstream: MediaStream,\n\t\tpeerConnection: RTCPeerConnection,\n\t): void {\n\t\tlogger.log(`add tracks from stream ${stream.id} to peer connection`);\n\n\t\tif (!peerConnection.addTrack) {\n\t\t\treturn logger.error(\n\t\t\t\t`Your browser does't support RTCPeerConnection#addTrack. Ignored.`,\n\t\t\t);\n\t\t}\n\n\t\tstream.getTracks().forEach((track) => {\n\t\t\tpeerConnection.addTrack(track, stream);\n\t\t});\n\t}\n\n\tprivate _addStreamToMediaConnection(\n\t\tstream: MediaStream,\n\t\tmediaConnection: MediaConnection,\n\t): void {\n\t\tlogger.log(\n\t\t\t`add stream ${stream.id} to media connection ${mediaConnection.connectionId}`,\n\t\t);\n\n\t\tmediaConnection.addStream(stream);\n\t}\n}\n","import { EventEmitter, ValidEventTypes } from \"eventemitter3\";\nimport { Peer } from \"./peer\";\nimport { ServerMessage } from \"./servermessage\";\nimport { ConnectionType } from \"./enums\";\n\nexport type BaseConnectionEvents = {\n\t/**\n\t * Emitted when either you or the remote peer closes the connection.\n\t */\n\tclose: () => void;\n\terror: (error: Error) => void;\n\ticeStateChanged: (state: RTCIceConnectionState) => void;\n};\n\nexport abstract class BaseConnection<\n\tT extends ValidEventTypes,\n> extends EventEmitter<T & BaseConnectionEvents> {\n\tprotected _open = false;\n\n\treadonly metadata: any;\n\tconnectionId: string;\n\n\tpeerConnection: RTCPeerConnection;\n\n\tabstract get type(): ConnectionType;\n\n\tget open() {\n\t\treturn this._open;\n\t}\n\n\tconstructor(\n\t\treadonly peer: string,\n\t\tpublic provider: Peer,\n\t\treadonly options: any,\n\t) {\n\t\tsuper();\n\n\t\tthis.metadata = options.metadata;\n\t}\n\n\tabstract close(): void;\n\n\tabstract handleMessage(message: ServerMessage): void;\n}\n","import { util } from \"./util\";\nimport logger from \"./logger\";\nimport { Negotiator } from \"./negotiator\";\nimport { ConnectionType, SerializationType, ServerMessageType } from \"./enums\";\nimport { Peer } from \"./peer\";\nimport { BaseConnection } from \"./baseconnection\";\nimport { ServerMessage } from \"./servermessage\";\nimport { EncodingQueue } from \"./encodingQueue\";\nimport type { DataConnection as IDataConnection } from \"./dataconnection\";\n\ntype DataConnectionEvents = {\n\t/**\n\t * Emitted when data is received from the remote peer.\n\t */\n\tdata: (data: unknown) => void;\n\t/**\n\t * Emitted when the connection is established and ready-to-use.\n\t */\n\topen: () => void;\n};\n\n/**\n * Wraps a DataChannel between two Peers.\n */\nexport class DataConnection\n\textends BaseConnection<DataConnectionEvents>\n\timplements IDataConnection\n{\n\tprivate static readonly ID_PREFIX = \"dc_\";\n\tprivate static readonly MAX_BUFFERED_AMOUNT = 8 * 1024 * 1024;\n\n\tprivate _negotiator: Negotiator<DataConnectionEvents, DataConnection>;\n\treadonly label: string;\n\treadonly serialization: SerializationType;\n\treadonly reliable: boolean;\n\tstringify: (data: any) => string = JSON.stringify;\n\tparse: (data: string) => any = JSON.parse;\n\n\tget type() {\n\t\treturn ConnectionType.Data;\n\t}\n\n\tprivate _buffer: any[] = [];\n\tprivate _bufferSize = 0;\n\tprivate _buffering = false;\n\tprivate _chunkedData: {\n\t\t[id: number]: {\n\t\t\tdata: Blob[];\n\t\t\tcount: number;\n\t\t\ttotal: number;\n\t\t};\n\t} = {};\n\n\tprivate _dc: RTCDataChannel;\n\tprivate _encodingQueue = new EncodingQueue();\n\n\tget dataChannel(): RTCDataChannel {\n\t\treturn this._dc;\n\t}\n\n\tget bufferSize(): number {\n\t\treturn this._bufferSize;\n\t}\n\n\tconstructor(peerId: string, provider: Peer, options: any) {\n\t\tsuper(peerId, provider, options);\n\n\t\tthis.connectionId =\n\t\t\tthis.options.connectionId ||\n\t\t\tDataConnection.ID_PREFIX + util.randomToken();\n\n\t\tthis.label = this.options.label || this.connectionId;\n\t\tthis.serialization = this.options.serialization || SerializationType.Binary;\n\t\tthis.reliable = !!this.options.reliable;\n\n\t\tthis._encodingQueue.on(\"done\", (ab: ArrayBuffer) => {\n\t\t\tthis._bufferedSend(ab);\n\t\t});\n\n\t\tthis._encodingQueue.on(\"error\", () => {\n\t\t\tlogger.error(\n\t\t\t\t`DC#${this.connectionId}: Error occured in encoding from blob to arraybuffer, close DC`,\n\t\t\t);\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis._negotiator = new Negotiator(this);\n\n\t\tthis._negotiator.startConnection(\n\t\t\tthis.options._payload || {\n\t\t\t\toriginator: true,\n\t\t\t},\n\t\t);\n\t}\n\n\t/** Called by the Negotiator when the DataChannel is ready. */\n\tinitialize(dc: RTCDataChannel): void {\n\t\tthis._dc = dc;\n\t\tthis._configureDataChannel();\n\t}\n\n\tprivate _configureDataChannel(): void {\n\t\tif (!util.supports.binaryBlob || util.supports.reliable) {\n\t\t\tthis.dataChannel.binaryType = \"arraybuffer\";\n\t\t}\n\n\t\tthis.dataChannel.onopen = () => {\n\t\t\tlogger.log(`DC#${this.connectionId} dc connection success`);\n\t\t\tthis._open = true;\n\t\t\tthis.emit(\"open\");\n\t\t};\n\n\t\tthis.dataChannel.onmessage = (e) => {\n\t\t\tlogger.log(`DC#${this.connectionId} dc onmessage:`, e.data);\n\t\t\tthis._handleDataMessage(e);\n\t\t};\n\n\t\tthis.dataChannel.onclose = () => {\n\t\t\tlogger.log(`DC#${this.connectionId} dc closed for:`, this.peer);\n\t\t\tthis.close();\n\t\t};\n\t}\n\n\t// Handles a DataChannel message.\n\tprivate _handleDataMessage({\n\t\tdata,\n\t}: {\n\t\tdata: Blob | ArrayBuffer | string;\n\t}): void {\n\t\tconst datatype = data.constructor;\n\n\t\tconst isBinarySerialization =\n\t\t\tthis.serialization === SerializationType.Binary ||\n\t\t\tthis.serialization === SerializationType.BinaryUTF8;\n\n\t\tlet deserializedData: any = data;\n\n\t\tif (isBinarySerialization) {\n\t\t\tif (datatype === Blob) {\n\t\t\t\t// Datatype should never be blob\n\t\t\t\tutil.blobToArrayBuffer(data as Blob, (ab) => {\n\t\t\t\t\tconst unpackedData = util.unpack(ab);\n\t\t\t\t\tthis.emit(\"data\", unpackedData);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t} else if (datatype === ArrayBuffer) {\n\t\t\t\tdeserializedData = util.unpack(data as ArrayBuffer);\n\t\t\t} else if (datatype === String) {\n\t\t\t\t// String fallback for binary data for browsers that don't support binary yet\n\t\t\t\tconst ab = util.binaryStringToArrayBuffer(data as string);\n\t\t\t\tdeserializedData = util.unpack(ab);\n\t\t\t}\n\t\t} else if (this.serialization === SerializationType.JSON) {\n\t\t\tdeserializedData = this.parse(data as string);\n\t\t}\n\n\t\t// Check if we've chunked--if so, piece things back together.\n\t\t// We're guaranteed that this isn't 0.\n\t\tif (deserializedData.__peerData) {\n\t\t\tthis._handleChunk(deserializedData);\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.emit(\"data\", deserializedData);\n\t}\n\n\tprivate _handleChunk(data: {\n\t\t__peerData: number;\n\t\tn: number;\n\t\ttotal: number;\n\t\tdata: Blob;\n\t}): void {\n\t\tconst id = data.__peerData;\n\t\tconst chunkInfo = this._chunkedData[id] || {\n\t\t\tdata: [],\n\t\t\tcount: 0,\n\t\t\ttotal: data.total,\n\t\t};\n\n\t\tchunkInfo.data[data.n] = data.data;\n\t\tchunkInfo.count++;\n\t\tthis._chunkedData[id] = chunkInfo;\n\n\t\tif (chunkInfo.total === chunkInfo.count) {\n\t\t\t// Clean up before making the recursive call to `_handleDataMessage`.\n\t\t\tdelete this._chunkedData[id];\n\n\t\t\t// We've received all the chunks--time to construct the complete data.\n\t\t\tconst data = new Blob(chunkInfo.data);\n\t\t\tthis._handleDataMessage({ data });\n\t\t}\n\t}\n\n\t/**\n\t * Exposed functionality for users.\n\t */\n\n\t/** Allows user to close connection. */\n\tclose(): void {\n\t\tthis._buffer = [];\n\t\tthis._bufferSize = 0;\n\t\tthis._chunkedData = {};\n\n\t\tif (this._negotiator) {\n\t\t\tthis._negotiator.cleanup();\n\t\t\tthis._negotiator = null;\n\t\t}\n\n\t\tif (this.provider) {\n\t\t\tthis.provider._removeConnection(this);\n\n\t\t\tthis.provider = null;\n\t\t}\n\n\t\tif (this.dataChannel) {\n\t\t\tthis.dataChannel.onopen = null;\n\t\t\tthis.dataChannel.onmessage = null;\n\t\t\tthis.dataChannel.onclose = null;\n\t\t\tthis._dc = null;\n\t\t}\n\n\t\tif (this._encodingQueue) {\n\t\t\tthis._encodingQueue.destroy();\n\t\t\tthis._encodingQueue.removeAllListeners();\n\t\t\tthis._encodingQueue = null;\n\t\t}\n\n\t\tif (!this.open) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._open = false;\n\n\t\tsuper.emit(\"close\");\n\t}\n\n\t/** Allows user to send data. */\n\tsend(data: any, chunked?: boolean): void {\n\t\tif (!this.open) {\n\t\t\tsuper.emit(\n\t\t\t\t\"error\",\n\t\t\t\tnew Error(\n\t\t\t\t\t\"Connection is not open. You should listen for the `open` event before sending messages.\",\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.serialization === SerializationType.JSON) {\n\t\t\tthis._bufferedSend(this.stringify(data));\n\t\t} else if (\n\t\t\tthis.serialization === SerializationType.Binary ||\n\t\t\tthis.serialization === SerializationType.BinaryUTF8\n\t\t) {\n\t\t\tconst blob = util.pack(data);\n\n\t\t\tif (!chunked && blob.size > util.chunkedMTU) {\n\t\t\t\tthis._sendChunks(blob);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!util.supports.binaryBlob) {\n\t\t\t\t// We only do this if we really need to (e.g. blobs are not supported),\n\t\t\t\t// because this conversion is costly.\n\t\t\t\tthis._encodingQueue.enque(blob);\n\t\t\t} else {\n\t\t\t\tthis._bufferedSend(blob);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._bufferedSend(data);\n\t\t}\n\t}\n\n\tprivate _bufferedSend(msg: any): void {\n\t\tif (this._buffering || !this._trySend(msg)) {\n\t\t\tthis._buffer.push(msg);\n\t\t\tthis._bufferSize = this._buffer.length;\n\t\t}\n\t}\n\n\t// Returns true if the send succeeds.\n\tprivate _trySend(msg: any): boolean {\n\t\tif (!this.open) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.dataChannel.bufferedAmount > DataConnection.MAX_BUFFERED_AMOUNT) {\n\t\t\tthis._buffering = true;\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._buffering = false;\n\t\t\t\tthis._tryBuffer();\n\t\t\t}, 50);\n\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tthis.dataChannel.send(msg);\n\t\t} catch (e) {\n\t\t\tlogger.error(`DC#:${this.connectionId} Error when sending:`, e);\n\t\t\tthis._buffering = true;\n\n\t\t\tthis.close();\n\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t// Try to send the first message in the buffer.\n\tprivate _tryBuffer(): void {\n\t\tif (!this.open) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._buffer.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst msg = this._buffer[0];\n\n\t\tif (this._trySend(msg)) {\n\t\t\tthis._buffer.shift();\n\t\t\tthis._bufferSize = this._buffer.length;\n\t\t\tthis._tryBuffer();\n\t\t}\n\t}\n\n\tprivate _sendChunks(blob: Blob): void {\n\t\tconst blobs = util.chunk(blob);\n\t\tlogger.log(`DC#${this.connectionId} Try to send ${blobs.length} chunks...`);\n\n\t\tfor (let blob of blobs) {\n\t\t\tthis.send(blob, true);\n\t\t}\n\t}\n\n\thandleMessage(message: ServerMessage): void {\n\t\tconst payload = message.payload;\n\n\t\tswitch (message.type) {\n\t\t\tcase ServerMessageType.Answer:\n\t\t\t\tthis._negotiator.handleSDP(message.type, payload.sdp);\n\t\t\t\tbreak;\n\t\t\tcase ServerMessageType.Candidate:\n\t\t\t\tthis._negotiator.handleCandidate(payload.candidate);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlogger.warn(\n\t\t\t\t\t\"Unrecognized message type:\",\n\t\t\t\t\tmessage.type,\n\t\t\t\t\t\"from peer:\",\n\t\t\t\t\tthis.peer,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","import { EventEmitter } from \"eventemitter3\";\nimport logger from \"./logger\";\n\nexport class EncodingQueue extends EventEmitter {\n\treadonly fileReader: FileReader = new FileReader();\n\n\tprivate _queue: Blob[] = [];\n\tprivate _processing: boolean = false;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.fileReader.onload = (evt) => {\n\t\t\tthis._processing = false;\n\n\t\t\tif (evt.target) {\n\t\t\t\tthis.emit(\"done\", evt.target.result as ArrayBuffer);\n\t\t\t}\n\n\t\t\tthis.doNextTask();\n\t\t};\n\n\t\tthis.fileReader.onerror = (evt) => {\n\t\t\tlogger.error(`EncodingQueue error:`, evt);\n\t\t\tthis._processing = false;\n\t\t\tthis.destroy();\n\t\t\tthis.emit(\"error\", evt);\n\t\t};\n\t}\n\n\tget queue(): Blob[] {\n\t\treturn this._queue;\n\t}\n\n\tget size(): number {\n\t\treturn this.queue.length;\n\t}\n\n\tget processing(): boolean {\n\t\treturn this._processing;\n\t}\n\n\tenque(blob: Blob): void {\n\t\tthis.queue.push(blob);\n\n\t\tif (this.processing) return;\n\n\t\tthis.doNextTask();\n\t}\n\n\tdestroy(): void {\n\t\tthis.fileReader.abort();\n\t\tthis._queue = [];\n\t}\n\n\tprivate doNextTask(): void {\n\t\tif (this.size === 0) return;\n\t\tif (this.processing) return;\n\n\t\tthis._processing = true;\n\n\t\tthis.fileReader.readAsArrayBuffer(this.queue.shift());\n\t}\n}\n","import { util } from \"./util\";\nimport logger from \"./logger\";\nimport { PeerJSOption } from \"./optionInterfaces\";\nimport { version } from \"../package.json\";\n\nexport class API {\n\tconstructor(private readonly _options: PeerJSOption) {}\n\n\tprivate _buildRequest(method: string): Promise<Response> {\n\t\tconst protocol = this._options.secure ? \"https\" : \"http\";\n\t\tconst { host, port, path, key } = this._options;\n\t\tconst url = new URL(`${protocol}://${host}:${port}${path}${key}/${method}`);\n\t\t// TODO: Why timestamp, why random?\n\t\turl.searchParams.set(\"ts\", `${Date.now()}${Math.random()}`);\n\t\turl.searchParams.set(\"version\", version);\n\t\treturn fetch(url.href, {\n\t\t\treferrerPolicy: this._options.referrerPolicy,\n\t\t});\n\t}\n\n\t/** Get a unique ID from the server via XHR and initialize with it. */\n\tasync retrieveId(): Promise<string> {\n\t\ttry {\n\t\t\tconst response = await this._buildRequest(\"id\");\n\n\t\t\tif (response.status !== 200) {\n\t\t\t\tthrow new Error(`Error. Status:${response.status}`);\n\t\t\t}\n\n\t\t\treturn response.text();\n\t\t} catch (error) {\n\t\t\tlogger.error(\"Error retrieving ID\", error);\n\n\t\t\tlet pathError = \"\";\n\n\t\t\tif (\n\t\t\t\tthis._options.path === \"/\" &&\n\t\t\t\tthis._options.host !== util.CLOUD_HOST\n\t\t\t) {\n\t\t\t\tpathError =\n\t\t\t\t\t\" If you passed in a `path` to your self-hosted PeerServer, \" +\n\t\t\t\t\t\"you'll also need to pass in that same path when creating a new \" +\n\t\t\t\t\t\"Peer.\";\n\t\t\t}\n\n\t\t\tthrow new Error(\"Could not get an ID from the server.\" + pathError);\n\t\t}\n\t}\n\n\t/** @deprecated */\n\tasync listAllPeers(): Promise<any[]> {\n\t\ttry {\n\t\t\tconst response = await this._buildRequest(\"peers\");\n\n\t\t\tif (response.status !== 200) {\n\t\t\t\tif (response.status === 401) {\n\t\t\t\t\tlet helpfulError = \"\";\n\n\t\t\t\t\tif (this._options.host === util.CLOUD_HOST) {\n\t\t\t\t\t\thelpfulError =\n\t\t\t\t\t\t\t\"It looks like you're using the cloud server. You can email \" +\n\t\t\t\t\t\t\t\"team@peerjs.com to enable peer listing for your API key.\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\thelpfulError =\n\t\t\t\t\t\t\t\"You need to enable `allow_discovery` on your self-hosted \" +\n\t\t\t\t\t\t\t\"PeerServer to use this feature.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"It doesn't look like you have permission to list peers IDs. \" +\n\t\t\t\t\t\t\thelpfulError,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(`Error. Status:${response.status}`);\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t} catch (error) {\n\t\t\tlogger.error(\"Error retrieving list peers\", error);\n\n\t\t\tthrow new Error(\"Could not get list peers from the server.\" + error);\n\t\t}\n\t}\n}\n"],"names":[],"version":3,"file":"bundler.cjs.map"}