@voicenter-team/opensips-js 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/README.md +75 -0
  2. package/build/enum/call.event.listener.type.d.ts +7 -0
  3. package/build/enum/call.event.listener.type.js +10 -0
  4. package/build/enum/metric.keys.to.include.d.ts +2 -0
  5. package/build/enum/metric.keys.to.include.js +4 -0
  6. package/build/helpers/UA/index.d.ts +6 -0
  7. package/build/helpers/UA/index.js +9 -0
  8. package/build/helpers/audio.helper.d.ts +9 -0
  9. package/build/helpers/audio.helper.js +60 -0
  10. package/build/helpers/filter.helper.d.ts +2 -0
  11. package/build/helpers/filter.helper.js +14 -0
  12. package/build/helpers/time.helper.d.ts +16 -0
  13. package/build/helpers/time.helper.js +28 -0
  14. package/build/helpers/volume.helper.d.ts +2 -0
  15. package/build/helpers/volume.helper.js +76 -0
  16. package/build/helpers/webrtcmetrics/collector.d.ts +32 -0
  17. package/build/helpers/webrtcmetrics/collector.js +282 -0
  18. package/build/helpers/webrtcmetrics/engine.d.ts +20 -0
  19. package/build/helpers/webrtcmetrics/engine.js +164 -0
  20. package/build/helpers/webrtcmetrics/exporter.d.ts +116 -0
  21. package/build/helpers/webrtcmetrics/exporter.js +528 -0
  22. package/build/helpers/webrtcmetrics/extractor.d.ts +1 -0
  23. package/build/helpers/webrtcmetrics/extractor.js +976 -0
  24. package/build/helpers/webrtcmetrics/index.d.ts +63 -0
  25. package/build/helpers/webrtcmetrics/index.js +93 -0
  26. package/build/helpers/webrtcmetrics/metrics.d.ts +2 -0
  27. package/build/helpers/webrtcmetrics/metrics.js +8 -0
  28. package/build/helpers/webrtcmetrics/probe.d.ts +76 -0
  29. package/build/helpers/webrtcmetrics/probe.js +153 -0
  30. package/build/helpers/webrtcmetrics/utils/config.d.ts +12 -0
  31. package/build/helpers/webrtcmetrics/utils/config.js +28 -0
  32. package/build/helpers/webrtcmetrics/utils/helper.d.ts +13 -0
  33. package/build/helpers/webrtcmetrics/utils/helper.js +134 -0
  34. package/build/helpers/webrtcmetrics/utils/log.d.ts +7 -0
  35. package/build/helpers/webrtcmetrics/utils/log.js +71 -0
  36. package/build/helpers/webrtcmetrics/utils/models.d.ts +309 -0
  37. package/build/helpers/webrtcmetrics/utils/models.js +298 -0
  38. package/build/helpers/webrtcmetrics/utils/score.d.ts +4 -0
  39. package/build/helpers/webrtcmetrics/utils/score.js +235 -0
  40. package/build/helpers/webrtcmetrics/utils/shortUUId.d.ts +1 -0
  41. package/build/helpers/webrtcmetrics/utils/shortUUId.js +7 -0
  42. package/build/index.d.ts +170 -0
  43. package/build/index.js +849 -0
  44. package/package.json +61 -0
  45. package/src/types/declarations.d.ts +6 -0
  46. package/src/types/generic.d.ts +1 -0
  47. package/src/types/listeners.d.ts +42 -0
  48. package/src/types/rtc.d.ts +133 -0
  49. 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,6 @@
1
+ // export {}
2
+ // declare global {
3
+ // interface Window {
4
+ // webkitAudioContext: typeof AudioContext
5
+ // }
6
+ // }
@@ -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'