react-sip-kit 0.5.21 → 0.6.2
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/LICENSE +21 -21
- package/README.md +254 -211
- package/dist/components/audio/index.d.ts +2 -2
- package/dist/components/video/index.d.ts +2 -2
- package/dist/constructors/line.d.ts +5 -3
- package/dist/hooks/useWatchSessionData/index.d.ts +65 -5
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/manager.d.ts +67 -53
- package/dist/methods/session/index.d.ts +12 -14
- package/dist/store/types.d.ts +17 -13
- package/dist/types.d.ts +39 -1
- package/package.json +99 -99
package/dist/manager.d.ts
CHANGED
|
@@ -1,53 +1,71 @@
|
|
|
1
1
|
import { LineType, SipUserAgentStatus } from './store/types';
|
|
2
|
-
import { SipManagerConfig } from './types';
|
|
2
|
+
import { GetAccountKey, GetMethodsKey, LineLookup, SipManagerConfig } from './types';
|
|
3
3
|
export declare class SipManager {
|
|
4
4
|
private instances;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Update the configuration for an existing SIP instance.
|
|
7
|
+
* - Updates both local instance map and global store.
|
|
8
|
+
* - Does NOT restart or reconnect automatically.
|
|
7
9
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
+
* Use `initilizeMediaStreams` or `reconnect()` if runtime behavior must change.
|
|
11
|
+
*
|
|
12
|
+
* @param username - SIP account username
|
|
13
|
+
* @param config - Updated SIP configuration
|
|
14
|
+
*/
|
|
15
|
+
private updateConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Add a new SIP account, or update an existing one if the config has changed.
|
|
18
|
+
*
|
|
19
|
+
* - If identical config already exists → ignored.
|
|
20
|
+
* - If username exists with a different config → re-initializes media streams.
|
|
21
|
+
* - Otherwise → creates and initializes a new SIP instance.
|
|
22
|
+
*
|
|
23
|
+
* @param config - SIP account configuration
|
|
10
24
|
*/
|
|
11
25
|
add(config: SipManagerConfig): Promise<void>;
|
|
12
26
|
/**
|
|
13
|
-
* Get session methods (dial, answer, hold, etc.) for a
|
|
27
|
+
* Get session methods (dial, answer, hold, etc.) for a live session.
|
|
28
|
+
*
|
|
29
|
+
* Resolves the session by `username`, `lineKey`, or `remoteNumber`.
|
|
14
30
|
*
|
|
15
|
-
* @param
|
|
16
|
-
* @
|
|
31
|
+
* @param key - Identifier for session resolution
|
|
32
|
+
* @throws Error if no session could be resolved
|
|
17
33
|
*/
|
|
18
|
-
|
|
34
|
+
getSessionMethodsBy(key: GetMethodsKey): {
|
|
19
35
|
receiveSession: (invitation: import("./store/types").SipInvitationType) => void;
|
|
20
|
-
answerAudioSession: (
|
|
21
|
-
answerVideoSession: (
|
|
36
|
+
answerAudioSession: (lineKey: LineType["lineKey"]) => void;
|
|
37
|
+
answerVideoSession: (lineKey: LineType["lineKey"], enableVideo?: boolean) => void;
|
|
22
38
|
makeAudioSession: (lineObj: LineType, dialledNumber: string, extraHeaders?: Array<string>) => void;
|
|
23
39
|
makeVideoSession: (lineObj: LineType, dialledNumber: string, extraHeaders?: Array<string>) => void;
|
|
24
|
-
toggleLocalVideoTrack: (
|
|
25
|
-
toggleShareScreen: (
|
|
26
|
-
rejectSession: (
|
|
40
|
+
toggleLocalVideoTrack: (lineKey: LineType["lineKey"]) => Promise<void>;
|
|
41
|
+
toggleShareScreen: (lineKey: LineType["lineKey"]) => Promise<void>;
|
|
42
|
+
rejectSession: (lineKey: LineType["lineKey"]) => void;
|
|
27
43
|
dialByNumber: (type: Extract<import("./types").CallType, "audio" | "video">, dialNumber: string, extraHeaders?: Array<string>) => void;
|
|
28
|
-
endSession: (
|
|
29
|
-
recordSession: (
|
|
44
|
+
endSession: (lineKey: LineType["lineKey"]) => void;
|
|
45
|
+
recordSession: (lineKey: LineType["lineKey"]) => {
|
|
30
46
|
start: () => Promise<void>;
|
|
31
47
|
stop: () => void;
|
|
32
48
|
};
|
|
33
|
-
toggleMuteSession: (
|
|
34
|
-
toggleHoldSession: (
|
|
35
|
-
makeTransferSession: (
|
|
36
|
-
cancelTransferSession: (
|
|
37
|
-
cancelSession: (
|
|
49
|
+
toggleMuteSession: (lineKey: LineType["lineKey"]) => void;
|
|
50
|
+
toggleHoldSession: (lineKey: LineType["lineKey"], forcedValue?: boolean) => void;
|
|
51
|
+
makeTransferSession: (lineKey: LineType["lineKey"], transferLineKey: LineType["lineKey"]) => void;
|
|
52
|
+
cancelTransferSession: (lineKey: LineType["lineKey"], transferLineKey: LineType["lineKey"]) => void;
|
|
53
|
+
cancelSession: (lineKey: LineType["lineKey"]) => void;
|
|
38
54
|
teardownSession: typeof import("./methods/session").teardownSession;
|
|
39
55
|
};
|
|
40
56
|
/**
|
|
41
|
-
* Get SIP account state
|
|
57
|
+
* Get SIP account state.
|
|
58
|
+
*
|
|
59
|
+
* Resolves the account by `username`, `lineKey`, or `remoteNumber`.
|
|
42
60
|
*
|
|
43
|
-
* @param
|
|
44
|
-
* @returns
|
|
45
|
-
* status
|
|
46
|
-
* lines
|
|
47
|
-
* watch
|
|
48
|
-
*
|
|
61
|
+
* @param key - Identifier for account resolution
|
|
62
|
+
* @returns Object containing:
|
|
63
|
+
* - `status` → UA status
|
|
64
|
+
* - `lines` → all active lines
|
|
65
|
+
* - `watch` → reactive watcher hook
|
|
66
|
+
* @throws Error if no username could be resolved
|
|
49
67
|
*/
|
|
50
|
-
|
|
68
|
+
getAccountBy(key: GetAccountKey): {
|
|
51
69
|
status: SipUserAgentStatus;
|
|
52
70
|
lines: LineType[];
|
|
53
71
|
watch: () => {
|
|
@@ -56,46 +74,42 @@ export declare class SipManager {
|
|
|
56
74
|
};
|
|
57
75
|
};
|
|
58
76
|
/**
|
|
59
|
-
* Check if
|
|
60
|
-
*
|
|
61
|
-
* @param {string} username - The SIP account username.
|
|
62
|
-
* @returns {boolean} True if the instance exists, false otherwise.
|
|
77
|
+
* Check if an instance exists for the given username.
|
|
63
78
|
*/
|
|
64
79
|
has(username: string): boolean;
|
|
65
80
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* @param {string} username - The SIP account username.
|
|
69
|
-
* @returns {void}
|
|
81
|
+
* Reconnect transport for an existing SIP instance.
|
|
70
82
|
*/
|
|
71
83
|
reconnect(username: string): void;
|
|
72
84
|
/**
|
|
73
|
-
* Stop and remove a SIP
|
|
74
|
-
* Also
|
|
75
|
-
*
|
|
76
|
-
* @param {string} username - The SIP account username.
|
|
77
|
-
* @returns {Promise<void>} Resolves when the session is stopped and removed.
|
|
85
|
+
* Stop and remove a SIP instance by username.
|
|
86
|
+
* Also removes related data from the global store.
|
|
78
87
|
*/
|
|
79
88
|
stop(username: string): Promise<void>;
|
|
80
89
|
/**
|
|
81
|
-
* Stop and clear
|
|
82
|
-
* Useful
|
|
83
|
-
*
|
|
84
|
-
* @returns {Promise<void>} Resolves when all sessions are stopped and cleared.
|
|
90
|
+
* Stop and clear all SIP instances.
|
|
91
|
+
* Useful for logout or application shutdown.
|
|
85
92
|
*/
|
|
86
93
|
stopAll(): Promise<void>;
|
|
87
94
|
/**
|
|
88
|
-
*
|
|
95
|
+
* Get a Line by either `lineKey` or `remoteNumber`.
|
|
96
|
+
*
|
|
97
|
+
* @param key - Lookup key (mutually exclusive)
|
|
98
|
+
* @returns Line if found, otherwise null
|
|
99
|
+
*/
|
|
100
|
+
getLineBy(key: LineLookup): LineType | null;
|
|
101
|
+
/**
|
|
102
|
+
* Get a SIP session by either `lineKey` or `remoteNumber`.
|
|
89
103
|
*
|
|
90
|
-
* @param
|
|
91
|
-
* @returns
|
|
104
|
+
* @param key - Lookup key (mutually exclusive)
|
|
105
|
+
* @returns SIP session if found, otherwise null
|
|
92
106
|
*/
|
|
93
|
-
|
|
107
|
+
getSessionBy(key: LineLookup): import("./store/types").SipInvitationType | import("./store/types").SipInviterType | null;
|
|
94
108
|
/**
|
|
95
|
-
*
|
|
109
|
+
* Get a username by either `lineKey` or `remoteNumber`.
|
|
96
110
|
*
|
|
97
|
-
* @param
|
|
98
|
-
* @returns
|
|
111
|
+
* @param key - Lookup key (mutually exclusive)
|
|
112
|
+
* @returns Username if found, otherwise null
|
|
99
113
|
*/
|
|
100
|
-
|
|
114
|
+
getUsernameBy(key: LineLookup): string | null;
|
|
101
115
|
}
|
|
@@ -6,24 +6,24 @@ export declare const sessionMethods: ({ username }: {
|
|
|
6
6
|
username: SipAccountConfig["username"];
|
|
7
7
|
}) => {
|
|
8
8
|
receiveSession: (invitation: SipInvitationType) => void;
|
|
9
|
-
answerAudioSession: (
|
|
10
|
-
answerVideoSession: (
|
|
9
|
+
answerAudioSession: (lineKey: LineType["lineKey"]) => void;
|
|
10
|
+
answerVideoSession: (lineKey: LineType["lineKey"], enableVideo?: boolean) => void;
|
|
11
11
|
makeAudioSession: (lineObj: LineType, dialledNumber: string, extraHeaders?: Array<string>) => void;
|
|
12
12
|
makeVideoSession: (lineObj: LineType, dialledNumber: string, extraHeaders?: Array<string>) => void;
|
|
13
|
-
toggleLocalVideoTrack: (
|
|
14
|
-
toggleShareScreen: (
|
|
15
|
-
rejectSession: (
|
|
13
|
+
toggleLocalVideoTrack: (lineKey: LineType["lineKey"]) => Promise<void>;
|
|
14
|
+
toggleShareScreen: (lineKey: LineType["lineKey"]) => Promise<void>;
|
|
15
|
+
rejectSession: (lineKey: LineType["lineKey"]) => void;
|
|
16
16
|
dialByNumber: (type: Extract<CallType, "audio" | "video">, dialNumber: string, extraHeaders?: Array<string>) => void;
|
|
17
|
-
endSession: (
|
|
18
|
-
recordSession: (
|
|
17
|
+
endSession: (lineKey: LineType["lineKey"]) => void;
|
|
18
|
+
recordSession: (lineKey: LineType["lineKey"]) => {
|
|
19
19
|
start: () => Promise<void>;
|
|
20
20
|
stop: () => void;
|
|
21
21
|
};
|
|
22
|
-
toggleMuteSession: (
|
|
23
|
-
toggleHoldSession: (
|
|
24
|
-
makeTransferSession: (
|
|
25
|
-
cancelTransferSession: (
|
|
26
|
-
cancelSession: (
|
|
22
|
+
toggleMuteSession: (lineKey: LineType["lineKey"]) => void;
|
|
23
|
+
toggleHoldSession: (lineKey: LineType["lineKey"], forcedValue?: boolean) => void;
|
|
24
|
+
makeTransferSession: (lineKey: LineType["lineKey"], transferLineKey: LineType["lineKey"]) => void;
|
|
25
|
+
cancelTransferSession: (lineKey: LineType["lineKey"], transferLineKey: LineType["lineKey"]) => void;
|
|
26
|
+
cancelSession: (lineKey: LineType["lineKey"]) => void;
|
|
27
27
|
teardownSession: typeof teardownSession;
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
@@ -40,5 +40,3 @@ export declare function sendVideoActivationWithAckRetry(session: LineType['sipSe
|
|
|
40
40
|
maxRetries?: number;
|
|
41
41
|
delayMs?: number;
|
|
42
42
|
}): Promise<void>;
|
|
43
|
-
export declare const getUsernameByNumber: (lineNumber: LineType["lineNumber"]) => SipAccountConfig["username"] | null;
|
|
44
|
-
export declare const getSessionByNumber: (lineNumber: LineType["lineNumber"]) => LineType["sipSession"] | null;
|
package/dist/store/types.d.ts
CHANGED
|
@@ -6,28 +6,31 @@ export interface SipStoreStateType {
|
|
|
6
6
|
configs: Record<SipAccountConfig['username'], SipConfigs> | null;
|
|
7
7
|
statuses: Record<SipAccountConfig['username'], SipUserAgentStatus> | null;
|
|
8
8
|
userAgents?: Record<SipAccountConfig['username'], SipUserAgent>;
|
|
9
|
-
lines: Record<SipAccountConfig['username'], Record<LineType['
|
|
10
|
-
|
|
9
|
+
lines: Record<SipAccountConfig['username'], Record<LineType['lineKey'], LineType>>;
|
|
10
|
+
usernamesByLineKey: Record<LineType['lineKey'], SipAccountConfig['username']>;
|
|
11
|
+
lineKeyByRemoteNumber: Record<SipSessionDataType['remoteNumber'], LineType['lineKey']>;
|
|
11
12
|
devicesInfo: DevicesInfoType;
|
|
12
13
|
setSipStore: (state: Partial<SipStoreStateType>) => void;
|
|
13
14
|
setConfig: (username: SipAccountConfig['username'], userAgent: SipConfigs) => void;
|
|
14
15
|
setUserAgent: (username: SipAccountConfig['username'], userAgent: SipUserAgent) => void;
|
|
15
|
-
addLine: (
|
|
16
|
+
addLine: (line: LineType) => void;
|
|
16
17
|
updateLine: (line: LineType, callback?: CallbackFunction) => void;
|
|
17
|
-
removeLine: (
|
|
18
|
+
removeLine: (lineKey: LineType['lineKey']) => void;
|
|
18
19
|
remove: (username: SipAccountConfig['username']) => void;
|
|
19
20
|
removeAll: () => void;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
findLineByLineKey: (lineKey: LineType['lineKey']) => LineType | null;
|
|
22
|
+
getSessionByLineKey: (lineKey: LineType['lineKey']) => LineType['sipSession'] | null;
|
|
23
|
+
getUsernameByLineKey: (lineKey: LineType['lineKey']) => SipAccountConfig['username'] | null;
|
|
24
|
+
getUsernameByRemoteNumber: (remoteNumber: SipSessionDataType['remoteNumber']) => SipAccountConfig['username'] | null;
|
|
25
|
+
getLineKeyByRemoteNumber: (remoteNumber: SipSessionDataType['remoteNumber']) => LineType['lineKey'] | null;
|
|
26
|
+
getLineByRemoteNumber: (remoteNumber: SipSessionDataType['remoteNumber']) => LineType | null;
|
|
27
|
+
getNewLineKey: () => number;
|
|
24
28
|
}
|
|
25
29
|
export interface SipInvitationType extends Omit<Invitation, 'incomingInviteRequest' | 'sessionDescriptionHandler'> {
|
|
26
30
|
data: Partial<SipSessionDataType>;
|
|
27
31
|
incomingInviteRequest: IncomingInviteRequest;
|
|
28
32
|
sessionDescriptionHandler: SipSessionDescriptionHandler;
|
|
29
33
|
sessionDescriptionHandlerOptionsReInvite: SipSessionDescriptionHandlerOptions;
|
|
30
|
-
isOnHold: boolean;
|
|
31
34
|
initiateLocalMediaStreams: (params: InitiateMediaStreamsParams) => void;
|
|
32
35
|
initiateRemoteMediaStreams: (params: InitiateMediaStreamsParams) => void;
|
|
33
36
|
}
|
|
@@ -43,7 +46,6 @@ export interface SipInviterType extends Inviter {
|
|
|
43
46
|
data: Partial<SipSessionDataType>;
|
|
44
47
|
sessionDescriptionHandler: SipSessionDescriptionHandler;
|
|
45
48
|
sessionDescriptionHandlerOptionsReInvite: SipSessionDescriptionHandlerOptions;
|
|
46
|
-
isOnHold: boolean;
|
|
47
49
|
initiateLocalMediaStreams: (params: InitiateMediaStreamsParams) => void;
|
|
48
50
|
initiateRemoteMediaStreams: (params: InitiateMediaStreamsParams) => void;
|
|
49
51
|
}
|
|
@@ -52,8 +54,9 @@ export interface SipSessionDescriptionHandler extends SessionDescriptionHandler
|
|
|
52
54
|
peerConnectionDelegate: any;
|
|
53
55
|
}
|
|
54
56
|
export interface LineType {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
lineKey: number;
|
|
58
|
+
remoteNumber: string;
|
|
59
|
+
username: SipAccountConfig['username'];
|
|
57
60
|
sipSession: SipInvitationType | SipInviterType | null;
|
|
58
61
|
localSoundMeter: any;
|
|
59
62
|
remoteSoundMeter: any;
|
|
@@ -62,11 +65,12 @@ export interface SipSessionType extends Session {
|
|
|
62
65
|
data: SipSessionDataType;
|
|
63
66
|
}
|
|
64
67
|
export interface SipSessionDataType {
|
|
65
|
-
|
|
68
|
+
lineKey: number;
|
|
66
69
|
callDirection: 'inbound' | 'outbound';
|
|
67
70
|
callType: CallType;
|
|
68
71
|
terminateBy: string;
|
|
69
72
|
remoteNumber: string;
|
|
73
|
+
username: SipAccountConfig['username'];
|
|
70
74
|
earlyReject: boolean;
|
|
71
75
|
reasonCode: number;
|
|
72
76
|
reasonText: string;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SipConfigs } from './configs/types';
|
|
2
2
|
import { reconnectTransport } from './events/transport';
|
|
3
|
-
import {
|
|
3
|
+
import { SipInitializer } from './initializer';
|
|
4
|
+
import { LineType, SipSessionDataType, SipSessionType } from './store/types';
|
|
4
5
|
import { Registerer, Subscriber, UserAgent } from 'sip.js';
|
|
5
6
|
export interface SipUserAgent extends UserAgent {
|
|
6
7
|
isReRegister: boolean;
|
|
@@ -36,3 +37,40 @@ export interface SipContextTransportType {
|
|
|
36
37
|
}
|
|
37
38
|
export type CallbackFunction<T = any> = (value?: T) => void;
|
|
38
39
|
export type CallType = 'audio' | 'video' | 'conferenceAudio' | 'conferenceVideo' | 'transferAudio' | 'transferVideo';
|
|
40
|
+
export interface SipManagerInstance {
|
|
41
|
+
config: SipManagerConfig;
|
|
42
|
+
instance: SipInitializer;
|
|
43
|
+
}
|
|
44
|
+
export type GetAccountKey = {
|
|
45
|
+
username: string;
|
|
46
|
+
lineKey?: never;
|
|
47
|
+
remoteNumber?: never;
|
|
48
|
+
} | {
|
|
49
|
+
lineKey: LineType['lineKey'];
|
|
50
|
+
username?: never;
|
|
51
|
+
remoteNumber?: never;
|
|
52
|
+
} | {
|
|
53
|
+
remoteNumber: SipSessionDataType['remoteNumber'];
|
|
54
|
+
username?: never;
|
|
55
|
+
lineKey?: never;
|
|
56
|
+
};
|
|
57
|
+
export type GetMethodsKey = {
|
|
58
|
+
username: string;
|
|
59
|
+
lineKey?: never;
|
|
60
|
+
remoteNumber?: never;
|
|
61
|
+
} | {
|
|
62
|
+
lineKey: LineType['lineKey'];
|
|
63
|
+
username?: never;
|
|
64
|
+
remoteNumber?: never;
|
|
65
|
+
} | {
|
|
66
|
+
remoteNumber: SipSessionDataType['remoteNumber'];
|
|
67
|
+
username?: never;
|
|
68
|
+
lineKey?: never;
|
|
69
|
+
};
|
|
70
|
+
export type LineLookup = {
|
|
71
|
+
lineKey: LineType['lineKey'];
|
|
72
|
+
remoteNumber?: never;
|
|
73
|
+
} | {
|
|
74
|
+
remoteNumber: SipSessionDataType['remoteNumber'];
|
|
75
|
+
lineKey?: never;
|
|
76
|
+
};
|
package/package.json
CHANGED
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "react-sip-kit",
|
|
3
|
-
"private": false,
|
|
4
|
-
"version": "0.
|
|
5
|
-
"type": "module",
|
|
6
|
-
"author": {
|
|
7
|
-
"name": "Shervin Ghajar",
|
|
8
|
-
"email": "ssghajar.work@gmail.com"
|
|
9
|
-
},
|
|
10
|
-
"homepage": "https://github.com/shervin-ghajar/react-sip-kit#readme",
|
|
11
|
-
"keywords": [
|
|
12
|
-
"react",
|
|
13
|
-
"sip",
|
|
14
|
-
"sipjs",
|
|
15
|
-
"jssip",
|
|
16
|
-
"voip",
|
|
17
|
-
"communication",
|
|
18
|
-
"webRTC",
|
|
19
|
-
"telephony",
|
|
20
|
-
"react-hooks",
|
|
21
|
-
"sip.js",
|
|
22
|
-
"react-sip",
|
|
23
|
-
"react-sip-provider",
|
|
24
|
-
"real-time",
|
|
25
|
-
"session-initiation-protocol",
|
|
26
|
-
"frontend",
|
|
27
|
-
"javascript",
|
|
28
|
-
"typescript",
|
|
29
|
-
"npm",
|
|
30
|
-
"library",
|
|
31
|
-
"utility",
|
|
32
|
-
"responsive",
|
|
33
|
-
"design",
|
|
34
|
-
"state-management",
|
|
35
|
-
"zustand"
|
|
36
|
-
],
|
|
37
|
-
"repository": {
|
|
38
|
-
"type": "git",
|
|
39
|
-
"url": "https://github.com/shervin-ghajar/react-sip-kit.git"
|
|
40
|
-
},
|
|
41
|
-
"license": "MIT",
|
|
42
|
-
"main": "dist/index.cjs",
|
|
43
|
-
"module": "dist/index.mjs",
|
|
44
|
-
"types": "dist/index.d.ts",
|
|
45
|
-
"exports": {
|
|
46
|
-
".": {
|
|
47
|
-
"import": "./dist/index.mjs",
|
|
48
|
-
"require": "./dist/index.cjs",
|
|
49
|
-
"types": "./dist/index.d.ts"
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"scripts": {
|
|
53
|
-
"build": "rollup -c",
|
|
54
|
-
"lint": "eslint .",
|
|
55
|
-
"format": "prettier --write --cache . --plugin=prettier-plugin-organize-imports"
|
|
56
|
-
},
|
|
57
|
-
"dependencies": {
|
|
58
|
-
"dayjs": "^1.11.13",
|
|
59
|
-
"sip.js": "0.21.2",
|
|
60
|
-
"zustand": "^5.0.1",
|
|
61
|
-
"lodash.isequal": "^4.5.0"
|
|
62
|
-
},
|
|
63
|
-
"devDependencies": {
|
|
64
|
-
"@eslint/js": "9.13.0",
|
|
65
|
-
"@rollup/plugin-commonjs": "^28.0.3",
|
|
66
|
-
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
67
|
-
"@rollup/plugin-terser": "^0.4.4",
|
|
68
|
-
"@rollup/plugin-typescript": "^12.1.2",
|
|
69
|
-
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
70
|
-
"@types/lodash.isequal": "^4.5.8",
|
|
71
|
-
"@types/react": "18.3.12",
|
|
72
|
-
"@types/react-dom": "18.3.1",
|
|
73
|
-
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
|
74
|
-
"@typescript-eslint/parser": "^8.15.0",
|
|
75
|
-
"eslint": "^9.15.0",
|
|
76
|
-
"eslint-config-prettier": "^9.1.0",
|
|
77
|
-
"eslint-plugin-prettier": "^5.2.1",
|
|
78
|
-
"eslint-plugin-react-hooks": "5.0.0",
|
|
79
|
-
"eslint-plugin-react-refresh": "0.4.14",
|
|
80
|
-
"globals": "15.11.0",
|
|
81
|
-
"prettier": "^3.3.3",
|
|
82
|
-
"prettier-plugin-organize-imports": "^4.1.0",
|
|
83
|
-
"rollup": "^4.41.1",
|
|
84
|
-
"rollup-plugin-delete": "^3.0.1",
|
|
85
|
-
"rollup-plugin-strip": "^1.2.2",
|
|
86
|
-
"tslib": "^2.8.1",
|
|
87
|
-
"typescript": "~5.6.2",
|
|
88
|
-
"typescript-eslint": "8.11.0"
|
|
89
|
-
},
|
|
90
|
-
"peerDependencies": {
|
|
91
|
-
"react": ">=17.0.0",
|
|
92
|
-
"react-dom": ">=17.0.0"
|
|
93
|
-
},
|
|
94
|
-
"files": [
|
|
95
|
-
"dist",
|
|
96
|
-
"README.md",
|
|
97
|
-
"LICENSE"
|
|
98
|
-
]
|
|
99
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "react-sip-kit",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "0.6.02",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Shervin Ghajar",
|
|
8
|
+
"email": "ssghajar.work@gmail.com"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/shervin-ghajar/react-sip-kit#readme",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"react",
|
|
13
|
+
"sip",
|
|
14
|
+
"sipjs",
|
|
15
|
+
"jssip",
|
|
16
|
+
"voip",
|
|
17
|
+
"communication",
|
|
18
|
+
"webRTC",
|
|
19
|
+
"telephony",
|
|
20
|
+
"react-hooks",
|
|
21
|
+
"sip.js",
|
|
22
|
+
"react-sip",
|
|
23
|
+
"react-sip-provider",
|
|
24
|
+
"real-time",
|
|
25
|
+
"session-initiation-protocol",
|
|
26
|
+
"frontend",
|
|
27
|
+
"javascript",
|
|
28
|
+
"typescript",
|
|
29
|
+
"npm",
|
|
30
|
+
"library",
|
|
31
|
+
"utility",
|
|
32
|
+
"responsive",
|
|
33
|
+
"design",
|
|
34
|
+
"state-management",
|
|
35
|
+
"zustand"
|
|
36
|
+
],
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "https://github.com/shervin-ghajar/react-sip-kit.git"
|
|
40
|
+
},
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"main": "dist/index.cjs",
|
|
43
|
+
"module": "dist/index.mjs",
|
|
44
|
+
"types": "dist/index.d.ts",
|
|
45
|
+
"exports": {
|
|
46
|
+
".": {
|
|
47
|
+
"import": "./dist/index.mjs",
|
|
48
|
+
"require": "./dist/index.cjs",
|
|
49
|
+
"types": "./dist/index.d.ts"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "rollup -c",
|
|
54
|
+
"lint": "eslint .",
|
|
55
|
+
"format": "prettier --write --cache . --plugin=prettier-plugin-organize-imports"
|
|
56
|
+
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"dayjs": "^1.11.13",
|
|
59
|
+
"sip.js": "0.21.2",
|
|
60
|
+
"zustand": "^5.0.1",
|
|
61
|
+
"lodash.isequal": "^4.5.0"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@eslint/js": "9.13.0",
|
|
65
|
+
"@rollup/plugin-commonjs": "^28.0.3",
|
|
66
|
+
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
67
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
68
|
+
"@rollup/plugin-typescript": "^12.1.2",
|
|
69
|
+
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
70
|
+
"@types/lodash.isequal": "^4.5.8",
|
|
71
|
+
"@types/react": "18.3.12",
|
|
72
|
+
"@types/react-dom": "18.3.1",
|
|
73
|
+
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
|
74
|
+
"@typescript-eslint/parser": "^8.15.0",
|
|
75
|
+
"eslint": "^9.15.0",
|
|
76
|
+
"eslint-config-prettier": "^9.1.0",
|
|
77
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
78
|
+
"eslint-plugin-react-hooks": "5.0.0",
|
|
79
|
+
"eslint-plugin-react-refresh": "0.4.14",
|
|
80
|
+
"globals": "15.11.0",
|
|
81
|
+
"prettier": "^3.3.3",
|
|
82
|
+
"prettier-plugin-organize-imports": "^4.1.0",
|
|
83
|
+
"rollup": "^4.41.1",
|
|
84
|
+
"rollup-plugin-delete": "^3.0.1",
|
|
85
|
+
"rollup-plugin-strip": "^1.2.2",
|
|
86
|
+
"tslib": "^2.8.1",
|
|
87
|
+
"typescript": "~5.6.2",
|
|
88
|
+
"typescript-eslint": "8.11.0"
|
|
89
|
+
},
|
|
90
|
+
"peerDependencies": {
|
|
91
|
+
"react": ">=17.0.0",
|
|
92
|
+
"react-dom": ">=17.0.0"
|
|
93
|
+
},
|
|
94
|
+
"files": [
|
|
95
|
+
"dist",
|
|
96
|
+
"README.md",
|
|
97
|
+
"LICENSE"
|
|
98
|
+
]
|
|
99
|
+
}
|