@nethesis/phone-island 0.7.78 → 0.7.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/dist/App.d.ts +1 -0
  2. package/dist/App.js +1 -1
  3. package/dist/App.js.map +1 -1
  4. package/dist/_virtual/_rollupPluginBabelHelpers.js +1 -1
  5. package/dist/_virtual/floating-ui.dom.esm.js +2 -0
  6. package/dist/_virtual/floating-ui.dom.esm.js.map +1 -0
  7. package/dist/_virtual/index.js +1 -1
  8. package/dist/_virtual/index3.js +1 -1
  9. package/dist/_virtual/index4.js +1 -1
  10. package/dist/_virtual/index5.js +1 -1
  11. package/dist/_virtual/index6.js +1 -1
  12. package/dist/_virtual/index8.js +1 -1
  13. package/dist/_virtual/index9.js +2 -0
  14. package/dist/_virtual/index9.js.map +1 -0
  15. package/dist/_virtual/react-tooltip.min.cjs.js +2 -0
  16. package/dist/_virtual/react-tooltip.min.cjs.js.map +1 -0
  17. package/dist/components/Button.js +1 -1
  18. package/dist/components/Button.js.map +1 -1
  19. package/dist/components/CallView/Actions.js +1 -1
  20. package/dist/components/CallView/Actions.js.map +1 -1
  21. package/dist/components/CallView/Avatar.js +1 -1
  22. package/dist/components/CallView/Avatar.js.map +1 -1
  23. package/dist/components/CallView/BackCall.js +1 -1
  24. package/dist/components/CallView/BackCall.js.map +1 -1
  25. package/dist/components/CallView/DisplayName.js +1 -1
  26. package/dist/components/CallView/DisplayName.js.map +1 -1
  27. package/dist/components/CallView/index.js +1 -1
  28. package/dist/components/CallView/index.js.map +1 -1
  29. package/dist/components/Events.d.ts +1 -0
  30. package/dist/components/Events.js +1 -1
  31. package/dist/components/Events.js.map +1 -1
  32. package/dist/components/Hangup.d.ts +1 -0
  33. package/dist/components/Hangup.js +1 -1
  34. package/dist/components/Hangup.js.map +1 -1
  35. package/dist/components/Island.js +1 -1
  36. package/dist/components/Island.js.map +1 -1
  37. package/dist/components/KeypadView/index.js +1 -1
  38. package/dist/components/KeypadView/index.js.map +1 -1
  39. package/dist/components/Socket.js +1 -1
  40. package/dist/components/Socket.js.map +1 -1
  41. package/dist/components/TransferView/ListAvatar.d.ts +2 -2
  42. package/dist/components/TransferView/ListAvatar.js +1 -1
  43. package/dist/components/TransferView/ListAvatar.js.map +1 -1
  44. package/dist/components/TransferView/TransferActions.js +1 -1
  45. package/dist/components/TransferView/TransferActions.js.map +1 -1
  46. package/dist/components/TransferView/TransferList.js +1 -1
  47. package/dist/components/TransferView/TransferList.js.map +1 -1
  48. package/dist/components/WebRTC.d.ts +2 -0
  49. package/dist/components/WebRTC.js +1 -1
  50. package/dist/components/WebRTC.js.map +1 -1
  51. package/dist/events/CallEvents.d.ts +3 -1
  52. package/dist/events/CallEvents.js +1 -1
  53. package/dist/events/CallEvents.js.map +1 -1
  54. package/dist/index.css +1 -1
  55. package/dist/lib/devices/devices.js +1 -1
  56. package/dist/lib/phone/call.d.ts +2 -2
  57. package/dist/lib/phone/call.js +1 -1
  58. package/dist/lib/phone/call.js.map +1 -1
  59. package/dist/lib/webrtc/messages.d.ts +6 -1
  60. package/dist/lib/webrtc/messages.js +1 -1
  61. package/dist/lib/webrtc/messages.js.map +1 -1
  62. package/dist/models/currentCall.d.ts +67 -0
  63. package/dist/models/currentCall.js +1 -1
  64. package/dist/models/currentCall.js.map +1 -1
  65. package/dist/models/motions.js +1 -1
  66. package/dist/models/motions.js.map +1 -1
  67. package/dist/node_modules/@emotion/stylis/dist/stylis.browser.esm.js +1 -1
  68. package/dist/node_modules/@emotion/stylis/dist/stylis.browser.esm.js.map +1 -1
  69. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs.js +2 -0
  70. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs.js.map +1 -0
  71. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js +2 -0
  72. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js.map +1 -0
  73. package/dist/node_modules/@fortawesome/react-fontawesome/index.es.js +1 -1
  74. package/dist/node_modules/@nethesis/nethesis-light-svg-icons/index.mjs.js +1 -1
  75. package/dist/node_modules/@nethesis/nethesis-light-svg-icons/index.mjs.js.map +1 -1
  76. package/dist/node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js +1 -1
  77. package/dist/node_modules/@nethesis/nethesis-solid-svg-icons/index.mjs.js.map +1 -1
  78. package/dist/node_modules/@rematch/core/dist/core.esm.js +1 -1
  79. package/dist/node_modules/@rematch/core/dist/core.esm.js.map +1 -1
  80. package/dist/node_modules/bowser/es5.js +1 -1
  81. package/dist/node_modules/bowser/es5.js.map +1 -1
  82. package/dist/node_modules/classnames/index.js +7 -0
  83. package/dist/node_modules/classnames/index.js.map +1 -0
  84. package/dist/node_modules/engine.io-client/build/esm/contrib/has-cors.js +1 -1
  85. package/dist/node_modules/engine.io-client/build/esm/contrib/has-cors.js.map +1 -1
  86. package/dist/node_modules/engine.io-client/build/esm/contrib/parseqs.js +1 -1
  87. package/dist/node_modules/engine.io-client/build/esm/contrib/parseqs.js.map +1 -1
  88. package/dist/node_modules/engine.io-client/build/esm/contrib/parseuri.js +1 -1
  89. package/dist/node_modules/engine.io-client/build/esm/contrib/parseuri.js.map +1 -1
  90. package/dist/node_modules/engine.io-client/build/esm/contrib/yeast.js +1 -1
  91. package/dist/node_modules/engine.io-client/build/esm/contrib/yeast.js.map +1 -1
  92. package/dist/node_modules/engine.io-client/build/esm/globalThis.browser.js +1 -1
  93. package/dist/node_modules/engine.io-client/build/esm/globalThis.browser.js.map +1 -1
  94. package/dist/node_modules/engine.io-client/build/esm/socket.js +1 -1
  95. package/dist/node_modules/engine.io-client/build/esm/socket.js.map +1 -1
  96. package/dist/node_modules/engine.io-client/build/esm/transport.js +1 -1
  97. package/dist/node_modules/engine.io-client/build/esm/transport.js.map +1 -1
  98. package/dist/node_modules/engine.io-client/build/esm/transports/index.js +1 -1
  99. package/dist/node_modules/engine.io-client/build/esm/transports/index.js.map +1 -1
  100. package/dist/node_modules/engine.io-client/build/esm/transports/polling.js +1 -1
  101. package/dist/node_modules/engine.io-client/build/esm/transports/polling.js.map +1 -1
  102. package/dist/node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js +1 -1
  103. package/dist/node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js.map +1 -1
  104. package/dist/node_modules/engine.io-client/build/esm/transports/websocket.js +1 -1
  105. package/dist/node_modules/engine.io-client/build/esm/transports/websocket.js.map +1 -1
  106. package/dist/node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js +1 -1
  107. package/dist/node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js.map +1 -1
  108. package/dist/node_modules/engine.io-client/build/esm/util.js +1 -1
  109. package/dist/node_modules/engine.io-client/build/esm/util.js.map +1 -1
  110. package/dist/node_modules/engine.io-parser/build/esm/commons.js +1 -1
  111. package/dist/node_modules/engine.io-parser/build/esm/commons.js.map +1 -1
  112. package/dist/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js +1 -1
  113. package/dist/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js.map +1 -1
  114. package/dist/node_modules/engine.io-parser/build/esm/decodePacket.browser.js +1 -1
  115. package/dist/node_modules/engine.io-parser/build/esm/decodePacket.browser.js.map +1 -1
  116. package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js +1 -1
  117. package/dist/node_modules/engine.io-parser/build/esm/encodePacket.browser.js.map +1 -1
  118. package/dist/node_modules/engine.io-parser/build/esm/index.js +1 -1
  119. package/dist/node_modules/engine.io-parser/build/esm/index.js.map +1 -1
  120. package/dist/node_modules/framer-motion/dist/framer-motion.js +1 -1
  121. package/dist/node_modules/framer-motion/dist/framer-motion.js.map +1 -1
  122. package/dist/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js +1 -1
  123. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js +9 -1
  124. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  125. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js +9 -1
  126. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  127. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/index.js +1 -1
  128. package/dist/node_modules/immer/dist/immer.esm.mjs.js +1 -1
  129. package/dist/node_modules/immer/dist/immer.esm.mjs.js.map +1 -1
  130. package/dist/node_modules/js-base64/base64.mjs.js +1 -1
  131. package/dist/node_modules/js-base64/base64.mjs.js.map +1 -1
  132. package/dist/node_modules/mic-check/lib/index.js +1 -1
  133. package/dist/node_modules/mic-check/lib/requestMediaPermissions.js +1 -1
  134. package/dist/node_modules/mic-check/lib/requestMediaPermissions.js.map +1 -1
  135. package/dist/node_modules/moment/moment.js +2 -2
  136. package/dist/node_modules/moment/moment.js.map +1 -1
  137. package/dist/node_modules/prop-types/checkPropTypes.js +1 -1
  138. package/dist/node_modules/prop-types/checkPropTypes.js.map +1 -1
  139. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +1 -1
  140. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -1
  141. package/dist/node_modules/prop-types/index.js +1 -1
  142. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +9 -1
  143. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  144. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +9 -1
  145. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  146. package/dist/node_modules/prop-types/node_modules/react-is/index.js +1 -1
  147. package/dist/node_modules/react-is/cjs/react-is.development.js +9 -1
  148. package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  149. package/dist/node_modules/react-is/cjs/react-is.production.min.js +9 -1
  150. package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  151. package/dist/node_modules/react-is/index.js +1 -1
  152. package/dist/node_modules/react-is/index.js.map +1 -1
  153. package/dist/node_modules/react-moment/dist/index.js +2 -2
  154. package/dist/node_modules/react-moment/dist/index.js.map +1 -1
  155. package/dist/node_modules/react-redux/es/components/Context.js +1 -1
  156. package/dist/node_modules/react-redux/es/components/Context.js.map +1 -1
  157. package/dist/node_modules/react-redux/es/components/Provider.js +1 -1
  158. package/dist/node_modules/react-redux/es/components/Provider.js.map +1 -1
  159. package/dist/node_modules/react-redux/es/hooks/useDispatch.js +1 -1
  160. package/dist/node_modules/react-redux/es/hooks/useDispatch.js.map +1 -1
  161. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js +1 -1
  162. package/dist/node_modules/react-redux/es/hooks/useReduxContext.js.map +1 -1
  163. package/dist/node_modules/react-redux/es/hooks/useSelector.js +1 -1
  164. package/dist/node_modules/react-redux/es/hooks/useSelector.js.map +1 -1
  165. package/dist/node_modules/react-redux/es/hooks/useStore.js +1 -1
  166. package/dist/node_modules/react-redux/es/hooks/useStore.js.map +1 -1
  167. package/dist/node_modules/react-redux/es/utils/Subscription.js +1 -1
  168. package/dist/node_modules/react-redux/es/utils/Subscription.js.map +1 -1
  169. package/dist/node_modules/react-redux/es/utils/batch.js +1 -1
  170. package/dist/node_modules/react-redux/es/utils/batch.js.map +1 -1
  171. package/dist/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js +1 -1
  172. package/dist/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js.map +1 -1
  173. package/dist/node_modules/react-redux/es/utils/useSyncExternalStore.js +1 -1
  174. package/dist/node_modules/react-redux/es/utils/useSyncExternalStore.js.map +1 -1
  175. package/dist/node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js +10 -1
  176. package/dist/node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  177. package/dist/node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js +10 -1
  178. package/dist/node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  179. package/dist/node_modules/react-redux/node_modules/react-is/index.js +1 -1
  180. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.cjs.js +2 -0
  181. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.cjs.js.map +1 -0
  182. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.css.js +2 -0
  183. package/dist/node_modules/react-tooltip/dist/react-tooltip.min.css.js.map +1 -0
  184. package/dist/node_modules/redux/es/redux.js +1 -1
  185. package/dist/node_modules/redux/es/redux.js.map +1 -1
  186. package/dist/node_modules/sdp/sdp.js +1 -1
  187. package/dist/node_modules/sdp/sdp.js.map +1 -1
  188. package/dist/node_modules/socket.io-client/build/esm/index.js +1 -1
  189. package/dist/node_modules/socket.io-client/build/esm/index.js.map +1 -1
  190. package/dist/node_modules/socket.io-client/build/esm/manager.js +1 -1
  191. package/dist/node_modules/socket.io-client/build/esm/manager.js.map +1 -1
  192. package/dist/node_modules/socket.io-client/build/esm/socket.js +1 -1
  193. package/dist/node_modules/socket.io-client/build/esm/socket.js.map +1 -1
  194. package/dist/node_modules/socket.io-client/build/esm/url.js +1 -1
  195. package/dist/node_modules/socket.io-client/build/esm/url.js.map +1 -1
  196. package/dist/node_modules/socket.io-parser/build/esm/binary.js +1 -1
  197. package/dist/node_modules/socket.io-parser/build/esm/binary.js.map +1 -1
  198. package/dist/node_modules/socket.io-parser/build/esm/index.js +1 -1
  199. package/dist/node_modules/socket.io-parser/build/esm/index.js.map +1 -1
  200. package/dist/node_modules/socket.io-parser/build/esm/is-binary.js +1 -1
  201. package/dist/node_modules/socket.io-parser/build/esm/is-binary.js.map +1 -1
  202. package/dist/node_modules/style-inject/dist/style-inject.es.js +2 -0
  203. package/dist/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  204. package/dist/node_modules/styled-components/dist/styled-components.browser.esm.js +1 -1
  205. package/dist/node_modules/styled-components/dist/styled-components.browser.esm.js.map +1 -1
  206. package/dist/node_modules/tslib/tslib.es6.js +1 -1
  207. package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
  208. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +1 -1
  209. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +1 -1
  210. package/dist/node_modules/use-sync-external-store/shim/index.js +1 -1
  211. package/dist/node_modules/webrtc-adapter/src/js/adapter_core.js +1 -1
  212. package/dist/node_modules/webrtc-adapter/src/js/adapter_core.js.map +1 -1
  213. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js +1 -1
  214. package/dist/node_modules/webrtc-adapter/src/js/adapter_factory.js.map +1 -1
  215. package/dist/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js +1 -1
  216. package/dist/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js.map +1 -1
  217. package/dist/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js +1 -1
  218. package/dist/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js.map +1 -1
  219. package/dist/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js +1 -1
  220. package/dist/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js.map +1 -1
  221. package/dist/node_modules/webrtc-adapter/src/js/common_shim.js +1 -1
  222. package/dist/node_modules/webrtc-adapter/src/js/common_shim.js.map +1 -1
  223. package/dist/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js +1 -1
  224. package/dist/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js.map +1 -1
  225. package/dist/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js +1 -1
  226. package/dist/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js.map +1 -1
  227. package/dist/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js +1 -1
  228. package/dist/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js.map +1 -1
  229. package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js +1 -1
  230. package/dist/node_modules/webrtc-adapter/src/js/safari/safari_shim.js.map +1 -1
  231. package/dist/node_modules/webrtc-adapter/src/js/utils.js +1 -1
  232. package/dist/node_modules/webrtc-adapter/src/js/utils.js.map +1 -1
  233. package/dist/services/astproxy.js +1 -1
  234. package/dist/services/astproxy.js.map +1 -1
  235. package/dist/styles/Island.styles.js +1 -1
  236. package/dist/styles/Island.styles.js.map +1 -1
  237. package/package.json +3 -2
  238. package/dist/node_modules/engine.io-client/build/esm/index.js +0 -2
  239. package/dist/node_modules/engine.io-client/build/esm/index.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("../../_virtual/_rollupPluginBabelHelpers.js"),e=require("../../_virtual/sdp.js");!function(e){var t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(r){return r.trim().split("\n").map((function(r){return r.trim()}))},t.splitSections=function(r){return r.split("\nm=").map((function(r,e){return(e>0?"m="+r:r).trim()+"\r\n"}))},t.getDescription=function(r){var e=t.splitSections(r);return e&&e[0]},t.getMediaSections=function(r){var e=t.splitSections(r);return e.shift(),e},t.matchPrefix=function(r,e){return t.splitLines(r).filter((function(r){return 0===r.indexOf(e)}))},t.parseCandidate=function(r){for(var e,t={foundation:(e=0===r.indexOf("a=candidate:")?r.substring(12).split(" "):r.substring(10).split(" "))[0],component:{1:"rtp",2:"rtcp"}[e[1]]||e[1],protocol:e[2].toLowerCase(),priority:parseInt(e[3],10),ip:e[4],address:e[4],port:parseInt(e[5],10),type:e[7]},a=8;a<e.length;a+=2)switch(e[a]){case"raddr":t.relatedAddress=e[a+1];break;case"rport":t.relatedPort=parseInt(e[a+1],10);break;case"tcptype":t.tcpType=e[a+1];break;case"ufrag":t.ufrag=e[a+1],t.usernameFragment=e[a+1];break;default:void 0===t[e[a]]&&(t[e[a]]=e[a+1])}return t},t.writeCandidate=function(r){var e=[];e.push(r.foundation);var t=r.component;"rtp"===t?e.push(1):"rtcp"===t?e.push(2):e.push(t),e.push(r.protocol.toUpperCase()),e.push(r.priority),e.push(r.address||r.ip),e.push(r.port);var a=r.type;return e.push("typ"),e.push(a),"host"!==a&&r.relatedAddress&&r.relatedPort&&(e.push("raddr"),e.push(r.relatedAddress),e.push("rport"),e.push(r.relatedPort)),r.tcpType&&"tcp"===r.protocol.toLowerCase()&&(e.push("tcptype"),e.push(r.tcpType)),(r.usernameFragment||r.ufrag)&&(e.push("ufrag"),e.push(r.usernameFragment||r.ufrag)),"candidate:"+e.join(" ")},t.parseIceOptions=function(r){return r.substr(14).split(" ")},t.parseRtpMap=function(r){var e=r.substr(9).split(" "),t={payloadType:parseInt(e.shift(),10)};return e=e[0].split("/"),t.name=e[0],t.clockRate=parseInt(e[1],10),t.channels=3===e.length?parseInt(e[2],10):1,t.numChannels=t.channels,t},t.writeRtpMap=function(r){var e=r.payloadType;void 0!==r.preferredPayloadType&&(e=r.preferredPayloadType);var t=r.channels||r.numChannels||1;return"a=rtpmap:"+e+" "+r.name+"/"+r.clockRate+(1!==t?"/"+t:"")+"\r\n"},t.parseExtmap=function(r){var e=r.substr(9).split(" ");return{id:parseInt(e[0],10),direction:e[0].indexOf("/")>0?e[0].split("/")[1]:"sendrecv",uri:e[1]}},t.writeExtmap=function(r){return"a=extmap:"+(r.id||r.preferredId)+(r.direction&&"sendrecv"!==r.direction?"/"+r.direction:"")+" "+r.uri+"\r\n"},t.parseFmtp=function(r){for(var e,t={},a=r.substr(r.indexOf(" ")+1).split(";"),n=0;n<a.length;n++)t[(e=a[n].trim().split("="))[0].trim()]=e[1];return t},t.writeFmtp=function(r){var e="",t=r.payloadType;if(void 0!==r.preferredPayloadType&&(t=r.preferredPayloadType),r.parameters&&Object.keys(r.parameters).length){var a=[];Object.keys(r.parameters).forEach((function(e){void 0!==r.parameters[e]?a.push(e+"="+r.parameters[e]):a.push(e)})),e+="a=fmtp:"+t+" "+a.join(";")+"\r\n"}return e},t.parseRtcpFb=function(r){var e=r.substr(r.indexOf(" ")+1).split(" ");return{type:e.shift(),parameter:e.join(" ")}},t.writeRtcpFb=function(r){var e="",t=r.payloadType;return void 0!==r.preferredPayloadType&&(t=r.preferredPayloadType),r.rtcpFeedback&&r.rtcpFeedback.length&&r.rtcpFeedback.forEach((function(r){e+="a=rtcp-fb:"+t+" "+r.type+(r.parameter&&r.parameter.length?" "+r.parameter:"")+"\r\n"})),e},t.parseSsrcMedia=function(r){var e=r.indexOf(" "),t={ssrc:parseInt(r.substr(7,e-7),10)},a=r.indexOf(":",e);return a>-1?(t.attribute=r.substr(e+1,a-e-1),t.value=r.substr(a+1)):t.attribute=r.substr(e+1),t},t.parseSsrcGroup=function(r){var e=r.substr(13).split(" ");return{semantics:e.shift(),ssrcs:e.map((function(r){return parseInt(r,10)}))}},t.getMid=function(r){var e=t.matchPrefix(r,"a=mid:")[0];if(e)return e.substr(6)},t.parseFingerprint=function(r){var e=r.substr(14).split(" ");return{algorithm:e[0].toLowerCase(),value:e[1].toUpperCase()}},t.getDtlsParameters=function(r,e){return{role:"auto",fingerprints:t.matchPrefix(r+e,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(r,e){var t="a=setup:"+e+"\r\n";return r.fingerprints.forEach((function(r){t+="a=fingerprint:"+r.algorithm+" "+r.value+"\r\n"})),t},t.parseCryptoLine=function(r){var e=r.substr(9).split(" ");return{tag:parseInt(e[0],10),cryptoSuite:e[1],keyParams:e[2],sessionParams:e.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"===r.typeof(e.keyParams)?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(r){if(0!==r.indexOf("inline:"))return null;var e=r.substr(7).split("|");return{keyMethod:"inline",keySalt:e[0],lifeTime:e[1],mkiValue:e[2]?e[2].split(":")[0]:void 0,mkiLength:e[2]?e[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(r){return r.keyMethod+":"+r.keySalt+(r.lifeTime?"|"+r.lifeTime:"")+(r.mkiValue&&r.mkiLength?"|"+r.mkiValue+":"+r.mkiLength:"")},t.getCryptoParameters=function(r,e){return t.matchPrefix(r+e,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(r,e){var a=t.matchPrefix(r+e,"a=ice-ufrag:")[0],n=t.matchPrefix(r+e,"a=ice-pwd:")[0];return a&&n?{usernameFragment:a.substr(12),password:n.substr(10)}:null},t.writeIceParameters=function(r){var e="a=ice-ufrag:"+r.usernameFragment+"\r\na=ice-pwd:"+r.password+"\r\n";return r.iceLite&&(e+="a=ice-lite\r\n"),e},t.parseRtpParameters=function(r){for(var e={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},a=t.splitLines(r)[0].split(" "),n=3;n<a.length;n++){var s=a[n],i=t.matchPrefix(r,"a=rtpmap:"+s+" ")[0];if(i){var p=t.parseRtpMap(i),c=t.matchPrefix(r,"a=fmtp:"+s+" ");switch(p.parameters=c.length?t.parseFmtp(c[0]):{},p.rtcpFeedback=t.matchPrefix(r,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),e.codecs.push(p),p.name.toUpperCase()){case"RED":case"ULPFEC":e.fecMechanisms.push(p.name.toUpperCase())}}}return t.matchPrefix(r,"a=extmap:").forEach((function(r){e.headerExtensions.push(t.parseExtmap(r))})),e},t.writeRtpDescription=function(r,e){var a="";a+="m="+r+" ",a+=e.codecs.length>0?"9":"0",a+=" UDP/TLS/RTP/SAVPF ",a+=e.codecs.map((function(r){return void 0!==r.preferredPayloadType?r.preferredPayloadType:r.payloadType})).join(" ")+"\r\n",a+="c=IN IP4 0.0.0.0\r\n",a+="a=rtcp:9 IN IP4 0.0.0.0\r\n",e.codecs.forEach((function(r){a+=t.writeRtpMap(r),a+=t.writeFmtp(r),a+=t.writeRtcpFb(r)}));var n=0;return e.codecs.forEach((function(r){r.maxptime>n&&(n=r.maxptime)})),n>0&&(a+="a=maxptime:"+n+"\r\n"),e.headerExtensions&&e.headerExtensions.forEach((function(r){a+=t.writeExtmap(r)})),a},t.parseRtpEncodingParameters=function(r){var e,a=[],n=t.parseRtpParameters(r),s=-1!==n.fecMechanisms.indexOf("RED"),i=-1!==n.fecMechanisms.indexOf("ULPFEC"),p=t.matchPrefix(r,"a=ssrc:").map((function(r){return t.parseSsrcMedia(r)})).filter((function(r){return"cname"===r.attribute})),c=p.length>0&&p[0].ssrc,o=t.matchPrefix(r,"a=ssrc-group:FID").map((function(r){return r.substr(17).split(" ").map((function(r){return parseInt(r,10)}))}));o.length>0&&o[0].length>1&&o[0][0]===c&&(e=o[0][1]),n.codecs.forEach((function(r){if("RTX"===r.name.toUpperCase()&&r.parameters.apt){var t={ssrc:c,codecPayloadType:parseInt(r.parameters.apt,10)};c&&e&&(t.rtx={ssrc:e}),a.push(t),s&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:i?"red+ulpfec":"red"},a.push(t))}})),0===a.length&&c&&a.push({ssrc:c});var u=t.matchPrefix(r,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,a.forEach((function(r){r.maxBitrate=u}))),a},t.parseRtcpParameters=function(r){var e={},a=t.matchPrefix(r,"a=ssrc:").map((function(r){return t.parseSsrcMedia(r)})).filter((function(r){return"cname"===r.attribute}))[0];a&&(e.cname=a.value,e.ssrc=a.ssrc);var n=t.matchPrefix(r,"a=rtcp-rsize");e.reducedSize=n.length>0,e.compound=0===n.length;var s=t.matchPrefix(r,"a=rtcp-mux");return e.mux=s.length>0,e},t.writeRtcpParameters=function(r){var e="";return r.reducedSize&&(e+="a=rtcp-rsize\r\n"),r.mux&&(e+="a=rtcp-mux\r\n"),void 0!==r.ssrc&&r.cname&&(e+="a=ssrc:"+r.ssrc+" cname:"+r.cname+"\r\n"),e},t.parseMsid=function(r){var e,a=t.matchPrefix(r,"a=msid:");if(1===a.length)return{stream:(e=a[0].substr(7).split(" "))[0],track:e[1]};var n=t.matchPrefix(r,"a=ssrc:").map((function(r){return t.parseSsrcMedia(r)})).filter((function(r){return"msid"===r.attribute}));return n.length>0?{stream:(e=n[0].value.split(" "))[0],track:e[1]}:void 0},t.parseSctpDescription=function(r){var e,a=t.parseMLine(r),n=t.matchPrefix(r,"a=max-message-size:");n.length>0&&(e=parseInt(n[0].substr(19),10)),isNaN(e)&&(e=65536);var s=t.matchPrefix(r,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substr(12),10),protocol:a.fmt,maxMessageSize:e};var i=t.matchPrefix(r,"a=sctpmap:");if(i.length>0){var p=i[0].substr(10).split(" ");return{port:parseInt(p[0],10),protocol:p[1],maxMessageSize:e}}},t.writeSctpDescription=function(r,e){var t=[];return t="DTLS/SCTP"!==r.protocol?["m="+r.kind+" 9 "+r.protocol+" "+e.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+e.port+"\r\n"]:["m="+r.kind+" 9 "+r.protocol+" "+e.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+e.port+" "+e.protocol+" 65535\r\n"],void 0!==e.maxMessageSize&&t.push("a=max-message-size:"+e.maxMessageSize+"\r\n"),t.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(r,e,a){var n=void 0!==e?e:2;return"v=0\r\no="+(a||"thisisadapterortc")+" "+(r||t.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(r,e){for(var a=t.splitLines(r),n=0;n<a.length;n++)switch(a[n]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return a[n].substr(2)}return e?t.getDirection(e):"sendrecv"},t.getKind=function(r){return t.splitLines(r)[0].split(" ")[0].substr(2)},t.isRejected=function(r){return"0"===r.split(" ",2)[1]},t.parseMLine=function(r){var e=t.splitLines(r)[0].substr(2).split(" ");return{kind:e[0],port:parseInt(e[1],10),protocol:e[2],fmt:e.slice(3).join(" ")}},t.parseOLine=function(r){var e=t.matchPrefix(r,"o=")[0].substr(2).split(" ");return{username:e[0],sessionId:e[1],sessionVersion:parseInt(e[2],10),netType:e[3],addressType:e[4],address:e[5]}},t.isValidSDP=function(r){if("string"!=typeof r||0===r.length)return!1;for(var e=t.splitLines(r),a=0;a<e.length;a++)if(e[a].length<2||"="!==e[a].charAt(1))return!1;return!0},e.exports=t}(e.sdp);var t=e.sdp.exports;exports.default=t;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/sdp.js");!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const s=e.type;return t.push("typ"),t.push(s),"host"!==s&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substr(14).split(" ")},t.parseRtpMap=function(e){let t=e.substr(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substr(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},t.parseFmtp=function(e){const t={};let r;const s=e.substr(e.indexOf(" ")+1).split(";");for(let e=0;e<s.length;e++)r=s[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const s=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?s.push(t+"="+e.parameters[t]):s.push(t)})),t+="a=fmtp:"+r+" "+s.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substr(7,t-7),10)},s=e.indexOf(":",t);return s>-1?(r.attribute=e.substr(t+1,s-t-1),r.value=e.substr(s+1)):r.attribute=e.substr(t+1),r},t.parseSsrcGroup=function(e){const t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substr(6)},t.parseFingerprint=function(e){const t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const s=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return s&&n?{usernameFragment:s.substr(12),password:n.substr(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},s=t.splitLines(e)[0].split(" ");for(let n=3;n<s.length;n++){const a=s[n],i=t.matchPrefix(e,"a=rtpmap:"+a+" ")[0];if(i){const s=t.parseRtpMap(i),n=t.matchPrefix(e,"a=fmtp:"+a+" ");switch(s.parameters=n.length?t.parseFmtp(n[0]):{},s.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+a+" ").map(t.parseRtcpFb),r.codecs.push(s),s.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(s.name.toUpperCase())}}}return t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))})),r},t.writeRtpDescription=function(e,r){let s="";s+="m="+e+" ",s+=r.codecs.length>0?"9":"0",s+=" UDP/TLS/RTP/SAVPF ",s+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",s+="c=IN IP4 0.0.0.0\r\n",s+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{s+=t.writeRtpMap(e),s+=t.writeFmtp(e),s+=t.writeRtcpFb(e)}));let n=0;return r.codecs.forEach((e=>{e.maxptime>n&&(n=e.maxptime)})),n>0&&(s+="a=maxptime:"+n+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{s+=t.writeExtmap(e)})),s},t.parseRtpEncodingParameters=function(e){const r=[],s=t.parseRtpParameters(e),n=-1!==s.fecMechanisms.indexOf("RED"),a=-1!==s.fecMechanisms.indexOf("ULPFEC"),i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),p=i.length>0&&i[0].ssrc;let c;const o=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substr(17).split(" ").map((e=>parseInt(e,10)))));o.length>0&&o[0].length>1&&o[0][0]===p&&(c=o[0][1]),s.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:p,codecPayloadType:parseInt(e.parameters.apt,10)};p&&c&&(t.rtx={ssrc:c}),r.push(t),n&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:p,mechanism:a?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&p&&r.push({ssrc:p});let u=t.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=u}))),r},t.parseRtcpParameters=function(e){const r={},s=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];s&&(r.cname=s.value,r.ssrc=s.ssrc);const n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;const a=t.matchPrefix(e,"a=rtcp-mux");return r.mux=a.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const s=t.matchPrefix(e,"a=msid:");if(1===s.length)return r=s[0].substr(7).split(" "),{stream:r[0],track:r[1]};const n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return n.length>0?(r=n[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),s=t.matchPrefix(e,"a=max-message-size:");let n;s.length>0&&(n=parseInt(s[0].substr(19),10)),isNaN(n)&&(n=65536);const a=t.matchPrefix(e,"a=sctp-port:");if(a.length>0)return{port:parseInt(a[0].substr(12),10),protocol:r.fmt,maxMessageSize:n};const i=t.matchPrefix(e,"a=sctpmap:");if(i.length>0){const e=i[0].substr(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:n}}},t.writeSctpDescription=function(e,t){let r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(e,r,s){let n;const a=void 0!==r?r:2;n=e||t.generateSessionId();return"v=0\r\no="+(s||"thisisadapterortc")+" "+n+" "+a+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const s=t.splitLines(e);for(let e=0;e<s.length;e++)switch(s[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return s[e].substr(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substr(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(e.sdp);var t=e.sdp.exports;exports.default=t;
2
2
  //# sourceMappingURL=sdp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdp.js","sources":["../../../node_modules/sdp/sdp.js"],"sourcesContent":["/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nconst SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(line => line.trim());\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n const parts = blob.split('\\nm=');\n return parts.map((part, index) => (index > 0 ?\n 'm=' + part : part).trim() + '\\r\\n');\n};\n\n// Returns the session description.\nSDPUtils.getDescription = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// Returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(line => line.indexOf(prefix) === 0);\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\n// Input can be prefixed with a=.\nSDPUtils.parseCandidate = function(line) {\n let parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n const candidate = {\n foundation: parts[0],\n component: {1: 'rtp', 2: 'rtcp'}[parts[1]] || parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7],\n };\n\n for (let i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compatibility.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag. Don't overwrite.\n if (candidate[parts[i]] === undefined) {\n candidate[parts[i]] = parts[i + 1];\n }\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\n// This does not include the a= prefix!\nSDPUtils.writeCandidate = function(candidate) {\n const sdp = [];\n sdp.push(candidate.foundation);\n\n const component = candidate.component;\n if (component === 'rtp') {\n sdp.push(1);\n } else if (component === 'rtcp') {\n sdp.push(2);\n } else {\n sdp.push(component);\n }\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n const type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// Sample input:\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n};\n\n// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n let parts = line.substr(9).split(' ');\n const parsed = {\n payloadType: parseInt(parts.shift(), 10), // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generates a rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n const channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses a extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n const parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1],\n };\n};\n\n// Generates an extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses a fmtp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n const parsed = {};\n let kv;\n const parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (let j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n let line = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n const params = [];\n Object.keys(codec.parameters).forEach(param => {\n if (codec.parameters[param] !== undefined) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n const parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' '),\n };\n};\n\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n let lines = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(fb => {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses a RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n const sp = line.indexOf(' ');\n const parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10),\n };\n const colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Parse a ssrc-group line (see RFC 5576). Sample input:\n// a=ssrc-group:semantics 12 34\nSDPUtils.parseSsrcGroup = function(line) {\n const parts = line.substr(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(ssrc => parseInt(ssrc, 10)),\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// Returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n const mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n};\n\n// Parses a fingerprint line for DTLS-SRTP.\nSDPUtils.parseFingerprint = function(line) {\n const parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1].toUpperCase(), // the definition is upper-case in RFC 4572.\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint),\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n let sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(fp => {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n const parts = line.substr(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n const parts = keyParams.substr(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES parameters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n const ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n const pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substr(12),\n password: pwd.substr(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n let sdp = 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n if (params.iceLite) {\n sdp += 'a=ice-lite\\r\\n';\n }\n return sdp;\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n const description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: [],\n };\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n for (let i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n const pt = mline[i];\n const rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n const codec = SDPUtils.parseRtpMap(rtpmapline);\n const fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp:<pt> is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(line => {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n let sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(codec => {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(codec => {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n let maxptime = 0;\n caps.codecs.forEach(codec => {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(extension => {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n const encodingParameters = [];\n const description = SDPUtils.parseRtpParameters(mediaSection);\n const hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n const hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n const ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(parts => parts.attribute === 'cname');\n const primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n let secondarySsrc;\n\n const flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(line => {\n const parts = line.substr(17).split(' ');\n return parts.map(part => parseInt(part, 10));\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(codec => {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n let encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red',\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc,\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n let bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(params => {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n const rtcpParameters = {};\n\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n const remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(obj => obj.attribute === 'cname')[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n const rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n const mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\nSDPUtils.writeRtcpParameters = function(rtcpParameters) {\n let sdp = '';\n if (rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n if (rtcpParameters.mux) {\n sdp += 'a=rtcp-mux\\r\\n';\n }\n if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) {\n sdp += 'a=ssrc:' + rtcpParameters.ssrc +\n ' cname:' + rtcpParameters.cname + '\\r\\n';\n }\n return sdp;\n};\n\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n let parts;\n const spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substr(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n const planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(msidParts => msidParts.attribute === 'msid');\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n const mline = SDPUtils.parseMLine(mediaSection);\n const maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n let maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substr(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n const sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substr(12), 10),\n protocol: mline.fmt,\n maxMessageSize,\n };\n }\n const sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n const parts = sctpMapLines[0]\n .substr(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize,\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n let output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n',\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n',\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 21);\n};\n\n// Write boiler plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n let sessionId;\n const version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n const user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n const lines = SDPUtils.splitLines(mediaSection);\n for (let i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n return mline[0].substr(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const parts = lines[0].substr(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' '),\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n const line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n const parts = line.substr(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5],\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n const lines = SDPUtils.splitLines(blob);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n"],"names":["SDPUtils","Math","random","toString","substr","localCName","generateIdentifier","splitLines","blob","trim","split","map","line","splitSections","part","index","getDescription","sections","getMediaSections","shift","matchPrefix","prefix","filter","indexOf","parseCandidate","parts","candidate","foundation","substring","component","protocol","toLowerCase","priority","parseInt","ip","address","port","type","i","length","relatedAddress","relatedPort","tcpType","ufrag","usernameFragment","undefined","writeCandidate","sdp","push","toUpperCase","join","parseIceOptions","parseRtpMap","parsed","payloadType","name","clockRate","channels","numChannels","writeRtpMap","codec","pt","preferredPayloadType","parseExtmap","id","direction","uri","writeExtmap","headerExtension","preferredId","parseFmtp","kv","j","writeFmtp","parameters","Object","keys","params","forEach","param","parseRtcpFb","parameter","writeRtcpFb","lines","rtcpFeedback","fb","parseSsrcMedia","sp","ssrc","colon","attribute","value","parseSsrcGroup","semantics","ssrcs","getMid","mediaSection","mid","parseFingerprint","algorithm","getDtlsParameters","sessionpart","role","fingerprints","writeDtlsParameters","setupType","fp","parseCryptoLine","tag","cryptoSuite","keyParams","sessionParams","slice","writeCryptoLine","_typeof","writeCryptoKeyParams","parseCryptoKeyParams","keyMethod","keySalt","lifeTime","mkiValue","mkiLength","getCryptoParameters","getIceParameters","pwd","password","writeIceParameters","iceLite","parseRtpParameters","description","codecs","headerExtensions","fecMechanisms","rtcp","mline","rtpmapline","fmtps","writeRtpDescription","kind","caps","maxptime","extension","parseRtpEncodingParameters","secondarySsrc","encodingParameters","hasRed","hasUlpfec","primarySsrc","flows","apt","encParam","codecPayloadType","rtx","JSON","parse","stringify","fec","mechanism","bandwidth","maxBitrate","parseRtcpParameters","rtcpParameters","remoteSsrc","obj","cname","rsize","reducedSize","compound","mux","writeRtcpParameters","parseMsid","spec","stream","track","planB","msidParts","parseSctpDescription","maxMessageSize","parseMLine","maxSizeLine","isNaN","sctpPort","fmt","sctpMapLines","writeSctpDescription","media","sctp","output","generateSessionId","writeSessionBoilerplate","sessId","sessVer","sessUser","version","getDirection","getKind","isRejected","parseOLine","username","sessionId","sessionVersion","netType","addressType","isValidSDP","charAt","module","exports"],"mappings":"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"}
1
+ {"version":3,"file":"sdp.js","sources":["../../../node_modules/sdp/sdp.js"],"sourcesContent":["/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nconst SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(line => line.trim());\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n const parts = blob.split('\\nm=');\n return parts.map((part, index) => (index > 0 ?\n 'm=' + part : part).trim() + '\\r\\n');\n};\n\n// Returns the session description.\nSDPUtils.getDescription = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// Returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n const sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(line => line.indexOf(prefix) === 0);\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\n// Input can be prefixed with a=.\nSDPUtils.parseCandidate = function(line) {\n let parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n const candidate = {\n foundation: parts[0],\n component: {1: 'rtp', 2: 'rtcp'}[parts[1]] || parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7],\n };\n\n for (let i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compatibility.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag. Don't overwrite.\n if (candidate[parts[i]] === undefined) {\n candidate[parts[i]] = parts[i + 1];\n }\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\n// This does not include the a= prefix!\nSDPUtils.writeCandidate = function(candidate) {\n const sdp = [];\n sdp.push(candidate.foundation);\n\n const component = candidate.component;\n if (component === 'rtp') {\n sdp.push(1);\n } else if (component === 'rtcp') {\n sdp.push(2);\n } else {\n sdp.push(component);\n }\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n const type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// Sample input:\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n};\n\n// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n let parts = line.substr(9).split(' ');\n const parsed = {\n payloadType: parseInt(parts.shift(), 10), // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generates a rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n const channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses a extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n const parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1],\n };\n};\n\n// Generates an extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses a fmtp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n const parsed = {};\n let kv;\n const parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (let j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n let line = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n const params = [];\n Object.keys(codec.parameters).forEach(param => {\n if (codec.parameters[param] !== undefined) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n const parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' '),\n };\n};\n\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n let lines = '';\n let pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(fb => {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses a RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n const sp = line.indexOf(' ');\n const parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10),\n };\n const colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Parse a ssrc-group line (see RFC 5576). Sample input:\n// a=ssrc-group:semantics 12 34\nSDPUtils.parseSsrcGroup = function(line) {\n const parts = line.substr(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(ssrc => parseInt(ssrc, 10)),\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// Returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n const mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n};\n\n// Parses a fingerprint line for DTLS-SRTP.\nSDPUtils.parseFingerprint = function(line) {\n const parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1].toUpperCase(), // the definition is upper-case in RFC 4572.\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint),\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n let sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(fp => {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n const parts = line.substr(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n const parts = keyParams.substr(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES parameters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n const lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n const ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n const pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substr(12),\n password: pwd.substr(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n let sdp = 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n if (params.iceLite) {\n sdp += 'a=ice-lite\\r\\n';\n }\n return sdp;\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n const description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: [],\n };\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n for (let i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n const pt = mline[i];\n const rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n const codec = SDPUtils.parseRtpMap(rtpmapline);\n const fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp:<pt> is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(line => {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n let sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(codec => {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(codec => {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n let maxptime = 0;\n caps.codecs.forEach(codec => {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(extension => {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n const encodingParameters = [];\n const description = SDPUtils.parseRtpParameters(mediaSection);\n const hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n const hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n const ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(parts => parts.attribute === 'cname');\n const primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n let secondarySsrc;\n\n const flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(line => {\n const parts = line.substr(17).split(' ');\n return parts.map(part => parseInt(part, 10));\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(codec => {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n let encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red',\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc,\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n let bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(params => {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n const rtcpParameters = {};\n\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n const remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(obj => obj.attribute === 'cname')[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n const rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n const mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\nSDPUtils.writeRtcpParameters = function(rtcpParameters) {\n let sdp = '';\n if (rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n if (rtcpParameters.mux) {\n sdp += 'a=rtcp-mux\\r\\n';\n }\n if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) {\n sdp += 'a=ssrc:' + rtcpParameters.ssrc +\n ' cname:' + rtcpParameters.cname + '\\r\\n';\n }\n return sdp;\n};\n\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n let parts;\n const spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substr(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n const planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(line => SDPUtils.parseSsrcMedia(line))\n .filter(msidParts => msidParts.attribute === 'msid');\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n const mline = SDPUtils.parseMLine(mediaSection);\n const maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n let maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substr(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n const sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substr(12), 10),\n protocol: mline.fmt,\n maxMessageSize,\n };\n }\n const sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n const parts = sctpMapLines[0]\n .substr(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize,\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n let output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n',\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n',\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 21);\n};\n\n// Write boiler plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n let sessionId;\n const version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n const user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n const lines = SDPUtils.splitLines(mediaSection);\n for (let i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const mline = lines[0].split(' ');\n return mline[0].substr(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n const lines = SDPUtils.splitLines(mediaSection);\n const parts = lines[0].substr(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' '),\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n const line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n const parts = line.substr(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5],\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n const lines = SDPUtils.splitLines(blob);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n"],"names":["SDPUtils","Math","random","toString","substr","localCName","generateIdentifier","splitLines","blob","trim","split","map","line","splitSections","part","index","getDescription","sections","getMediaSections","shift","matchPrefix","prefix","filter","indexOf","parseCandidate","parts","substring","candidate","foundation","component","protocol","toLowerCase","priority","parseInt","ip","address","port","type","i","length","relatedAddress","relatedPort","tcpType","ufrag","usernameFragment","undefined","writeCandidate","sdp","push","toUpperCase","join","parseIceOptions","parseRtpMap","parsed","payloadType","name","clockRate","channels","numChannels","writeRtpMap","codec","pt","preferredPayloadType","parseExtmap","id","direction","uri","writeExtmap","headerExtension","preferredId","parseFmtp","kv","j","writeFmtp","parameters","Object","keys","params","forEach","param","parseRtcpFb","parameter","writeRtcpFb","lines","rtcpFeedback","fb","parseSsrcMedia","sp","ssrc","colon","attribute","value","parseSsrcGroup","semantics","ssrcs","getMid","mediaSection","mid","parseFingerprint","algorithm","getDtlsParameters","sessionpart","role","fingerprints","writeDtlsParameters","setupType","fp","parseCryptoLine","tag","cryptoSuite","keyParams","sessionParams","slice","writeCryptoLine","writeCryptoKeyParams","parseCryptoKeyParams","keyMethod","keySalt","lifeTime","mkiValue","mkiLength","getCryptoParameters","getIceParameters","pwd","password","writeIceParameters","iceLite","parseRtpParameters","description","codecs","headerExtensions","fecMechanisms","rtcp","mline","rtpmapline","fmtps","writeRtpDescription","kind","caps","maxptime","extension","parseRtpEncodingParameters","encodingParameters","hasRed","hasUlpfec","primarySsrc","secondarySsrc","flows","apt","encParam","codecPayloadType","rtx","JSON","parse","stringify","fec","mechanism","bandwidth","maxBitrate","parseRtcpParameters","rtcpParameters","remoteSsrc","obj","cname","rsize","reducedSize","compound","mux","writeRtcpParameters","parseMsid","spec","stream","track","planB","msidParts","parseSctpDescription","parseMLine","maxSizeLine","maxMessageSize","isNaN","sctpPort","fmt","sctpMapLines","writeSctpDescription","media","sctp","output","generateSessionId","writeSessionBoilerplate","sessId","sessVer","sessUser","sessionId","version","getDirection","getKind","isRejected","parseOLine","username","sessionVersion","netType","addressType","isValidSDP","charAt","module","exports"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../_virtual/_rollupPluginBabelHelpers.js"),r=require("./url.js"),o=require("./manager.js"),t=require("./socket.js"),s=require("../../../socket.io-parser/build/esm/index.js"),n={};function a(t,s){"object"===e.typeof(t)&&(s=t,t=void 0),s=s||{};var a,c=r.url(t,s.path||"/socket.io"),u=c.source,i=c.id,p=c.path,l=n[i]&&p in n[i].nsps;return s.forceNew||s["force new connection"]||!1===s.multiplex||l?a=new o.Manager(u,s):(n[i]||(n[i]=new o.Manager(u,s)),a=n[i]),c.query&&!s.query&&(s.query=c.queryKey),a.socket(c.path,s)}Object.assign(a,{Manager:o.Manager,Socket:t.Socket,io:a,connect:a}),exports.Manager=o.Manager,exports.Socket=t.Socket,exports.protocol=s.protocol,exports.connect=a,exports.default=a,exports.io=a;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./url.js"),r=require("./manager.js"),o=require("./socket.js"),t=require("../../../socket.io-parser/build/esm/index.js");const n={};function s(o,t){"object"==typeof o&&(t=o,o=void 0),t=t||{};const s=e.url(o,t.path||"/socket.io"),c=s.source,a=s.id,i=s.path,u=n[a]&&i in n[a].nsps;let p;return t.forceNew||t["force new connection"]||!1===t.multiplex||u?p=new r.Manager(c,t):(n[a]||(n[a]=new r.Manager(c,t)),p=n[a]),s.query&&!t.query&&(t.query=s.queryKey),p.socket(s.path,t)}Object.assign(s,{Manager:r.Manager,Socket:o.Socket,io:s,connect:s}),exports.Manager=r.Manager,exports.Socket=o.Socket,exports.protocol=t.protocol,exports.connect=s,exports.default=s,exports.io=s;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../node_modules/socket.io-client/build/esm/index.js"],"sourcesContent":["import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n"],"names":["cache","lookup","uri","opts","_typeof","undefined","io","parsed","url","path","source","id","sameNamespace","forceNew","multiplex","Manager","query","queryKey","socket","Object","assign","Socket","connect"],"mappings":"0QAMMA,EAAQ,CAAA,EACd,SAASC,EAAOC,EAAKC,GACE,WAAfC,EAAOF,OAAAA,KACPC,EAAOD,EACPA,OAAMG,GAEVF,EAAOA,GAAQ,GACf,IASIG,EATEC,EAASC,EAAAA,IAAIN,EAAKC,EAAKM,MAAQ,cAC/BC,EAASH,EAAOG,OAChBC,EAAKJ,EAAOI,GACZF,EAAOF,EAAOE,KACdG,EAAgBZ,EAAMW,IAAOF,KAAQT,EAAMW,GAAU,KAkB3D,OAjBsBR,EAAKU,UACvBV,EAAK,0BACL,IAAUA,EAAKW,WACfF,EAGAN,EAAK,IAAIS,EAAAA,QAAQL,EAAQP,IAGpBH,EAAMW,KACPX,EAAMW,GAAM,IAAII,EAAOA,QAACL,EAAQP,IAEpCG,EAAKN,EAAMW,IAEXJ,EAAOS,QAAUb,EAAKa,QACtBb,EAAKa,MAAQT,EAAOU,UAEjBX,EAAGY,OAAOX,EAAOE,KAAMN,EAClC,CAGAgB,OAAOC,OAAOnB,EAAQ,CAClBc,QAAAA,EAAOA,QACPM,OAAAA,EAAMA,OACNf,GAAIL,EACJqB,QAASrB"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/socket.io-client/build/esm/index.js"],"sourcesContent":["import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n"],"names":["cache","lookup","uri","opts","undefined","parsed","url","path","source","id","sameNamespace","io","forceNew","multiplex","Manager","query","queryKey","socket","Object","assign","Socket","connect"],"mappings":"2MAMA,MAAMA,EAAQ,CAAA,EACd,SAASC,EAAOC,EAAKC,GACE,iBAARD,IACPC,EAAOD,EACPA,OAAME,GAEVD,EAAOA,GAAQ,GACf,MAAME,EAASC,EAAAA,IAAIJ,EAAKC,EAAKI,MAAQ,cAC/BC,EAASH,EAAOG,OAChBC,EAAKJ,EAAOI,GACZF,EAAOF,EAAOE,KACdG,EAAgBV,EAAMS,IAAOF,KAAQP,EAAMS,GAAU,KAK3D,IAAIE,EAaJ,OAjBsBR,EAAKS,UACvBT,EAAK,0BACL,IAAUA,EAAKU,WACfH,EAGAC,EAAK,IAAIG,EAAAA,QAAQN,EAAQL,IAGpBH,EAAMS,KACPT,EAAMS,GAAM,IAAIK,EAAOA,QAACN,EAAQL,IAEpCQ,EAAKX,EAAMS,IAEXJ,EAAOU,QAAUZ,EAAKY,QACtBZ,EAAKY,MAAQV,EAAOW,UAEjBL,EAAGM,OAAOZ,EAAOE,KAAMJ,EAClC,CAGAe,OAAOC,OAAOlB,EAAQ,SAClBa,EAAOA,eACPM,EAAMA,OACNT,GAAIV,EACJoB,QAASpB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../_virtual/_rollupPluginBabelHelpers.js");require("../../../engine.io-client/build/esm/index.js");var t=require("./socket.js"),n=require("../../../socket.io-parser/build/esm/index.js"),i=require("./on.js"),o=require("./contrib/backo2.js"),s=require("../../../@socket.io/component-emitter/index.mjs.js"),r=require("../../../engine.io-client/build/esm/util.js"),c=require("../../../engine.io-client/build/esm/socket.js"),a=require("../../../engine.io-client/build/esm/transports/websocket-constructor.browser.js"),u=function(s){e.inherits(h,s);var u=e.createSuper(h);function h(t,i){var s,c;e.classCallCheck(this,h),(s=u.call(this)).nsps={},s.subs=[],t&&"object"===e.typeof(t)&&(i=t,t=void 0),(i=i||{}).path=i.path||"/socket.io",s.opts=i,r.installTimerFunctions(e.assertThisInitialized(s),i),s.reconnection(!1!==i.reconnection),s.reconnectionAttempts(i.reconnectionAttempts||1/0),s.reconnectionDelay(i.reconnectionDelay||1e3),s.reconnectionDelayMax(i.reconnectionDelayMax||5e3),s.randomizationFactor(null!==(c=i.randomizationFactor)&&void 0!==c?c:.5),s.backoff=new o.Backoff({min:s.reconnectionDelay(),max:s.reconnectionDelayMax(),jitter:s.randomizationFactor()}),s.timeout(null==i.timeout?2e4:i.timeout),s._readyState="closed",s.uri=t;var a=i.parser||n;return s.encoder=new a.Encoder,s.decoder=new a.Decoder,s._autoConnect=!1!==i.autoConnect,s._autoConnect&&s.open(),s}return e.createClass(h,[{key:"reconnection",value:function(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}},{key:"reconnectionAttempts",value:function(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}},{key:"reconnectionDelay",value:function(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}},{key:"randomizationFactor",value:function(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}},{key:"reconnectionDelayMax",value:function(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}},{key:"timeout",value:function(e){return arguments.length?(this._timeout=e,this):this._timeout}},{key:"maybeReconnectOnOpen",value:function(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}},{key:"open",value:function(e){var t=this;if(~this._readyState.indexOf("open"))return this;this.engine=new c.Socket(this.uri,this.opts);var n=this.engine,o=this;this._readyState="opening",this.skipReconnect=!1;var s=i.on(n,"open",(function(){o.onopen(),e&&e()})),r=i.on(n,"error",(function(n){o.cleanup(),o._readyState="closed",t.emitReserved("error",n),e?e(n):o.maybeReconnectOnOpen()}));if(!1!==this._timeout){var a=this._timeout;0===a&&s();var u=this.setTimeoutFn((function(){s(),n.close(),n.emit("error",new Error("timeout"))}),a);this.opts.autoUnref&&u.unref(),this.subs.push((function(){clearTimeout(u)}))}return this.subs.push(s),this.subs.push(r),this}},{key:"connect",value:function(e){return this.open(e)}},{key:"onopen",value:function(){this.cleanup(),this._readyState="open",this.emitReserved("open");var e=this.engine;this.subs.push(i.on(e,"ping",this.onping.bind(this)),i.on(e,"data",this.ondata.bind(this)),i.on(e,"error",this.onerror.bind(this)),i.on(e,"close",this.onclose.bind(this)),i.on(this.decoder,"decoded",this.ondecoded.bind(this)))}},{key:"onping",value:function(){this.emitReserved("ping")}},{key:"ondata",value:function(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}},{key:"ondecoded",value:function(e){var t=this;a.nextTick((function(){t.emitReserved("packet",e)}),this.setTimeoutFn)}},{key:"onerror",value:function(e){this.emitReserved("error",e)}},{key:"socket",value:function(e,n){var i=this.nsps[e];return i||(i=new t.Socket(this,e,n),this.nsps[e]=i),i}},{key:"_destroy",value:function(e){for(var t=0,n=Object.keys(this.nsps);t<n.length;t++){var i=n[t];if(this.nsps[i].active)return}this._close()}},{key:"_packet",value:function(e){for(var t=this.encoder.encode(e),n=0;n<t.length;n++)this.engine.write(t[n],e.options)}},{key:"cleanup",value:function(){this.subs.forEach((function(e){return e()})),this.subs.length=0,this.decoder.destroy()}},{key:"_close",value:function(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}},{key:"disconnect",value:function(){return this._close()}},{key:"onclose",value:function(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}},{key:"reconnect",value:function(){var e=this;if(this._reconnecting||this.skipReconnect)return this;var t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var i=this.setTimeoutFn((function(){t.skipReconnect||(e.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((function(n){n?(t._reconnecting=!1,t.reconnect(),e.emitReserved("reconnect_error",n)):t.onreconnect()})))}),n);this.opts.autoUnref&&i.unref(),this.subs.push((function(){clearTimeout(i)}))}}},{key:"onreconnect",value:function(){var e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}]),h}(s.Emitter);exports.Manager=u;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../engine.io-client/build/esm/socket.js");require("../../../engine.io-parser/build/esm/encodePacket.browser.js"),require("../../../engine.io-parser/build/esm/commons.js"),require("../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.js");var t=require("../../../@socket.io/component-emitter/index.mjs.js"),n=require("../../../engine.io-client/build/esm/util.js");require("../../../engine.io-client/build/esm/transports/polling.js"),require("../../../engine.io-client/build/esm/transports/websocket.js");var i=require("../../../engine.io-client/build/esm/transports/websocket-constructor.browser.js"),s=require("./socket.js"),o=require("../../../socket.io-parser/build/esm/index.js"),r=require("./on.js"),c=require("./contrib/backo2.js");class h extends t.Emitter{constructor(e,t){var i;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,n.installTimerFunctions(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(i=t.randomizationFactor)&&void 0!==i?i:.5),this.backoff=new c.Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const s=t.parser||o;this.encoder=new s.Encoder,this.decoder=new s.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new e.Socket(this.uri,this.opts);const n=this.engine,i=this;this._readyState="opening",this.skipReconnect=!1;const s=r.on(n,"open",(function(){i.onopen(),t&&t()})),o=r.on(n,"error",(e=>{i.cleanup(),i._readyState="closed",this.emitReserved("error",e),t?t(e):i.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&s();const t=this.setTimeoutFn((()=>{s(),n.close(),n.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&t.unref(),this.subs.push((function(){clearTimeout(t)}))}return this.subs.push(s),this.subs.push(o),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(r.on(e,"ping",this.onping.bind(this)),r.on(e,"data",this.ondata.bind(this)),r.on(e,"error",this.onerror.bind(this)),r.on(e,"close",this.onclose.bind(this)),r.on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){i.nextTick((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n||(n=new s.Socket(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;n<t.length;n++)this.engine.write(t[n],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&n.unref(),this.subs.push((function(){clearTimeout(n)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}exports.Manager=h;
2
2
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sources":["../../../../../node_modules/socket.io-client/build/esm/manager.js"],"sourcesContent":["import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n"],"names":["Manager","_Emitter","_inherits","_super","_createSuper","uri","opts","_this","_a","_classCallCheck","this","call","nsps","subs","_typeof","undefined","path","installTimerFunctions","_assertThisInitialized","assertThisInitialized","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","Backoff","min","max","jitter","timeout","_readyState","_parser","parser","encoder","Encoder","decoder","Decoder","_autoConnect","autoConnect","open","_createClass","createClass","key","value","v","arguments","length","_reconnection","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","_reconnecting","attempts","reconnect","fn","_this2","indexOf","engine","Engine","Socket","socket","self","skipReconnect","openSubDestroy","on","onopen","errorSub","err","cleanup","emitReserved","maybeReconnectOnOpen","timer","setTimeoutFn","close","emit","Error","autoUnref","unref","push","clearTimeout","onping","bind","ondata","onerror","onclose","ondecoded","data","add","e","packet","_this3","nextTick","nsp","_i","_nsps","Object","keys","active","_close","encodedPackets","encode","i","write","options","forEach","subDestroy","destroy","reason","description","reset","_this4","delay","duration","onreconnect","attempt","Emitter"],"mappings":"6lBAMaA,EAAO,SAAAC,GAAAC,WAAAF,EAAAC,GAAA,IAAAE,EAAAC,cAAAJ,GAChB,SAAYK,EAAAA,EAAKC,GAAM,IAAAC,EACfC,EADeC,iBAAAC,KAAAV,IAEnBO,EAAAJ,EAAAQ,KAAAD,OACKE,KAAO,GACZL,EAAKM,KAAO,GACRR,GAAO,WAAQS,EAAA,OAAYT,KAC3BC,EAAOD,EACPA,OAAMU,IAEVT,EAAOA,GAAQ,IACVU,KAAOV,EAAKU,MAAQ,aACzBT,EAAKD,KAAOA,EACZW,EAAAA,sBAAqBC,EAAAC,sBAAAZ,GAAOD,GAC5BC,EAAKa,cAAmC,IAAtBd,EAAKc,cACvBb,EAAKc,qBAAqBf,EAAKe,sBAAwBC,KACvDf,EAAKgB,kBAAkBjB,EAAKiB,mBAAqB,KACjDhB,EAAKiB,qBAAqBlB,EAAKkB,sBAAwB,KACvDjB,EAAKkB,oBAAwD,QAAnCjB,EAAKF,EAAKmB,2BAAwC,IAAPjB,EAAgBA,EAAK,IAC1FD,EAAKmB,QAAU,IAAIC,UAAQ,CACvBC,IAAKrB,EAAKgB,oBACVM,IAAKtB,EAAKiB,uBACVM,OAAQvB,EAAKkB,wBAEjBlB,EAAKwB,QAAQ,MAAQzB,EAAKyB,QAAU,IAAQzB,EAAKyB,SACjDxB,EAAKyB,YAAc,SACnBzB,EAAKF,IAAMA,EACX,IAAM4B,EAAU3B,EAAK4B,QAAUA,EAKf,OAJhB3B,EAAK4B,QAAU,IAAIF,EAAQG,QAC3B7B,EAAK8B,QAAU,IAAIJ,EAAQK,QAC3B/B,EAAKgC,cAAoC,IAArBjC,EAAKkC,YACrBjC,EAAKgC,cACLhC,EAAKkC,OAAOlC,CACpB,CA6TC,OA7TAmC,EAAAC,YAAA3C,EAAA,CAAA,CAAA4C,IAAA,eAAAC,MACD,SAAaC,GACT,OAAKC,UAAUC,QAEftC,KAAKuC,gBAAkBH,EAChBpC,MAFIA,KAAKuC,aAGpB,GAAC,CAAAL,IAAA,uBAAAC,MACD,SAAqBC,GACjB,YAAU/B,IAAN+B,EACOpC,KAAKwC,uBAChBxC,KAAKwC,sBAAwBJ,EACtBpC,KACX,GAAC,CAAAkC,IAAA,oBAAAC,MACD,SAAkBC,GACd,IAAItC,EACJ,YAAUO,IAAN+B,EACOpC,KAAKyC,oBAChBzC,KAAKyC,mBAAqBL,EACF,QAAvBtC,EAAKE,KAAKgB,eAA4B,IAAPlB,GAAyBA,EAAG4C,OAAON,GAC5DpC,KACX,GAAC,CAAAkC,IAAA,sBAAAC,MACD,SAAoBC,GAChB,IAAItC,EACJ,YAAUO,IAAN+B,EACOpC,KAAK2C,sBAChB3C,KAAK2C,qBAAuBP,EACJ,QAAvBtC,EAAKE,KAAKgB,eAA4B,IAAPlB,GAAyBA,EAAG8C,UAAUR,GAC/DpC,KACX,GAAC,CAAAkC,IAAA,uBAAAC,MACD,SAAqBC,GACjB,IAAItC,EACJ,YAAUO,IAAN+B,EACOpC,KAAK6C,uBAChB7C,KAAK6C,sBAAwBT,EACL,QAAvBtC,EAAKE,KAAKgB,eAA4B,IAAPlB,GAAyBA,EAAGgD,OAAOV,GAC5DpC,KACX,GAAC,CAAAkC,IAAA,UAAAC,MACD,SAAQC,GACJ,OAAKC,UAAUC,QAEftC,KAAK+C,SAAWX,EACTpC,MAFIA,KAAK+C,QAGpB,GACA,CAAAb,IAAA,uBAAAC,MAMA,YAESnC,KAAKgD,eACNhD,KAAKuC,eACqB,IAA1BvC,KAAKgB,QAAQiC,UAEbjD,KAAKkD,WAEb,GACA,CAAAhB,IAAA,OAAAC,MAOA,SAAKgB,GAAI,IAAAC,EAAApD,KACL,IAAKA,KAAKsB,YAAY+B,QAAQ,QAC1B,OAAOrD,KACXA,KAAKsD,OAAS,IAAIC,EAAMC,OAACxD,KAAKL,IAAKK,KAAKJ,MACxC,IAAM6D,EAASzD,KAAKsD,OACdI,EAAO1D,KACbA,KAAKsB,YAAc,UACnBtB,KAAK2D,eAAgB,EAErB,IAAMC,EAAiBC,EAAAA,GAAGJ,EAAQ,QAAQ,WACtCC,EAAKI,SACLX,GAAMA,GACV,IAEMY,EAAWF,EAAEA,GAACJ,EAAQ,SAAS,SAACO,GAClCN,EAAKO,UACLP,EAAKpC,YAAc,SACnB8B,EAAKc,aAAa,QAASF,GACvBb,EACAA,EAAGa,GAIHN,EAAKS,sBAEb,IACA,IAAI,IAAUnE,KAAK+C,SAAU,CACzB,IAAM1B,EAAUrB,KAAK+C,SACL,IAAZ1B,GACAuC,IAGJ,IAAMQ,EAAQpE,KAAKqE,cAAa,WAC5BT,IACAH,EAAOa,QAEPb,EAAOc,KAAK,QAAS,IAAIC,MAAM,WAClC,GAAEnD,GACCrB,KAAKJ,KAAK6E,WACVL,EAAMM,QAEV1E,KAAKG,KAAKwE,MAAK,WACXC,aAAaR,EACjB,GACJ,CAGA,OAFApE,KAAKG,KAAKwE,KAAKf,GACf5D,KAAKG,KAAKwE,KAAKZ,GACR/D,IACX,GACA,CAAAkC,IAAA,UAAAC,MAMA,SAAQgB,GACJ,OAAOnD,KAAK+B,KAAKoB,EACrB,GACA,CAAAjB,IAAA,SAAAC,MAKA,WAEInC,KAAKiE,UAELjE,KAAKsB,YAAc,OACnBtB,KAAKkE,aAAa,QAElB,IAAMT,EAASzD,KAAKsD,OACpBtD,KAAKG,KAAKwE,KAAKd,KAAGJ,EAAQ,OAAQzD,KAAK6E,OAAOC,KAAK9E,OAAQ6D,EAAAA,GAAGJ,EAAQ,OAAQzD,KAAK+E,OAAOD,KAAK9E,OAAQ6D,KAAGJ,EAAQ,QAASzD,KAAKgF,QAAQF,KAAK9E,OAAQ6D,EAAAA,GAAGJ,EAAQ,QAASzD,KAAKiF,QAAQH,KAAK9E,OAAQ6D,EAAEA,GAAC7D,KAAK2B,QAAS,UAAW3B,KAAKkF,UAAUJ,KAAK9E,OACvP,GACA,CAAAkC,IAAA,SAAAC,MAKA,WACInC,KAAKkE,aAAa,OACtB,GACA,CAAAhC,IAAA,SAAAC,MAKA,SAAOgD,GACH,IACInF,KAAK2B,QAAQyD,IAAID,EAIrB,CAFA,MAAOE,GACHrF,KAAKiF,QAAQ,cAAeI,EAChC,CACJ,GACA,CAAAnD,IAAA,YAAAC,MAKA,SAAUmD,GAAQ,IAAAC,EAAAvF,KAEdwF,EAAAA,UAAS,WACLD,EAAKrB,aAAa,SAAUoB,EAChC,GAAGtF,KAAKqE,aACZ,GACA,CAAAnC,IAAA,UAAAC,MAKA,SAAQ6B,GACJhE,KAAKkE,aAAa,QAASF,EAC/B,GACA,CAAA9B,IAAA,SAAAC,MAMA,SAAOsD,EAAK7F,GACR,IAAI6D,EAASzD,KAAKE,KAAKuF,GAKvB,OAJKhC,IACDA,EAAS,IAAID,EAAMA,OAACxD,KAAMyF,EAAK7F,GAC/BI,KAAKE,KAAKuF,GAAOhC,GAEdA,CACX,GACA,CAAAvB,IAAA,WAAAC,MAMA,SAASsB,GAEL,IADA,IACAiC,EAAA,EAAAC,EADaC,OAAOC,KAAK7F,KAAKE,MACNwF,EAAAC,EAAArD,OAAAoD,IAAA,CAAnB,IAAMD,EAAGE,EAAAD,GAEV,GADe1F,KAAKE,KAAKuF,GACdK,OACP,MAER,CACA9F,KAAK+F,QACT,GACA,CAAA7D,IAAA,UAAAC,MAMA,SAAQmD,GAEJ,IADA,IAAMU,EAAiBhG,KAAKyB,QAAQwE,OAAOX,GAClCY,EAAI,EAAGA,EAAIF,EAAe1D,OAAQ4D,IACvClG,KAAKsD,OAAO6C,MAAMH,EAAeE,GAAIZ,EAAOc,QAEpD,GACA,CAAAlE,IAAA,UAAAC,MAKA,WACInC,KAAKG,KAAKkG,SAAQ,SAACC,GAAU,OAAKA,OAClCtG,KAAKG,KAAKmC,OAAS,EACnBtC,KAAK2B,QAAQ4E,SACjB,GACA,CAAArE,IAAA,SAAAC,MAKA,WACInC,KAAK2D,eAAgB,EACrB3D,KAAKgD,eAAgB,EACrBhD,KAAKiF,QAAQ,gBACTjF,KAAKsD,QACLtD,KAAKsD,OAAOgB,OACpB,GACA,CAAApC,IAAA,aAAAC,MAKA,WACI,OAAOnC,KAAK+F,QAChB,GACA,CAAA7D,IAAA,UAAAC,MAKA,SAAQqE,EAAQC,GACZzG,KAAKiE,UACLjE,KAAKgB,QAAQ0F,QACb1G,KAAKsB,YAAc,SACnBtB,KAAKkE,aAAa,QAASsC,EAAQC,GAC/BzG,KAAKuC,gBAAkBvC,KAAK2D,eAC5B3D,KAAKkD,WAEb,GACA,CAAAhB,IAAA,YAAAC,MAKA,WAAY,IAAAwE,EAAA3G,KACR,GAAIA,KAAKgD,eAAiBhD,KAAK2D,cAC3B,OAAO3D,KACX,IAAM0D,EAAO1D,KACb,GAAIA,KAAKgB,QAAQiC,UAAYjD,KAAKwC,sBAC9BxC,KAAKgB,QAAQ0F,QACb1G,KAAKkE,aAAa,oBAClBlE,KAAKgD,eAAgB,MAEpB,CACD,IAAM4D,EAAQ5G,KAAKgB,QAAQ6F,WAC3B7G,KAAKgD,eAAgB,EACrB,IAAMoB,EAAQpE,KAAKqE,cAAa,WACxBX,EAAKC,gBAETgD,EAAKzC,aAAa,oBAAqBR,EAAK1C,QAAQiC,UAEhDS,EAAKC,eAETD,EAAK3B,MAAK,SAACiC,GACHA,GACAN,EAAKV,eAAgB,EACrBU,EAAKR,YACLyD,EAAKzC,aAAa,kBAAmBF,IAGrCN,EAAKoD,aAEb,IACH,GAAEF,GACC5G,KAAKJ,KAAK6E,WACVL,EAAMM,QAEV1E,KAAKG,KAAKwE,MAAK,WACXC,aAAaR,EACjB,GACJ,CACJ,GACA,CAAAlC,IAAA,cAAAC,MAKA,WACI,IAAM4E,EAAU/G,KAAKgB,QAAQiC,SAC7BjD,KAAKgD,eAAgB,EACrBhD,KAAKgB,QAAQ0F,QACb1G,KAAKkE,aAAa,YAAa6C,EACnC,KAACzH,CAAA,CA9Ve,CAAS0H,EAAOA"}
1
+ {"version":3,"file":"manager.js","sources":["../../../../../node_modules/socket.io-client/build/esm/manager.js"],"sourcesContent":["import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n"],"names":["Manager","Emitter","constructor","uri","opts","_a","super","this","nsps","subs","undefined","path","installTimerFunctions","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","Backoff","min","max","jitter","timeout","_readyState","_parser","parser","encoder","Encoder","decoder","Decoder","_autoConnect","autoConnect","open","v","arguments","length","_reconnection","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","maybeReconnectOnOpen","_reconnecting","attempts","reconnect","fn","indexOf","engine","Engine","Socket","socket","self","skipReconnect","openSubDestroy","on","onopen","errorSub","err","cleanup","emitReserved","timer","setTimeoutFn","close","emit","Error","autoUnref","unref","push","clearTimeout","connect","onping","bind","ondata","onerror","onclose","ondecoded","data","add","e","packet","nextTick","nsp","_destroy","Object","keys","active","_close","_packet","encodedPackets","encode","i","write","options","forEach","subDestroy","destroy","disconnect","reason","description","reset","delay","duration","onreconnect","attempt"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../_virtual/_rollupPluginBabelHelpers.js"),t=require("../../../socket.io-parser/build/esm/index.js"),n=require("./on.js"),i=require("../../../@socket.io/component-emitter/index.mjs.js"),s=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),r=function(i){e.inherits(o,i);var r=e.createSuper(o);function o(t,n,i){var s;return e.classCallCheck(this,o),(s=r.call(this)).connected=!1,s.receiveBuffer=[],s.sendBuffer=[],s.ids=0,s.acks={},s.flags={},s.io=t,s.nsp=n,i&&i.auth&&(s.auth=i.auth),s.io._autoConnect&&s.open(),s}return e.createClass(o,[{key:"disconnected",get:function(){return!this.connected}},{key:"subEvents",value:function(){if(!this.subs){var e=this.io;this.subs=[n.on(e,"open",this.onopen.bind(this)),n.on(e,"packet",this.onpacket.bind(this)),n.on(e,"error",this.onerror.bind(this)),n.on(e,"close",this.onclose.bind(this))]}}},{key:"active",get:function(){return!!this.subs}},{key:"connect",value:function(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}},{key:"open",value:function(){return this.connect()}},{key:"send",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.unshift("message"),this.emit.apply(this,t),this}},{key:"emit",value:function(e){if(s.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];i.unshift(e);var o={type:t.PacketType.EVENT,data:i,options:{}};if(o.options.compress=!1!==this.flags.compress,"function"==typeof i[i.length-1]){var a=this.ids++,c=i.pop();this._registerAckCallback(a,c),o.id=a}var u=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable,h=this.flags.volatile&&(!u||!this.connected);return h||(this.connected?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}},{key:"_registerAckCallback",value:function(e,t){var n=this,i=this.flags.timeout;if(void 0!==i){var s=this.io.setTimeoutFn((function(){delete n.acks[e];for(var i=0;i<n.sendBuffer.length;i++)n.sendBuffer[i].id===e&&n.sendBuffer.splice(i,1);t.call(n,new Error("operation has timed out"))}),i);this.acks[e]=function(){n.io.clearTimeoutFn(s);for(var e=arguments.length,i=new Array(e),r=0;r<e;r++)i[r]=arguments[r];t.apply(n,[null].concat(i))}}else this.acks[e]=t}},{key:"packet",value:function(e){e.nsp=this.nsp,this.io._packet(e)}},{key:"onopen",value:function(){var e=this;"function"==typeof this.auth?this.auth((function(n){e.packet({type:t.PacketType.CONNECT,data:n})})):this.packet({type:t.PacketType.CONNECT,data:this.auth})}},{key:"onerror",value:function(e){this.connected||this.emitReserved("connect_error",e)}},{key:"onclose",value:function(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}},{key:"onpacket",value:function(e){if(e.nsp===this.nsp)switch(e.type){case t.PacketType.CONNECT:if(e.data&&e.data.sid){var n=e.data.sid;this.onconnect(n)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case t.PacketType.EVENT:case t.PacketType.BINARY_EVENT:this.onevent(e);break;case t.PacketType.ACK:case t.PacketType.BINARY_ACK:this.onack(e);break;case t.PacketType.DISCONNECT:this.ondisconnect();break;case t.PacketType.CONNECT_ERROR:this.destroy();var i=new Error(e.data.message);i.data=e.data.data,this.emitReserved("connect_error",i)}}},{key:"onevent",value:function(e){var t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}},{key:"emitEvent",value:function(t){if(this._anyListeners&&this._anyListeners.length){var n,i=this._anyListeners.slice(),s=e.createForOfIteratorHelper(i);try{for(s.s();!(n=s.n()).done;){n.value.apply(this,t)}}catch(e){s.e(e)}finally{s.f()}}e.get(e.getPrototypeOf(o.prototype),"emit",this).apply(this,t)}},{key:"ack",value:function(e){var n=this,i=!1;return function(){if(!i){i=!0;for(var s=arguments.length,r=new Array(s),o=0;o<s;o++)r[o]=arguments[o];n.packet({type:t.PacketType.ACK,id:e,data:r})}}}},{key:"onack",value:function(e){var t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}},{key:"onconnect",value:function(e){this.id=e,this.connected=!0,this.emitBuffered(),this.emitReserved("connect")}},{key:"emitBuffered",value:function(){var e=this;this.receiveBuffer.forEach((function(t){return e.emitEvent(t)})),this.receiveBuffer=[],this.sendBuffer.forEach((function(t){e.notifyOutgoingListeners(t),e.packet(t)})),this.sendBuffer=[]}},{key:"ondisconnect",value:function(){this.destroy(),this.onclose("io server disconnect")}},{key:"destroy",value:function(){this.subs&&(this.subs.forEach((function(e){return e()})),this.subs=void 0),this.io._destroy(this)}},{key:"disconnect",value:function(){return this.connected&&this.packet({type:t.PacketType.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}},{key:"close",value:function(){return this.disconnect()}},{key:"compress",value:function(e){return this.flags.compress=e,this}},{key:"volatile",get:function(){return this.flags.volatile=!0,this}},{key:"timeout",value:function(e){return this.flags.timeout=e,this}},{key:"onAny",value:function(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}},{key:"prependAny",value:function(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}},{key:"offAny",value:function(e){if(!this._anyListeners)return this;if(e){for(var t=this._anyListeners,n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyListeners=[];return this}},{key:"listenersAny",value:function(){return this._anyListeners||[]}},{key:"onAnyOutgoing",value:function(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}},{key:"prependAnyOutgoing",value:function(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}},{key:"offAnyOutgoing",value:function(e){if(!this._anyOutgoingListeners)return this;if(e){for(var t=this._anyOutgoingListeners,n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyOutgoingListeners=[];return this}},{key:"listenersAnyOutgoing",value:function(){return this._anyOutgoingListeners||[]}},{key:"notifyOutgoingListeners",value:function(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){var n,i=this._anyOutgoingListeners.slice(),s=e.createForOfIteratorHelper(i);try{for(s.s();!(n=s.n()).done;){n.value.apply(this,t.data)}}catch(e){s.e(e)}finally{s.f()}}}}]),o}(i.Emitter);exports.Socket=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("../../../socket.io-parser/build/esm/index.js"),e=require("./on.js"),s=require("../../../@socket.io/component-emitter/index.mjs.js");const i=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class n extends s.Emitter{constructor(t,e,s){super(),this.connected=!1,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=e,s&&s.auth&&(this.auth=s.auth),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[e.on(t,"open",this.onopen.bind(this)),e.on(t,"packet",this.onpacket.bind(this)),e.on(t,"error",this.onerror.bind(this)),e.on(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return e.unshift("message"),this.emit.apply(this,e),this}emit(e){if(i.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');for(var s=arguments.length,n=new Array(s>1?s-1:0),r=1;r<s;r++)n[r-1]=arguments[r];n.unshift(e);const o={type:t.PacketType.EVENT,data:n,options:{}};if(o.options.compress=!1!==this.flags.compress,"function"==typeof n[n.length-1]){const t=this.ids++,e=n.pop();this._registerAckCallback(t,e),o.id=t}const h=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!h||!this.connected)||(this.connected?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}_registerAckCallback(t,e){var s=this;const i=this.flags.timeout;if(void 0===i)return void(this.acks[t]=e);const n=this.io.setTimeoutFn((()=>{delete this.acks[t];for(let e=0;e<this.sendBuffer.length;e++)this.sendBuffer[e].id===t&&this.sendBuffer.splice(e,1);e.call(this,new Error("operation has timed out"))}),i);this.acks[t]=function(){s.io.clearTimeoutFn(n);for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.apply(s,[null,...i])}}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:t.PacketType.CONNECT,data:e})})):this.packet({type:t.PacketType.CONNECT,data:this.auth})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case t.PacketType.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case t.PacketType.EVENT:case t.PacketType.BINARY_EVENT:this.onevent(e);break;case t.PacketType.ACK:case t.PacketType.BINARY_ACK:this.onack(e);break;case t.PacketType.DISCONNECT:this.ondisconnect();break;case t.PacketType.CONNECT_ERROR:this.destroy();const s=new Error(e.data.message);s.data=e.data.data,this.emitReserved("connect_error",s)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const s of e)s.apply(this,t)}super.emit.apply(this,t)}ack(e){const s=this;let i=!1;return function(){if(!i){i=!0;for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];s.packet({type:t.PacketType.ACK,id:e,data:r})}}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(e.apply(this,t.data),delete this.acks[t.id])}onconnect(t){this.id=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>{this.notifyOutgoingListeners(t),this.packet(t)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:t.PacketType.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let s=0;s<e.length;s++)if(t===e[s])return e.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const e=this._anyOutgoingListeners;for(let s=0;s<e.length;s++)if(t===e[s])return e.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const e=this._anyOutgoingListeners.slice();for(const s of e)s.apply(this,t.data)}}}exports.Socket=n;
2
2
  //# sourceMappingURL=socket.js.map