@voicenter-team/opensips-js 1.0.10
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/README.md +75 -0
- package/build/enum/call.event.listener.type.d.ts +7 -0
- package/build/enum/call.event.listener.type.js +10 -0
- package/build/enum/metric.keys.to.include.d.ts +2 -0
- package/build/enum/metric.keys.to.include.js +4 -0
- package/build/helpers/UA/index.d.ts +6 -0
- package/build/helpers/UA/index.js +9 -0
- package/build/helpers/audio.helper.d.ts +9 -0
- package/build/helpers/audio.helper.js +60 -0
- package/build/helpers/filter.helper.d.ts +2 -0
- package/build/helpers/filter.helper.js +14 -0
- package/build/helpers/time.helper.d.ts +16 -0
- package/build/helpers/time.helper.js +28 -0
- package/build/helpers/volume.helper.d.ts +2 -0
- package/build/helpers/volume.helper.js +76 -0
- package/build/helpers/webrtcmetrics/collector.d.ts +32 -0
- package/build/helpers/webrtcmetrics/collector.js +282 -0
- package/build/helpers/webrtcmetrics/engine.d.ts +20 -0
- package/build/helpers/webrtcmetrics/engine.js +164 -0
- package/build/helpers/webrtcmetrics/exporter.d.ts +116 -0
- package/build/helpers/webrtcmetrics/exporter.js +528 -0
- package/build/helpers/webrtcmetrics/extractor.d.ts +1 -0
- package/build/helpers/webrtcmetrics/extractor.js +976 -0
- package/build/helpers/webrtcmetrics/index.d.ts +63 -0
- package/build/helpers/webrtcmetrics/index.js +93 -0
- package/build/helpers/webrtcmetrics/metrics.d.ts +2 -0
- package/build/helpers/webrtcmetrics/metrics.js +8 -0
- package/build/helpers/webrtcmetrics/probe.d.ts +76 -0
- package/build/helpers/webrtcmetrics/probe.js +153 -0
- package/build/helpers/webrtcmetrics/utils/config.d.ts +12 -0
- package/build/helpers/webrtcmetrics/utils/config.js +28 -0
- package/build/helpers/webrtcmetrics/utils/helper.d.ts +13 -0
- package/build/helpers/webrtcmetrics/utils/helper.js +134 -0
- package/build/helpers/webrtcmetrics/utils/log.d.ts +7 -0
- package/build/helpers/webrtcmetrics/utils/log.js +71 -0
- package/build/helpers/webrtcmetrics/utils/models.d.ts +309 -0
- package/build/helpers/webrtcmetrics/utils/models.js +298 -0
- package/build/helpers/webrtcmetrics/utils/score.d.ts +4 -0
- package/build/helpers/webrtcmetrics/utils/score.js +235 -0
- package/build/helpers/webrtcmetrics/utils/shortUUId.d.ts +1 -0
- package/build/helpers/webrtcmetrics/utils/shortUUId.js +7 -0
- package/build/index.d.ts +170 -0
- package/build/index.js +849 -0
- package/package.json +61 -0
- package/src/types/declarations.d.ts +6 -0
- package/src/types/generic.d.ts +1 -0
- package/src/types/listeners.d.ts +42 -0
- package/src/types/rtc.d.ts +133 -0
- package/src/types/webrtcmetrics.d.ts +64 -0
package/package.json
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
{
|
2
|
+
"name": "@voicenter-team/opensips-js",
|
3
|
+
"version": "1.0.10",
|
4
|
+
"description": "The JS package for opensips",
|
5
|
+
"default": "src/index.ts",
|
6
|
+
"main": "build/index.js",
|
7
|
+
"types": "build/index.d.ts",
|
8
|
+
"scripts": {
|
9
|
+
"build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json",
|
10
|
+
"dev": "vite",
|
11
|
+
"demo-build": "vite build",
|
12
|
+
"docs-build": "yarn run demo-build && cd docs && yarn && yarn run build",
|
13
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
14
|
+
"ts-check": "tsc --noEmit",
|
15
|
+
"lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts --fix --ignore-path .gitignore"
|
16
|
+
},
|
17
|
+
"engines": {
|
18
|
+
"node": ">= 16",
|
19
|
+
"npm": "please-use-yarn",
|
20
|
+
"yarn": ">= 1.22.4"
|
21
|
+
},
|
22
|
+
"precommit": "ts-check, lint",
|
23
|
+
"repository": {
|
24
|
+
"type": "git",
|
25
|
+
"url": "git+ssh://git@github.com/VoicenterTeam/opensips-js.git"
|
26
|
+
},
|
27
|
+
"author": "Bohdan Konechnyi",
|
28
|
+
"license": "ISC",
|
29
|
+
"bugs": {
|
30
|
+
"url": "https://github.com/VoicenterTeam/opensips-js/issues"
|
31
|
+
},
|
32
|
+
"homepage": "https://github.com/VoicenterTeam/opensips-js#readme",
|
33
|
+
"devDependencies": {
|
34
|
+
"@types/node": "^18.14.2",
|
35
|
+
"@typescript-eslint/eslint-plugin": "^5.53.0",
|
36
|
+
"@typescript-eslint/parser": "^5.53.0",
|
37
|
+
"@vitejs/plugin-vue": "^4.2.3",
|
38
|
+
"dotenv": "^16.0.3",
|
39
|
+
"eslint": "^8.35.0",
|
40
|
+
"pre-commit": "^1.2.2",
|
41
|
+
"process": "^0.11.10",
|
42
|
+
"regenerator-runtime": "^0.13.11",
|
43
|
+
"tsc-alias": "^1.8.6",
|
44
|
+
"typescript": "^4.9.5",
|
45
|
+
"vite": "^4.3.8",
|
46
|
+
"vite-plugin-singlefile": "^0.13.5",
|
47
|
+
"vue": "3.2.25"
|
48
|
+
},
|
49
|
+
"dependencies": {
|
50
|
+
"@types/mime": "^3.0.1",
|
51
|
+
"generate-unique-id": "^2.0.1",
|
52
|
+
"jssip": "^3.10.0",
|
53
|
+
"loglevel": "^1.8.1",
|
54
|
+
"mime": "^3.0.0",
|
55
|
+
"p-iteration": "^1.1.8"
|
56
|
+
},
|
57
|
+
"files": [
|
58
|
+
"build",
|
59
|
+
"src/types"
|
60
|
+
]
|
61
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export type Writeable<T> = { -readonly [P in keyof T]: T[P] }
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { ICall, RoomChangeEmitType } from '@/types/rtc'
|
2
|
+
import { UAEventMap } from 'jssip/lib/UA'
|
3
|
+
|
4
|
+
export type readyListener = (value: boolean) => void
|
5
|
+
export type changeActiveCallsListener = (event: { [key: string]: ICall }) => void
|
6
|
+
export type TestEventListener = (event: { test: string }) => void
|
7
|
+
export type ActiveRoomListener = (event: number | undefined) => void
|
8
|
+
export type CallAddingProgressListener = (callId: string | undefined) => void
|
9
|
+
export type RoomDeletedListener = (roomId: number) => void
|
10
|
+
export type changeActiveInputMediaDeviceListener = (event: string) => void
|
11
|
+
export type changeActiveOutputMediaDeviceListener = (event: string) => void
|
12
|
+
export type changeAvailableDeviceListListener = (event: Array<MediaDeviceInfo>) => void
|
13
|
+
export type changeMuteWhenJoinListener = (value: boolean) => void
|
14
|
+
export type changeIsDNDListener = (value: boolean) => void
|
15
|
+
export type changeIsMutedListener = (value: boolean) => void
|
16
|
+
export type changeOriginalStreamListener = (value: MediaStream) => void
|
17
|
+
export type addRoomListener = (value: RoomChangeEmitType) => void
|
18
|
+
export type updateRoomListener = (value: RoomChangeEmitType) => void
|
19
|
+
export type removeRoomListener = (value: RoomChangeEmitType) => void
|
20
|
+
|
21
|
+
export interface OpenSIPSEventMap extends UAEventMap {
|
22
|
+
ready: readyListener
|
23
|
+
changeActiveCalls: changeActiveCallsListener
|
24
|
+
callConfirmed: TestEventListener
|
25
|
+
currentActiveRoomChanged: ActiveRoomListener
|
26
|
+
callAddingInProgressChanged: CallAddingProgressListener
|
27
|
+
roomDeleted: RoomDeletedListener
|
28
|
+
changeActiveInputMediaDevice: changeActiveInputMediaDeviceListener
|
29
|
+
changeActiveOutputMediaDevice: changeActiveOutputMediaDeviceListener
|
30
|
+
changeAvailableDeviceList: changeAvailableDeviceListListener
|
31
|
+
changeMuteWhenJoin: changeMuteWhenJoinListener
|
32
|
+
changeIsDND: changeIsDNDListener
|
33
|
+
changeIsMuted: changeIsMutedListener
|
34
|
+
changeOriginalStream: changeOriginalStreamListener
|
35
|
+
addRoom: addRoomListener
|
36
|
+
updateRoom: updateRoomListener
|
37
|
+
removeRoom: removeRoomListener
|
38
|
+
}
|
39
|
+
|
40
|
+
export type ListenersKeyType = keyof OpenSIPSEventMap
|
41
|
+
export type ListenersCallbackFnType = OpenSIPSEventMap[ListenersKeyType]
|
42
|
+
export type ListenerCallbackFnType<T extends ListenersKeyType> = OpenSIPSEventMap[T]
|
@@ -0,0 +1,133 @@
|
|
1
|
+
import { MediaStreamConstraints } from 'lib.dom.d.ts'
|
2
|
+
import { Partial } from 'lib.es5.d.ts'
|
3
|
+
import {
|
4
|
+
AnswerOptions,
|
5
|
+
EndEvent,
|
6
|
+
IncomingAckEvent,
|
7
|
+
IncomingEvent,
|
8
|
+
OutgoingAckEvent,
|
9
|
+
OutgoingEvent,
|
10
|
+
RTCSession, RTCSessionEventMap,
|
11
|
+
} from 'jssip/lib/RTCSession'
|
12
|
+
import { UAConfiguration } from 'jssip/lib/UA'
|
13
|
+
|
14
|
+
export type IntervalType = ReturnType<typeof setInterval>
|
15
|
+
|
16
|
+
export type ListenerEventType = EndEvent | IncomingEvent | OutgoingEvent | IncomingAckEvent | OutgoingAckEvent
|
17
|
+
|
18
|
+
export type RTCBundlePolicy = 'balanced' | 'max-bundle' | 'max-compat'
|
19
|
+
export type RTCIceTransportPolicy = 'all' | 'relay'
|
20
|
+
export type RTCRtcpMuxPolicy = 'require'
|
21
|
+
|
22
|
+
export interface RTCIceServer {
|
23
|
+
credential?: string;
|
24
|
+
urls: string | string[];
|
25
|
+
username?: string;
|
26
|
+
}
|
27
|
+
|
28
|
+
export interface RTCConfiguration {
|
29
|
+
bundlePolicy?: RTCBundlePolicy;
|
30
|
+
certificates?: RTCCertificate[];
|
31
|
+
iceCandidatePoolSize?: number;
|
32
|
+
iceServers?: RTCIceServer[];
|
33
|
+
iceTransportPolicy?: RTCIceTransportPolicy;
|
34
|
+
rtcpMuxPolicy?: RTCRtcpMuxPolicy;
|
35
|
+
}
|
36
|
+
|
37
|
+
export interface StreamMediaType extends HTMLAudioElement {
|
38
|
+
className: string
|
39
|
+
setSinkId (id: string): Promise<void>
|
40
|
+
}
|
41
|
+
|
42
|
+
export interface AnswerOptionsExtended extends AnswerOptions {
|
43
|
+
mediaConstraints?: MediaStreamConstraints
|
44
|
+
}
|
45
|
+
|
46
|
+
export interface RTCSessionExtended extends RTCSession {
|
47
|
+
id: string
|
48
|
+
_automaticHold: boolean
|
49
|
+
_id: string
|
50
|
+
_localHold: boolean
|
51
|
+
_audioMuted: boolean
|
52
|
+
_cancel_reason: string
|
53
|
+
_contact: string
|
54
|
+
_end_time: Date
|
55
|
+
_eventsCount: number
|
56
|
+
_from_tag: string
|
57
|
+
_is_canceled: boolean
|
58
|
+
_is_confirmed: boolean
|
59
|
+
_late_sdp: string
|
60
|
+
_videoMuted: boolean
|
61
|
+
_status: number
|
62
|
+
_remote_identity: string
|
63
|
+
answer(options?: AnswerOptionsExtended): void
|
64
|
+
}
|
65
|
+
|
66
|
+
export interface ICall extends RTCSessionExtended {
|
67
|
+
roomId?: number
|
68
|
+
localMuted?: boolean
|
69
|
+
localHold?: boolean
|
70
|
+
audioTag?: StreamMediaType
|
71
|
+
}
|
72
|
+
|
73
|
+
export type RoomChangeEmitType = {
|
74
|
+
room: IRoom
|
75
|
+
roomList: { [key: number]: IRoom }
|
76
|
+
}
|
77
|
+
|
78
|
+
export interface MediaEvent extends Event {
|
79
|
+
stream: MediaStream
|
80
|
+
}
|
81
|
+
|
82
|
+
export interface IDoCallParam {
|
83
|
+
target: string
|
84
|
+
addToCurrentRoom: boolean
|
85
|
+
}
|
86
|
+
|
87
|
+
export interface IRoom {
|
88
|
+
started: Date
|
89
|
+
incomingInProgress: boolean
|
90
|
+
roomId: number
|
91
|
+
}
|
92
|
+
|
93
|
+
export interface ICallStatus {
|
94
|
+
isMoving: boolean
|
95
|
+
isTransferring: boolean
|
96
|
+
isMerging: boolean
|
97
|
+
}
|
98
|
+
|
99
|
+
export interface ICallStatusUpdate {
|
100
|
+
callId: string
|
101
|
+
isMoving?: boolean
|
102
|
+
isTransferring?: boolean
|
103
|
+
isMerging?: boolean
|
104
|
+
}
|
105
|
+
|
106
|
+
export type IRoomUpdate = Omit<IRoom, 'started'> & {
|
107
|
+
started?: Date
|
108
|
+
}
|
109
|
+
|
110
|
+
export interface IOpenSIPSJSOptions {
|
111
|
+
configuration: Omit<UAConfiguration, 'sockets'>,
|
112
|
+
socketInterfaces: [ string ]
|
113
|
+
sipDomain: string
|
114
|
+
sipOptions: {
|
115
|
+
session_timers: boolean
|
116
|
+
extraHeaders: [ string ]
|
117
|
+
pcConfig: RTCConfiguration
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
export interface TriggerListenerOptions {
|
122
|
+
listenerType: string
|
123
|
+
session: RTCSessionExtended
|
124
|
+
event?: ListenerEventType
|
125
|
+
}
|
126
|
+
|
127
|
+
/* UA */
|
128
|
+
export interface CallOptionsExtended extends AnswerOptionsExtended {
|
129
|
+
eventHandlers?: Partial<RTCSessionEventMap>;
|
130
|
+
anonymous?: boolean;
|
131
|
+
fromUserName?: string;
|
132
|
+
fromDisplayName?: string;
|
133
|
+
}
|
@@ -0,0 +1,64 @@
|
|
1
|
+
export interface WebrtcMetricsConfigType {
|
2
|
+
refreshEvery?: number
|
3
|
+
startAfter?: number
|
4
|
+
stopAfter?: number
|
5
|
+
verbose?: boolean
|
6
|
+
pname?: string
|
7
|
+
cid?: string
|
8
|
+
uid?: string
|
9
|
+
record?: boolean
|
10
|
+
ticket?: boolean
|
11
|
+
}
|
12
|
+
|
13
|
+
export type ProbeDirectionType = 'inbound' | 'outbound'
|
14
|
+
|
15
|
+
export interface ProbeMetricInType {
|
16
|
+
level_in: number
|
17
|
+
codec_id_in: string
|
18
|
+
codec_in: { mime_type: null | number, clock_rate: null | number, sdp_fmtp_line: null | number }
|
19
|
+
delta_jitter_ms_in: number
|
20
|
+
percent_packets_lost_in: number
|
21
|
+
delta_packets_in: number
|
22
|
+
delta_packets_lost_in: number
|
23
|
+
total_packets_in: number
|
24
|
+
total_packets_lost_in: number
|
25
|
+
total_KBytes_in: number
|
26
|
+
delta_KBytes_in: number
|
27
|
+
delta_kbs_in: number,
|
28
|
+
mos_in: number
|
29
|
+
mos_emodel_in: number
|
30
|
+
ssrc: string
|
31
|
+
direction: ProbeDirectionType
|
32
|
+
}
|
33
|
+
export interface ProbeMetricOutType {
|
34
|
+
level_out: number
|
35
|
+
codec_id_out: string
|
36
|
+
codec_out: { mime_type: null | number, clock_rate: null | number, sdp_fmtp_line: null | number }
|
37
|
+
delta_jitter_ms_out: number
|
38
|
+
delta_rtt_ms_out: null | number
|
39
|
+
total_rtt_ms_out: number
|
40
|
+
total_rtt_measure_out: number
|
41
|
+
percent_packets_lost_out: number
|
42
|
+
delta_packets_out: number
|
43
|
+
delta_packets_lost_out: number
|
44
|
+
total_packets_out: number
|
45
|
+
total_packets_lost_out: number
|
46
|
+
total_KBytes_out: number
|
47
|
+
delta_KBytes_out: number
|
48
|
+
delta_kbs_out: number
|
49
|
+
timestamp_out: null | number
|
50
|
+
mos_out: number
|
51
|
+
mos_emodel_out: number
|
52
|
+
ssrc: string
|
53
|
+
direction: ProbeDirectionType
|
54
|
+
}
|
55
|
+
|
56
|
+
export interface Probe {
|
57
|
+
audio: { [key: string]: ProbeMetricInType | ProbeMetricOutType }
|
58
|
+
}
|
59
|
+
|
60
|
+
interface MetricAudioData extends ProbeMetricInType {
|
61
|
+
callId?: string
|
62
|
+
}
|
63
|
+
|
64
|
+
export type MediaDeviceType = 'input' | 'output'
|