@nethesis/phone-island 1.0.8-dev.1 → 1.0.8-dev.11

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("./janus.js"),r=require("../../store/index.js"),s=require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),o=require("../devices/devices.js");function n(e,s){return new Promise((function(o,n){var a=r.store.getState().webrtc.sipcall;a.createOffer({tracks:s,success:function(r){t.default.debug("Got SDP!"),t.default.debug(r),a.send({message:{request:"call",uri:e},jsep:r}),o(!0)},error:function(e){t.default.error("WebRTC error...",e),t.default.error("WebRTC error call on createOffer: ",e),n(!1)}})}))}exports.answerWebRTC=function(){var e,s=r.store.getState().webrtc,n=s.sipcall,a=s.jsepGlobal;if(console.log("[JSEP] answerWebRTC called",{hasSipcall:!!n,hasJsepGlobal:!!a,sipcallId:null===(e=null==n?void 0:n.getId)||void 0===e?void 0:e.call(n),timestamp:(new Date).toISOString()}),n&&a){var c=o.getCurrentAudioInputDeviceId(),i=[];c?i.push({type:"audio",capture:{deviceId:{exact:c}},recv:!0}):i.push({type:"audio",capture:!0,recv:!0});try{n.createAnswer({jsep:a,tracks:i,success:function(e){n.send({message:{request:"accept"},jsep:e})},error:function(e){t.default.error("WebRTC error:",e),e&&("object"==typeof e&&469===e.code||"string"==typeof e&&e.includes("Unexpected ANSWER"))?(console.warn('Got "Unexpected ANSWER" error, forcing the answer anyway'),n.send({message:{request:"accept"}})):n.send({message:{request:"decline",code:480}})}})}catch(e){console.error("Exception in createAnswer:",e),n.send({message:{request:"accept"}})}}},exports.call=n,exports.callSipURI=function(r){var s=this;o.getSupportedDevices((function(){return e.__awaiter(s,void 0,void 0,(function(){var s,a;return e.__generator(this,(function(e){switch(e.label){case 0:return t.default.log("This is a SIP call"),s=o.getCurrentAudioInputDeviceId(),a=[],s?a.push({type:"audio",capture:{deviceId:{exact:s}},recv:!0}):a.push({type:"audio",capture:!0,recv:!0}),[4,n(r,a)];case 1:return e.sent(),[2]}}))}))}))},exports.detach=function(){var e=r.store.getState().webrtc.sipcall;if(e)return e.detach()},exports.handleRemote=function(e){var t=r.store.getState().webrtc.sipcall;t&&t.handleRemoteJsep({jsep:e,error:function(e){console.error("WebRTC error... "+JSON.stringify(e));t.send({message:{request:"hangup"}}),t.hangup()}})},exports.hangup=function(){var e=r.store.getState().webrtc.sipcall;e&&e.send({message:{request:"hangup"}})},exports.muteWebRTC=function(){var e=r.store.getState().webrtc.sipcall;return e.muteAudio(),e.isAudioMuted()},exports.pauseWebRTC=function(){var e=r.store.getState().webrtc.sipcall;try{return e.send({message:{request:"hold"}}),!0}catch(e){return console.error(e),!1}},exports.register=function(e){var t=e.sipExten,s=e.sipSecret,o=e.sipHost,n=e.sipPort,a=r.store.getState().webrtc,c=a.sipcall,i=a.registered,u=r.store.getState().currentUser.name;i?console.log("[REGISTER] Already registered, skipping registration request",{sipExten:t,timestamp:(new Date).toISOString()}):c&&(console.log("[REGISTER] Sending registration request",{sipExten:t,timestamp:(new Date).toISOString()}),c.send({message:{request:"register",username:"sip:".concat(t,"@").concat(o),display_name:u||"",secret:s,proxy:"sip:".concat(o,":").concat(n),outbound_proxy:"sip:".concat(o,":").concat(n),sips:!1,refresh:!1}}))},exports.sendDTMF=function(e){var t=r.store.getState().webrtc.sipcall;"chrome"===s.default.browserDetails.browser?t.dtmf({dtmf:{tones:e}}):t.send({message:{request:"dtmf_info",digit:"".concat(e)}})},exports.unmuteWebRTC=function(){var e=r.store.getState().webrtc.sipcall;return e.unmuteAudio(),!e.isAudioMuted()},exports.unpauseWebRTC=function(){var e=r.store.getState().webrtc.sipcall;try{return e.send({message:{request:"unhold"}}),!0}catch(e){return console.error(e),!1}},exports.unregister=function(){var e=r.store.getState().webrtc.sipcall;e&&e.send({message:{request:"unregister"}})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/tslib/tslib.es6.js"),t=require("./janus.js"),r=require("../../store/index.js"),s=require("../../node_modules/webrtc-adapter/src/js/adapter_core.js"),a=require("../devices/devices.js");function o(e,s){return new Promise((function(a,o){var n=r.store.getState().webrtc.sipcall;n.createOffer({tracks:s,success:function(r){t.default.debug("Got SDP!"),t.default.debug(r),n.send({message:{request:"call",uri:e,autoaccept_reinvites:!1},jsep:r}),a(!0)},error:function(e){t.default.error("WebRTC error...",e),t.default.error("WebRTC error call on createOffer: ",e),o(!1)}})}))}exports.answerWebRTC=function(){var e,s=r.store.getState().webrtc,o=s.sipcall,n=s.jsepGlobal;if(console.log("[JSEP] answerWebRTC called",{hasSipcall:!!o,hasJsepGlobal:!!n,sipcallId:null===(e=null==o?void 0:o.getId)||void 0===e?void 0:e.call(o),timestamp:(new Date).toISOString()}),o&&n){var c=a.getCurrentAudioInputDeviceId(),i=[];c?i.push({type:"audio",capture:{deviceId:{exact:c}},recv:!0}):i.push({type:"audio",capture:!0,recv:!0});try{o.createAnswer({jsep:n,tracks:i,success:function(e){o.send({message:{request:"accept",autoaccept_reinvites:!1},jsep:e})},error:function(e){t.default.error("WebRTC error:",e),e&&("object"==typeof e&&469===e.code||"string"==typeof e&&e.includes("Unexpected ANSWER"))?(console.warn('Got "Unexpected ANSWER" error, forcing the answer anyway'),o.send({message:{request:"accept",autoaccept_reinvites:!1}})):o.send({message:{request:"decline",code:480}})}})}catch(e){console.error("Exception in createAnswer:",e),o.send({message:{request:"accept",autoaccept_reinvites:!1}})}}},exports.call=o,exports.callSipURI=function(r){var s=this;a.getSupportedDevices((function(){return e.__awaiter(s,void 0,void 0,(function(){var s,n;return e.__generator(this,(function(e){switch(e.label){case 0:return t.default.log("This is a SIP call"),s=a.getCurrentAudioInputDeviceId(),n=[],s?n.push({type:"audio",capture:{deviceId:{exact:s}},recv:!0}):n.push({type:"audio",capture:!0,recv:!0}),[4,o(r,n)];case 1:return e.sent(),[2]}}))}))}))},exports.detach=function(){var e=r.store.getState().webrtc.sipcall;if(e)return e.detach()},exports.handleRemote=function(e){var t=r.store.getState().webrtc.sipcall;t&&t.handleRemoteJsep({jsep:e,error:function(e){console.error("WebRTC error... "+JSON.stringify(e));t.send({message:{request:"hangup"}}),t.hangup()}})},exports.hangup=function(){var e=r.store.getState().webrtc.sipcall;e&&e.send({message:{request:"hangup"}})},exports.muteWebRTC=function(){var e=r.store.getState().webrtc.sipcall;return e.muteAudio(),e.isAudioMuted()},exports.pauseWebRTC=function(){var e=r.store.getState().webrtc.sipcall;try{return e.send({message:{request:"hold"}}),!0}catch(e){return console.error(e),!1}},exports.register=function(e){var t=e.sipExten,s=e.sipSecret,a=e.sipHost,o=e.sipPort,n=r.store.getState().webrtc,c=n.sipcall,i=n.registered,u=r.store.getState().currentUser.name;i?console.log("[REGISTER] Already registered, skipping registration request",{sipExten:t,timestamp:(new Date).toISOString()}):c&&(console.log("[REGISTER] Sending registration request",{sipExten:t,timestamp:(new Date).toISOString()}),c.send({message:{request:"register",username:"sip:".concat(t,"@").concat(a),display_name:u||"",secret:s,proxy:"sip:".concat(a,":").concat(o),outbound_proxy:"sip:".concat(a,":").concat(o),sips:!1,refresh:!1}}))},exports.sendDTMF=function(e){var t=r.store.getState().webrtc.sipcall;"chrome"===s.default.browserDetails.browser?t.dtmf({dtmf:{tones:e}}):t.send({message:{request:"dtmf_info",digit:"".concat(e)}})},exports.unmuteWebRTC=function(){var e=r.store.getState().webrtc.sipcall;return e.unmuteAudio(),!e.isAudioMuted()},exports.unpauseWebRTC=function(){var e=r.store.getState().webrtc.sipcall;try{return e.send({message:{request:"unhold"}}),!0}catch(e){return console.error(e),!1}},exports.unregister=function(){var e=r.store.getState().webrtc.sipcall;e&&e.send({message:{request:"unregister"}})};
2
2
  //# sourceMappingURL=messages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sources":["../../../src/lib/webrtc/messages.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport Janus from './janus'\nimport { store } from '../../store'\nimport adapter from 'webrtc-adapter'\nimport { getCurrentAudioInputDeviceId, getSupportedDevices } from '../devices/devices'\nimport { getJSONItem } from '../../utils'\nimport { JanusTrack } from '../../types'\n\nexport function register({\n sipExten,\n sipSecret,\n sipHost,\n sipPort,\n}: {\n sipExten: string\n sipSecret: string\n sipHost: string\n sipPort: string\n}) {\n const { sipcall, registered }: { sipcall: any; registered: boolean } = store.getState().webrtc\n const { name } = store.getState().currentUser\n\n // Prevent multiple registrations if already registered\n if (registered) {\n console.log('[REGISTER] Already registered, skipping registration request', {\n sipExten,\n timestamp: new Date().toISOString()\n })\n return\n }\n\n if (sipcall) {\n console.log('[REGISTER] Sending registration request', {\n sipExten,\n timestamp: new Date().toISOString()\n })\n sipcall.send({\n message: {\n request: 'register',\n username: `sip:${sipExten}@${sipHost}`,\n display_name: name || '',\n secret: sipSecret,\n proxy: `sip:${sipHost}:${sipPort}`,\n outbound_proxy: `sip:${sipHost}:${sipPort}`,\n sips: false,\n refresh: false,\n },\n })\n }\n}\n\nexport function answerWebRTC() {\n const { sipcall, jsepGlobal }: { sipcall: any; jsepGlobal: any } = store.getState().webrtc\n\n console.log('[JSEP] answerWebRTC called', {\n hasSipcall: !!sipcall,\n hasJsepGlobal: !!jsepGlobal,\n sipcallId: sipcall?.getId?.(),\n timestamp: new Date().toISOString()\n })\n\n if (sipcall && jsepGlobal) {\n let currentAudioInputDeviceId = getCurrentAudioInputDeviceId()\n const tracks: any[] = []\n\n if (currentAudioInputDeviceId) {\n tracks.push({\n type: 'audio',\n capture: { deviceId: { exact: currentAudioInputDeviceId } },\n recv: true,\n })\n } else {\n tracks.push({ type: 'audio', capture: true, recv: true })\n }\n\n // For incoming calls, directly create an answer without first calling handleRemoteJsep\n // because Janus has already provided us with an offer\n try {\n sipcall.createAnswer({\n jsep: jsepGlobal,\n tracks: tracks,\n success: (jsep) => {\n sipcall.send({\n message: {\n request: 'accept',\n },\n jsep: jsep,\n })\n },\n error: (error) => {\n // If there's an error during createAnswer, check if it's error 469 (Unexpected ANSWER)\n // @ts-ignore\n Janus.error('WebRTC error:', error)\n\n // Check if the error contains code 469 or the message \"Unexpected ANSWER\"\n if (\n error &&\n ((typeof error === 'object' && error.code === 469) ||\n (typeof error === 'string' && error.includes('Unexpected ANSWER')))\n ) {\n console.warn('Got \"Unexpected ANSWER\" error, forcing the answer anyway')\n // Force sending the accept message even without JSEP\n sipcall.send({\n message: {\n request: 'accept',\n },\n })\n } else {\n // For other types of errors, decline the call\n sipcall.send({\n message: {\n request: 'decline',\n code: 480,\n },\n })\n }\n },\n })\n } catch (error) {\n console.error('Exception in createAnswer:', error)\n\n // Even in case of an exception, try to accept the call\n sipcall.send({\n message: {\n request: 'accept',\n },\n })\n }\n }\n}\n\nexport function decline() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.send({\n message: {\n request: 'decline',\n },\n })\n }\n}\n\nexport function hangup() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.send({\n message: {\n request: 'hangup',\n },\n })\n }\n}\n\nexport function unregister() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.send({\n message: {\n request: 'unregister',\n },\n })\n }\n}\n\nexport function detach() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n return sipcall.detach()\n }\n}\n\nexport function handleRemote(jsep: any) {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.handleRemoteJsep({\n jsep: jsep,\n error: function (error) {\n console.error('WebRTC error... ' + JSON.stringify(error))\n\n var hangup = {\n request: 'hangup',\n }\n sipcall.send({\n message: hangup,\n })\n sipcall.hangup()\n },\n })\n }\n}\n\nexport function callSipURI(sipURI: string) {\n getSupportedDevices(async () => {\n // @ts-ignore\n Janus.log('This is a SIP call')\n\n let currentAudioInputDeviceId = getCurrentAudioInputDeviceId()\n\n const tracks: JanusTrack[] = []\n\n if (currentAudioInputDeviceId) {\n tracks.push({\n type: 'audio',\n capture: { deviceId: { exact: currentAudioInputDeviceId } },\n recv: true,\n })\n } else {\n tracks.push({ type: 'audio', capture: true, recv: true })\n }\n\n await call(sipURI, tracks)\n })\n}\n\nexport function call(sipURI: string, tracks: JanusTrack[]) {\n return new Promise((resolve, reject) => {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n\n sipcall.createOffer({\n tracks: tracks,\n success: function (jsep: any) {\n // @ts-ignore\n Janus.debug('Got SDP!')\n // @ts-ignore\n Janus.debug(jsep)\n sipcall.send({\n message: {\n request: 'call',\n uri: sipURI,\n },\n jsep: jsep,\n })\n resolve(true)\n },\n error: function (error) {\n // @ts-ignore\n Janus.error('WebRTC error...', error)\n // @ts-ignore\n Janus.error('WebRTC error call on createOffer: ', error)\n reject(false)\n },\n })\n })\n}\n\n/**\n * Mute current call so the counterpart can't listen the current user\n * @returns The muted status\n */\nexport function muteWebRTC(): boolean {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Uset the janus library functions to mute call\n sipcall.muteAudio()\n return sipcall.isAudioMuted()\n}\n\n/**\n * Unmute current call so the counterpart can listen the current user\n * @returns The muted status\n */\nexport function unmuteWebRTC(): boolean {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Use the janus library functions to unmute call\n sipcall.unmuteAudio()\n return !sipcall.isAudioMuted()\n}\n\n/**\n * Pause current call so the counterpart listens the pause ringtone\n * @returns The true if no errors occurs\n */\nexport function pauseWebRTC() {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Send hold message\n try {\n sipcall.send({\n message: {\n request: 'hold',\n },\n })\n return true\n } catch (err) {\n console.error(err)\n return false\n }\n}\n\n/**\n * Unpause the current call so the counterpart listens the current user\n * @returns The true if no errors occurs\n */\nexport function unpauseWebRTC() {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Send hold message\n try {\n sipcall.send({\n message: {\n request: 'unhold',\n },\n })\n return true\n } catch (err) {\n console.error(err)\n return false\n }\n}\n\n/**\n * Send DTMF messages to Janus\n */\nexport function sendDTMF(key: string) {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (adapter.browserDetails.browser === 'chrome') {\n sipcall.dtmf({\n dtmf: {\n tones: key,\n },\n })\n } else {\n sipcall.send({\n message: {\n request: 'dtmf_info',\n digit: `${key}`,\n },\n })\n }\n}\n"],"names":["call","sipURI","tracks","Promise","resolve","reject","sipcall","store","getState","webrtc","createOffer","success","jsep","Janus","debug","send","message","request","uri","error","_b","jsepGlobal","console","log","hasSipcall","hasJsepGlobal","sipcallId","getId","_a","timestamp","Date","toISOString","currentAudioInputDeviceId","getCurrentAudioInputDeviceId","push","type","capture","deviceId","exact","recv","createAnswer","code","includes","warn","_this","this","getSupportedDevices","__awaiter","sent","detach","handleRemoteJsep","JSON","stringify","hangup","muteAudio","isAudioMuted","err","sipExten","sipSecret","sipHost","sipPort","registered","name","currentUser","username","concat","display_name","secret","proxy","outbound_proxy","sips","refresh","key","adapter","browserDetails","browser","dtmf","tones","digit","unmuteAudio"],"mappings":"8RAwNgB,SAAAA,EAAKC,EAAgBC,GACnC,OAAO,IAAIC,SAAQ,SAACC,EAASC,GACnB,IAAAC,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QAE7DA,EAAQI,YAAY,CAClBR,OAAQA,EACRS,QAAS,SAAUC,GAEjBC,UAAMC,MAAM,YAEZD,UAAMC,MAAMF,GACZN,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,OACTC,IAAKjB,GAEPW,KAAMA,IAERR,GAAQ,EACT,EACDe,MAAO,SAAUA,GAEfN,EAAAA,QAAMM,MAAM,kBAAmBA,GAE/BN,EAAAA,QAAMM,MAAM,qCAAsCA,GAClDd,GAAO,EACR,GAEL,GACF,uCA/LQe,EAA6Db,EAAAA,MAAMC,WAAWC,OAA5EH,EAAOc,EAAAd,QAAEe,eASjB,GAPAC,QAAQC,IAAI,6BAA8B,CACxCC,aAAclB,EACdmB,gBAAiBJ,EACjBK,UAA6B,UAAlBpB,aAAA,EAAAA,EAASqB,aAAS,IAAAC,OAAA,EAAAA,EAAA5B,KAAAM,GAC7BuB,WAAW,IAAIC,MAAOC,gBAGpBzB,GAAWe,EAAY,CACzB,IAAIW,EAA4BC,EAAAA,+BAC1B/B,EAAgB,GAElB8B,EACF9B,EAAOgC,KAAK,CACVC,KAAM,QACNC,QAAS,CAAEC,SAAU,CAAEC,MAAON,IAC9BO,MAAM,IAGRrC,EAAOgC,KAAK,CAAEC,KAAM,QAASC,SAAS,EAAMG,MAAM,IAKpD,IACEjC,EAAQkC,aAAa,CACnB5B,KAAMS,EACNnB,OAAQA,EACRS,QAAS,SAACC,GACRN,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,UAEXL,KAAMA,GAET,EACDO,MAAO,SAACA,GAGNN,EAAAA,QAAMM,MAAM,gBAAiBA,GAI3BA,IACmB,iBAAVA,GAAqC,MAAfA,EAAMsB,MACjB,iBAAVtB,GAAsBA,EAAMuB,SAAS,uBAE/CpB,QAAQqB,KAAK,4DAEbrC,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,aAKbX,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,UACTwB,KAAM,MAIb,GAEJ,CAAC,MAAOtB,GACPG,QAAQH,MAAM,6BAA8BA,GAG5Cb,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,WAGd,CACF,CACH,oCA8DM,SAAqBhB,GAA3B,IAqBC2C,EAAAC,KApBCC,EAAmBA,qBAAC,WAAA,OAAAC,EAAAA,UAAAH,OAAA,OAAA,GAAA,iFAkBlB,OAhBA/B,UAAMU,IAAI,sBAENS,EAA4BC,EAA4BA,+BAEtD/B,EAAuB,GAEzB8B,EACF9B,EAAOgC,KAAK,CACVC,KAAM,QACNC,QAAS,CAAEC,SAAU,CAAEC,MAAON,IAC9BO,MAAM,IAGRrC,EAAOgC,KAAK,CAAEC,KAAM,QAASC,SAAS,EAAMG,MAAM,IAGpD,CAAA,EAAMvC,EAAKC,EAAQC,kBAAnB0B,EAAAoB,cACD,GAAA,GACH,4BA/CU,IAAA1C,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QAC7D,GAAIA,EACF,OAAOA,EAAQ2C,QAEnB,uBAEM,SAAuBrC,GACnB,IAAAN,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QACzDA,GACFA,EAAQ4C,iBAAiB,CACvBtC,KAAMA,EACNO,MAAO,SAAUA,GACfG,QAAQH,MAAM,mBAAqBgC,KAAKC,UAAUjC,IAKlDb,EAAQS,KAAK,CACXC,QAJW,CACXC,QAAS,YAKXX,EAAQ+C,QACT,GAGP,4BA9CU,IAAA/C,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QACzDA,GACFA,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,WAIjB,gCAoGU,IAAAX,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QAG7D,OADAA,EAAQgD,YACDhD,EAAQiD,cACjB,iCAoBU,IAAAjD,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QAE7D,IAME,OALAA,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,WAGN,CACR,CAAC,MAAOuC,GAEP,OADAlC,QAAQH,MAAMqC,IACP,CACR,CACH,mBAxRM,SAAmB5B,OACvB6B,EAAQ7B,EAAA6B,SACRC,EAAS9B,EAAA8B,UACTC,EAAO/B,EAAA+B,QACPC,EAAOhC,EAAAgC,QAODxC,EAAiEb,EAAAA,MAAMC,WAAWC,OAAhFH,EAAOc,EAAAd,QAAEuD,eACTC,EAASvD,EAAKA,MAACC,WAAWuD,YAAWD,KAGzCD,EACFvC,QAAQC,IAAI,+DAAgE,CAC1EkC,SAAQA,EACR5B,WAAW,IAAIC,MAAOC,gBAKtBzB,IACFgB,QAAQC,IAAI,0CAA2C,CACrDkC,SAAQA,EACR5B,WAAW,IAAIC,MAAOC,gBAExBzB,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,WACT+C,SAAU,OAAAC,OAAOR,EAAQ,KAAAQ,OAAIN,GAC7BO,aAAcJ,GAAQ,GACtBK,OAAQT,EACRU,MAAO,OAAAH,OAAON,EAAO,KAAAM,OAAIL,GACzBS,eAAgB,OAAAJ,OAAON,EAAO,KAAAM,OAAIL,GAClCU,MAAM,EACNC,SAAS,KAIjB,mBAyQM,SAAmBC,GAEf,IAAAlE,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QACtB,WAAnCmE,UAAQC,eAAeC,QACzBrE,EAAQsE,KAAK,CACXA,KAAM,CACJC,MAAOL,KAIXlE,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,YACT6D,MAAO,GAAGb,OAAAO,KAIlB,kCApEU,IAAAlE,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QAG7D,OADAA,EAAQyE,eACAzE,EAAQiD,cAClB,mCA6BU,IAAAjD,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QAE7D,IAME,OALAA,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,aAGN,CACR,CAAC,MAAOuC,GAEP,OADAlC,QAAQH,MAAMqC,IACP,CACR,CACH,gCA3JU,IAAAlD,EAA8BC,EAAKA,MAACC,WAAWC,OAAMH,QACzDA,GACFA,EAAQS,KAAK,CACXC,QAAS,CACPC,QAAS,eAIjB"}
1
+ {"version":3,"file":"messages.js","sources":["../../../src/lib/webrtc/messages.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport Janus from './janus'\nimport { store } from '../../store'\nimport adapter from 'webrtc-adapter'\nimport { getCurrentAudioInputDeviceId, getSupportedDevices } from '../devices/devices'\nimport { getJSONItem } from '../../utils'\nimport { JanusTrack } from '../../types'\n\nexport function register({\n sipExten,\n sipSecret,\n sipHost,\n sipPort,\n}: {\n sipExten: string\n sipSecret: string\n sipHost: string\n sipPort: string\n}) {\n const { sipcall, registered }: { sipcall: any; registered: boolean } = store.getState().webrtc\n const { name } = store.getState().currentUser\n\n // Prevent multiple registrations if already registered\n if (registered) {\n console.log('[REGISTER] Already registered, skipping registration request', {\n sipExten,\n timestamp: new Date().toISOString()\n })\n return\n }\n\n if (sipcall) {\n console.log('[REGISTER] Sending registration request', {\n sipExten,\n timestamp: new Date().toISOString()\n })\n sipcall.send({\n message: {\n request: 'register',\n username: `sip:${sipExten}@${sipHost}`,\n display_name: name || '',\n secret: sipSecret,\n proxy: `sip:${sipHost}:${sipPort}`,\n outbound_proxy: `sip:${sipHost}:${sipPort}`,\n sips: false,\n refresh: false,\n },\n })\n }\n}\n\nexport function answerWebRTC() {\n const { sipcall, jsepGlobal }: { sipcall: any; jsepGlobal: any } = store.getState().webrtc\n\n console.log('[JSEP] answerWebRTC called', {\n hasSipcall: !!sipcall,\n hasJsepGlobal: !!jsepGlobal,\n sipcallId: sipcall?.getId?.(),\n timestamp: new Date().toISOString()\n })\n\n if (sipcall && jsepGlobal) {\n let currentAudioInputDeviceId = getCurrentAudioInputDeviceId()\n const tracks: any[] = []\n\n if (currentAudioInputDeviceId) {\n tracks.push({\n type: 'audio',\n capture: { deviceId: { exact: currentAudioInputDeviceId } },\n recv: true,\n })\n } else {\n tracks.push({ type: 'audio', capture: true, recv: true })\n }\n\n // For incoming calls, directly create an answer without first calling handleRemoteJsep\n // because Janus has already provided us with an offer\n try {\n sipcall.createAnswer({\n jsep: jsepGlobal,\n tracks: tracks,\n success: (jsep) => {\n sipcall.send({\n message: {\n request: 'accept',\n autoaccept_reinvites: false,\n },\n jsep: jsep,\n })\n },\n error: (error) => {\n // If there's an error during createAnswer, check if it's error 469 (Unexpected ANSWER)\n // @ts-ignore\n Janus.error('WebRTC error:', error)\n\n // Check if the error contains code 469 or the message \"Unexpected ANSWER\"\n if (\n error &&\n ((typeof error === 'object' && error.code === 469) ||\n (typeof error === 'string' && error.includes('Unexpected ANSWER')))\n ) {\n console.warn('Got \"Unexpected ANSWER\" error, forcing the answer anyway')\n // Force sending the accept message even without JSEP\n sipcall.send({\n message: {\n request: 'accept',\n autoaccept_reinvites: false,\n },\n })\n } else {\n // For other types of errors, decline the call\n sipcall.send({\n message: {\n request: 'decline',\n code: 480,\n },\n })\n }\n },\n })\n } catch (error) {\n console.error('Exception in createAnswer:', error)\n\n // Even in case of an exception, try to accept the call\n sipcall.send({\n message: {\n request: 'accept',\n autoaccept_reinvites: false,\n },\n })\n }\n }\n}\n\nexport function decline() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.send({\n message: {\n request: 'decline',\n },\n })\n }\n}\n\nexport function hangup() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.send({\n message: {\n request: 'hangup',\n },\n })\n }\n}\n\nexport function unregister() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.send({\n message: {\n request: 'unregister',\n },\n })\n }\n}\n\nexport function detach() {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n return sipcall.detach()\n }\n}\n\nexport function handleRemote(jsep: any) {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (sipcall) {\n sipcall.handleRemoteJsep({\n jsep: jsep,\n error: function (error) {\n console.error('WebRTC error... ' + JSON.stringify(error))\n\n var hangup = {\n request: 'hangup',\n }\n sipcall.send({\n message: hangup,\n })\n sipcall.hangup()\n },\n })\n }\n}\n\nexport function callSipURI(sipURI: string) {\n getSupportedDevices(async () => {\n // @ts-ignore\n Janus.log('This is a SIP call')\n\n let currentAudioInputDeviceId = getCurrentAudioInputDeviceId()\n\n const tracks: JanusTrack[] = []\n\n if (currentAudioInputDeviceId) {\n tracks.push({\n type: 'audio',\n capture: { deviceId: { exact: currentAudioInputDeviceId } },\n recv: true,\n })\n } else {\n tracks.push({ type: 'audio', capture: true, recv: true })\n }\n\n await call(sipURI, tracks)\n })\n}\n\nexport function call(sipURI: string, tracks: JanusTrack[]) {\n return new Promise((resolve, reject) => {\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n\n sipcall.createOffer({\n tracks: tracks,\n success: function (jsep: any) {\n // @ts-ignore\n Janus.debug('Got SDP!')\n // @ts-ignore\n Janus.debug(jsep)\n sipcall.send({\n message: {\n request: 'call',\n uri: sipURI,\n autoaccept_reinvites: false,\n },\n jsep: jsep,\n })\n resolve(true)\n },\n error: function (error) {\n // @ts-ignore\n Janus.error('WebRTC error...', error)\n // @ts-ignore\n Janus.error('WebRTC error call on createOffer: ', error)\n reject(false)\n },\n })\n })\n}\n\n/**\n * Mute current call so the counterpart can't listen the current user\n * @returns The muted status\n */\nexport function muteWebRTC(): boolean {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Uset the janus library functions to mute call\n sipcall.muteAudio()\n return sipcall.isAudioMuted()\n}\n\n/**\n * Unmute current call so the counterpart can listen the current user\n * @returns The muted status\n */\nexport function unmuteWebRTC(): boolean {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Use the janus library functions to unmute call\n sipcall.unmuteAudio()\n return !sipcall.isAudioMuted()\n}\n\n/**\n * Pause current call so the counterpart listens the pause ringtone\n * @returns The true if no errors occurs\n */\nexport function pauseWebRTC() {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Send hold message\n try {\n sipcall.send({\n message: {\n request: 'hold',\n },\n })\n return true\n } catch (err) {\n console.error(err)\n return false\n }\n}\n\n/**\n * Unpause the current call so the counterpart listens the current user\n * @returns The true if no errors occurs\n */\nexport function unpauseWebRTC() {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n // Send hold message\n try {\n sipcall.send({\n message: {\n request: 'unhold',\n },\n })\n return true\n } catch (err) {\n console.error(err)\n return false\n }\n}\n\n/**\n * Send DTMF messages to Janus\n */\nexport function sendDTMF(key: string) {\n // Initialize sipcall\n const { sipcall }: { sipcall: any } = store.getState().webrtc\n if (adapter.browserDetails.browser === 'chrome') {\n sipcall.dtmf({\n dtmf: {\n tones: key,\n },\n })\n } else {\n sipcall.send({\n message: {\n request: 'dtmf_info',\n digit: `${key}`,\n },\n })\n }\n}\n"],"names":["call","sipURI","tracks","Promise","resolve","reject","sipcall","store","getState","webrtc","createOffer","success","jsep","Janus","debug","send","message","request","uri","autoaccept_reinvites","error","_b","jsepGlobal","console","log","hasSipcall","hasJsepGlobal","sipcallId","getId","_a","timestamp","Date","toISOString","currentAudioInputDeviceId","getCurrentAudioInputDeviceId","push","type","capture","deviceId","exact","recv","createAnswer","code","includes","warn","_this","this","getSupportedDevices","__awaiter","sent","detach","handleRemoteJsep","JSON","stringify","hangup","muteAudio","isAudioMuted","err","sipExten","sipSecret","sipHost","sipPort","registered","name","currentUser","username","concat","display_name","secret","proxy","outbound_proxy","sips","refresh","key","adapter","browserDetails","browser","dtmf","tones","digit","unmuteAudio"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("../node_modules/react-is/index.js");var e=require("../../../_virtual/index9.js").exports,t={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},p={};function a(r){return e.isMemo(r)?o:p[r.$$typeof]||t}p[e.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},p[e.Memo]=o;var s=Object.defineProperty,i=Object.getOwnPropertyNames,y=Object.getOwnPropertySymbols,n=Object.getOwnPropertyDescriptor,c=Object.getPrototypeOf,l=Object.prototype;var d=function e(t,o,p){if("string"!=typeof o){if(l){var d=c(o);d&&d!==l&&e(t,d,p)}var f=i(o);y&&(f=f.concat(y(o)));for(var u=a(t),m=a(o),v=0;v<f.length;++v){var g=f[v];if(!(r[g]||p&&p[g]||m&&m[g]||u&&u[g])){var O=n(o,g);try{s(t,g,O)}catch(e){}}}}return t};exports.default=d;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("../node_modules/react-is/index.js");var e=require("../../../_virtual/index8.js").exports,t={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},p={};function a(r){return e.isMemo(r)?o:p[r.$$typeof]||t}p[e.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},p[e.Memo]=o;var s=Object.defineProperty,i=Object.getOwnPropertyNames,y=Object.getOwnPropertySymbols,n=Object.getOwnPropertyDescriptor,c=Object.getPrototypeOf,l=Object.prototype;var d=function e(t,o,p){if("string"!=typeof o){if(l){var d=c(o);d&&d!==l&&e(t,d,p)}var f=i(o);y&&(f=f.concat(y(o)));for(var u=a(t),m=a(o),v=0;v<f.length;++v){var g=f[v];if(!(r[g]||p&&p[g]||m&&m[g]||u&&u[g])){var O=n(o,g);try{s(t,g,O)}catch(e){}}}}return t};exports.default=d;
2
2
  //# sourceMappingURL=hoist-non-react-statics.cjs.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e,r=require("../../../../_virtual/index9.js"),i=require("./cjs/react-is.production.min.js"),s=require("./cjs/react-is.development.js");e=r.__module,"production"===process.env.NODE_ENV?e.exports=i.__require():e.exports=s.__require();
1
+ "use strict";var e,r=require("../../../../_virtual/index8.js"),i=require("./cjs/react-is.production.min.js"),s=require("./cjs/react-is.development.js");e=r.__module,"production"===process.env.NODE_ENV?e.exports=i.__require():e.exports=s.__require();
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../_virtual/index8.js");require("./requestMediaPermissions.js");var r=require("../../../_virtual/requestMediaPermissions.js");!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.requestMediaPermissions=e.MediaPermissionsErrorType=void 0;var i=r.__exports;Object.defineProperty(e,"MediaPermissionsErrorType",{enumerable:!0,get:function(){return i.MediaPermissionsErrorType}}),Object.defineProperty(e,"requestMediaPermissions",{enumerable:!0,get:function(){return i.requestMediaPermissions}})}(e.__exports);
1
+ "use strict";var e=require("../../../_virtual/index9.js");require("./requestMediaPermissions.js");var r=require("../../../_virtual/requestMediaPermissions.js");!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.requestMediaPermissions=e.MediaPermissionsErrorType=void 0;var i=r.__exports;Object.defineProperty(e,"MediaPermissionsErrorType",{enumerable:!0,get:function(){return i.MediaPermissionsErrorType}}),Object.defineProperty(e,"requestMediaPermissions",{enumerable:!0,get:function(){return i.requestMediaPermissions}})}(e.__exports);
2
2
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_commonjsHelpers.js"),t=require("../../../_virtual/index5.js"),n=require("../../moment/moment.js");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,i,a,l=r(require("react"));o=t.__module,e.commonjsGlobal,o.exports=(i=n.__require(),a=l.default,function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){e.exports=n(3)()},function(e,t){e.exports=i},function(e,t){e.exports=a},function(e,t,n){var r=n(4);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var r,o,i,a,l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_commonjsHelpers.js"),t=require("../../../_virtual/index4.js"),n=require("../../moment/moment.js");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,i,a,l=r(require("react"));o=t.__module,e.commonjsGlobal,o.exports=(i=n.__require(),a=l.default,function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){e.exports=n(3)()},function(e,t){e.exports=i},function(e,t){e.exports=a},function(e,t,n){var r=n(4);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){var r,o,i,a,l;
2
2
  /*! Moment Duration Format v2.2.2
3
3
  * https://github.com/jsmreese/moment-duration-format
4
4
  * Date: 2018-02-16
@@ -1,2 +1,2 @@
1
- "use strict";var e,r=require("../../../../_virtual/index4.js"),i=require("./cjs/react-is.production.min.js"),s=require("./cjs/react-is.development.js");e=r.__module,"production"===process.env.NODE_ENV?e.exports=i.__require():e.exports=s.__require();
1
+ "use strict";var e,r=require("../../../../_virtual/index5.js"),i=require("./cjs/react-is.production.min.js"),s=require("./cjs/react-is.development.js");e=r.__module,"production"===process.env.NODE_ENV?e.exports=i.__require():e.exports=s.__require();
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="@nethesis/phone-island",s="Nethesis",t="1.0.8-dev.1",i="NethVoice CTI Phone Island",r=["nethserver","nethesis","nethvoice","phone","island"],o="https://github.com/nethesis/phone-island#readme",n="https://github.com/nethesis/dev/issues",p={type:"git",url:"https://github.com/nethesis/phone-island.git"},l=["dist"],d="dist/index.js",a="dist/index.d.ts",c={access:"public"},m={main:!1,types:!1,default:{distDir:"./dist-widget"}},u={"@fortawesome/fontawesome-svg-core":"6.2.1","@fortawesome/free-solid-svg-icons":"6.2.1","@fortawesome/react-fontawesome":"0.2.0","@headlessui/react":"^2.2.8","@nethesis/nethesis-solid-svg-icons":"github:nethesis/Font-Awesome#ns-solid","@rematch/core":"^2.2.0","@rematch/immer":"^2.1.3","@rematch/select":"^3.1.2","@testing-library/jest-dom":"^5.11.4","@testing-library/user-event":"^12.1.10","framer-motion":"^12.0.0",i18next:"^22.4.9","i18next-browser-languagedetector":"^7.0.1","i18next-http-backend":"^2.1.1","js-base64":"^3.7.3",lodash:"^4.17.21","mic-check":"^1.1.0",react:"^18.2.0","react-dom":"^18.2.0","react-i18next":"^12.1.5","react-moment":"^1.1.2","react-redux":"^8.0.5","react-tooltip":"^5.28.0","socket.io-client":"^4.5.3","styled-components":"^5.3.6","webrtc-adapter":"^9.0.1"},h={start:"npm run dev",dev:"node scripts/generate-dev-host.js && parcel .dev/phone-island-dev.html --port 6006 --open",test:"tsc --noEmit",watch:"rollup -w -c","watch:css":"BROWSERSLIST_IGNORE_OLD_DATA=1 npx tailwindcss -o ./dist/index.css --watch",build:"rm -rf ./dist && npm run build:css && rollup -c","build:css":"BROWSERSLIST_IGNORE_OLD_DATA=1 NODE_ENV=production npx tailwindcss -o ./dist/index.css --minify","build:win":"del /s /q dist && npm run build:wincss && rollup -c --configPlugin typescript","build:wincss":"set BROWSERSLIST_IGNORE_OLD_DATA=1 && set NODE_ENV=production && npx tailwindcss -o ./dist/index.css --minify","build:widget":"rm -rf ./dist-widget && parcel build ./src/index.widget.tsx --no-source-maps","serve:widget":"rm -rf ./widget-example/static/* && cp -rf ./dist-widget/* ./widget-example/static && npx http-server ./widget-example -o -c-1",release:"npm publish","release:widget":"node check-publish.js patch && npm version patch -m v%s",format:"prettier --write './**/*.{js,jsx,ts,tsx,css,md,json}' --config ./.prettierrc",bump:"node bump-version.js","build-pack":"npm run bump && npm run build && npm pack","build-pack:win":"npm run bump && npm run build:win && npm pack","publish:minor":"node check-publish.js minor && npm version minor --allow-same-version -m v%s --force","publish:major":"node check-publish.js major && npm version major --allow-same-version -m v%s --force","publish:patch":"node check-publish.js patch && npm version patch --allow-same-version -m v%s --force","publish:dev":"node publish-dev.js",preversion:"rm -rf dist-widget && npm run build:widget && git add dist-widget/index.widget.js dist-widget/index.widget.css && git commit -m 'chore(widget): release for jsDelivr'",postversion:"git push origin main --tags","revert-bump":"node revert-bump.js"},b={production:[">0.2%","not dead","not op_mini all"],development:["last 1 chrome version","last 1 firefox version","last 1 safari version"]},g={"@babel/core":"^7.20.2","@babel/preset-env":"^7.20.2","@parcel/transformer-typescript-types":"^2.8.0","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-commonjs":"^23.0.2","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^9.0.2","@testing-library/react":"^13.4.0","@types/audioworklet":"^0.0.98","@types/jest":"^29.2.2","@types/react":"^18.0.26","@types/react-dom":"^18.0.9","@types/styled-components":"^5.1.26",babel:"^6.23.0",buffer:"^5.7.1",parcel:"^2.0.0",postcss:"^8.4.49",prettier:"^2.8.0","prop-types":"^15.8.1",rollup:"^2.79.1","rollup-plugin-generate-package-json":"^3.2.0","rollup-plugin-postcss":"^4.0.2","tailwind-scrollbar":"^3.1.0",tailwindcss:"^3.4.16",typescript:"^4.8.4","webm-duration-fix":"^1.0.4",webpack:"^5.74.0"},v={"@tootallnate/once":"^3.0.0",esbuild:"^0.25.11","nth-check":"^2.0.1","serialize-javascript":"^7.0.0",tar:"^7.5.1"},w="GPL-3.0-or-later",x={name:e,author:s,version:t,description:i,keywords:r,homepage:o,bugs:n,repository:p,private:!1,files:l,main:d,types:a,publishConfig:c,targets:m,dependencies:u,scripts:h,browserslist:b,devDependencies:g,overrides:v,license:w};exports.author=s,exports.browserslist=b,exports.bugs=n,exports.default=x,exports.dependencies=u,exports.description=i,exports.devDependencies=g,exports.files=l,exports.homepage=o,exports.keywords=r,exports.license=w,exports.main=d,exports.name=e,exports.overrides=v,exports.publishConfig=c,exports.repository=p,exports.scripts=h,exports.targets=m,exports.types=a,exports.version=t;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="@nethesis/phone-island",s="Nethesis",t="1.0.8-dev.11",i="NethVoice CTI Phone Island",r=["nethserver","nethesis","nethvoice","phone","island"],o="https://github.com/nethesis/phone-island#readme",n="https://github.com/nethesis/dev/issues",p={type:"git",url:"https://github.com/nethesis/phone-island.git"},l=["dist"],d="dist/index.js",a="dist/index.d.ts",c={access:"public"},m={main:!1,types:!1,default:{distDir:"./dist-widget"}},u={"@fortawesome/fontawesome-svg-core":"6.2.1","@fortawesome/free-solid-svg-icons":"6.2.1","@fortawesome/react-fontawesome":"0.2.6","@headlessui/react":"^2.2.8","@nethesis/nethesis-solid-svg-icons":"github:nethesis/Font-Awesome#ns-solid","@rematch/core":"^2.2.0","@rematch/immer":"^2.1.3","@rematch/select":"^3.1.2","@testing-library/jest-dom":"^5.11.4","@testing-library/user-event":"^12.1.10","framer-motion":"^12.0.0",i18next:"^22.4.9","i18next-browser-languagedetector":"^7.0.1","js-base64":"^3.7.3",lodash:"^4.17.21","mic-check":"^1.1.0",react:"^18.2.0","react-dom":"^18.2.0","react-i18next":"^12.1.5","react-moment":"^1.1.2","react-redux":"^8.0.5","react-tooltip":"^5.28.0","socket.io-client":"^4.5.3","styled-components":"^5.3.6","webrtc-adapter":"^9.0.1"},h={start:"npm run dev",dev:"node scripts/generate-dev-host.js && parcel .dev/phone-island-dev.html --port 6006 --open",test:"tsc --noEmit",watch:"rollup -w -c","watch:css":"BROWSERSLIST_IGNORE_OLD_DATA=1 npx tailwindcss -o ./dist/index.css --watch",build:"rm -rf ./dist && npm run build:css && rollup -c","build:css":"BROWSERSLIST_IGNORE_OLD_DATA=1 NODE_ENV=production npx tailwindcss -o ./dist/index.css --minify","build:win":"del /s /q dist && npm run build:wincss && rollup -c --configPlugin typescript","build:wincss":"set BROWSERSLIST_IGNORE_OLD_DATA=1 && set NODE_ENV=production && npx tailwindcss -o ./dist/index.css --minify","build:widget":"rm -rf ./dist-widget && parcel build ./src/index.widget.tsx --no-source-maps","serve:widget":"rm -rf ./widget-example/static/* && cp -rf ./dist-widget/* ./widget-example/static && npx http-server ./widget-example -o -c-1",release:"npm publish","release:widget":"node check-publish.js patch && npm version patch -m v%s",format:"prettier --write './**/*.{js,jsx,ts,tsx,css,md,json}' --config ./.prettierrc",bump:"node bump-version.js","build-pack":"npm run bump && npm run build && npm pack","build-pack:win":"npm run bump && npm run build:win && npm pack","publish:minor":"node check-publish.js minor && npm version minor --allow-same-version -m v%s --force","publish:major":"node check-publish.js major && npm version major --allow-same-version -m v%s --force","publish:patch":"node check-publish.js patch && npm version patch --allow-same-version -m v%s --force","publish:dev":"node publish-dev.js",preversion:"rm -rf dist-widget && npm run build:widget && git add dist-widget/index.widget.js dist-widget/index.widget.css && git commit -m 'chore(widget): release for jsDelivr'",postversion:"git push origin main --tags","revert-bump":"node revert-bump.js"},b={production:[">0.2%","not dead","not op_mini all"],development:["last 1 chrome version","last 1 firefox version","last 1 safari version"]},g={"@babel/core":"^7.20.2","@babel/preset-env":"^7.20.2","@parcel/transformer-typescript-types":"^2.8.0","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-commonjs":"^23.0.2","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^9.0.2","@testing-library/react":"^13.4.0","@types/audioworklet":"^0.0.100","@types/jest":"^29.2.2","@types/react":"^18.0.26","@types/react-dom":"^18.0.9","@types/styled-components":"^5.1.26",babel:"^6.23.0",buffer:"^5.7.1",parcel:"^2.0.0",postcss:"^8.4.49",prettier:"^2.8.0","prop-types":"^15.8.1",rollup:"^2.79.1","rollup-plugin-generate-package-json":"^3.2.0","rollup-plugin-postcss":"^4.0.2","tailwind-scrollbar":"^3.1.0",tailwindcss:"^3.4.16",typescript:"^4.8.4","webm-duration-fix":"^1.0.4",webpack:"^5.74.0"},v={"@tootallnate/once":"^3.0.0",esbuild:"^0.25.11","nth-check":"^2.0.1","serialize-javascript":"^7.0.0",tar:"^7.5.1"},w="GPL-3.0-or-later",x={name:e,author:s,version:t,description:i,keywords:r,homepage:o,bugs:n,repository:p,private:!1,files:l,main:d,types:a,publishConfig:c,targets:m,dependencies:u,scripts:h,browserslist:b,devDependencies:g,overrides:v,license:w};exports.author=s,exports.browserslist=b,exports.bugs=n,exports.default=x,exports.dependencies=u,exports.description=i,exports.devDependencies=g,exports.files=l,exports.homepage=o,exports.keywords=r,exports.license=w,exports.main=d,exports.name=e,exports.overrides=v,exports.publishConfig=c,exports.repository=p,exports.scripts=h,exports.targets=m,exports.types=a,exports.version=t;
2
2
  //# sourceMappingURL=package.json.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("../store/index.js");exports.changeDefaultDevice=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/default_device"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.changeOperatorStatus=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/presence"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.checkSummaryCall=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,c,i;return e.__generator(this,(function(u){switch(u.label){case 0:return s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/summary/").concat(r),{method:"HEAD",headers:e.__assign({},a)})];case 1:if(200===(o=u.sent()).status)return[2];if(204===o.status)throw(c=new Error("Summary not ready")).status=204,c;throw(i=new Error("Failed to check summary: ".concat(o.statusText))).status=o.status,i}}))}))},exports.getAllAvatars=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/all_avatars"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getAllUsersEndpoints=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/endpoints/all"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getCurrentUserInfo=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/me"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getFeatureCodes=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/astproxy/feature_codes"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getParamUrl=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/paramurl"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getVideoSources=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/streaming/sources"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.openVideoSource=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/streaming/open"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.setDefaultDevice=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,c,i,u,h;return e.__generator(this,(function(f){switch(f.label){case 0:return f.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,c={id:s},i={id:s},[4,fetch("".concat(a,"/user/default_device"),{method:"POST",headers:e.__assign({},o),body:"physical"===r?JSON.stringify(i):JSON.stringify(c)})];case 1:if(!(u=f.sent()).ok)throw new Error(u.statusText);return[3,3];case 2:throw h=f.sent(),new Error(h);case 3:return[2]}}))}))},exports.setIncomingCallsPreference=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,c,i,u;return e.__generator(this,(function(h){switch(h.label){case 0:return h.trys.push([0,4,,5]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/settings"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=h.sent()).ok)throw new Error(o.statusText);return(c=o.headers.get("content-type"))&&c.includes("application/json")?[4,o.text()]:[3,3];case 2:return[2,(i=h.sent())?JSON.parse(i):{}];case 3:return[2,{success:!0}];case 4:throw u=h.sent(),console.error("Error updating user settings:",u),u;case 5:return[2]}}))}))},exports.setMainDevice=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/default_device"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.subscribe=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/streaming/subscribe"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.unsubscribe=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/streaming/unsubscribe"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.watchSummaryCall=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,c,i;return e.__generator(this,(function(u){switch(u.label){case 0:return u.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,[4,fetch("".concat(a,"/summary/watch"),{method:"POST",headers:e.__assign({},o),body:JSON.stringify({linkedid:r,uniqueid:s})})];case 1:if(!(c=u.sent()).ok)throw new Error("Failed to watch summary call: ".concat(c.status," ").concat(c.statusText));return[3,3];case 2:throw i=u.sent(),console.error("Error watching summary call:",i),i;case 3:return[2]}}))}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../node_modules/tslib/tslib.es6.js"),t=require("../store/index.js");exports.changeDefaultDevice=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/default_device"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.changeOperatorStatus=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/presence"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.checkSummaryCall=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,c,i,u,h,f;return e.__generator(this,(function(d){switch(d.label){case 0:return n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,c=s?"?linkedid=".concat(encodeURIComponent(s)):"",i="".concat(a,"/summary/").concat(r).concat(c),[4,fetch(i,{method:"HEAD",headers:e.__assign({},o)})];case 1:if(200===(u=d.sent()).status)return[2];if(204===u.status)throw(h=new Error("Summary not ready")).status=204,h;throw(f=new Error("Failed to check summary: ".concat(u.statusText))).status=u.status,f}}))}))},exports.getAllAvatars=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/all_avatars"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getAllUsersEndpoints=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/endpoints/all"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getCurrentUserInfo=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/me"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getFeatureCodes=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/astproxy/feature_codes"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getParamUrl=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/user/paramurl"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.getVideoSources=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),r=t.store.getState().fetchDefaults,s=r.baseURL,n=r.headers,[4,fetch("".concat(s,"/streaming/sources"),{headers:e.__assign({},n)})];case 1:if(!(a=c.sent()).ok)throw new Error(a.statusText);return[4,a.json()];case 2:return[2,c.sent()];case 3:throw o=c.sent(),new Error(o);case 4:return[2]}}))}))},exports.openVideoSource=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/streaming/open"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.setDefaultDevice=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,c,i,u,h;return e.__generator(this,(function(f){switch(f.label){case 0:return f.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,c={id:s},i={id:s},[4,fetch("".concat(a,"/user/default_device"),{method:"POST",headers:e.__assign({},o),body:"physical"===r?JSON.stringify(i):JSON.stringify(c)})];case 1:if(!(u=f.sent()).ok)throw new Error(u.statusText);return[3,3];case 2:throw h=f.sent(),new Error(h);case 3:return[2]}}))}))},exports.setIncomingCallsPreference=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o,c,i,u;return e.__generator(this,(function(h){switch(h.label){case 0:return h.trys.push([0,4,,5]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/settings"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=h.sent()).ok)throw new Error(o.statusText);return(c=o.headers.get("content-type"))&&c.includes("application/json")?[4,o.text()]:[3,3];case 2:return[2,(i=h.sent())?JSON.parse(i):{}];case 3:return[2,{success:!0}];case 4:throw u=h.sent(),console.error("Error updating user settings:",u),u;case 5:return[2]}}))}))},exports.setMainDevice=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/user/default_device"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.subscribe=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/streaming/subscribe"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.unsubscribe=function(r){return e.__awaiter(this,void 0,void 0,(function(){var s,n,a,o;return e.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),s=t.store.getState().fetchDefaults,n=s.baseURL,a=s.headers,[4,fetch("".concat(n,"/streaming/unsubscribe"),{method:"POST",headers:e.__assign({},a),body:JSON.stringify(r)})];case 1:if(!(o=c.sent()).ok)throw new Error(o.statusText);return[2,!0];case 2:throw c.sent();case 3:return[2]}}))}))},exports.watchSummaryCall=function(r,s){return e.__awaiter(this,void 0,void 0,(function(){var n,a,o,c,i,u;return e.__generator(this,(function(h){switch(h.label){case 0:return h.trys.push([0,2,,3]),n=t.store.getState().fetchDefaults,a=n.baseURL,o=n.headers,c="".concat(a,"/summary/watch"),[4,fetch(c,{method:"POST",headers:e.__assign({},o),body:JSON.stringify({linkedid:r,uniqueid:s})})];case 1:if(!(i=h.sent()).ok)throw new Error("Failed to watch summary call: ".concat(i.status," ").concat(i.statusText));return[3,3];case 2:throw u=h.sent(),console.error("Error watching summary call:",u),u;case 3:return[2]}}))}))};
2
2
  //# sourceMappingURL=user.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sources":["../../src/services/user.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../store'\nimport type { UserInfoTypes, AvatarsTypes, UsersEndpointsTypes } from '../types'\n\n/**\n * Get current user info\n */\nexport async function getCurrentUserInfo(): Promise<UserInfoTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/me`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function setDefaultDevice(\n default_type: string,\n extensionNumber: string,\n): Promise<any> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n\n let webrtcId: any = { id: extensionNumber }\n let physicalId: any = { id: extensionNumber }\n const response = await fetch(`${baseURL}/user/default_device`, {\n method: 'POST',\n headers: { ...headers },\n body: default_type === 'physical' ? JSON.stringify(physicalId) : JSON.stringify(webrtcId),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Get all avatars\n */\nexport async function getAllAvatars(): Promise<AvatarsTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n\n const response = await fetch(`${baseURL}/user/all_avatars`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Get all users endpoints\n */\nexport async function getAllUsersEndpoints(): Promise<UsersEndpointsTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/endpoints/all`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function changeOperatorStatus(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/presence`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function changeDefaultDevice(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/default_device`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function setMainDevice(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/default_device`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\n/**\n * Get parameter URL information\n */\nexport async function getParamUrl(): Promise<UserInfoTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/paramurl`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function getVideoSources(): Promise<UserInfoTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/sources`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function openVideoSource(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/open`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function subscribe(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/subscribe`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function unsubscribe(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/unsubscribe`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function setIncomingCallsPreference(settingsStatus: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/settings`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(settingsStatus),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n\n const contentType = response.headers.get('content-type')\n if (contentType && contentType.includes('application/json')) {\n const text = await response.text()\n return text ? JSON.parse(text) : {}\n }\n\n return { success: true }\n } catch (error: any) {\n console.error('Error updating user settings:', error)\n throw error\n }\n}\n\n/**\n * Get feature codes\n */\nexport async function getFeatureCodes(): Promise<any> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/feature_codes`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Check if a call summary/transcription exists for a given uniqueid\n * Returns: { has_summary: boolean }\n * Throws:\n * - Error with status 204 when the summary is not ready yet.\n * - Error with the corresponding HTTP status code for any other non-200 response\n * (including, but not limited to, 401, 403, 404, 503).\n */\nexport async function checkSummaryCall(uniqueid: string): Promise<void> {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/summary/${uniqueid}`, {\n method: 'HEAD',\n headers: { ...headers },\n })\n\n // 200 - Summary exists\n if (response.status === 200) {\n return\n }\n\n // 204 - Summary not present yet (not an error, just not ready)\n if (response.status === 204) {\n const error: any = new Error('Summary not ready')\n error.status = 204\n throw error\n }\n\n // 401, 403, 404, 503 - Real errors\n const error: any = new Error(`Failed to check summary: ${response.statusText}`)\n error.status = response.status\n throw error\n}\n\n/**\n * Watch for call summary/transcription for a given linkedid and uniqueid.\n * If uniqueid differs from linkedid (e.g. queue call), both are sent.\n */\nexport async function watchSummaryCall(linkedid: string, uniqueid: string): Promise<void> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/summary/watch`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify({ linkedid, uniqueid }),\n })\n if (!response.ok) {\n throw new Error(`Failed to watch summary call: ${response.status} ${response.statusText}`)\n }\n } catch (error: any) {\n console.error('Error watching summary call:', error)\n throw error\n }\n}\n"],"names":["obj","_a","store","getState","fetchDefaults","baseURL","headers","fetch","concat","method","__assign","body","JSON","stringify","response","_b","sent","ok","Error","statusText","uniqueid","status","error_15","error","json","error_3","error_4","error_1","error_14","error_8","error_9","default_type","extensionNumber","webrtcId","id","physicalId","error_2","settingsStatus","contentType","get","includes","text","parse","success","console","error_13","linkedid","error_16"],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sources":["../../src/services/user.ts"],"sourcesContent":["// Copyright (C) 2024 Nethesis S.r.l.\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { store } from '../store'\nimport type { UserInfoTypes, AvatarsTypes, UsersEndpointsTypes } from '../types'\n\n/**\n * Get current user info\n */\nexport async function getCurrentUserInfo(): Promise<UserInfoTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/me`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function setDefaultDevice(\n default_type: string,\n extensionNumber: string,\n): Promise<any> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n\n let webrtcId: any = { id: extensionNumber }\n let physicalId: any = { id: extensionNumber }\n const response = await fetch(`${baseURL}/user/default_device`, {\n method: 'POST',\n headers: { ...headers },\n body: default_type === 'physical' ? JSON.stringify(physicalId) : JSON.stringify(webrtcId),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Get all avatars\n */\nexport async function getAllAvatars(): Promise<AvatarsTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n\n const response = await fetch(`${baseURL}/user/all_avatars`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Get all users endpoints\n */\nexport async function getAllUsersEndpoints(): Promise<UsersEndpointsTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/endpoints/all`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function changeOperatorStatus(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/presence`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function changeDefaultDevice(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/default_device`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function setMainDevice(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/default_device`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\n/**\n * Get parameter URL information\n */\nexport async function getParamUrl(): Promise<UserInfoTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/paramurl`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function getVideoSources(): Promise<UserInfoTypes | undefined> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/sources`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\nexport async function openVideoSource(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/open`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function subscribe(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/subscribe`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function unsubscribe(obj: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/streaming/unsubscribe`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(obj),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return true\n } catch (error: any) {\n throw error\n }\n}\n\nexport async function setIncomingCallsPreference(settingsStatus: any) {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/user/settings`, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify(settingsStatus),\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n\n const contentType = response.headers.get('content-type')\n if (contentType && contentType.includes('application/json')) {\n const text = await response.text()\n return text ? JSON.parse(text) : {}\n }\n\n return { success: true }\n } catch (error: any) {\n console.error('Error updating user settings:', error)\n throw error\n }\n}\n\n/**\n * Get feature codes\n */\nexport async function getFeatureCodes(): Promise<any> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const response = await fetch(`${baseURL}/astproxy/feature_codes`, {\n headers: { ...headers },\n })\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n const data = await response.json()\n return data\n } catch (error: any) {\n throw new Error(error)\n }\n}\n\n/**\n * Check if a call summary/transcription exists for a given uniqueid\n * Returns: { has_summary: boolean }\n * Throws:\n * - Error with status 204 when the summary is not ready yet.\n * - Error with the corresponding HTTP status code for any other non-200 response\n * (including, but not limited to, 401, 403, 404, 503).\n */\nexport async function checkSummaryCall(uniqueid: string, linkedid?: string): Promise<void> {\n const { baseURL, headers } = store.getState().fetchDefaults\n const queryString = linkedid ? `?linkedid=${encodeURIComponent(linkedid)}` : ''\n const url = `${baseURL}/summary/${uniqueid}${queryString}`\n const response = await fetch(url, {\n method: 'HEAD',\n headers: { ...headers },\n })\n\n // 200 - Summary exists\n if (response.status === 200) {\n return\n }\n\n // 204 - Summary not present yet (not an error, just not ready)\n if (response.status === 204) {\n const error: any = new Error('Summary not ready')\n error.status = 204\n throw error\n }\n\n // 401, 403, 404, 503 - Real errors\n const error: any = new Error(`Failed to check summary: ${response.statusText}`)\n error.status = response.status\n throw error\n}\n\n/**\n * Watch for call summary/transcription for a given linkedid and uniqueid.\n * If uniqueid differs from linkedid (e.g. queue call), both are sent.\n */\nexport async function watchSummaryCall(linkedid: string, uniqueid: string): Promise<void> {\n try {\n const { baseURL, headers } = store.getState().fetchDefaults\n const url = `${baseURL}/summary/watch`\n const response = await fetch(url, {\n method: 'POST',\n headers: { ...headers },\n body: JSON.stringify({ linkedid, uniqueid }),\n })\n if (!response.ok) {\n throw new Error(`Failed to watch summary call: ${response.status} ${response.statusText}`)\n }\n } catch (error: any) {\n console.error('Error watching summary call:', error)\n throw error\n }\n}\n"],"names":["obj","_a","store","getState","fetchDefaults","baseURL","headers","fetch","concat","method","__assign","body","JSON","stringify","response","_b","sent","ok","Error","statusText","uniqueid","linkedid","queryString","encodeURIComponent","url","status","error_15","error","json","error_3","error_4","error_1","error_14","error_8","error_9","default_type","extensionNumber","webrtcId","id","physicalId","error_2","settingsStatus","contentType","get","includes","text","parse","success","console","error_13","error_16"],"mappings":"mLAuGM,SAAoCA,+HAGrB,6BADXC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,0BAA+B,CAC7DI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAUb,aAEvB,KALMc,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAE3B,MAAA,CAAA,GAAO,UAEP,sCAEH,+BAhCK,SAAqCnB,+HAGtB,6BADXC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,oBAAyB,CACvDI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAUb,aAEvB,KALMc,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAE3B,MAAA,CAAA,GAAO,UAEP,sCAEH,2BA8KqB,SAAiBC,EAAkBC,uIAItC,OAHXpB,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QAClBgB,EAAcD,EAAW,aAAab,OAAAe,mBAAmBF,IAAc,GACvEG,EAAM,UAAGnB,EAAO,aAAAG,OAAYY,GAAWZ,OAAAc,GACtB,CAAA,EAAAf,MAAMiB,EAAK,CAChCf,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,aAIhB,GAAwB,OANlBQ,EAAWC,EAGfC,QAGWS,OACX,MAAM,CAAA,GAIR,GAAwB,MAApBX,EAASW,OAGX,MAFMC,EAAa,IAAIR,MAAM,sBACvBO,OAAS,IACTC,EAMR,MAFMC,EAAa,IAAIT,MAAM,4BAAAV,OAA4BM,EAASK,cAC5DM,OAASX,EAASW,OAClBE,QACP,iKAtPoB,6BAFX1B,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QAEP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,uBAA4B,CAC1DC,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,aAEhB,KAHMQ,EAAWC,EAEfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAEd,MAAA,CAAA,EAAML,EAASc,eAC5B,MAAA,CAAA,EADab,EAAqBC,eAGlC,iBAAM,IAAIE,MAAMW,0BAEnB,wKAQoB,6BADX5B,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,yBAA8B,CAC5DC,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,aAEhB,KAHMQ,EAAWC,EAEfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAEd,MAAA,CAAA,EAAML,EAASc,eAC5B,MAAA,CAAA,EADab,EAAqBC,eAGlC,iBAAM,IAAIE,MAAMY,0BAEnB,sKAxEoB,6BADX7B,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,cAAmB,CACjDC,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,aAEhB,KAHMQ,EAAWC,EAEfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAEd,MAAA,CAAA,EAAML,EAASc,eAC5B,MAAA,CAAA,EADab,EAAqBC,eAGlC,iBAAM,IAAIE,MAAMa,0BAEnB,mKAuOoB,6BADX9B,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,6BAAkC,CAChEC,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,aAEhB,KAHMQ,EAAWC,EAEfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAEd,MAAA,CAAA,EAAML,EAASc,eAC5B,MAAA,CAAA,EADab,EAAqBC,eAGlC,iBAAM,IAAIE,MAAMc,0BAEnB,+JA1HoB,6BADX/B,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,oBAAyB,CACvDC,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,aAEhB,KAHMQ,EAAWC,EAEfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAEd,MAAA,CAAA,EAAML,EAASc,eAC5B,MAAA,CAAA,EADab,EAAqBC,eAGlC,iBAAM,IAAIE,MAAMe,0BAEnB,mKAKoB,6BADXhC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,wBAA6B,CAC3DC,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,aAEhB,KAHMQ,EAAWC,EAEfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAEd,MAAA,CAAA,EAAML,EAASc,eAC5B,MAAA,CAAA,EADab,EAAqBC,eAGlC,iBAAM,IAAIE,MAAMgB,0BAEnB,0BAEK,SAAgClC,+HAGjB,6BADXC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,qBAA0B,CACxDI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAUb,aAEvB,KALMc,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAE3B,MAAA,CAAA,GAAO,UAEP,sCAEH,2BAlKqB,SACpBgB,EACAC,qIAOmB,6BAJXnC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QAEpB+B,EAAgB,CAAEC,GAAIF,GACtBG,EAAkB,CAAED,GAAIF,GACX,CAAA,EAAM7B,MAAM,GAAGC,OAAAH,0BAA+B,CAC7DI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAuB,aAAjBwB,EAA8BvB,KAAKC,UAAU0B,GAAc3B,KAAKC,UAAUwB,aAElF,KALMvB,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,+BAG3B,iBAAM,IAAID,MAAMsB,0BAEnB,qCAkLK,SAA2CC,qIAG5B,6BADXxC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,oBAAyB,CACvDI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAU4B,aAEvB,KALM3B,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,mBAGrBuB,EAAc5B,EAASR,QAAQqC,IAAI,kBACtBD,EAAYE,SAAS,oBACzB,CAAA,EAAM9B,EAAS+B,QAD6B,CAAA,EAAA,UAEzD,MAAA,CAAA,GADMA,EAAO9B,EAAqBC,QACpBJ,KAAKkC,MAAMD,GAAQ,CAAA,GAGnC,KAAA,EAAA,MAAA,CAAA,EAAO,CAAEE,SAAS,WAGlB,iBADAC,QAAQrB,MAAM,gCAAiCsB,GACzCA,yBAET,wBA9HK,SAA8BjD,+HAGf,6BADXC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,0BAA+B,CAC7DI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAUb,aAEvB,KALMc,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAE3B,MAAA,CAAA,GAAO,UAEP,sCAEH,oBAsDK,SAA0BnB,+HAGX,6BADXC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,0BAA+B,CAC7DI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAUb,aAEvB,KALMc,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAE3B,MAAA,CAAA,GAAO,UAEP,sCAEH,sBAEK,SAA4BnB,+HAGb,6BADXC,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QACP,CAAA,EAAMC,MAAM,GAAGC,OAAAH,4BAAiC,CAC/DI,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAUb,aAEvB,KALMc,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAMJ,EAASK,YAE3B,MAAA,CAAA,GAAO,UAEP,sCAEH,2BAqFqB,SAAiBE,EAAkBD,mIAIpC,6BAFXnB,EAAuBC,EAAKA,MAACC,WAAWC,cAAtCC,EAAOJ,EAAAI,QAAEC,EAAOL,EAAAK,QAClBkB,EAAM,GAAAhB,OAAGH,EAAO,kBACC,CAAA,EAAAE,MAAMiB,EAAK,CAChCf,OAAQ,OACRH,QAAOI,EAAAA,SAAA,CAAA,EAAOJ,GACdK,KAAMC,KAAKC,UAAU,CAAEQ,SAAQA,EAAED,SAAQA,cAE3C,KALMN,EAAWC,EAIfC,QACYC,GACZ,MAAM,IAAIC,MAAM,iCAAAV,OAAiCM,EAASW,OAAM,KAAAjB,OAAIM,EAASK,gCAI/E,iBADA6B,QAAQrB,MAAM,+BAAgCuB,GACxCA,yBAET"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nethesis/phone-island",
3
3
  "author": "Nethesis",
4
- "version": "1.0.8-dev.1",
4
+ "version": "1.0.8-dev.11",
5
5
  "description": "NethVoice CTI Phone Island",
6
6
  "keywords": [
7
7
  "nethserver",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@fortawesome/fontawesome-svg-core": "6.2.1",
37
37
  "@fortawesome/free-solid-svg-icons": "6.2.1",
38
- "@fortawesome/react-fontawesome": "0.2.0",
38
+ "@fortawesome/react-fontawesome": "0.2.6",
39
39
  "@headlessui/react": "^2.2.8",
40
40
  "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid",
41
41
  "@rematch/core": "^2.2.0",
@@ -46,7 +46,6 @@
46
46
  "framer-motion": "^12.0.0",
47
47
  "i18next": "^22.4.9",
48
48
  "i18next-browser-languagedetector": "^7.0.1",
49
- "i18next-http-backend": "^2.1.1",
50
49
  "js-base64": "^3.7.3",
51
50
  "lodash": "^4.17.21",
52
51
  "mic-check": "^1.1.0",
@@ -109,7 +108,7 @@
109
108
  "@rollup/plugin-terser": "^0.4.4",
110
109
  "@rollup/plugin-typescript": "^9.0.2",
111
110
  "@testing-library/react": "^13.4.0",
112
- "@types/audioworklet": "^0.0.98",
111
+ "@types/audioworklet": "^0.0.100",
113
112
  "@types/jest": "^29.2.2",
114
113
  "@types/react": "^18.0.26",
115
114
  "@types/react-dom": "^18.0.9",