sip-connector 6.24.0 → 6.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__fixtures__/BaseSession.mock.d.ts +4 -4
- package/dist/__fixtures__/UA.mock.d.ts +2 -2
- package/dist/__fixtures__/index.d.ts +3 -2
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +118 -112
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/tools/__fixtures__/connectToServer.d.ts +4 -3
- package/dist/tools/__fixtures__/hasValidUri.d.ts +2 -8
- package/dist/tools/__fixtures__/processRequest.d.ts +1 -1
- package/dist/tools/disconnectFromServer.d.ts +5 -1
- package/package.json +5 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnswerOptions, ExtraHeaders, HoldOptions,
|
|
1
|
+
import type { AnswerOptions, ExtraHeaders, HoldOptions, MediaStreamTypes, NameAddrHeader, OnHoldResult, RTCPeerConnectionDeprecated, RTCSession, ReferOptions, RenegotiateOptions, SessionDirection, SessionStatus, TerminateOptions, URI, C as constants } from '@krivega/jssip';
|
|
2
2
|
import Events from 'events-constructor';
|
|
3
3
|
import type { TEventSession } from '../eventNames';
|
|
4
4
|
import { SESSION_EVENT_NAMES } from '../eventNames';
|
|
@@ -42,9 +42,9 @@ declare class BaseSession implements RTCSession {
|
|
|
42
42
|
unhold(_options?: HoldOptions, _done?: VoidFunction): boolean;
|
|
43
43
|
renegotiate(_options?: RenegotiateOptions, _done?: VoidFunction): Promise<boolean>;
|
|
44
44
|
isOnHold(): OnHoldResult;
|
|
45
|
-
mute(_options?:
|
|
46
|
-
unmute(_options?:
|
|
47
|
-
isMuted():
|
|
45
|
+
mute(_options?: MediaStreamConstraints): void;
|
|
46
|
+
unmute(_options?: MediaStreamConstraints): void;
|
|
47
|
+
isMuted(): MediaStreamTypes;
|
|
48
48
|
refer(_target: URI | string, _options?: ReferOptions): void;
|
|
49
49
|
resetLocalMedia(): void;
|
|
50
50
|
replaceMediaStream(_stream: MediaStream, _options?: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="jest" />
|
|
2
|
-
import type { UA as IUA, IncomingRequest, UAConfiguration } from '@krivega/jssip';
|
|
2
|
+
import type { UA as IUA, IncomingRequest, UAConfiguration, UAConfigurationParams } from '@krivega/jssip';
|
|
3
3
|
import Events from 'events-constructor';
|
|
4
4
|
import type { TEventUA } from '../eventNames';
|
|
5
5
|
import { UA_EVENT_NAMES } from '../eventNames';
|
|
@@ -20,7 +20,7 @@ declare class UA implements IUA {
|
|
|
20
20
|
_isConnected?: boolean;
|
|
21
21
|
configuration: UAConfiguration;
|
|
22
22
|
_registrator: Registrator;
|
|
23
|
-
constructor(
|
|
23
|
+
constructor(_configuration: UAConfigurationParams);
|
|
24
24
|
/**
|
|
25
25
|
* start
|
|
26
26
|
*
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { URI } from '@krivega/jssip';
|
|
1
2
|
export declare const user = "user";
|
|
2
3
|
export declare const displayName = "displayName";
|
|
3
4
|
export declare const SIP_SERVER_URL = "SIP_SERVER_URL";
|
|
@@ -33,7 +34,7 @@ export declare const dataForConnectionWithoutAuthorization: {
|
|
|
33
34
|
};
|
|
34
35
|
export declare const uaConfigurationWithAuthorization: {
|
|
35
36
|
password: string;
|
|
36
|
-
uri:
|
|
37
|
+
uri: URI;
|
|
37
38
|
display_name: string;
|
|
38
39
|
register: boolean;
|
|
39
40
|
session_timers: boolean;
|
|
@@ -46,7 +47,7 @@ export declare const uaConfigurationWithAuthorization: {
|
|
|
46
47
|
};
|
|
47
48
|
export declare const uaConfigurationWithAuthorizationWithDisplayName: {
|
|
48
49
|
password: string;
|
|
49
|
-
uri:
|
|
50
|
+
uri: URI;
|
|
50
51
|
display_name: string;
|
|
51
52
|
register: boolean;
|
|
52
53
|
session_timers: boolean;
|
package/dist/doMock.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var D=Object.defineProperty;var k=(r,e,t)=>e in r?D(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var n=(r,e,t)=>(k(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./SipConnector-eRr2JbY9.cjs"),L=require("@krivega/jssip/lib/NameAddrHeader"),P=require("@krivega/jssip/lib/URI"),x=require("node:events"),F=require("@krivega/jssip/lib/SIPMessage"),M=require("events-constructor");class T extends F.IncomingRequest{constructor(t){super();n(this,"headers");this.headers=new Headers(t)}getHeader(t){return this.headers.get(t)||""}}var V=Object.defineProperty,z=(r,e,t)=>e in r?V(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,s=(r,e,t)=>(z(r,typeof e!="symbol"?e+"":e,t),t);const m="ended",U="mute",H="isolationchange",q="overconstrained",j="unmute",$=[m,U,j,H,q];class y{constructor(e,{id:t="identifier",constraints:i={}}={}){s(this,"events"),s(this,"id"),s(this,"kind"),s(this,"constraints"),s(this,"enabled"),s(this,"contentHint",""),s(this,"readyState","live"),s(this,"isolated",!1),s(this,"label",""),s(this,"muted",!1),s(this,"onended",null),s(this,"onisolationchange",null),s(this,"onmute",null),s(this,"onunmute",null),s(this,"getConstraints",()=>this.constraints),s(this,"stop",()=>{const o={...new Event(m)};this.events.trigger(m,o),this.readyState=m,this.onended&&this.onended(o)}),s(this,"addEventListener",(o,a)=>{this.events.on(o,a)}),s(this,"removeEventListener",(o,a)=>{this.events.off(o,a)}),this.id=`${t}-${e}-track`,this.kind=e,this.enabled=!0,this.constraints={...i},this.events=new M($)}clone(){return{...this}}getCapabilities(){return{width:{min:352,max:4096},height:{min:288,max:2160}}}getSettings(){let e=0,t=0;return typeof this.constraints.width=="object"&&this.constraints.width.ideal!==void 0?e=this.constraints.width.ideal:typeof this.constraints.width=="object"&&this.constraints.width.exact!==void 0?e=this.constraints.width.exact:typeof this.constraints.width=="number"&&this.constraints.width&&(e=this.constraints.width),typeof this.constraints.height=="object"&&this.constraints.height.ideal!==void 0?t=this.constraints.height.ideal:typeof this.constraints.height=="object"&&this.constraints.height.exact!==void 0?t=this.constraints.height.exact:typeof this.constraints.height=="number"&&this.constraints.height&&(t=this.constraints.height),{width:e,height:t}}async applyConstraints(e){this.constraints={...e}}dispatchEvent(e){const t=e.type;return this.events.trigger(t,e),!0}}const B=r=>new y("audio",r),K=r=>new y("video",r);class Y{constructor({originator:e="local",eventHandlers:t}){n(this,"originator");n(this,"_connection");n(this,"_events");n(this,"_remote_identity");n(this,"_mutedOptions",{audio:!1,video:!1});this.originator=e,this._events=new M(l.SESSION_EVENT_NAMES),this.initEvents(t)}get C(){throw new Error("Method not implemented.")}get causes(){throw new Error("Method not implemented.")}get id(){throw new Error("Method not implemented.")}set data(e){throw new Error("Method not implemented.")}get data(){throw new Error("Method not implemented.")}get connection(){return this._connection}get contact(){throw new Error("Method not implemented.")}get direction(){throw new Error("Method not implemented.")}get local_identity(){throw new Error("Method not implemented.")}get remote_identity(){return this._remote_identity}get start_time(){throw new Error("Method not implemented.")}get end_time(){throw new Error("Method not implemented.")}get status(){throw new Error("Method not implemented.")}isInProgress(){throw new Error("Method not implemented.")}isEnded(){throw new Error("Method not implemented.")}isReadyToReOffer(){throw new Error("Method not implemented.")}answer(e){throw new Error("Method not implemented.")}terminate(e){throw new Error("Method not implemented.")}async sendInfo(e,t,i){throw new Error("Method not implemented.")}hold(e,t){throw new Error("Method not implemented.")}unhold(e,t){throw new Error("Method not implemented.")}async renegotiate(e,t){throw new Error("Method not implemented.")}isOnHold(){throw new Error("Method not implemented.")}mute(e){throw new Error("Method not implemented.")}unmute(e){throw new Error("Method not implemented.")}isMuted(){throw new Error("Method not implemented.")}refer(e,t){throw new Error("Method not implemented.")}resetLocalMedia(){throw new Error("Method not implemented.")}async replaceMediaStream(e,t){throw new Error("Method not implemented.")}addListener(e,t){throw new Error("Method not implemented.")}once(e,t){throw new Error("Method not implemented.")}removeListener(e,t){throw new Error("Method not implemented.")}off(e,t){throw new Error("Method not implemented.")}removeAllListeners(e){throw new Error("Method not implemented.")}setMaxListeners(e){throw new Error("Method not implemented.")}getMaxListeners(){throw new Error("Method not implemented.")}listeners(e){throw new Error("Method not implemented.")}rawListeners(e){throw new Error("Method not implemented.")}emit(e,...t){throw new Error("Method not implemented.")}listenerCount(e){throw new Error("Method not implemented.")}prependListener(e,t){throw new Error("Method not implemented.")}prependOnceListener(e,t){throw new Error("Method not implemented.")}eventNames(){throw new Error("Method not implemented.")}initEvents(e=[]){Object.entries(e).forEach(([t,i])=>this.on(t,i))}on(e,t){return this._events.on(e,t),this}trigger(e,t){this._events.trigger(e,t)}sendDTMF(){this.trigger("newDTMF",{originator:this.originator})}async startPresentation(e){return e}async updatePresentation(e){return e}async stopPresentation(e){return e}isEstablished(){return!0}}class J{constructor(e,t){n(this,"_senders",[]);n(this,"_receivers",[]);n(this,"canTrickleIceCandidates");n(this,"connectionState");n(this,"currentLocalDescription");n(this,"currentRemoteDescription");n(this,"iceConnectionState");n(this,"iceGatheringState");n(this,"idpErrorInfo");n(this,"idpLoginUrl");n(this,"localDescription");n(this,"onconnectionstatechange");n(this,"ondatachannel");n(this,"onicecandidate");n(this,"onicecandidateerror",null);n(this,"oniceconnectionstatechange");n(this,"onicegatheringstatechange");n(this,"onnegotiationneeded");n(this,"onsignalingstatechange");n(this,"ontrack");n(this,"peerIdentity");n(this,"pendingLocalDescription");n(this,"pendingRemoteDescription");n(this,"remoteDescription");n(this,"sctp",null);n(this,"signalingState");n(this,"getReceivers",()=>this._receivers);n(this,"getSenders",()=>this._senders);n(this,"addTrack",e=>{const t={track:e};return this._senders.push(t),t});this._receivers=t.map(i=>({track:i}))}getRemoteStreams(){throw new Error("Method not implemented.")}async addIceCandidate(e){throw new Error("Method not implemented.")}addTransceiver(e,t){throw new Error("Method not implemented.")}close(){throw new Error("Method not implemented.")}restartIce(){throw new Error("Method not implemented.")}async createAnswer(e,t){throw new Error("Method not implemented.")}createDataChannel(e,t){throw new Error("Method not implemented.")}async createOffer(e,t,i){throw new Error("Method not implemented.")}getConfiguration(){throw new Error("Method not implemented.")}async getIdentityAssertion(){throw new Error("Method not implemented.")}async getStats(e){throw new Error("Method not implemented.")}getTransceivers(){throw new Error("Method not implemented.")}removeTrack(e){throw new Error("Method not implemented.")}setConfiguration(e){throw new Error("Method not implemented.")}async setLocalDescription(e){throw new Error("Method not implemented.")}async setRemoteDescription(e){throw new Error("Method not implemented.")}addEventListener(e,t,i){throw new Error("Method not implemented.")}removeEventListener(e,t,i){throw new Error("Method not implemented.")}dispatchEvent(e){throw new Error("Method not implemented.")}}function G(r){const e=r.match(/[\d.]+/g);if(!e)throw new Error("wrong sip url");return e[0]}const w=400,A="777",X=r=>r.getVideoTracks().length>0;class b extends Y{constructor({url:t="",mediaStream:i,eventHandlers:o,originator:a}){super({originator:a,eventHandlers:o});n(this,"url");n(this,"status_code");n(this,"_isEnded",!1);n(this,"answer",jest.fn(({mediaStream:t})=>{if(this.originator!=="remote")throw new Error("answer available only for remote sessions");this.initPeerconnection(t),setTimeout(()=>{this.trigger("connecting"),setTimeout(()=>{this.trigger("accepted")},100),setTimeout(()=>{this.trigger("confirmed")},200)},w)}));this.url=t,this.initPeerconnection(i)}initPeerconnection(t){return t?(this.createPeerconnection(t),!0):!1}createPeerconnection(t){const i=B();i.id="mainaudio1";const o=[i];if(X(t)){const S=K();S.id="mainvideo1",o.push(S)}this._connection=new J(void 0,o),this._addStream(t),setTimeout(()=>{this.trigger("peerconnection",{peerconnection:this.connection})},w)}connect(t){const i=G(t);setTimeout(()=>{this.url.includes(A)?this.trigger("failed",{originator:"remote",message:"IncomingResponse",cause:l.REJECTED}):(this.trigger("connecting"),setTimeout(()=>{this.trigger("enterRoom",i)},100),setTimeout(()=>{this.trigger("accepted")},200),setTimeout(()=>{this.trigger("confirmed")},300))},w)}terminate({status_code:t}={}){return this.status_code=t,this.trigger("ended",{status_code:t}),this._isEnded=!1,this}terminateRemote({status_code:t}={}){return this.status_code=t,this.trigger("ended",{status_code:t,originator:"remote"}),this}_addStream(t,i="getTracks"){t[i]().forEach(o=>this.connection.addTrack(o))}_forEachSenders(t){const i=this.connection.getSenders();for(const o of i)t(o);return i}_toggleMuteAudio(t){this._forEachSenders(({track:i})=>{i&&i.kind==="audio"&&(i.enabled=!t)})}_toggleMuteVideo(t){this._forEachSenders(({track:i})=>{i&&i.kind==="video"&&(i.enabled=!t)})}mute(t){t.audio&&(this._mutedOptions.audio=!0,this._toggleMuteAudio(this._mutedOptions.audio)),t.video&&(this._mutedOptions.video=!0,this._toggleMuteVideo(this._mutedOptions.video)),this._onmute(t)}unmute(t){t.audio&&(this._mutedOptions.audio=!1),t.video&&(this._mutedOptions.video=!1),this.trigger("unmuted",t)}isMuted(){return this._mutedOptions}async replaceMediaStream(t){return t}_onmute({audio:t,video:i}){this.trigger("muted",{audio:t,video:i})}async sendInfo(){}isEnded(){return this._isEnded}newInfo(t){this.trigger("newInfo",t)}}class Q{constructor(){n(this,"extraHeaders")}setExtraHeaders(e){this.extraHeaders=e}setExtraContactParams(){}}const d="PASSWORD_CORRECT",E="PASSWORD_CORRECT_2",I="NAME_INCORRECT",c=400,u=class u{constructor(e){n(this,"_events");n(this,"_startedTimeout");n(this,"_stopedTimeout");n(this,"session");n(this,"_isRegistered");n(this,"_isConnected");n(this,"configuration");n(this,"_registrator");n(this,"call",jest.fn((e,t)=>{const{mediaStream:i,eventHandlers:o}=t;return this.session=new b({url:e,mediaStream:i,eventHandlers:o,originator:"local"}),this.session.connect(e),this.session}));this._events=new M(l.UA_EVENT_NAMES),this.configuration=e,this._registrator=new Q}static setAvailableTelephony(){this.isAvailableTelephony=!0}static setNotAvailableTelephony(){this.isAvailableTelephony=!1}start(){this.register()}stop(){this._startedTimeout&&clearTimeout(this._startedTimeout),this._stopedTimeout&&clearTimeout(this._stopedTimeout),this.unregister(),this.isStarted()?this._stopedTimeout=setTimeout(()=>{this.trigger("disconnected",{error:new Error("stoped")})},c):this.trigger("disconnected",{error:new Error("stoped")})}on(e,t){return this._events.on(e,t),this}once(e,t){return this._events.once(e,t),this}off(e,t){return this._events.off(e,t),this}removeAllListeners(){return this._events.removeEventHandlers(),this}trigger(e,t){this._events.trigger(e,t)}terminateSessions(){this.session.terminate()}set(e,t){return this.configuration[e]=t,!0}register(){this._startedTimeout&&clearTimeout(this._startedTimeout);const{password:e,register:t,uri:i}=this.configuration;t&&i.includes(I)?(this._isRegistered=!1,this._isConnected=!1,this._startedTimeout=setTimeout(()=>{this.trigger("registrationFailed",{response:null,cause:"Request Timeout"})},c)):!this._isRegistered&&t&&(e===d||e===E)?(this._isRegistered=!0,this._startedTimeout=setTimeout(()=>{this.trigger("registered")},c)):t&&e!==d&&e!==E&&(this._isRegistered=!1,this._isConnected=!1,this._startedTimeout=setTimeout(()=>{this.trigger("registrationFailed",{response:null,cause:"Wrong credentials"})},c)),u.isAvailableTelephony?(this.trigger("connected"),this._isConnected=!0):this.stop()}unregister(){this._isRegistered=!1,this._isConnected=!1,this.trigger("unregistered")}isRegistered(){return!!this._isRegistered}isStarted(){return this.configuration&&(this.configuration.register&&!!this._isRegistered||!this.configuration.register&&!!this._isConnected)}registrator(){return this._registrator}newSipEvent(e){this.trigger("sipEvent",e)}};n(u,"isAvailableTelephony",!0);let f=u;class Z{constructor(e){n(this,"url");this.url=e}}class ee extends x.EventEmitter{constructor(t,i){super();n(this,"contentType");n(this,"body");this.contentType=t,this.body=i}}const v="remote",te=(r,e)=>{const t=new T(e),i={originator:v,request:t,info:new ee("","")};r.newInfo(i)},ne=(r,e)=>{const i={request:new T(e)};r.newSipEvent(i)},ie=(r,{incomingNumber:e="1234",displayName:t,host:i})=>{const o=new b({originator:v}),a=new P("sip",e,i);o._remote_identity=new L(a,t),r.trigger("newRTCSession",{originator:v,session:o})},re=(r,e)=>{e?r.trigger("failed",e):r.trigger("failed",r)},O={triggerNewInfo:te,triggerNewSipEvent:ne,triggerIncomingSession:ie,triggerFailIncomingSession:re,WebSocketInterface:Z,UA:f,C:{INVITE:"INVITE"}},g="user",h="displayName",_="SIP_SERVER_URL",C="SIP_WEB_SOCKET_SERVER_URL",oe=new O.WebSocketInterface(C),R={userAgent:"Chrome",sipServerUrl:_,sipWebSocketServerURL:C},se={...R},N={...R,user:g,password:d,register:!0},ae={...N,displayName:h},de={...R,displayName:h,register:!1},p={session_timers:!1,sockets:[oe],user_agent:"Chrome",sdp_semantics:"plan-b",register_expires:300,connection_recovery_max_interval:6,connection_recovery_min_interval:2},he={...p,password:d,uri:`sip:${g}@${_}`,display_name:"",register:!0},ce={...p,password:d,uri:`sip:${g}@${_}`,display_name:h,register:!0},me={...p,display_name:h,register:!1},ue={...p,display_name:"",register:!1},W="10.10.10.10",le=[`X-Vinteo-Remote: ${W}`],ge=()=>new l.SipConnector({JsSIP:O});exports.FAILED_CONFERENCE_NUMBER=A;exports.NAME_INCORRECT=I;exports.PASSWORD_CORRECT=d;exports.PASSWORD_CORRECT_2=E;exports.SIP_SERVER_URL=_;exports.SIP_WEB_SOCKET_SERVER_URL=C;exports.dataForConnectionWithAuthorization=N;exports.dataForConnectionWithAuthorizationWithDisplayName=ae;exports.dataForConnectionWithoutAuthorization=de;exports.dataForConnectionWithoutAuthorizationWithoutDisplayName=se;exports.default=ge;exports.displayName=h;exports.extraHeadersRemoteAddress=le;exports.remoteAddress=W;exports.uaConfigurationWithAuthorization=he;exports.uaConfigurationWithAuthorizationWithDisplayName=ce;exports.uaConfigurationWithoutAuthorization=me;exports.uaConfigurationWithoutAuthorizationWithoutDisplayName=ue;exports.user=g;
|
|
1
|
+
"use strict";var k=Object.defineProperty;var L=(r,e,t)=>e in r?k(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var n=(r,e,t)=>(L(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("./SipConnector-eRr2JbY9.cjs"),P=require("@krivega/jssip/lib/NameAddrHeader"),x=require("@krivega/jssip/lib/URI"),F=require("node:events"),U=require("@krivega/jssip/lib/SIPMessage"),R=require("events-constructor"),C=require("@krivega/jssip");class y extends U.IncomingRequest{constructor(t){super();n(this,"headers");this.headers=new Headers(t)}getHeader(t){return this.headers.get(t)||""}}var V=Object.defineProperty,z=(r,e,t)=>e in r?V(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,s=(r,e,t)=>(z(r,typeof e!="symbol"?e+"":e,t),t);const m="ended",q="mute",H="isolationchange",j="overconstrained",B="unmute",$=[m,q,B,H,j];class A{constructor(e,{id:t="identifier",constraints:i={}}={}){s(this,"events"),s(this,"id"),s(this,"kind"),s(this,"constraints"),s(this,"enabled"),s(this,"contentHint",""),s(this,"readyState","live"),s(this,"isolated",!1),s(this,"label",""),s(this,"muted",!1),s(this,"onended",null),s(this,"onisolationchange",null),s(this,"onmute",null),s(this,"onunmute",null),s(this,"getConstraints",()=>this.constraints),s(this,"stop",()=>{const o={...new Event(m)};this.events.trigger(m,o),this.readyState=m,this.onended&&this.onended(o)}),s(this,"addEventListener",(o,a)=>{this.events.on(o,a)}),s(this,"removeEventListener",(o,a)=>{this.events.off(o,a)}),this.id=`${t}-${e}-track`,this.kind=e,this.enabled=!0,this.constraints={...i},this.events=new R($)}clone(){return{...this}}getCapabilities(){return{width:{min:352,max:4096},height:{min:288,max:2160}}}getSettings(){let e=0,t=0;return typeof this.constraints.width=="object"&&this.constraints.width.ideal!==void 0?e=this.constraints.width.ideal:typeof this.constraints.width=="object"&&this.constraints.width.exact!==void 0?e=this.constraints.width.exact:typeof this.constraints.width=="number"&&this.constraints.width&&(e=this.constraints.width),typeof this.constraints.height=="object"&&this.constraints.height.ideal!==void 0?t=this.constraints.height.ideal:typeof this.constraints.height=="object"&&this.constraints.height.exact!==void 0?t=this.constraints.height.exact:typeof this.constraints.height=="number"&&this.constraints.height&&(t=this.constraints.height),{width:e,height:t}}async applyConstraints(e){this.constraints={...e}}dispatchEvent(e){const t=e.type;return this.events.trigger(t,e),!0}}const K=r=>new A("audio",r),Y=r=>new A("video",r);class J{constructor({originator:e="local",eventHandlers:t}){n(this,"originator");n(this,"_connection");n(this,"_events");n(this,"_remote_identity");n(this,"_mutedOptions",{audio:!1,video:!1});this.originator=e,this._events=new R(g.SESSION_EVENT_NAMES),this.initEvents(t)}get C(){throw new Error("Method not implemented.")}get causes(){throw new Error("Method not implemented.")}get id(){throw new Error("Method not implemented.")}set data(e){throw new Error("Method not implemented.")}get data(){throw new Error("Method not implemented.")}get connection(){return this._connection}get contact(){throw new Error("Method not implemented.")}get direction(){throw new Error("Method not implemented.")}get local_identity(){throw new Error("Method not implemented.")}get remote_identity(){return this._remote_identity}get start_time(){throw new Error("Method not implemented.")}get end_time(){throw new Error("Method not implemented.")}get status(){throw new Error("Method not implemented.")}isInProgress(){throw new Error("Method not implemented.")}isEnded(){throw new Error("Method not implemented.")}isReadyToReOffer(){throw new Error("Method not implemented.")}answer(e){throw new Error("Method not implemented.")}terminate(e){throw new Error("Method not implemented.")}async sendInfo(e,t,i){throw new Error("Method not implemented.")}hold(e,t){throw new Error("Method not implemented.")}unhold(e,t){throw new Error("Method not implemented.")}async renegotiate(e,t){throw new Error("Method not implemented.")}isOnHold(){throw new Error("Method not implemented.")}mute(e){throw new Error("Method not implemented.")}unmute(e){throw new Error("Method not implemented.")}isMuted(){throw new Error("Method not implemented.")}refer(e,t){throw new Error("Method not implemented.")}resetLocalMedia(){throw new Error("Method not implemented.")}async replaceMediaStream(e,t){throw new Error("Method not implemented.")}addListener(e,t){throw new Error("Method not implemented.")}once(e,t){throw new Error("Method not implemented.")}removeListener(e,t){throw new Error("Method not implemented.")}off(e,t){throw new Error("Method not implemented.")}removeAllListeners(e){throw new Error("Method not implemented.")}setMaxListeners(e){throw new Error("Method not implemented.")}getMaxListeners(){throw new Error("Method not implemented.")}listeners(e){throw new Error("Method not implemented.")}rawListeners(e){throw new Error("Method not implemented.")}emit(e,...t){throw new Error("Method not implemented.")}listenerCount(e){throw new Error("Method not implemented.")}prependListener(e,t){throw new Error("Method not implemented.")}prependOnceListener(e,t){throw new Error("Method not implemented.")}eventNames(){throw new Error("Method not implemented.")}initEvents(e=[]){Object.entries(e).forEach(([t,i])=>this.on(t,i))}on(e,t){return this._events.on(e,t),this}trigger(e,t){this._events.trigger(e,t)}sendDTMF(){this.trigger("newDTMF",{originator:this.originator})}async startPresentation(e){return e}async updatePresentation(e){return e}async stopPresentation(e){return e}isEstablished(){return!0}}class G{constructor(e,t){n(this,"_senders",[]);n(this,"_receivers",[]);n(this,"canTrickleIceCandidates");n(this,"connectionState");n(this,"currentLocalDescription");n(this,"currentRemoteDescription");n(this,"iceConnectionState");n(this,"iceGatheringState");n(this,"idpErrorInfo");n(this,"idpLoginUrl");n(this,"localDescription");n(this,"onconnectionstatechange");n(this,"ondatachannel");n(this,"onicecandidate");n(this,"onicecandidateerror",null);n(this,"oniceconnectionstatechange");n(this,"onicegatheringstatechange");n(this,"onnegotiationneeded");n(this,"onsignalingstatechange");n(this,"ontrack");n(this,"peerIdentity");n(this,"pendingLocalDescription");n(this,"pendingRemoteDescription");n(this,"remoteDescription");n(this,"sctp",null);n(this,"signalingState");n(this,"getReceivers",()=>this._receivers);n(this,"getSenders",()=>this._senders);n(this,"addTrack",e=>{const t={track:e};return this._senders.push(t),t});this._receivers=t.map(i=>({track:i}))}getRemoteStreams(){throw new Error("Method not implemented.")}async addIceCandidate(e){throw new Error("Method not implemented.")}addTransceiver(e,t){throw new Error("Method not implemented.")}close(){throw new Error("Method not implemented.")}restartIce(){throw new Error("Method not implemented.")}async createAnswer(e,t){throw new Error("Method not implemented.")}createDataChannel(e,t){throw new Error("Method not implemented.")}async createOffer(e,t,i){throw new Error("Method not implemented.")}getConfiguration(){throw new Error("Method not implemented.")}async getIdentityAssertion(){throw new Error("Method not implemented.")}async getStats(e){throw new Error("Method not implemented.")}getTransceivers(){throw new Error("Method not implemented.")}removeTrack(e){throw new Error("Method not implemented.")}setConfiguration(e){throw new Error("Method not implemented.")}async setLocalDescription(e){throw new Error("Method not implemented.")}async setRemoteDescription(e){throw new Error("Method not implemented.")}addEventListener(e,t,i){throw new Error("Method not implemented.")}removeEventListener(e,t,i){throw new Error("Method not implemented.")}dispatchEvent(e){throw new Error("Method not implemented.")}}function X(r){const e=r.match(/[\d.]+/g);if(!e)throw new Error("wrong sip url");return e[0]}const E=400,I="777",Q=r=>r.getVideoTracks().length>0;class b extends J{constructor({url:t="",mediaStream:i,eventHandlers:o,originator:a}){super({originator:a,eventHandlers:o});n(this,"url");n(this,"status_code");n(this,"_isEnded",!1);n(this,"answer",jest.fn(({mediaStream:t})=>{if(this.originator!=="remote")throw new Error("answer available only for remote sessions");this.initPeerconnection(t),setTimeout(()=>{this.trigger("connecting"),setTimeout(()=>{this.trigger("accepted")},100),setTimeout(()=>{this.trigger("confirmed")},200)},E)}));this.url=t,this.initPeerconnection(i)}initPeerconnection(t){return t?(this.createPeerconnection(t),!0):!1}createPeerconnection(t){const i=K();i.id="mainaudio1";const o=[i];if(Q(t)){const c=Y();c.id="mainvideo1",o.push(c)}this._connection=new G(void 0,o),this._addStream(t),setTimeout(()=>{this.trigger("peerconnection",{peerconnection:this.connection})},E)}connect(t){const i=X(t);setTimeout(()=>{this.url.includes(I)?this.trigger("failed",{originator:"remote",message:"IncomingResponse",cause:g.REJECTED}):(this.trigger("connecting"),setTimeout(()=>{this.trigger("enterRoom",i)},100),setTimeout(()=>{this.trigger("accepted")},200),setTimeout(()=>{this.trigger("confirmed")},300))},E)}terminate({status_code:t}={}){return this.status_code=t,this.trigger("ended",{status_code:t}),this._isEnded=!1,this}terminateRemote({status_code:t}={}){return this.status_code=t,this.trigger("ended",{status_code:t,originator:"remote"}),this}_addStream(t,i="getTracks"){t[i]().forEach(o=>this.connection.addTrack(o))}_forEachSenders(t){const i=this.connection.getSenders();for(const o of i)t(o);return i}_toggleMuteAudio(t){this._forEachSenders(({track:i})=>{i&&i.kind==="audio"&&(i.enabled=!t)})}_toggleMuteVideo(t){this._forEachSenders(({track:i})=>{i&&i.kind==="video"&&(i.enabled=!t)})}mute(t){t.audio&&(this._mutedOptions.audio=!0,this._toggleMuteAudio(this._mutedOptions.audio)),t.video&&(this._mutedOptions.video=!0,this._toggleMuteVideo(this._mutedOptions.video)),this._onmute(t)}unmute(t){t.audio&&(this._mutedOptions.audio=!1),t.video&&(this._mutedOptions.video=!1),this.trigger("unmuted",t)}isMuted(){return this._mutedOptions}async replaceMediaStream(t){return t}_onmute({audio:t,video:i}){this.trigger("muted",{audio:t,video:i})}async sendInfo(){}isEnded(){return this._isEnded}newInfo(t){this.trigger("newInfo",t)}}class Z{constructor(){n(this,"extraHeaders")}setExtraHeaders(e){this.extraHeaders=e}setExtraContactParams(){}}const d="PASSWORD_CORRECT",f="PASSWORD_CORRECT_2",O="NAME_INCORRECT",u=400,l=class l{constructor(e){n(this,"_events");n(this,"_startedTimeout");n(this,"_stopedTimeout");n(this,"session");n(this,"_isRegistered");n(this,"_isConnected");n(this,"configuration");n(this,"_registrator");n(this,"call",jest.fn((e,t)=>{const{mediaStream:i,eventHandlers:o}=t;return this.session=new b({url:e,mediaStream:i,eventHandlers:o,originator:"local"}),this.session.connect(e),this.session}));this._events=new R(g.UA_EVENT_NAMES);const[t,i]=e.uri.split(":"),[o,a]=i.split("@"),c={...e,uri:new C.URI(t,o,a)};this.configuration=c,this._registrator=new Z}static setAvailableTelephony(){this.isAvailableTelephony=!0}static setNotAvailableTelephony(){this.isAvailableTelephony=!1}start(){this.register()}stop(){this._startedTimeout&&clearTimeout(this._startedTimeout),this._stopedTimeout&&clearTimeout(this._stopedTimeout),this.unregister(),this.isStarted()?this._stopedTimeout=setTimeout(()=>{this.trigger("disconnected",{error:new Error("stoped")})},u):this.trigger("disconnected",{error:new Error("stoped")})}on(e,t){return this._events.on(e,t),this}once(e,t){return this._events.once(e,t),this}off(e,t){return this._events.off(e,t),this}removeAllListeners(){return this._events.removeEventHandlers(),this}trigger(e,t){this._events.trigger(e,t)}terminateSessions(){this.session.terminate()}set(e,t){return this.configuration[e]=t,!0}register(){this._startedTimeout&&clearTimeout(this._startedTimeout);const{password:e,register:t,uri:i}=this.configuration;t&&i.user.includes(O)?(this._isRegistered=!1,this._isConnected=!1,this._startedTimeout=setTimeout(()=>{this.trigger("registrationFailed",{response:null,cause:"Request Timeout"})},u)):!this._isRegistered&&t&&(e===d||e===f)?(this._isRegistered=!0,this._startedTimeout=setTimeout(()=>{this.trigger("registered")},u)):t&&e!==d&&e!==f&&(this._isRegistered=!1,this._isConnected=!1,this._startedTimeout=setTimeout(()=>{this.trigger("registrationFailed",{response:null,cause:"Wrong credentials"})},u)),l.isAvailableTelephony?(this.trigger("connected"),this._isConnected=!0):this.stop()}unregister(){this._isRegistered=!1,this._isConnected=!1,this.trigger("unregistered")}isRegistered(){return!!this._isRegistered}isStarted(){return this.configuration&&(this.configuration.register&&!!this._isRegistered||!this.configuration.register&&!!this._isConnected)}registrator(){return this._registrator}newSipEvent(e){this.trigger("sipEvent",e)}};n(l,"isAvailableTelephony",!0);let v=l;class ee{constructor(e){n(this,"url");this.url=e}}class te extends F.EventEmitter{constructor(t,i){super();n(this,"contentType");n(this,"body");this.contentType=t,this.body=i}}const M="remote",ne=(r,e)=>{const t=new y(e),i={originator:M,request:t,info:new te("","")};r.newInfo(i)},ie=(r,e)=>{const i={request:new y(e)};r.newSipEvent(i)},re=(r,{incomingNumber:e="1234",displayName:t,host:i})=>{const o=new b({originator:M}),a=new x("sip",e,i);o._remote_identity=new P(a,t),r.trigger("newRTCSession",{originator:M,session:o})},oe=(r,e)=>{e?r.trigger("failed",e):r.trigger("failed",r)},N={triggerNewInfo:ne,triggerNewSipEvent:ie,triggerIncomingSession:re,triggerFailIncomingSession:oe,WebSocketInterface:ee,UA:v,C:{INVITE:"INVITE"}},_="user",h="displayName",p="SIP_SERVER_URL",S="SIP_WEB_SOCKET_SERVER_URL",se=new N.WebSocketInterface(S),T={userAgent:"Chrome",sipServerUrl:p,sipWebSocketServerURL:S},ae={...T},W={...T,user:_,password:d,register:!0},de={...W,displayName:h},he={...T,displayName:h,register:!1},w={session_timers:!1,sockets:[se],user_agent:"Chrome",sdp_semantics:"plan-b",register_expires:300,connection_recovery_max_interval:6,connection_recovery_min_interval:2},ce={...w,password:d,uri:new C.URI("sip",_,p),display_name:"",register:!0},ue={...w,password:d,uri:new C.URI("sip",_,p),display_name:h,register:!0},me={...w,display_name:h,register:!1},le={...w,display_name:"",register:!1},D="10.10.10.10",ge=[`X-Vinteo-Remote: ${D}`],_e=()=>new g.SipConnector({JsSIP:N});exports.FAILED_CONFERENCE_NUMBER=I;exports.NAME_INCORRECT=O;exports.PASSWORD_CORRECT=d;exports.PASSWORD_CORRECT_2=f;exports.SIP_SERVER_URL=p;exports.SIP_WEB_SOCKET_SERVER_URL=S;exports.dataForConnectionWithAuthorization=W;exports.dataForConnectionWithAuthorizationWithDisplayName=de;exports.dataForConnectionWithoutAuthorization=he;exports.dataForConnectionWithoutAuthorizationWithoutDisplayName=ae;exports.default=_e;exports.displayName=h;exports.extraHeadersRemoteAddress=ge;exports.remoteAddress=D;exports.uaConfigurationWithAuthorization=ce;exports.uaConfigurationWithAuthorizationWithDisplayName=ue;exports.uaConfigurationWithoutAuthorization=me;exports.uaConfigurationWithoutAuthorizationWithoutDisplayName=le;exports.user=_;
|
package/dist/doMock.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var n = (i, e, t) => (
|
|
4
|
-
import { j as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { EventEmitter as
|
|
8
|
-
import { IncomingRequest as
|
|
9
|
-
import
|
|
10
|
-
|
|
1
|
+
var A = Object.defineProperty;
|
|
2
|
+
var O = (i, e, t) => e in i ? A(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
|
|
3
|
+
var n = (i, e, t) => (O(i, typeof e != "symbol" ? e + "" : e, t), t);
|
|
4
|
+
import { j as k, R as N, U as L, S as D } from "./SipConnector-1HoiCnsj.js";
|
|
5
|
+
import W from "@krivega/jssip/lib/NameAddrHeader";
|
|
6
|
+
import P from "@krivega/jssip/lib/URI";
|
|
7
|
+
import { EventEmitter as x } from "node:events";
|
|
8
|
+
import { IncomingRequest as V } from "@krivega/jssip/lib/SIPMessage";
|
|
9
|
+
import E from "events-constructor";
|
|
10
|
+
import { URI as f } from "@krivega/jssip";
|
|
11
|
+
class R extends V {
|
|
11
12
|
constructor(t) {
|
|
12
13
|
super();
|
|
13
14
|
n(this, "headers");
|
|
@@ -17,18 +18,18 @@ class y extends x {
|
|
|
17
18
|
return this.headers.get(t) || "";
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
var
|
|
21
|
-
const
|
|
22
|
-
class
|
|
21
|
+
var F = Object.defineProperty, U = (i, e, t) => e in i ? F(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t, s = (i, e, t) => (U(i, typeof e != "symbol" ? e + "" : e, t), t);
|
|
22
|
+
const m = "ended", H = "mute", j = "isolationchange", z = "overconstrained", q = "unmute", $ = [m, H, q, j, z];
|
|
23
|
+
class S {
|
|
23
24
|
constructor(e, { id: t = "identifier", constraints: r = {} } = {}) {
|
|
24
25
|
s(this, "events"), s(this, "id"), s(this, "kind"), s(this, "constraints"), s(this, "enabled"), s(this, "contentHint", ""), s(this, "readyState", "live"), s(this, "isolated", !1), s(this, "label", ""), s(this, "muted", !1), s(this, "onended", null), s(this, "onisolationchange", null), s(this, "onmute", null), s(this, "onunmute", null), s(this, "getConstraints", () => this.constraints), s(this, "stop", () => {
|
|
25
|
-
const o = { ...new Event(
|
|
26
|
-
this.events.trigger(
|
|
26
|
+
const o = { ...new Event(m) };
|
|
27
|
+
this.events.trigger(m, o), this.readyState = m, this.onended && this.onended(o);
|
|
27
28
|
}), s(this, "addEventListener", (o, a) => {
|
|
28
29
|
this.events.on(o, a);
|
|
29
30
|
}), s(this, "removeEventListener", (o, a) => {
|
|
30
31
|
this.events.off(o, a);
|
|
31
|
-
}), this.id = `${t}-${e}-track`, this.kind = e, this.enabled = !0, this.constraints = { ...r }, this.events = new
|
|
32
|
+
}), this.id = `${t}-${e}-track`, this.kind = e, this.enabled = !0, this.constraints = { ...r }, this.events = new E($);
|
|
32
33
|
}
|
|
33
34
|
clone() {
|
|
34
35
|
return { ...this };
|
|
@@ -54,8 +55,8 @@ class R {
|
|
|
54
55
|
return this.events.trigger(t, e), !0;
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
const
|
|
58
|
-
class
|
|
58
|
+
const B = (i) => new S("audio", i), K = (i) => new S("video", i);
|
|
59
|
+
class Y {
|
|
59
60
|
// @ts-expect-error
|
|
60
61
|
constructor({ originator: e = "local", eventHandlers: t }) {
|
|
61
62
|
n(this, "originator");
|
|
@@ -63,7 +64,7 @@ class K {
|
|
|
63
64
|
n(this, "_events");
|
|
64
65
|
n(this, "_remote_identity");
|
|
65
66
|
n(this, "_mutedOptions", { audio: !1, video: !1 });
|
|
66
|
-
this.originator = e, this._events = new
|
|
67
|
+
this.originator = e, this._events = new E(k), this.initEvents(t);
|
|
67
68
|
}
|
|
68
69
|
// @ts-expect-error
|
|
69
70
|
get C() {
|
|
@@ -236,7 +237,7 @@ class K {
|
|
|
236
237
|
return !0;
|
|
237
238
|
}
|
|
238
239
|
}
|
|
239
|
-
class
|
|
240
|
+
class J {
|
|
240
241
|
constructor(e, t) {
|
|
241
242
|
n(this, "_senders", []);
|
|
242
243
|
n(this, "_receivers", []);
|
|
@@ -330,14 +331,14 @@ class Y {
|
|
|
330
331
|
throw new Error("Method not implemented.");
|
|
331
332
|
}
|
|
332
333
|
}
|
|
333
|
-
function
|
|
334
|
+
function G(i) {
|
|
334
335
|
const e = i.match(/[\d.]+/g);
|
|
335
336
|
if (!e)
|
|
336
337
|
throw new Error("wrong sip url");
|
|
337
338
|
return e[0];
|
|
338
339
|
}
|
|
339
|
-
const
|
|
340
|
-
class
|
|
340
|
+
const p = 400, X = "777", Q = (i) => i.getVideoTracks().length > 0;
|
|
341
|
+
class C extends Y {
|
|
341
342
|
constructor({
|
|
342
343
|
url: t = "",
|
|
343
344
|
mediaStream: r,
|
|
@@ -366,7 +367,7 @@ class S extends K {
|
|
|
366
367
|
}, 100), setTimeout(() => {
|
|
367
368
|
this.trigger("confirmed");
|
|
368
369
|
}, 200);
|
|
369
|
-
},
|
|
370
|
+
}, p);
|
|
370
371
|
}));
|
|
371
372
|
this.url = t, this.initPeerconnection(r);
|
|
372
373
|
}
|
|
@@ -374,24 +375,24 @@ class S extends K {
|
|
|
374
375
|
return t ? (this.createPeerconnection(t), !0) : !1;
|
|
375
376
|
}
|
|
376
377
|
createPeerconnection(t) {
|
|
377
|
-
const r =
|
|
378
|
+
const r = B();
|
|
378
379
|
r.id = "mainaudio1";
|
|
379
380
|
const o = [r];
|
|
380
|
-
if (
|
|
381
|
-
const
|
|
382
|
-
|
|
381
|
+
if (Q(t)) {
|
|
382
|
+
const h = K();
|
|
383
|
+
h.id = "mainvideo1", o.push(h);
|
|
383
384
|
}
|
|
384
|
-
this._connection = new
|
|
385
|
+
this._connection = new J(void 0, o), this._addStream(t), setTimeout(() => {
|
|
385
386
|
this.trigger("peerconnection", { peerconnection: this.connection });
|
|
386
|
-
},
|
|
387
|
+
}, p);
|
|
387
388
|
}
|
|
388
389
|
connect(t) {
|
|
389
|
-
const r =
|
|
390
|
+
const r = G(t);
|
|
390
391
|
setTimeout(() => {
|
|
391
|
-
this.url.includes(
|
|
392
|
+
this.url.includes(X) ? this.trigger("failed", {
|
|
392
393
|
originator: "remote",
|
|
393
394
|
message: "IncomingResponse",
|
|
394
|
-
cause:
|
|
395
|
+
cause: N
|
|
395
396
|
}) : (this.trigger("connecting"), setTimeout(() => {
|
|
396
397
|
this.trigger("enterRoom", r);
|
|
397
398
|
}, 100), setTimeout(() => {
|
|
@@ -399,7 +400,7 @@ class S extends K {
|
|
|
399
400
|
}, 200), setTimeout(() => {
|
|
400
401
|
this.trigger("confirmed");
|
|
401
402
|
}, 300));
|
|
402
|
-
},
|
|
403
|
+
}, p);
|
|
403
404
|
}
|
|
404
405
|
terminate({ status_code: t } = {}) {
|
|
405
406
|
return this.status_code = t, this.trigger("ended", { status_code: t }), this._isEnded = !1, this;
|
|
@@ -457,7 +458,7 @@ class S extends K {
|
|
|
457
458
|
}
|
|
458
459
|
/* eslint-enable no-param-reassign */
|
|
459
460
|
}
|
|
460
|
-
class
|
|
461
|
+
class Z {
|
|
461
462
|
constructor() {
|
|
462
463
|
n(this, "extraHeaders");
|
|
463
464
|
}
|
|
@@ -467,7 +468,7 @@ class Q {
|
|
|
467
468
|
setExtraContactParams() {
|
|
468
469
|
}
|
|
469
470
|
}
|
|
470
|
-
const d = "PASSWORD_CORRECT",
|
|
471
|
+
const d = "PASSWORD_CORRECT", y = "PASSWORD_CORRECT_2", ee = "NAME_INCORRECT", c = 400, l = class l {
|
|
471
472
|
constructor(e) {
|
|
472
473
|
n(this, "_events");
|
|
473
474
|
n(this, "_startedTimeout");
|
|
@@ -480,9 +481,14 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
480
481
|
// @ts-expect-error
|
|
481
482
|
n(this, "call", jest.fn((e, t) => {
|
|
482
483
|
const { mediaStream: r, eventHandlers: o } = t;
|
|
483
|
-
return this.session = new
|
|
484
|
+
return this.session = new C({ url: e, mediaStream: r, eventHandlers: o, originator: "local" }), this.session.connect(e), this.session;
|
|
484
485
|
}));
|
|
485
|
-
this._events = new
|
|
486
|
+
this._events = new E(L);
|
|
487
|
+
const [t, r] = e.uri.split(":"), [o, a] = r.split("@"), h = {
|
|
488
|
+
...e,
|
|
489
|
+
uri: new f(t, o, a)
|
|
490
|
+
};
|
|
491
|
+
this.configuration = h, this._registrator = new Z();
|
|
486
492
|
}
|
|
487
493
|
static setAvailableTelephony() {
|
|
488
494
|
this.isAvailableTelephony = !0;
|
|
@@ -506,7 +512,7 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
506
512
|
stop() {
|
|
507
513
|
this._startedTimeout && clearTimeout(this._startedTimeout), this._stopedTimeout && clearTimeout(this._stopedTimeout), this.unregister(), this.isStarted() ? this._stopedTimeout = setTimeout(() => {
|
|
508
514
|
this.trigger("disconnected", { error: new Error("stoped") });
|
|
509
|
-
},
|
|
515
|
+
}, c) : this.trigger("disconnected", { error: new Error("stoped") });
|
|
510
516
|
}
|
|
511
517
|
// @ts-expect-error
|
|
512
518
|
on(e, t) {
|
|
@@ -553,13 +559,13 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
553
559
|
register() {
|
|
554
560
|
this._startedTimeout && clearTimeout(this._startedTimeout);
|
|
555
561
|
const { password: e, register: t, uri: r } = this.configuration;
|
|
556
|
-
t && r.includes(
|
|
562
|
+
t && r.user.includes(ee) ? (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
|
|
557
563
|
this.trigger("registrationFailed", { response: null, cause: "Request Timeout" });
|
|
558
|
-
},
|
|
564
|
+
}, c)) : !this._isRegistered && t && (e === d || e === y) ? (this._isRegistered = !0, this._startedTimeout = setTimeout(() => {
|
|
559
565
|
this.trigger("registered");
|
|
560
|
-
},
|
|
566
|
+
}, c)) : t && e !== d && e !== y && (this._isRegistered = !1, this._isConnected = !1, this._startedTimeout = setTimeout(() => {
|
|
561
567
|
this.trigger("registrationFailed", { response: null, cause: "Wrong credentials" });
|
|
562
|
-
},
|
|
568
|
+
}, c)), l.isAvailableTelephony ? (this.trigger("connected"), this._isConnected = !0) : this.stop();
|
|
563
569
|
}
|
|
564
570
|
/**
|
|
565
571
|
* unregister
|
|
@@ -592,15 +598,15 @@ const d = "PASSWORD_CORRECT", T = "PASSWORD_CORRECT_2", Z = "NAME_INCORRECT", h
|
|
|
592
598
|
this.trigger("sipEvent", e);
|
|
593
599
|
}
|
|
594
600
|
};
|
|
595
|
-
n(
|
|
596
|
-
let
|
|
597
|
-
class
|
|
601
|
+
n(l, "isAvailableTelephony", !0);
|
|
602
|
+
let _ = l;
|
|
603
|
+
class te {
|
|
598
604
|
constructor(e) {
|
|
599
605
|
n(this, "url");
|
|
600
606
|
this.url = e;
|
|
601
607
|
}
|
|
602
608
|
}
|
|
603
|
-
class
|
|
609
|
+
class ne extends x {
|
|
604
610
|
constructor(t, r) {
|
|
605
611
|
super();
|
|
606
612
|
n(this, "contentType");
|
|
@@ -608,102 +614,102 @@ class te extends P {
|
|
|
608
614
|
this.contentType = t, this.body = r;
|
|
609
615
|
}
|
|
610
616
|
}
|
|
611
|
-
const
|
|
612
|
-
const t = new
|
|
613
|
-
originator:
|
|
617
|
+
const w = "remote", re = (i, e) => {
|
|
618
|
+
const t = new R(e), r = {
|
|
619
|
+
originator: w,
|
|
614
620
|
request: t,
|
|
615
|
-
info: new
|
|
621
|
+
info: new ne("", "")
|
|
616
622
|
};
|
|
617
623
|
i.newInfo(r);
|
|
618
|
-
},
|
|
619
|
-
const r = { request: new
|
|
624
|
+
}, ie = (i, e) => {
|
|
625
|
+
const r = { request: new R(e) };
|
|
620
626
|
i.newSipEvent(r);
|
|
621
|
-
},
|
|
627
|
+
}, oe = (i, {
|
|
622
628
|
incomingNumber: e = "1234",
|
|
623
629
|
displayName: t,
|
|
624
630
|
host: r
|
|
625
631
|
}) => {
|
|
626
|
-
const o = new
|
|
627
|
-
o._remote_identity = new
|
|
628
|
-
},
|
|
632
|
+
const o = new C({ originator: w }), a = new P("sip", e, r);
|
|
633
|
+
o._remote_identity = new W(a, t), i.trigger("newRTCSession", { originator: w, session: o });
|
|
634
|
+
}, se = (i, e) => {
|
|
629
635
|
e ? i.trigger("failed", e) : i.trigger("failed", i);
|
|
630
|
-
},
|
|
631
|
-
triggerNewInfo:
|
|
632
|
-
triggerNewSipEvent:
|
|
633
|
-
triggerIncomingSession:
|
|
634
|
-
triggerFailIncomingSession:
|
|
635
|
-
WebSocketInterface:
|
|
636
|
-
UA:
|
|
636
|
+
}, b = {
|
|
637
|
+
triggerNewInfo: re,
|
|
638
|
+
triggerNewSipEvent: ie,
|
|
639
|
+
triggerIncomingSession: oe,
|
|
640
|
+
triggerFailIncomingSession: se,
|
|
641
|
+
WebSocketInterface: te,
|
|
642
|
+
UA: _,
|
|
637
643
|
C: {
|
|
638
644
|
INVITE: "INVITE"
|
|
639
645
|
}
|
|
640
|
-
},
|
|
646
|
+
}, v = "user", u = "displayName", M = "SIP_SERVER_URL", I = "SIP_WEB_SOCKET_SERVER_URL", ae = new b.WebSocketInterface(I), T = {
|
|
641
647
|
userAgent: "Chrome",
|
|
642
|
-
sipServerUrl:
|
|
643
|
-
sipWebSocketServerURL:
|
|
644
|
-
},
|
|
645
|
-
...
|
|
646
|
-
},
|
|
647
|
-
...
|
|
648
|
-
user:
|
|
648
|
+
sipServerUrl: M,
|
|
649
|
+
sipWebSocketServerURL: I
|
|
650
|
+
}, Ee = {
|
|
651
|
+
...T
|
|
652
|
+
}, de = {
|
|
653
|
+
...T,
|
|
654
|
+
user: v,
|
|
649
655
|
password: d,
|
|
650
656
|
register: !0
|
|
651
|
-
},
|
|
652
|
-
...
|
|
653
|
-
displayName:
|
|
654
|
-
},
|
|
655
|
-
...
|
|
656
|
-
displayName:
|
|
657
|
+
}, fe = {
|
|
658
|
+
...de,
|
|
659
|
+
displayName: u
|
|
660
|
+
}, ve = {
|
|
661
|
+
...T,
|
|
662
|
+
displayName: u,
|
|
657
663
|
register: !1
|
|
658
|
-
},
|
|
664
|
+
}, g = {
|
|
659
665
|
session_timers: !1,
|
|
660
|
-
sockets: [
|
|
666
|
+
sockets: [ae],
|
|
661
667
|
user_agent: "Chrome",
|
|
662
668
|
sdp_semantics: "plan-b",
|
|
663
669
|
register_expires: 300,
|
|
664
670
|
connection_recovery_max_interval: 6,
|
|
665
671
|
connection_recovery_min_interval: 2
|
|
666
|
-
},
|
|
667
|
-
...
|
|
672
|
+
}, Me = {
|
|
673
|
+
...g,
|
|
668
674
|
password: d,
|
|
669
|
-
uri:
|
|
675
|
+
uri: new f("sip", v, M),
|
|
670
676
|
display_name: "",
|
|
671
677
|
register: !0
|
|
672
|
-
},
|
|
673
|
-
...
|
|
678
|
+
}, Te = {
|
|
679
|
+
...g,
|
|
674
680
|
password: d,
|
|
675
|
-
uri:
|
|
676
|
-
display_name:
|
|
681
|
+
uri: new f("sip", v, M),
|
|
682
|
+
display_name: u,
|
|
677
683
|
register: !0
|
|
678
|
-
},
|
|
679
|
-
...
|
|
680
|
-
display_name:
|
|
684
|
+
}, ye = {
|
|
685
|
+
...g,
|
|
686
|
+
display_name: u,
|
|
681
687
|
register: !1
|
|
682
|
-
},
|
|
683
|
-
...
|
|
688
|
+
}, Re = {
|
|
689
|
+
...g,
|
|
684
690
|
display_name: "",
|
|
685
691
|
register: !1
|
|
686
|
-
},
|
|
687
|
-
JsSIP:
|
|
692
|
+
}, he = "10.10.10.10", Se = [`X-Vinteo-Remote: ${he}`], Ce = () => new D({
|
|
693
|
+
JsSIP: b
|
|
688
694
|
});
|
|
689
695
|
export {
|
|
690
|
-
|
|
691
|
-
|
|
696
|
+
X as FAILED_CONFERENCE_NUMBER,
|
|
697
|
+
ee as NAME_INCORRECT,
|
|
692
698
|
d as PASSWORD_CORRECT,
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
699
|
+
y as PASSWORD_CORRECT_2,
|
|
700
|
+
M as SIP_SERVER_URL,
|
|
701
|
+
I as SIP_WEB_SOCKET_SERVER_URL,
|
|
702
|
+
de as dataForConnectionWithAuthorization,
|
|
703
|
+
fe as dataForConnectionWithAuthorizationWithDisplayName,
|
|
704
|
+
ve as dataForConnectionWithoutAuthorization,
|
|
705
|
+
Ee as dataForConnectionWithoutAuthorizationWithoutDisplayName,
|
|
706
|
+
Ce as default,
|
|
707
|
+
u as displayName,
|
|
708
|
+
Se as extraHeadersRemoteAddress,
|
|
709
|
+
he as remoteAddress,
|
|
710
|
+
Me as uaConfigurationWithAuthorization,
|
|
711
|
+
Te as uaConfigurationWithAuthorizationWithDisplayName,
|
|
712
|
+
ye as uaConfigurationWithoutAuthorization,
|
|
713
|
+
Re as uaConfigurationWithoutAuthorizationWithoutDisplayName,
|
|
714
|
+
v as user
|
|
709
715
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-eRr2JbY9.cjs"),q=require("ts-debounce"),Y=require("@krivega/cancelable-promise"),z=require("debug"),x="purgatory",P=e=>e===x,B=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),J=({kind:e,readyState:n})=>e==="video"&&n==="live",V=e=>({track:n})=>{J(n)&&e()},D=({getRemoteStreams:e,setRemoteStreams:n})=>q.debounce(()=>{const t=e();s.logger("remoteStreams",t),t&&n(t)},200),Q=e=>async t=>{const{mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:C,onEnterPurgatory:f,onEnterConference:m,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:M}=t,R=D({setRemoteStreams:u,getRemoteStreams:B(e)}),T=V(R);s.logger("answerIncomingCall",t);const O=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:T}),A=()=>{const{remoteCallerData:S}=e;return S.incomingNumber};let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",m),f??m?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?f&&f():m&&m({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,R(),C&&C({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),M&&M()}),S),b=S=>{throw s.logger("onFail"),y&&y(),l(),S},N=()=>{s.logger("onFinish"),E&&E()};if(s.logger("onBeforeProgressCall"),d){const S=A();d(S)}return O().then(h).catch(b).finally(N)},Z=e=>async t=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,setRemoteStreams:d,onBeforeProgressCall:C,onSuccessProgressCall:f,onEnterPurgatory:m,onEnterConference:y,onFailProgressCall:E,onFinishProgressCall:M,onEndedCall:R}=t,T=D({setRemoteStreams:d,getRemoteStreams:B(e)}),O=V(T);s.logger("callToServer",t);const A=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,number:r,ontrack:O}));let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",y),m??y?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?m&&m():y&&y({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,T(),f&&f({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),R&&R()}),S),b=S=>{throw s.logger("onFail"),E&&E(),l(),S},N=()=>{s.logger("onFinish"),M&&M()};return s.logger("onBeforeProgressCall"),C&&C(r),A().then(h).catch(b).finally(N)},p=e=>{if(!Y.isCanceledError(e))throw e;return{isSuccessful:!1}},ee=e=>async t=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,name:d,password:C,isRegisteredUser:f,sdpSemantics:m,isDisconnectOnFail:y}=t;return s.logger("connectToServer",t),e.connect({userAgent:r,sdpSemantics:m,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,password:C,user:d,register:f}).then(E=>(s.logger("connectToServer then"),{ua:E,isSuccessful:!0})).catch(async E=>(s.logger("connectToServer catch: error",E),y===!0?e.disconnect().then(()=>p(E)).catch(()=>p(E)):p(E)))},ne=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),!1)).catch(n=>(s.logger("disconnectFromServer: catch",n),!1))),k=e=>{const{url:n,cause:t}=e;let r=n;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var $=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))($||{});const te=(e=new Error)=>{var o;const{cause:n,socket:t}=e;let r="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t&&((o=t==null?void 0:t._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":k(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},re=(e=new Error)=>{const{code:n,cause:t,message:r}=e,o=k(e),c={};return r&&(c.message=r),o&&(c.link=o),n&&(c.code=n),t&&(c.cause=t),c},se=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:k,getTypeFromError:te,getValuesFromError:re},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],u=t?"0":"1",d=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${u}`,`X-Vinteo-MainCam-State: ${d}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),n&&a.push(`X-Vinteo-Remote: ${n}`),a},ce=({appName:e,appVersion:n,browserName:t,browserVersion:r})=>{const o=`${e} ${n}`;return`ChromeNew - ${t?`${t} ${r}, ${o}`:o}`},ae=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:r,appName:o})=>e?ce({appVersion:n,browserName:t,browserVersion:r,appName:o}):"Chrome",ie=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},ue=e=>t=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",t)),le=e=>t=>(s.logger("onUseLicense"),e.onSession("useLicense",t)),ge=e=>async({isEnabledCam:t,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:t,mic:r})},Se=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(t=>{s.logger("sendRefusalToTurnOnCam: error",t)})},de=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(t=>{s.logger("sendRefusalToTurnOnMic: error",t)})},me=1e6,fe=({maxBitrate:e=me,sipConnector:n})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("startPresentation"),n.startPresentation(r,{isP2P:o,maxBitrate:e})),Ee=({sipConnector:e})=>async({isP2P:t=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:t}).catch(s.logger)),Ce=1e6,Re=({sipConnector:e,maxBitrate:n=Ce})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("updatePresentation"),e.updatePresentation(r,{isP2P:o,maxBitrate:n})),he="ERROR_NOT_RUNNING",Me=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=he,n.name="Not running",n},ye=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(Me(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Te=e=>n=>[...n].map(r=>async()=>e(r)),_e=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const o=Te(n)(e);return ye(o,t)},be=e=>t=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",t)),ve=e=>t=>(s.logger("onStartMic"),e.onSession("admin-start-mic",t)),Ne=e=>t=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",t)),Oe=e=>t=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",t)),Ae=({sipConnector:e})=>{const n=(M,R)=>({isSyncForced:T=!1})=>{if(T){M();return}R()},t=be(e),r=Ne(e),o=ve(e),c=Oe(e);let a=()=>{},u=()=>{},d=()=>{},C=()=>{};const f=({onStartMainCamForced:M,onStartMainCamNotForced:R,onStopMainCamForced:T,onStopMainCamNotForced:O,onStartMicForced:A,onStartMicNotForced:_,onStopMicForced:i,onStopMicNotForced:g})=>{const l=n(M,R);a=t(l);const h=n(T,O);u=r(h);const b=n(A,_);d=o(b);const N=n(i,g);C=c(N)},m=()=>{a(),u(),d(),C()};return{start:M=>{f(M)},stop:()=>{m()}}},Pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:x,createSyncMediaState:Ae,error:se,getExtraHeaders:oe,getUserAgent:ae,hasPurgatory:P,resolveAnswerIncomingCall:Q,resolveAskPermissionToEnableCam:ie,resolveCallToServer:Z,resolveConnectToServer:ee,resolveDisconnectFromServer:ne,resolveGetRemoteStreams:B,resolveOnMustStopPresentation:ue,resolveOnUseLicense:le,resolveSendMediaState:ge,resolveSendRefusalToTurnOnCam:Se,resolveSendRefusalToTurnOnMic:de,resolveStartPresentation:fe,resolveStopShareSipConnector:Ee,resolveUpdatePresentation:Re,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:_e},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(n=>e.get(n)),Ie=(e,n)=>pe(e).find(t=>t.type===n),j=async e=>e.getStats().then(n=>{const t=Ie(n,"codec");return t==null?void 0:t.mimeType}),we=e=>e.find(n=>{var t;return((t=n==null?void 0:n.track)==null?void 0:t.kind)==="video"}),G=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Be="ERROR_NOT_RUNNING",De=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=Be,n.name="Not running",n},ke=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(De(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Fe=new Error("Stack is empty"),I=e=>e[e.length-1],Ue=new Error("Promise is not actual"),Le=new Error("stackPromises only works with functions that returns a Promise"),xe=({noRejectIsNotActual:e=!1,noRunIsNotActual:n=!1}={})=>{const t=[],r=[],o=({task:i,index:g})=>{r.push({task:i,index:g})},c=(i,{task:g,index:l})=>{const h=r.find(({task:b,index:N})=>g===b&&l===N);if(!h)throw new Error("Task not found");if(h.promise)throw new Error("Task is already running");h.promise=i},a=({task:i,index:g})=>{const l=r.find(({task:h,index:b})=>i===h&&g===b);if(l)return l.promise},u=({task:i})=>{const g=I(r);return(g==null?void 0:g.task)===i},d=({task:i,index:g})=>(o({task:i,index:g}),async()=>{let l=a({task:i,index:g});const h=u({task:i});return!l&&n&&!h?Promise.resolve():(l||(l=i({isActual:h}),c(l,{task:i,index:g})),l)}),C=({resolve:i,reject:g})=>({results:l,isSuccessful:h})=>{const b=l.length,N=t.length;if(b===N){const S=I(l);if(h){i(S);return}g(S);return}if(e){const S=I(l);i(S);return}g(Ue)};let f=!1;const m=()=>{f=!0},y=()=>{f=!1},E=()=>f,M=async()=>(m(),ke(t,E)),R=async()=>{if(t.length===0)throw Fe;return new Promise((i,g)=>{const l=C({resolve:i,reject:g});M().then(l).catch(l)})},T=i=>{if(typeof i!="function")throw Le;const g=t.length;return t.push(d({task:i,index:g})),R},O=async i=>(T(i),R()),A=()=>{t.length=0,r.length=0},_=()=>{y(),A()};return R.add=T,R.run=O,R.stop=_,R},Ve=1e6,v=e=>e*Ve,X=v(.06),$e=v(4),je=e=>e<=64?X:e<=128?v(.12):e<=256?v(.25):e<=384?v(.32):e<=426?v(.38):e<=640?v(.5):e<=848?v(.7):e<=1280?v(1):e<=1920?v(2):$e,Ge="av1",Xe=e=>G(e,Ge),Ke=.6,K=(e,n)=>Xe(n)?e*Ke:e,We=e=>K(X,e),W=(e,n)=>{const t=je(e);return K(t,n)},H=xe(),He=async()=>H().catch(e=>{s.logger("videoSendingBalancer: error",e)}),qe=async e=>(H.add(e),He()),F=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:r})=>qe(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:n,maxBitrate:t},r)),Ye=async({sender:e,codec:n},t)=>{const o=We(n);return F({sender:e,maxBitrate:o,onSetParameters:t,scaleResolutionDownBy:200})},w=async({sender:e,track:n,codec:t},r)=>{const a=n.getSettings().width,u=W(a,t);return F({sender:e,maxBitrate:u,onSetParameters:r,scaleResolutionDownBy:1})},ze=async({sender:e,track:n,resolution:t,codec:r},o)=>{const c=n.getSettings(),a=c.width,u=c.height,[d,C]=t.split("x"),f=a/Number(d),m=u/Number(C),E=Math.max(f,m,1),M=W(Number(d),r);return F({sender:e,maxBitrate:M,onSetParameters:o,scaleResolutionDownBy:E})},Je=async({mainCam:e,resolutionMainCam:n,sender:t,track:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return Ye({sender:t,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return w({sender:t,track:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?ze({sender:t,track:r,codec:o,resolution:n},c):w({sender:t,track:r,codec:o},c);default:return w({sender:t,track:r,codec:o},c)}},U={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},L=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:r,ignoreForCodec:o})=>{const c=t.getSenders(),a=we(c);if(!(a!=null&&a.track))return U;const u=await j(a);return G(u,o)?U:Je({mainCam:e,resolutionMainCam:n,sender:a,codec:u,track:a.track},r)},Qe=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const r=async()=>{const{connection:d}=e;if(!d)throw new Error("connection is not exist");return L({connection:d,onSetParameters:t,ignoreForCodec:n})};let o=r;const c=async d=>(o=async()=>{const{mainCam:C,resolutionMainCam:f}=d,{connection:m}=e;if(!m)throw new Error("connection is not exist");return L({mainCam:C,resolutionMainCam:f,connection:m,onSetParameters:t,ignoreForCodec:n})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.debug=z;exports.getCodecFromSender=j;exports.resolveVideoSendingBalancer=Qe;exports.tools=Pe;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("./SipConnector-eRr2JbY9.cjs"),q=require("ts-debounce"),Y=require("@krivega/cancelable-promise"),z=require("debug"),x="purgatory",P=e=>e===x,B=e=>()=>(s.logger("getRemoteStreams"),e.getRemoteStreams()),J=({kind:e,readyState:n})=>e==="video"&&n==="live",V=e=>({track:n})=>{J(n)&&e()},D=({getRemoteStreams:e,setRemoteStreams:n})=>q.debounce(()=>{const t=e();s.logger("remoteStreams",t),t&&n(t)},200),Q=e=>async t=>{const{mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,setRemoteStreams:u,onBeforeProgressCall:d,onSuccessProgressCall:C,onEnterPurgatory:f,onEnterConference:m,onFailProgressCall:y,onFinishProgressCall:E,onEndedCall:M}=t,R=D({setRemoteStreams:u,getRemoteStreams:B(e)}),T=V(R);s.logger("answerIncomingCall",t);const O=async()=>e.answerToIncomingCall({mediaStream:r,extraHeaders:o,iceServers:c,degradationPreference:a,ontrack:T}),A=()=>{const{remoteCallerData:S}=e;return S.incomingNumber};let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",m),f??m?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?f&&f():m&&m({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,R(),C&&C({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),M&&M()}),S),b=S=>{throw s.logger("onFail"),y&&y(),l(),S},N=()=>{s.logger("onFinish"),E&&E()};if(s.logger("onBeforeProgressCall"),d){const S=A();d(S)}return O().then(h).catch(b).finally(N)},Z=e=>async t=>{const{conference:r,mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,setRemoteStreams:d,onBeforeProgressCall:C,onSuccessProgressCall:f,onEnterPurgatory:m,onEnterConference:y,onFailProgressCall:E,onFinishProgressCall:M,onEndedCall:R}=t,T=D({setRemoteStreams:d,getRemoteStreams:B(e)}),O=V(T);s.logger("callToServer",t);const A=async()=>(s.logger("startCall"),e.call({mediaStream:o,extraHeaders:c,iceServers:a,degradationPreference:u,number:r,ontrack:O}));let _=!1,i;const l=(s.logger("subscribeEnterConference: onEnterConference",y),m??y?e.onSession("enterRoom",S=>{s.logger("enterRoom",{_room:S,isSuccessProgressCall:_}),i=S,P(i)?m&&m():y&&y({isSuccessProgressCall:_})}):()=>{}),h=S=>(s.logger("onSuccess"),_=!0,T(),f&&f({isPurgatory:P(i)}),e.onceRaceSession(["ended","failed"],()=>{l(),R&&R()}),S),b=S=>{throw s.logger("onFail"),E&&E(),l(),S},N=()=>{s.logger("onFinish"),M&&M()};return s.logger("onBeforeProgressCall"),C&&C(r),A().then(h).catch(b).finally(N)},p=e=>{if(!Y.isCanceledError(e))throw e;return{isSuccessful:!1}},ee=e=>async t=>{const{userAgent:r,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,name:d,password:C,isRegisteredUser:f,sdpSemantics:m,isDisconnectOnFail:y}=t;return s.logger("connectToServer",t),e.connect({userAgent:r,sdpSemantics:m,sipWebSocketServerURL:o,sipServerUrl:c,remoteAddress:a,displayName:u,password:C,user:d,register:f}).then(E=>(s.logger("connectToServer then"),{ua:E,isSuccessful:!0})).catch(async E=>(s.logger("connectToServer catch: error",E),y===!0?e.disconnect().then(()=>p(E)).catch(()=>p(E)):p(E)))},ne=e=>async()=>(s.logger("disconnectFromServer"),e.disconnect().then(()=>(s.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(s.logger("disconnectFromServer: catch",n),{isSuccessful:!1}))),k=e=>{const{url:n,cause:t}=e;let r=n;return(t===s.BAD_MEDIA_DESCRIPTION||t===s.NOT_FOUND)&&(r=`${e.message.to.uri.user}@${e.message.to.uri.host}`),r};var $=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))($||{});const te=(e=new Error)=>{var o;const{cause:n,socket:t}=e;let r="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{r="WRONG_USER_OR_PASSWORD";break}case s.BAD_MEDIA_DESCRIPTION:{r="BAD_MEDIA_ERROR";break}case s.NOT_FOUND:{r="NOT_FOUND_ERROR";break}default:t&&((o=t==null?void 0:t._ws)==null?void 0:o.readyState)===3?r="WS_CONNECTION_FAILED":k(e)&&(r="CONNECT_SERVER_FAILED_BY_LINK")}return r},re=(e=new Error)=>{const{code:n,cause:t,message:r}=e,o=k(e),c={};return r&&(c.message=r),o&&(c.link=o),n&&(c.code=n),t&&(c.cause=t),c},se=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:$,getLinkError:k,getTypeFromError:te,getValuesFromError:re},Symbol.toStringTag,{value:"Module"})),oe=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:r,isRegistered:o,isPresentationCall:c})=>{const a=[],u=t?"0":"1",d=r?"0":"1";return a.push(`X-Vinteo-Mic-State: ${u}`,`X-Vinteo-MainCam-State: ${d}`),o||a.push("X-Vinteo-Purgatory-Call: yes"),e&&a.push(`X-Vinteo-Session: ${e}`),c&&a.push("X-Vinteo-Presentation-Call: yes"),n&&a.push(`X-Vinteo-Remote: ${n}`),a},ce=({appName:e,appVersion:n,browserName:t,browserVersion:r})=>{const o=`${e} ${n}`;return`ChromeNew - ${t?`${t} ${r}, ${o}`:o}`},ae=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:r,appName:o})=>e?ce({appVersion:n,browserName:t,browserVersion:r,appName:o}):"Chrome",ie=e=>async()=>{if(e.isCallActive)return s.logger("askPermissionToEnableCam"),e.askPermissionToEnableCam()},ue=e=>t=>(s.logger("onMustStopPresentation"),e.onSession("mustStopPresentation",t)),le=e=>t=>(s.logger("onUseLicense"),e.onSession("useLicense",t)),ge=e=>async({isEnabledCam:t,isEnabledMic:r})=>{if(e.isCallActive)return s.logger("sendMediaState"),e.sendMediaState({cam:t,mic:r})},Se=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnCam"),e.sendRefusalToTurnOnCam().catch(t=>{s.logger("sendRefusalToTurnOnCam: error",t)})},de=e=>async()=>{if(e.isCallActive)return s.logger("sendRefusalToTurnOnMic"),e.sendRefusalToTurnOnMic().catch(t=>{s.logger("sendRefusalToTurnOnMic: error",t)})},me=1e6,fe=({maxBitrate:e=me,sipConnector:n})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("startPresentation"),n.startPresentation(r,{isP2P:o,maxBitrate:e})),Ee=({sipConnector:e})=>async({isP2P:t=!1}={})=>(s.logger("stopShareSipConnector"),e.stopPresentation({isP2P:t}).catch(s.logger)),Ce=1e6,Re=({sipConnector:e,maxBitrate:n=Ce})=>async({mediaStream:r,isP2P:o=!1})=>(s.logger("updatePresentation"),e.updatePresentation(r,{isP2P:o,maxBitrate:n})),he="ERROR_NOT_RUNNING",Me=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=he,n.name="Not running",n},ye=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(Me(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Te=e=>n=>[...n].map(r=>async()=>e(r)),_e=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const o=Te(n)(e);return ye(o,t)},be=e=>t=>(s.logger("onStartMainCam"),e.onSession("admin-start-main-cam",t)),ve=e=>t=>(s.logger("onStartMic"),e.onSession("admin-start-mic",t)),Ne=e=>t=>(s.logger("onStopMainCam"),e.onSession("admin-stop-main-cam",t)),Oe=e=>t=>(s.logger("onStopMic"),e.onSession("admin-stop-mic",t)),Ae=({sipConnector:e})=>{const n=(M,R)=>({isSyncForced:T=!1})=>{if(T){M();return}R()},t=be(e),r=Ne(e),o=ve(e),c=Oe(e);let a=()=>{},u=()=>{},d=()=>{},C=()=>{};const f=({onStartMainCamForced:M,onStartMainCamNotForced:R,onStopMainCamForced:T,onStopMainCamNotForced:O,onStartMicForced:A,onStartMicNotForced:_,onStopMicForced:i,onStopMicNotForced:g})=>{const l=n(M,R);a=t(l);const h=n(T,O);u=r(h);const b=n(A,_);d=o(b);const N=n(i,g);C=c(N)},m=()=>{a(),u(),d(),C()};return{start:M=>{f(M)},stop:()=>{m()}}},Pe=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:x,createSyncMediaState:Ae,error:se,getExtraHeaders:oe,getUserAgent:ae,hasPurgatory:P,resolveAnswerIncomingCall:Q,resolveAskPermissionToEnableCam:ie,resolveCallToServer:Z,resolveConnectToServer:ee,resolveDisconnectFromServer:ne,resolveGetRemoteStreams:B,resolveOnMustStopPresentation:ue,resolveOnUseLicense:le,resolveSendMediaState:ge,resolveSendRefusalToTurnOnCam:Se,resolveSendRefusalToTurnOnMic:de,resolveStartPresentation:fe,resolveStopShareSipConnector:Ee,resolveUpdatePresentation:Re,resolveUpdateRemoteStreams:D,sendDTMFAccumulated:_e},Symbol.toStringTag,{value:"Module"})),pe=e=>[...e.keys()].map(n=>e.get(n)),Ie=(e,n)=>pe(e).find(t=>t.type===n),j=async e=>e.getStats().then(n=>{const t=Ie(n,"codec");return t==null?void 0:t.mimeType}),we=e=>e.find(n=>{var t;return((t=n==null?void 0:n.track)==null?void 0:t.kind)==="video"}),G=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Be="ERROR_NOT_RUNNING",De=e=>{const n=new Error("Promise was not running");return n.basePromise=e,n.id=Be,n.name="Not running",n},ke=async(e,n)=>e.reduce(async(t,r)=>t.then(async({success:o,errors:c,results:a})=>(!n||n(r)?r():Promise.reject(De(r))).then(u=>({errors:c,success:[...o,u],results:[...a,u],isSuccessful:!0,isError:!1})).catch(u=>({success:o,errors:[...c,u],results:[...a,u],isSuccessful:!1,isError:!0}))),Promise.resolve({success:[],errors:[],results:[],isSuccessful:!1,isError:!1})),Fe=new Error("Stack is empty"),I=e=>e[e.length-1],Ue=new Error("Promise is not actual"),Le=new Error("stackPromises only works with functions that returns a Promise"),xe=({noRejectIsNotActual:e=!1,noRunIsNotActual:n=!1}={})=>{const t=[],r=[],o=({task:i,index:g})=>{r.push({task:i,index:g})},c=(i,{task:g,index:l})=>{const h=r.find(({task:b,index:N})=>g===b&&l===N);if(!h)throw new Error("Task not found");if(h.promise)throw new Error("Task is already running");h.promise=i},a=({task:i,index:g})=>{const l=r.find(({task:h,index:b})=>i===h&&g===b);if(l)return l.promise},u=({task:i})=>{const g=I(r);return(g==null?void 0:g.task)===i},d=({task:i,index:g})=>(o({task:i,index:g}),async()=>{let l=a({task:i,index:g});const h=u({task:i});return!l&&n&&!h?Promise.resolve():(l||(l=i({isActual:h}),c(l,{task:i,index:g})),l)}),C=({resolve:i,reject:g})=>({results:l,isSuccessful:h})=>{const b=l.length,N=t.length;if(b===N){const S=I(l);if(h){i(S);return}g(S);return}if(e){const S=I(l);i(S);return}g(Ue)};let f=!1;const m=()=>{f=!0},y=()=>{f=!1},E=()=>f,M=async()=>(m(),ke(t,E)),R=async()=>{if(t.length===0)throw Fe;return new Promise((i,g)=>{const l=C({resolve:i,reject:g});M().then(l).catch(l)})},T=i=>{if(typeof i!="function")throw Le;const g=t.length;return t.push(d({task:i,index:g})),R},O=async i=>(T(i),R()),A=()=>{t.length=0,r.length=0},_=()=>{y(),A()};return R.add=T,R.run=O,R.stop=_,R},Ve=1e6,v=e=>e*Ve,X=v(.06),$e=v(4),je=e=>e<=64?X:e<=128?v(.12):e<=256?v(.25):e<=384?v(.32):e<=426?v(.38):e<=640?v(.5):e<=848?v(.7):e<=1280?v(1):e<=1920?v(2):$e,Ge="av1",Xe=e=>G(e,Ge),Ke=.6,K=(e,n)=>Xe(n)?e*Ke:e,We=e=>K(X,e),W=(e,n)=>{const t=je(e);return K(t,n)},H=xe(),He=async()=>H().catch(e=>{s.logger("videoSendingBalancer: error",e)}),qe=async e=>(H.add(e),He()),F=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:r})=>qe(async()=>s.setEncodingsToSender(e,{scaleResolutionDownBy:n,maxBitrate:t},r)),Ye=async({sender:e,codec:n},t)=>{const o=We(n);return F({sender:e,maxBitrate:o,onSetParameters:t,scaleResolutionDownBy:200})},w=async({sender:e,track:n,codec:t},r)=>{const a=n.getSettings().width,u=W(a,t);return F({sender:e,maxBitrate:u,onSetParameters:r,scaleResolutionDownBy:1})},ze=async({sender:e,track:n,resolution:t,codec:r},o)=>{const c=n.getSettings(),a=c.width,u=c.height,[d,C]=t.split("x"),f=a/Number(d),m=u/Number(C),E=Math.max(f,m,1),M=W(Number(d),r);return F({sender:e,maxBitrate:M,onSetParameters:o,scaleResolutionDownBy:E})},Je=async({mainCam:e,resolutionMainCam:n,sender:t,track:r,codec:o},c)=>{switch(e){case s.EEventsMainCAM.PAUSE_MAIN_CAM:return Ye({sender:t,codec:o},c);case s.EEventsMainCAM.RESUME_MAIN_CAM:return w({sender:t,track:r,codec:o},c);case s.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?ze({sender:t,track:r,codec:o,resolution:n},c):w({sender:t,track:r,codec:o},c);default:return w({sender:t,track:r,codec:o},c)}},U={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},L=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:r,ignoreForCodec:o})=>{const c=t.getSenders(),a=we(c);if(!(a!=null&&a.track))return U;const u=await j(a);return G(u,o)?U:Je({mainCam:e,resolutionMainCam:n,sender:a,codec:u,track:a.track},r)},Qe=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const r=async()=>{const{connection:d}=e;if(!d)throw new Error("connection is not exist");return L({connection:d,onSetParameters:t,ignoreForCodec:n})};let o=r;const c=async d=>(o=async()=>{const{mainCam:C,resolutionMainCam:f}=d,{connection:m}=e;if(!m)throw new Error("connection is not exist");return L({mainCam:C,resolutionMainCam:f,connection:m,onSetParameters:t,ignoreForCodec:n})},o());return{subscribe:()=>{e.onSession("main-cam-control",c)},unsubscribe:()=>{e.offSession("main-cam-control",c)},balanceByTrack:r,resetMainCamControl(){o=r},async reBalance(){return o()}}};exports.EEventsMainCAM=s.EEventsMainCAM;exports.EEventsMic=s.EEventsMic;exports.EEventsSyncMediaState=s.EEventsSyncMediaState;exports.EUseLicense=s.EUseLicense;exports.causes=s.causes;exports.constants=s.constants;exports.default=s.SipConnector;exports.disableDebug=s.disableDebug;exports.enableDebug=s.enableDebug;exports.eventNames=s.eventNames;exports.hasCanceledCallError=s.hasCanceledCallError;exports.debug=z;exports.getCodecFromSender=j;exports.resolveVideoSendingBalancer=Qe;exports.tools=Pe;
|
package/dist/index.js
CHANGED
|
@@ -124,7 +124,7 @@ const G = "purgatory", A = (e) => e === G, k = (e) => () => (c("getRemoteStreams
|
|
|
124
124
|
user: m,
|
|
125
125
|
register: C
|
|
126
126
|
}).then((E) => (c("connectToServer then"), { ua: E, isSuccessful: !0 })).catch(async (E) => (c("connectToServer catch: error", E), T === !0 ? e.disconnect().then(() => w(E)).catch(() => w(E)) : w(E)));
|
|
127
|
-
}, se = (e) => async () => (c("disconnectFromServer"), e.disconnect().then(() => (c("disconnectFromServer: then"), !
|
|
127
|
+
}, se = (e) => async () => (c("disconnectFromServer"), e.disconnect().then(() => (c("disconnectFromServer: then"), { isSuccessful: !0 })).catch((n) => (c("disconnectFromServer: catch", n), { isSuccessful: !1 }))), F = (e) => {
|
|
128
128
|
const { url: n, cause: t } = e;
|
|
129
129
|
let s = n;
|
|
130
130
|
return (t === V || t === $) && (s = `${e.message.to.uri.user}@${e.message.to.uri.host}`), s;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { URI } from '@krivega/jssip';
|
|
1
2
|
export declare const LOCKED_SIP_WEB_SOCKET_SERVER_URL = "LOCKED_SIP_WEB_SOCKET_SERVER_URL";
|
|
2
3
|
export declare const dataForConnectionWithAuthorization: {
|
|
3
4
|
password: string;
|
|
@@ -98,7 +99,7 @@ export declare const dataForConnectionWithAuthorizationPasswordChanged: {
|
|
|
98
99
|
};
|
|
99
100
|
export declare const uaConfigurationWithAuthorization: {
|
|
100
101
|
password: string;
|
|
101
|
-
uri:
|
|
102
|
+
uri: URI;
|
|
102
103
|
display_name: string;
|
|
103
104
|
register: boolean;
|
|
104
105
|
session_timers: boolean;
|
|
@@ -111,7 +112,7 @@ export declare const uaConfigurationWithAuthorization: {
|
|
|
111
112
|
};
|
|
112
113
|
export declare const uaConfigurationWithAuthorizationPasswordChanged: {
|
|
113
114
|
password: string;
|
|
114
|
-
uri:
|
|
115
|
+
uri: URI;
|
|
115
116
|
display_name: string;
|
|
116
117
|
register: boolean;
|
|
117
118
|
session_timers: boolean;
|
|
@@ -125,5 +126,5 @@ export declare const uaConfigurationWithAuthorizationPasswordChanged: {
|
|
|
125
126
|
export declare const oneWord = "a";
|
|
126
127
|
export declare const twoWord = "ab";
|
|
127
128
|
export declare const thirdWord = "abc";
|
|
128
|
-
export declare const uriWithName: (name: string) =>
|
|
129
|
+
export declare const uriWithName: (name: string, url?: string) => URI;
|
|
129
130
|
export { uaConfigurationWithoutAuthorization, uaConfigurationWithoutAuthorizationWithoutDisplayName, } from '../../__fixtures__';
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @param {string} uri The uri for check
|
|
5
|
-
* @param {string} url The base url
|
|
6
|
-
* @returns {boolean} True if has valid uri, False otherwise.
|
|
7
|
-
*/
|
|
8
|
-
declare const hasValidUri: (uri: string, url?: string) => boolean;
|
|
1
|
+
import type { URI } from '@krivega/jssip';
|
|
2
|
+
declare const hasValidUri: ({ scheme, user, host }: URI, url?: string) => boolean;
|
|
9
3
|
export default hasValidUri;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type SipConnector from '../SipConnector';
|
|
2
|
-
declare const resolveDisconnectFromServer: (sipConnector: SipConnector) => () => Promise<
|
|
2
|
+
declare const resolveDisconnectFromServer: (sipConnector: SipConnector) => () => Promise<{
|
|
3
|
+
isSuccessful: boolean;
|
|
4
|
+
} | {
|
|
5
|
+
isSuccessful: boolean;
|
|
6
|
+
}>;
|
|
3
7
|
export default resolveDisconnectFromServer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sip-connector",
|
|
3
|
-
"version": "6.24.
|
|
3
|
+
"version": "6.24.1",
|
|
4
4
|
"description": "Module for connect to Vinteo server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"webrtc",
|
|
@@ -63,18 +63,18 @@
|
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@krivega/cancelable-promise": "^1.1.0",
|
|
66
|
-
"@krivega/jssip": "^3.23.
|
|
66
|
+
"@krivega/jssip": "^3.23.8",
|
|
67
67
|
"debug": "^4.3.4",
|
|
68
68
|
"events-constructor": "^1.2.2",
|
|
69
|
-
"sequent-promises": "^1.0.
|
|
69
|
+
"sequent-promises": "^1.0.2",
|
|
70
70
|
"stack-promises": "^1.0.2",
|
|
71
71
|
"ts-debounce": "^4.0.0",
|
|
72
72
|
"webrtc-mock": "^1.0.2"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@babel/preset-typescript": "^7.23.3",
|
|
76
|
-
"@commitlint/cli": "^
|
|
77
|
-
"@commitlint/config-conventional": "^
|
|
76
|
+
"@commitlint/cli": "^19.0.1",
|
|
77
|
+
"@commitlint/config-conventional": "^19.0.0",
|
|
78
78
|
"@nabla/vite-plugin-eslint": "^2.0.2",
|
|
79
79
|
"@types/debug": "^4.1.12",
|
|
80
80
|
"@types/jest": "^29.5.12",
|