1 line
153 KiB
Plaintext
1 line
153 KiB
Plaintext
{"mappings":"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AAAC;IAER,IAAI,KAAK,EAAE;QACT,GAAG,GAAG,4BAAM,GAAG,4BAAM,GAAG,KAAK,GAAG,KAAK,CAAC;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,gCAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC9C,MAAM;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;KACvB;IAED,OAAO,IAAI,CAAC;CACb,CAAC;AAEF,EAAE;AACF,qDAAqD;AACrD,EAAE;AACF,kCAAY,CAAC,SAAS,CAAC,GAAG,GAAG,kCAAY,CAAC,SAAS,CAAC,cAAc,CAAC;AACnE,kCAAY,CAAC,SAAS,CAAC,WAAW,GAAG,kCAAY,CAAC,SAAS,CAAC,EAAE,CAAC;AAE/D,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,kCAAY,CAAC,QAAQ,GAAG,4BAAM,CAAC;AAE/B,EAAE;AACF,2DAA2D;AAC3D,EAAE;AACF,kCAAY,CAAC,YAAY,GAAG,kCAAY,CAAC;AAMvC,yBAAc,GAAG,kCAAY,CAAC;;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;AC9UhC,IAAM,g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A,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,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,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,yCAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACpD,OAAO;SACP;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAClB,OAAO;QAGR,IAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,AAAC;QAErC,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5B,CAAD;IAEA,yCAAA,CAAA,SAAA,CAAA,KAAK,GAAL,WAAA;QACC,IAAI,IAAI,CAAC,aAAa,EACrB,OAAO;QAGR,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC1B,CAAD;IAEQ,yCAAA,CAAA,SAAA,CAAA,QAAQ,GAAhB,WAAQ;QACP,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM,GAClB,IAAI,CAAC,OAAO,CAAC,SAAS,GACtB,IAAI,CAAC,OAAO,CAAC,OAAO,GACnB,IAAI,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,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,sCAAY,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;QAEhD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,yCAAc,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EACnE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAG9D,6BAA6B;QAC7B,IAAI,OAAO,CAAC,UAAU,EAAE;YACvB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,yCAAc,CAAC,IAAI,EAAE;gBACjD,IAAM,cAAc,GAA6B,IAAI,CAAC,UAAW,AAAC;gBAElE,IAAM,MAAM,GAAuB;oBAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;iBAAE,AAAC;gBAEnE,IAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CACnD,cAAc,CAAC,KAAK,EACpB,MAAM,CACN,AAAC;gBACF,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;SAClB,MACA,IAAI,CAAC,SAAS,CAAC,OAAO,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IP,iCAAM,CAAC,GAAG,CAAC,yBAAA,CAAA,MAAA,CAA0B,MAAM,CAAC,EAAE,EAAA,qBAAA,CAAqB,CAAC,CAAC;QAErE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAC3B,OAAO,iCAAM,CAAC,KAAK,CAClB,kEAAkE,CAClE,CAAC;QAGH,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,SAAC,KAAK,EAAjC;YACC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACvC,CAAC,CAAC;KACH,CAAD;IAEQ,wCAAA,CAAA,SAAA,CAAA,2BAA2B,GAAnC,SACC,MAAmB,EACnB,eAAgC,EAFzB;QAIP,iCAAM,CAAC,GAAG,CACT,aAAA,CAAA,MAAA,CAAc,MAAM,CAAC,EAAE,EAAA,uBAAA,CAAA,CAAA,MAAA,CAAwB,eAAe,CAAC,YAAY,CAAE,CAC7E,CAAC;QAEF,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAClC,CAAD;IACD,OAAA,wCAAC,CAAD;CAlXA,EAAA,AAAA,AAkXC;;;;;;;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;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,sCAAY,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;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,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,sCAAY,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,IAAA,IAAA,AA4BhC;QA1DD,KAAA,CAAA,SAAS,GAA0B,IAAI,CAAC,SAAS,CAAC;QAClD,KAAA,CAAA,KAAK,GAA0B,IAAI,CAAC,KAAK,CAAC;QAMlC,KAAA,CAAA,OAAO,GAAU,EAAE,CAAC;QACpB,KAAA,CAAA,WAAW,GAAG,CAAC,CAAC;QAChB,KAAA,CAAA,UAAU,GAAG,KAAK,CAAC;QACnB,KAAA,CAAA,YAAY,GAMhB,EAAE,CAAC;QAGC,KAAA,CAAA,cAAc,GAAG,IAAI,uCAAa,EAAE,CAAC;QAa5C,KAAI,CAAC,YAAY,GAChB,KAAI,CAAC,OAAO,CAAC,YAAY,IACzB,yCAAc,CAAC,SAAS,GAAG,yCAAI,CAAC,WAAW,EAAE,CAAC;QAE/C,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAI,CAAC,YAAY,CAAC;QACrD,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,OAAO,CAAC,aAAa,IAAI,wCAAiB,CAAC,MAAM,CAAC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,CAAA,SAAA,CAAA,IAAA,EAAA,SAAA,GAAA,OAAA,CAAA,IAAA,EAAA,CAAE;gBAAnB,IAAI,MAAI,GAAA,SAAA,CAAA,KAAA,AAAR;gBACJ,IAAI,CAAC,IAAI,CAAC,MAAI,EAAE,IAAI,CAAC,CAAC;aACtB;S,C,O,K,E;Y,G,G;gB,K,E,K;a,C;S,Q;Y,I;gB,I,S,I,C,S,C,I,I,C,E,G,O,C,M,C,A,E,E,C,I,C,O,C,C;a,Q;gB,I,G,E,M,G,C,K,C;a;S;KACD,CAAD;IAEA,yCAAA,CAAA,SAAA,CAAA,aAAa,GAAb,SAAc,OAAsB,EAApC;QACC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,AAAC;QAEhC,OAAQ,OAAO,CAAC,IAAI;YACnB,KAAK,yCAAiB,CAAC,MAAM;gBAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtD,MAAM;YACP,KAAK,yCAAiB,CAAC,SAAS;gBAC/B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACpD,MAAM;YACP;gBACC,iCAAM,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,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,MAAM,KAAK,GAAG,EAAE;4BAC5B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gCACxB,YAAY,GAAG,EAAE,CAAC;gCAEtB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,yCAAI,CAAC,UAAU,EACzC,YAAY,GACX,qHAC0D,CAAC;qCAE5D,YAAY,GACX,0FACiC,CAAC;gCAGpC,MAAM,IAAI,KAAK,CACd,8DAA8D,GAC7D,YAAY,CACb,CAAC;6BACF;4BAED,MAAM,IAAI,KAAK,CAAC,gBAAA,CAAA,MAAA,CAAiB,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC;yBACpD;wBAED,OAAA;AAAA,6BAAA,CAAA,UAAA;4BAAO,QAAQ,CAAC,IAAI,EAAE;yBAAA,CAAC;oB,K,C;wB,O,G,E,C,I,E,C;wBAEvB,iCAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAK,CAAC,CAAC;wBAEnD,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,OAAK,CAAC,CAAC;oB,K,C;wB,O;A,6B,C,U;yB,C;iB;a,C,C;S,C,C;KAEtE,CAAA;IACF,OAAA,yCAAC,CAAD;CA/EA,EAAA,AAAA,AA+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;AXhED,IAAA,iCAAA,GAAA,aAAA,CAAA,WAAA;IAAA,SAAA,WAAA,GAAA,EAYC;IAAD,OAAA,WAAC,CAAD;CAZA,EAAA,AAAA,AAYC;AA4BD;;GAEG,CACH,IAAA,yCAAA,GAAA,aAAA,CAAA,SAAA,MAAA,EAAA;IAA0B,+BAAA,CAAA,yCAAA,EAAA,MAAA,CAAA,CAAwB;IAqFjD,SAAA,yCAAA,CAAY,GAAyB,EAAE,OAAqB,EAA5D;QAAA,IAAA,KAAA,GACC,MAAA,CAAA,IAAA,CAAA,IAAA,CAAO,IAAA,IAAA,AAmFP;QAlKO,KAAA,CAAA,GAAG,GAAkB,IAAI,CAAC;QAC1B,KAAA,CAAA,aAAa,GAAkB,IAAI,CAAC;QAE5C,UAAU;QACF,KAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,+BAA+B;QACnD,KAAA,CAAA,aAAa,GAAG,KAAK,CAAC,CAAC,mEAAmE;QAC1F,KAAA,CAAA,KAAK,GAAG,KAAK,CAAC,CAAC,qCAAqC;QAC3C,KAAA,CAAA,YAAY,GAGzB,IAAI,GAAG,EAAE,CAAC,CAAC,iCAAiC;QAC/B,KAAA,CA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","sources":["lib/exports.ts","lib/util.ts","lib/supports.ts","lib/peer.ts","node_modules/eventemitter3/index.js","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 aren’t 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","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\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.mjs.map"} |