@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.
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'