ringcentral-softphone 1.3.5 → 1.3.7

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 (119) hide show
  1. package/dist/call-session/inbound.d.cts +1 -9
  2. package/dist/call-session/inbound.d.mts +2 -0
  3. package/dist/call-session/{inbound.js → inbound.mjs} +6 -4
  4. package/dist/call-session/inbound.mjs.map +1 -0
  5. package/dist/call-session/index.cjs +4 -4
  6. package/dist/call-session/index.d.cts +1 -47
  7. package/dist/call-session/index.d.mts +2 -0
  8. package/dist/call-session/{index.js → index.mjs} +8 -6
  9. package/dist/call-session/index.mjs.map +1 -0
  10. package/dist/call-session/outbound.d.cts +1 -12
  11. package/dist/call-session/outbound.d.mts +2 -0
  12. package/dist/call-session/{outbound.js → outbound.mjs} +6 -4
  13. package/dist/call-session/outbound.mjs.map +1 -0
  14. package/dist/call-session/streamer.cjs +2 -2
  15. package/dist/call-session/streamer.d.cts +1 -18
  16. package/dist/call-session/streamer.d.mts +2 -0
  17. package/dist/call-session/{streamer.js → streamer.mjs} +2 -0
  18. package/dist/call-session/streamer.mjs.map +1 -0
  19. package/dist/{_virtual/_rolldown/runtime.cjs → chunk-CKQMccvm.cjs} +6 -1
  20. package/dist/{codec.d.ts → codec-Bh7v8J-S.d.mts} +2 -1
  21. package/dist/codec-Bh7v8J-S.d.mts.map +1 -0
  22. package/dist/codec-C-VrtVkq.d.cts +19 -0
  23. package/dist/codec-C-VrtVkq.d.cts.map +1 -0
  24. package/dist/codec.cjs +1 -1
  25. package/dist/codec.d.cts +1 -16
  26. package/dist/codec.d.mts +2 -0
  27. package/dist/{codec.js → codec.mjs} +2 -0
  28. package/dist/codec.mjs.map +1 -0
  29. package/dist/{dtmf.d.ts → dtmf-B13Fz2VR.d.mts} +2 -1
  30. package/dist/dtmf-B13Fz2VR.d.mts.map +1 -0
  31. package/dist/dtmf-DcQ-5vSG.d.cts +11 -0
  32. package/dist/dtmf-DcQ-5vSG.d.cts.map +1 -0
  33. package/dist/dtmf.cjs +1 -1
  34. package/dist/dtmf.d.cts +1 -8
  35. package/dist/dtmf.d.mts +2 -0
  36. package/dist/{dtmf.js → dtmf.mjs} +2 -0
  37. package/dist/dtmf.mjs.map +1 -0
  38. package/dist/inbound--wGoGqLS.d.mts +104 -0
  39. package/dist/inbound--wGoGqLS.d.mts.map +1 -0
  40. package/dist/inbound-DquvTSj1.d.cts +104 -0
  41. package/dist/inbound-DquvTSj1.d.cts.map +1 -0
  42. package/dist/{sip-message/outbound/index.d.ts → index--UjWgLK-.d.mts} +3 -2
  43. package/dist/index--UjWgLK-.d.mts.map +1 -0
  44. package/dist/{sip-message/inbound/index.d.ts → index-BhN2W8AV.d.mts} +3 -2
  45. package/dist/index-BhN2W8AV.d.mts.map +1 -0
  46. package/dist/index-CEgs-Dz2.d.cts +1 -0
  47. package/dist/index-Cf2Cev52.d.cts +9 -0
  48. package/dist/index-Cf2Cev52.d.cts.map +1 -0
  49. package/dist/index-XMDop59x.d.cts +9 -0
  50. package/dist/index-XMDop59x.d.cts.map +1 -0
  51. package/dist/index-q_LXL61M.d.mts +1 -0
  52. package/dist/index.cjs +4 -4
  53. package/dist/index.d.cts +1 -30
  54. package/dist/index.d.mts +2 -0
  55. package/dist/{index.js → index.mjs} +11 -9
  56. package/dist/index.mjs.map +1 -0
  57. package/dist/{sip-message/outbound/request.d.ts → request-B_auLSJn.d.cts} +3 -2
  58. package/dist/request-B_auLSJn.d.cts.map +1 -0
  59. package/dist/request-pBe7_mYv.d.mts +11 -0
  60. package/dist/request-pBe7_mYv.d.mts.map +1 -0
  61. package/dist/{sip-message/outbound/response.d.ts → response-LRRpY8lX.d.mts} +4 -3
  62. package/dist/response-LRRpY8lX.d.mts.map +1 -0
  63. package/dist/response-ReKvb5x9.d.cts +10 -0
  64. package/dist/response-ReKvb5x9.d.cts.map +1 -0
  65. package/dist/sip-message/inbound/index.d.cts +1 -6
  66. package/dist/sip-message/inbound/index.d.mts +2 -0
  67. package/dist/sip-message/inbound/{index.js → index.mjs} +4 -2
  68. package/dist/sip-message/inbound/index.mjs.map +1 -0
  69. package/dist/sip-message/index.d.cts +5 -5
  70. package/dist/sip-message/index.d.mts +6 -0
  71. package/dist/sip-message/index.mjs +6 -0
  72. package/dist/sip-message/outbound/index.d.cts +1 -6
  73. package/dist/sip-message/outbound/index.d.mts +2 -0
  74. package/dist/sip-message/outbound/{index.js → index.mjs} +3 -1
  75. package/dist/sip-message/outbound/index.mjs.map +1 -0
  76. package/dist/sip-message/outbound/request.d.cts +1 -8
  77. package/dist/sip-message/outbound/request.d.mts +2 -0
  78. package/dist/sip-message/outbound/{request.js → request.mjs} +4 -2
  79. package/dist/sip-message/outbound/request.mjs.map +1 -0
  80. package/dist/sip-message/outbound/response.d.cts +1 -7
  81. package/dist/sip-message/outbound/response.d.mts +2 -0
  82. package/dist/sip-message/outbound/{response.js → response.mjs} +4 -2
  83. package/dist/sip-message/outbound/response.mjs.map +1 -0
  84. package/dist/sip-message/response-codes.d.cts +2 -1
  85. package/dist/sip-message/response-codes.d.cts.map +1 -0
  86. package/dist/sip-message/{response-codes.d.ts → response-codes.d.mts} +2 -1
  87. package/dist/sip-message/response-codes.d.mts.map +1 -0
  88. package/dist/sip-message/{response-codes.js → response-codes.mjs} +2 -0
  89. package/dist/sip-message/response-codes.mjs.map +1 -0
  90. package/dist/sip-message/sip-message.d.cts +1 -11
  91. package/dist/sip-message/sip-message.d.mts +2 -0
  92. package/dist/sip-message/{sip-message.js → sip-message.mjs} +2 -0
  93. package/dist/sip-message/sip-message.mjs.map +1 -0
  94. package/dist/{sip-message/sip-message.d.ts → sip-message-B2D5MPBI.d.cts} +2 -1
  95. package/dist/sip-message-B2D5MPBI.d.cts.map +1 -0
  96. package/dist/sip-message-PaPho4qU.d.mts +14 -0
  97. package/dist/sip-message-PaPho4qU.d.mts.map +1 -0
  98. package/dist/{types.d.ts → types-DOQ9wmX6.d.mts} +2 -1
  99. package/dist/types-DOQ9wmX6.d.mts.map +1 -0
  100. package/dist/types-DZxCsbZE.d.cts +13 -0
  101. package/dist/types-DZxCsbZE.d.cts.map +1 -0
  102. package/dist/types.d.cts +1 -11
  103. package/dist/types.d.mts +2 -0
  104. package/dist/utils.cjs +2 -2
  105. package/dist/utils.d.cts +3 -2
  106. package/dist/utils.d.cts.map +1 -0
  107. package/dist/{utils.d.ts → utils.d.mts} +3 -2
  108. package/dist/utils.d.mts.map +1 -0
  109. package/dist/{utils.js → utils.mjs} +2 -0
  110. package/dist/utils.mjs.map +1 -0
  111. package/package.json +10 -10
  112. package/dist/call-session/inbound.d.ts +0 -11
  113. package/dist/call-session/index.d.ts +0 -49
  114. package/dist/call-session/outbound.d.ts +0 -14
  115. package/dist/call-session/streamer.d.ts +0 -20
  116. package/dist/index.d.ts +0 -32
  117. package/dist/sip-message/index.d.ts +0 -6
  118. package/dist/sip-message/index.js +0 -6
  119. /package/dist/{types.js → types.mjs} +0 -0
@@ -0,0 +1,104 @@
1
+ import { t as InboundMessage } from "./index-Cf2Cev52.cjs";
2
+ import { t as OutboundMessage } from "./index-XMDop59x.cjs";
3
+ import { t as DTMF } from "./dtmf-DcQ-5vSG.cjs";
4
+ import { t as Codec } from "./codec-C-VrtVkq.cjs";
5
+ import { t as SoftPhoneOptions } from "./types-DZxCsbZE.cjs";
6
+ import EventEmitter from "node:events";
7
+ import { TLSSocket } from "node:tls";
8
+ import { Buffer } from "node:buffer";
9
+ import dgram from "node:dgram";
10
+ import { RtpPacket, SrtpSession } from "werift-rtp";
11
+
12
+ //#region src/call-session/streamer.d.ts
13
+ declare class Streamer extends EventEmitter {
14
+ paused: boolean;
15
+ private callSession;
16
+ private buffer;
17
+ private originalBuffer;
18
+ constructor(callSession: CallSession, buffer: Buffer);
19
+ start(): void;
20
+ stop(): void;
21
+ pause(): void;
22
+ resume(): void;
23
+ get finished(): boolean;
24
+ private sendPacket;
25
+ }
26
+ //#endregion
27
+ //#region src/call-session/index.d.ts
28
+ type DtmfChar = (typeof DTMF.phoneChars)[number];
29
+ declare abstract class CallSession extends EventEmitter {
30
+ softphone: Softphone;
31
+ sipMessage: InboundMessage;
32
+ socket: dgram.Socket;
33
+ localPeer: string;
34
+ remotePeer: string;
35
+ remoteIP: string;
36
+ remotePort: number;
37
+ disposed: boolean;
38
+ srtpSession: SrtpSession;
39
+ encoder: {
40
+ encode: (pcm: Buffer) => Buffer;
41
+ };
42
+ decoder: {
43
+ decode: (audio: Buffer) => Buffer;
44
+ };
45
+ sdp: string;
46
+ ssrc: number;
47
+ sequenceNumber: number;
48
+ timestamp: number;
49
+ constructor(softphone: Softphone, sipMessage: InboundMessage);
50
+ set remoteKey(key: string);
51
+ get callId(): string | undefined;
52
+ send(data: string | Buffer): void;
53
+ hangup(): Promise<void>;
54
+ sendDTMF(char: DtmfChar): void;
55
+ sendDTMFs(s: string, delay?: number): Promise<void>;
56
+ streamAudio(input: Buffer): Streamer;
57
+ sendPacket(rtpPacket: RtpPacket): void;
58
+ protected startLocalServices(): void;
59
+ protected dispose(): void;
60
+ transfer(transferTo: string): Promise<void>;
61
+ toggleReceive(toReceive: boolean): Promise<void>;
62
+ hold(): Promise<void>;
63
+ unhold(): Promise<void>;
64
+ }
65
+ //#endregion
66
+ //#region src/call-session/outbound.d.ts
67
+ declare class OutboundCallSession extends CallSession {
68
+ constructor(softphone: Softphone, answerMessage: InboundMessage);
69
+ init(): void;
70
+ cancel(): Promise<void>;
71
+ get sessionId(): string;
72
+ get partyId(): string;
73
+ }
74
+ //#endregion
75
+ //#region src/index.d.ts
76
+ declare class Softphone extends EventEmitter {
77
+ sipInfo: SoftPhoneOptions;
78
+ client: TLSSocket;
79
+ codec: Codec;
80
+ fakeDomain: string;
81
+ fakeEmail: string;
82
+ private intervalHandle?;
83
+ private connected;
84
+ constructor(sipInfo: SoftPhoneOptions);
85
+ private instanceId;
86
+ private registerCallId;
87
+ register(): Promise<void>;
88
+ enableDebugMode(): void;
89
+ revoke(): void;
90
+ send(message: OutboundMessage, waitForReply?: true): Promise<InboundMessage>;
91
+ send(message: OutboundMessage, waitForReply?: false): Promise<undefined>;
92
+ answer(inviteMessage: InboundMessage): Promise<InboundCallSession>;
93
+ decline(inviteMessage: InboundMessage): Promise<void>;
94
+ call(callee: string): Promise<OutboundCallSession>;
95
+ }
96
+ //#endregion
97
+ //#region src/call-session/inbound.d.ts
98
+ declare class InboundCallSession extends CallSession {
99
+ constructor(softphone: Softphone, inviteMessage: InboundMessage);
100
+ answer(): Promise<void>;
101
+ }
102
+ //#endregion
103
+ export { Streamer as a, CallSession as i, Softphone as n, OutboundCallSession as r, InboundCallSession as t };
104
+ //# sourceMappingURL=inbound-DquvTSj1.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound-DquvTSj1.d.cts","names":[],"sources":["../src/call-session/streamer.ts","../src/call-session/index.ts","../src/call-session/outbound.ts","../src/index.ts","../src/call-session/inbound.ts"],"mappings":";;;;;;;;;;;;cAOM,QAAA,SAAiB,YAAA;EACd,MAAA;EAAA,QACC,WAAA;EAAA,QACA,MAAA;EAAA,QACA,cAAA;cAEW,WAAA,EAAa,WAAA,EAAa,MAAA,EAAQ,MAAA;EAO9C,KAAA,CAAA;EAMA,IAAA,CAAA;EAIA,KAAA,CAAA;EAIA,MAAA,CAAA;EAAA,IAKI,QAAA,CAAA;EAAA,QAOH,UAAA;AAAA;;;KC/BL,QAAA,WAAmB,IAAA,CAAK,UAAA;AAAA,uBAKd,WAAA,SAAoB,YAAA;EAC1B,SAAA,EAAW,SAAA;EACX,UAAA,EAAY,cAAA;EACZ,MAAA,EAAS,KAAA,CAAM,MAAA;EACf,SAAA;EACA,UAAA;EACA,QAAA;EACA,UAAA;EACA,QAAA;EACA,WAAA,EAAc,WAAA;EACd,OAAA;IAAW,MAAA,GAAS,GAAA,EAAK,MAAA,KAAW,MAAA;EAAA;EACpC,OAAA;IAAW,MAAA,GAAS,KAAA,EAAO,MAAA,KAAW,MAAA;EAAA;EACtC,GAAA;EAGA,IAAA;EACA,cAAA;EACA,SAAA;cAEY,SAAA,EAAW,SAAA,EAAW,UAAA,EAAY,cAAA;EAAA,IAgB1C,SAAA,CAAU,GAAA;EAAA,IAcV,MAAA,CAAA;EAIJ,IAAA,CAAK,IAAA,WAAe,MAAA;EAId,MAAA,CAAA,GAAM,OAAA;EAaZ,QAAA,CAAS,IAAA,EAAM,QAAA;EA8BT,SAAA,CAAU,CAAA,UAAW,KAAA,YAAW,OAAA;EAYtC,WAAA,CAAY,KAAA,EAAO,MAAA,GAAM,QAAA;EAOzB,UAAA,CAAW,SAAA,EAAW,SAAA;EAAA,UAOnB,kBAAA,CAAA;EAAA,UAsDA,OAAA,CAAA;EAQG,QAAA,CAAS,UAAA,WAAkB,OAAA;EAqC3B,aAAA,CAAc,SAAA,YAAkB,OAAA;EA+BhC,IAAA,CAAA,GAAI,OAAA;EAIJ,MAAA,CAAA,GAAM,OAAA;AAAA;;;cCnRf,mBAAA,SAA4B,WAAA;cACb,SAAA,EAAW,SAAA,EAAW,aAAA,EAAe,cAAA;EAUjD,IAAA,CAAA;EAiCM,MAAA,CAAA,GAAM,OAAA;EAAA,IAcR,SAAA,CAAA;EAAA,IAKA,OAAA,CAAA;AAAA;;;cC7CP,SAAA,SAAkB,YAAA;EACf,OAAA,EAAS,gBAAA;EACT,MAAA,EAAQ,SAAA;EACR,KAAA,EAAO,KAAA;EAEP,UAAA;EACA,SAAA;EAAA,QAEC,cAAA;EAAA,QACA,SAAA;cAEW,OAAA,EAAS,gBAAA;EAAA,QA+CpB,UAAA;EAAA,QACA,cAAA;EAEK,QAAA,CAAA,GAAQ,OAAA;EAuEd,eAAA,CAAA;EAWA,MAAA,CAAA;EAOA,IAAA,CACL,OAAA,EAAS,eAAA,EACT,YAAA,UACC,OAAA,CAAQ,cAAA;EACJ,IAAA,CACL,OAAA,EAAS,eAAA,EACT,YAAA,WACC,OAAA;EAyBU,MAAA,CAAO,aAAA,EAAe,cAAA,GAAc,OAAA,CAAA,kBAAA;EAOpC,OAAA,CAAQ,aAAA,EAAe,cAAA,GAAc,OAAA;EAKrC,IAAA,CAAK,MAAA,WAAc,OAAA,CAAA,mBAAA;AAAA;;;cCpN5B,kBAAA,SAA2B,WAAA;cACZ,SAAA,EAAW,SAAA,EAAW,aAAA,EAAe,cAAA;EAY3C,MAAA,CAAA,GAAM,OAAA;AAAA"}
@@ -1,8 +1,9 @@
1
- import SipMessage from "../sip-message.js";
1
+ import { t as SipMessage } from "./sip-message-PaPho4qU.mjs";
2
2
 
3
3
  //#region src/sip-message/outbound/index.d.ts
4
4
  declare class OutboundMessage extends SipMessage {
5
5
  constructor(subject?: string, headers?: {}, body?: string);
6
6
  }
7
7
  //#endregion
8
- export { OutboundMessage as default };
8
+ export { OutboundMessage as t };
9
+ //# sourceMappingURL=index--UjWgLK-.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index--UjWgLK-.d.mts","names":[],"sources":["../src/sip-message/outbound/index.ts"],"mappings":";;;cAEM,eAAA,SAAwB,UAAA;cACT,OAAA,WAAc,OAAA,OAAc,IAAA;AAAA"}
@@ -1,8 +1,9 @@
1
- import SipMessage from "../sip-message.js";
1
+ import { t as SipMessage } from "./sip-message-PaPho4qU.mjs";
2
2
 
3
3
  //#region src/sip-message/inbound/index.d.ts
4
4
  declare class InboundMessage extends SipMessage {
5
5
  static fromString(str: string): SipMessage;
6
6
  }
7
7
  //#endregion
8
- export { InboundMessage as default };
8
+ export { InboundMessage as t };
9
+ //# sourceMappingURL=index-BhN2W8AV.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BhN2W8AV.d.mts","names":[],"sources":["../src/sip-message/inbound/index.ts"],"mappings":";;;cAGM,cAAA,SAAuB,UAAA;EAAA,OACb,UAAA,CAAW,GAAA,WAAW,UAAA;AAAA"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,9 @@
1
+ import { t as SipMessage } from "./sip-message-B2D5MPBI.cjs";
2
+
3
+ //#region src/sip-message/inbound/index.d.ts
4
+ declare class InboundMessage extends SipMessage {
5
+ static fromString(str: string): SipMessage;
6
+ }
7
+ //#endregion
8
+ export { InboundMessage as t };
9
+ //# sourceMappingURL=index-Cf2Cev52.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Cf2Cev52.d.cts","names":[],"sources":["../src/sip-message/inbound/index.ts"],"mappings":";;;cAGM,cAAA,SAAuB,UAAA;EAAA,OACb,UAAA,CAAW,GAAA,WAAW,UAAA;AAAA"}
@@ -0,0 +1,9 @@
1
+ import { t as SipMessage } from "./sip-message-B2D5MPBI.cjs";
2
+
3
+ //#region src/sip-message/outbound/index.d.ts
4
+ declare class OutboundMessage extends SipMessage {
5
+ constructor(subject?: string, headers?: {}, body?: string);
6
+ }
7
+ //#endregion
8
+ export { OutboundMessage as t };
9
+ //# sourceMappingURL=index-XMDop59x.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-XMDop59x.d.cts","names":[],"sources":["../src/sip-message/outbound/index.ts"],"mappings":";;;cAEM,eAAA,SAAwB,UAAA;cACT,OAAA,WAAc,OAAA,OAAc,IAAA;AAAA"}
@@ -0,0 +1 @@
1
+ export { };
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
1
+ const require_chunk = require("./chunk-CKQMccvm.cjs");
2
2
  const require_codec = require("./codec.cjs");
3
3
  const require_utils = require("./utils.cjs");
4
4
  const require_sip_message_inbound_index = require("./sip-message/inbound/index.cjs");
@@ -9,11 +9,11 @@ require("./sip-message/index.cjs");
9
9
  const require_call_session_inbound = require("./call-session/inbound.cjs");
10
10
  const require_call_session_outbound = require("./call-session/outbound.cjs");
11
11
  let node_events = require("node:events");
12
- node_events = require_runtime.__toESM(node_events, 1);
12
+ node_events = require_chunk.__toESM(node_events, 1);
13
13
  let node_tls = require("node:tls");
14
- node_tls = require_runtime.__toESM(node_tls, 1);
14
+ node_tls = require_chunk.__toESM(node_tls, 1);
15
15
  let wait_for_async = require("wait-for-async");
16
- wait_for_async = require_runtime.__toESM(wait_for_async, 1);
16
+ wait_for_async = require_chunk.__toESM(wait_for_async, 1);
17
17
  //#region src/index.ts
18
18
  var Softphone = class extends node_events.default {
19
19
  sipInfo;
package/dist/index.d.cts CHANGED
@@ -1,31 +1,2 @@
1
- import InboundMessage from "./sip-message/inbound/index.cjs";
2
- import OutboundMessage from "./sip-message/outbound/index.cjs";
3
- import OutboundCallSession from "./call-session/outbound.cjs";
4
- import Codec from "./codec.cjs";
5
- import { SoftPhoneOptions } from "./types.cjs";
6
- import InboundCallSession from "./call-session/inbound.cjs";
7
- import EventEmitter from "node:events";
8
- import { TLSSocket } from "node:tls";
9
-
10
- //#region src/index.d.ts
11
- declare class Softphone extends EventEmitter {
12
- sipInfo: SoftPhoneOptions;
13
- client: TLSSocket;
14
- codec: Codec;
15
- fakeDomain: string;
16
- fakeEmail: string;
17
- private intervalHandle?;
18
- private connected;
19
- constructor(sipInfo: SoftPhoneOptions);
20
- private instanceId;
21
- private registerCallId;
22
- register(): Promise<void>;
23
- enableDebugMode(): void;
24
- revoke(): void;
25
- send(message: OutboundMessage, waitForReply?: true): Promise<InboundMessage>;
26
- send(message: OutboundMessage, waitForReply?: false): Promise<undefined>;
27
- answer(inviteMessage: InboundMessage): Promise<InboundCallSession>;
28
- decline(inviteMessage: InboundMessage): Promise<void>;
29
- call(callee: string): Promise<OutboundCallSession>;
30
- }
1
+ import { n as Softphone } from "./inbound-DquvTSj1.cjs";
31
2
  export = Softphone;
@@ -0,0 +1,2 @@
1
+ import { n as Softphone } from "./inbound--wGoGqLS.mjs";
2
+ export { Softphone as default };
@@ -1,12 +1,12 @@
1
- import Codec from "./codec.js";
2
- import { branch, generateAuthorization, localKey, randomInt, uuid } from "./utils.js";
3
- import InboundMessage from "./sip-message/inbound/index.js";
4
- import OutboundMessage from "./sip-message/outbound/index.js";
5
- import RequestMessage from "./sip-message/outbound/request.js";
6
- import ResponseMessage from "./sip-message/outbound/response.js";
7
- import "./sip-message/index.js";
8
- import InboundCallSession from "./call-session/inbound.js";
9
- import OutboundCallSession from "./call-session/outbound.js";
1
+ import Codec from "./codec.mjs";
2
+ import { branch, generateAuthorization, localKey, randomInt, uuid } from "./utils.mjs";
3
+ import InboundMessage from "./sip-message/inbound/index.mjs";
4
+ import OutboundMessage from "./sip-message/outbound/index.mjs";
5
+ import RequestMessage from "./sip-message/outbound/request.mjs";
6
+ import ResponseMessage from "./sip-message/outbound/response.mjs";
7
+ import "./sip-message/index.mjs";
8
+ import InboundCallSession from "./call-session/inbound.mjs";
9
+ import OutboundCallSession from "./call-session/outbound.mjs";
10
10
  import EventEmitter from "node:events";
11
11
  import tls from "node:tls";
12
12
  import waitFor from "wait-for-async";
@@ -170,3 +170,5 @@ a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:${localKey}
170
170
  };
171
171
  //#endregion
172
172
  export { Softphone as default };
173
+
174
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import EventEmitter from \"node:events\";\nimport tls, { type TLSSocket } from \"node:tls\";\n\nimport waitFor from \"wait-for-async\";\n\nimport InboundCallSession from \"./call-session/inbound.js\";\nimport OutboundCallSession from \"./call-session/outbound.js\";\nimport Codec from \"./codec.js\";\nimport {\n InboundMessage,\n OutboundMessage,\n RequestMessage,\n ResponseMessage,\n} from \"./sip-message/index.js\";\nimport type { SoftPhoneOptions } from \"./types.js\";\nimport {\n branch,\n generateAuthorization,\n localKey,\n randomInt,\n uuid,\n} from \"./utils.js\";\n\nclass Softphone extends EventEmitter {\n public sipInfo: SoftPhoneOptions;\n public client: TLSSocket;\n public codec: Codec;\n\n public fakeDomain = `${uuid()}.invalid`;\n public fakeEmail = `${uuid()}@${this.fakeDomain}`;\n\n private intervalHandle?: NodeJS.Timeout;\n private connected = false;\n\n public constructor(sipInfo: SoftPhoneOptions) {\n super();\n if (sipInfo.codec === undefined) {\n sipInfo.codec = \"OPUS/16000\";\n }\n this.codec = new Codec(sipInfo.codec);\n this.sipInfo = sipInfo;\n if (this.sipInfo.domain === undefined) {\n this.sipInfo.domain = \"sip.ringcentral.com\";\n }\n if (this.sipInfo.outboundProxy === undefined) {\n this.sipInfo.outboundProxy = \"sip10.ringcentral.com:5096\";\n }\n const tokens = this.sipInfo.outboundProxy!.split(\":\");\n this.client = tls.connect(\n {\n host: tokens[0],\n port: parseInt(tokens[1], 10),\n rejectUnauthorized: !this.sipInfo.ignoreTlsCertErrors,\n },\n () => {\n this.connected = true;\n },\n );\n\n let cache = \"\";\n this.client.on(\"data\", (data) => {\n cache += data.toString(\"utf-8\");\n if (!cache.endsWith(\"\\r\\n\")) {\n return; // haven't received a complete message yet\n }\n // received two empty body messages\n const tempMessages = cache\n .split(\"\\r\\nContent-Length: 0\\r\\n\\r\\n\")\n .filter((message) => message.trim() !== \"\");\n cache = \"\";\n for (let i = 0; i < tempMessages.length; i++) {\n if (!tempMessages[i].includes(\"Content-Length: \")) {\n tempMessages[i] = `${tempMessages[i]}\\r\\nContent-Length: 0`;\n }\n }\n for (const message of tempMessages) {\n this.emit(\"message\", InboundMessage.fromString(message));\n }\n });\n }\n\n private instanceId = uuid();\n private registerCallId = uuid();\n\n public async register() {\n if (!this.connected) {\n await waitFor({\n interval: 100,\n times: 100,\n condition: () => this.connected,\n });\n if (!this.connected) {\n throw new Error(\"Failed to register: connect to TLS timeout\");\n }\n }\n const sipRegister = async () => {\n const fromTag = uuid();\n const requestMessage = new RequestMessage(\n `REGISTER sip:${this.sipInfo.domain} SIP/2.0`,\n {\n Via: `SIP/2.0/TLS ${this.client.localAddress}:${this.client.localPort};rport;branch=${branch()};alias`,\n \"Max-Forwards\": \"70\",\n From: `<sip:${this.sipInfo.username}@${this.sipInfo.domain}>;tag=${fromTag}`,\n To: `<sip:${this.sipInfo.username}@${this.sipInfo.domain}>`,\n \"Call-ID\": this.registerCallId,\n Contact: `<sip:${this.sipInfo.username}@${this.client.localAddress}:${this.client.localPort};transport=TLS;ob>;reg-id=1;+sip.instance=\"<urn:uuid:${this.instanceId}>\"`,\n Expires: 3600,\n Allow:\n \"PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS\",\n },\n );\n const inboundMessage = await this.send(requestMessage, true);\n if (inboundMessage.subject.startsWith(\"SIP/2.0 200 \")) {\n // sometimes the server will return 200 OK directly\n return;\n }\n const wwwAuth = inboundMessage.getHeader(\"Www-Authenticate\")!;\n const nonce = wwwAuth.match(/, nonce=\"(.+?)\"/)![1];\n const newMessage = requestMessage.fork();\n newMessage.headers.Authorization = generateAuthorization(\n this.sipInfo,\n nonce,\n \"REGISTER\",\n );\n const message = await this.send(newMessage, true);\n if (!message.subject.startsWith(\"SIP/2.0 200 \")) {\n throw new Error(`Failed to register: ${message.subject}`);\n }\n };\n await sipRegister();\n this.intervalHandle = setInterval(\n () => {\n sipRegister().catch((error) => {\n this.emit(\"registrationError\", error);\n });\n },\n 30 * 1000, // refresh registration every 30 seconds\n );\n this.on(\"message\", (inboundMessage) => {\n if (!inboundMessage.subject.startsWith(\"INVITE sip:\")) {\n return;\n }\n const outboundMessage = new OutboundMessage(\"SIP/2.0 100 Trying\", {\n Via: inboundMessage.headers.Via,\n \"Call-ID\": inboundMessage.getHeader(\"Call-ID\"),\n From: inboundMessage.headers.From,\n To: inboundMessage.headers.To,\n CSeq: inboundMessage.headers.CSeq,\n \"Content-Length\": \"0\",\n });\n this.send(outboundMessage);\n this.emit(\"invite\", inboundMessage);\n });\n }\n\n public enableDebugMode() {\n this.on(\"message\", (message) =>\n console.log(`Receiving...(${new Date()})\\n${message.toString()}`),\n );\n const tlsWrite = this.client.write.bind(this.client);\n this.client.write = (message) => {\n console.log(`Sending...(${new Date()})\\n${message}`);\n return tlsWrite(message);\n };\n }\n\n public revoke() {\n clearInterval(this.intervalHandle);\n this.removeAllListeners();\n this.client.removeAllListeners();\n this.client.destroy();\n }\n\n public send(\n message: OutboundMessage,\n waitForReply?: true,\n ): Promise<InboundMessage>;\n public send(\n message: OutboundMessage,\n waitForReply?: false,\n ): Promise<undefined>;\n public send(message: OutboundMessage, waitForReply = false) {\n this.client.write(message.toString());\n if (!waitForReply) {\n return Promise.resolve(undefined);\n }\n return new Promise<InboundMessage>((resolve) => {\n const messageListerner = (inboundMessage: InboundMessage) => {\n // \"12563 INVITE\" vs \"12563 ACK\"\n if (\n inboundMessage.headers.CSeq.trim().split(/\\s+/)[0] !==\n message.headers.CSeq.trim().split(/\\s+/)[0]\n ) {\n return;\n }\n if (inboundMessage.subject.startsWith(\"SIP/2.0 100 \")) {\n return; // ignore\n }\n this.off(\"message\", messageListerner);\n resolve(inboundMessage);\n };\n this.on(\"message\", messageListerner);\n });\n }\n\n public async answer(inviteMessage: InboundMessage) {\n const inboundCallSession = new InboundCallSession(this, inviteMessage);\n await inboundCallSession.answer();\n return inboundCallSession;\n }\n\n // decline an inbound call\n public async decline(inviteMessage: InboundMessage) {\n const newMessage = new ResponseMessage(inviteMessage, 603);\n await this.send(newMessage);\n }\n\n public async call(callee: string) {\n const offerSDP = `\nv=0\no=- ${Date.now()} 0 IN IP4 ${this.client.localAddress}\ns=rc-softphone-ts\nc=IN IP4 ${this.client.localAddress}\nt=0 0\nm=audio ${randomInt()} RTP/SAVP ${this.codec.id} 101\na=rtpmap:${this.codec.id} ${this.codec.name}\na=rtpmap:101 telephone-event/8000\na=fmtp:101 0-15\na=sendrecv\na=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:${localKey}\n `.trim();\n const inviteMessage = new RequestMessage(\n `INVITE sip:${callee}@${this.sipInfo.domain} SIP/2.0`,\n {\n Via: `SIP/2.0/TLS ${this.client.localAddress}:${this.client.localPort};rport;branch=${branch()};alias`,\n \"Max-Forwards\": 70,\n From: `<sip:${this.sipInfo.username}@${this.sipInfo.domain}>;tag=${uuid()}`,\n To: `<sip:${callee}@${this.sipInfo.domain}>`,\n Contact: ` <sip:${this.sipInfo.username}@${this.client.localAddress}:${this.client.localPort};transport=TLS;ob>`,\n \"Call-ID\": uuid(),\n Route: `<sip:${this.sipInfo.outboundProxy};transport=tls;lr>`,\n Allow: `PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS`,\n Supported: `replaces, 100rel, timer, norefersub`,\n \"Session-Expires\": 1800,\n \"Min-SE\": 90,\n \"Content-Type\": \"application/sdp\",\n },\n offerSDP,\n );\n const inboundMessage = await this.send(inviteMessage, true);\n const proxyAuthenticate = inboundMessage.getHeader(\"Proxy-Authenticate\")!;\n const nonce = proxyAuthenticate.match(/, nonce=\"(.+?)\"/)![1];\n const newMessage = inviteMessage.fork();\n newMessage.headers[\"Proxy-Authorization\"] = generateAuthorization(\n this.sipInfo,\n nonce,\n \"INVITE\",\n );\n const progressMessage = await this.send(newMessage, true);\n const outboundCallSession = new OutboundCallSession(this, progressMessage);\n outboundCallSession.sdp = offerSDP;\n return outboundCallSession;\n }\n}\n\nexport default Softphone;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import OutboundMessage from "./index.js";
1
+ import { t as OutboundMessage } from "./index-XMDop59x.cjs";
2
2
 
3
3
  //#region src/sip-message/outbound/request.d.ts
4
4
  declare class RequestMessage extends OutboundMessage {
@@ -7,4 +7,5 @@ declare class RequestMessage extends OutboundMessage {
7
7
  fork(): RequestMessage;
8
8
  }
9
9
  //#endregion
10
- export { RequestMessage as default };
10
+ export { RequestMessage as t };
11
+ //# sourceMappingURL=request-B_auLSJn.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-B_auLSJn.d.cts","names":[],"sources":["../src/sip-message/outbound/request.ts"],"mappings":";;;cAKM,cAAA,SAAuB,eAAA;cACR,OAAA,WAAc,OAAA,OAAc,IAAA;EAOxC,OAAA,CAAA;EAIA,IAAA,CAAA,GAAI,cAAA;AAAA"}
@@ -0,0 +1,11 @@
1
+ import { t as OutboundMessage } from "./index--UjWgLK-.mjs";
2
+
3
+ //#region src/sip-message/outbound/request.d.ts
4
+ declare class RequestMessage extends OutboundMessage {
5
+ constructor(subject?: string, headers?: {}, body?: string);
6
+ newCseq(): void;
7
+ fork(): RequestMessage;
8
+ }
9
+ //#endregion
10
+ export { RequestMessage as t };
11
+ //# sourceMappingURL=request-pBe7_mYv.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-pBe7_mYv.d.mts","names":[],"sources":["../src/sip-message/outbound/request.ts"],"mappings":";;;cAKM,cAAA,SAAuB,eAAA;cACR,OAAA,WAAc,OAAA,OAAc,IAAA;EAOxC,OAAA,CAAA;EAIA,IAAA,CAAA,GAAI,cAAA;AAAA"}
@@ -1,9 +1,10 @@
1
- import InboundMessage from "../inbound/index.js";
2
- import OutboundMessage from "./index.js";
1
+ import { t as InboundMessage } from "./index-BhN2W8AV.mjs";
2
+ import { t as OutboundMessage } from "./index--UjWgLK-.mjs";
3
3
 
4
4
  //#region src/sip-message/outbound/response.d.ts
5
5
  declare class ResponseMessage extends OutboundMessage {
6
6
  constructor(inboundMessage: InboundMessage, responseCode: number, headers?: {}, body?: string);
7
7
  }
8
8
  //#endregion
9
- export { ResponseMessage as default };
9
+ export { ResponseMessage as t };
10
+ //# sourceMappingURL=response-LRRpY8lX.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-LRRpY8lX.d.mts","names":[],"sources":["../src/sip-message/outbound/response.ts"],"mappings":";;;;cAIM,eAAA,SAAwB,eAAA;cAE1B,cAAA,EAAgB,cAAA,EAChB,YAAA,UACA,OAAA,OACA,IAAA;AAAA"}
@@ -0,0 +1,10 @@
1
+ import { t as InboundMessage } from "./index-Cf2Cev52.cjs";
2
+ import { t as OutboundMessage } from "./index-XMDop59x.cjs";
3
+
4
+ //#region src/sip-message/outbound/response.d.ts
5
+ declare class ResponseMessage extends OutboundMessage {
6
+ constructor(inboundMessage: InboundMessage, responseCode: number, headers?: {}, body?: string);
7
+ }
8
+ //#endregion
9
+ export { ResponseMessage as t };
10
+ //# sourceMappingURL=response-ReKvb5x9.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-ReKvb5x9.d.cts","names":[],"sources":["../src/sip-message/outbound/response.ts"],"mappings":";;;;cAIM,eAAA,SAAwB,eAAA;cAE1B,cAAA,EAAgB,cAAA,EAChB,YAAA,UACA,OAAA,OACA,IAAA;AAAA"}
@@ -1,7 +1,2 @@
1
- import SipMessage from "../sip-message.cjs";
2
-
3
- //#region src/sip-message/inbound/index.d.ts
4
- declare class InboundMessage extends SipMessage {
5
- static fromString(str: string): SipMessage;
6
- }
1
+ import { t as InboundMessage } from "../../index-Cf2Cev52.cjs";
7
2
  export = InboundMessage;
@@ -0,0 +1,2 @@
1
+ import { t as InboundMessage } from "../../index-BhN2W8AV.mjs";
2
+ export { InboundMessage as default };
@@ -1,5 +1,5 @@
1
- import { uuid } from "../../utils.js";
2
- import SipMessage from "../sip-message.js";
1
+ import { uuid } from "../../utils.mjs";
2
+ import SipMessage from "../sip-message.mjs";
3
3
  //#region src/sip-message/inbound/index.ts
4
4
  var InboundMessage = class extends SipMessage {
5
5
  static fromString(str) {
@@ -15,3 +15,5 @@ var InboundMessage = class extends SipMessage {
15
15
  };
16
16
  //#endregion
17
17
  export { InboundMessage as default };
18
+
19
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/sip-message/inbound/index.ts"],"sourcesContent":["import { uuid } from \"../../utils.js\";\nimport SipMessage from \"../sip-message.js\";\n\nclass InboundMessage extends SipMessage {\n public static fromString(str: string) {\n const sipMessage = new SipMessage();\n const [init, ...body] = str.split(\"\\r\\n\\r\\n\");\n sipMessage.body = body.join(\"\\r\\n\\r\\n\");\n const [subject, ...headers] = init.split(\"\\r\\n\");\n sipMessage.subject = subject;\n sipMessage.headers = Object.fromEntries(\n headers.map((line) => line.split(\": \")),\n );\n if (sipMessage.headers.To && !sipMessage.headers.To.includes(\";tag=\")) {\n sipMessage.headers.To += `;tag=${uuid()}`; // generate local tag\n }\n return sipMessage;\n }\n}\n\nexport default InboundMessage;\n"],"mappings":";;;AAGA,IAAM,iBAAN,cAA6B,WAAW;CACtC,OAAc,WAAW,KAAa;EACpC,MAAM,aAAa,IAAI,YAAY;EACnC,MAAM,CAAC,MAAM,GAAG,QAAQ,IAAI,MAAM,WAAW;AAC7C,aAAW,OAAO,KAAK,KAAK,WAAW;EACvC,MAAM,CAAC,SAAS,GAAG,WAAW,KAAK,MAAM,OAAO;AAChD,aAAW,UAAU;AACrB,aAAW,UAAU,OAAO,YAC1B,QAAQ,KAAK,SAAS,KAAK,MAAM,KAAK,CAAC,CACxC;AACD,MAAI,WAAW,QAAQ,MAAM,CAAC,WAAW,QAAQ,GAAG,SAAS,QAAQ,CACnE,YAAW,QAAQ,MAAM,QAAQ,MAAM;AAEzC,SAAO"}
@@ -1,6 +1,6 @@
1
- import SipMessage from "./sip-message.cjs";
2
- import InboundMessage from "./inbound/index.cjs";
3
- import OutboundMessage from "./outbound/index.cjs";
4
- import RequestMessage from "./outbound/request.cjs";
5
- import ResponseMessage from "./outbound/response.cjs";
1
+ import { t as SipMessage } from "../sip-message-B2D5MPBI.cjs";
2
+ import { t as InboundMessage } from "../index-Cf2Cev52.cjs";
3
+ import { t as OutboundMessage } from "../index-XMDop59x.cjs";
4
+ import { t as RequestMessage } from "../request-B_auLSJn.cjs";
5
+ import { t as ResponseMessage } from "../response-ReKvb5x9.cjs";
6
6
  export { InboundMessage, OutboundMessage, RequestMessage, ResponseMessage, SipMessage };
@@ -0,0 +1,6 @@
1
+ import { t as SipMessage } from "../sip-message-PaPho4qU.mjs";
2
+ import { t as InboundMessage } from "../index-BhN2W8AV.mjs";
3
+ import { t as OutboundMessage } from "../index--UjWgLK-.mjs";
4
+ import { t as RequestMessage } from "../request-pBe7_mYv.mjs";
5
+ import { t as ResponseMessage } from "../response-LRRpY8lX.mjs";
6
+ export { InboundMessage, OutboundMessage, RequestMessage, ResponseMessage, SipMessage };
@@ -0,0 +1,6 @@
1
+ import SipMessage from "./sip-message.mjs";
2
+ import InboundMessage from "./inbound/index.mjs";
3
+ import OutboundMessage from "./outbound/index.mjs";
4
+ import RequestMessage from "./outbound/request.mjs";
5
+ import ResponseMessage from "./outbound/response.mjs";
6
+ export { InboundMessage, OutboundMessage, RequestMessage, ResponseMessage, SipMessage };
@@ -1,7 +1,2 @@
1
- import SipMessage from "../sip-message.cjs";
2
-
3
- //#region src/sip-message/outbound/index.d.ts
4
- declare class OutboundMessage extends SipMessage {
5
- constructor(subject?: string, headers?: {}, body?: string);
6
- }
1
+ import { t as OutboundMessage } from "../../index-XMDop59x.cjs";
7
2
  export = OutboundMessage;
@@ -0,0 +1,2 @@
1
+ import { t as OutboundMessage } from "../../index--UjWgLK-.mjs";
2
+ export { OutboundMessage as default };
@@ -1,4 +1,4 @@
1
- import SipMessage from "../sip-message.js";
1
+ import SipMessage from "../sip-message.mjs";
2
2
  //#region src/sip-message/outbound/index.ts
3
3
  var OutboundMessage = class extends SipMessage {
4
4
  constructor(subject = "", headers = {}, body = "") {
@@ -9,3 +9,5 @@ var OutboundMessage = class extends SipMessage {
9
9
  };
10
10
  //#endregion
11
11
  export { OutboundMessage as default };
12
+
13
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/sip-message/outbound/index.ts"],"sourcesContent":["import SipMessage from \"../sip-message.js\";\n\nclass OutboundMessage extends SipMessage {\n public constructor(subject = \"\", headers = {}, body = \"\") {\n super(subject, headers, body);\n this.headers[\"Content-Length\"] = this.body.length.toString();\n this.headers[\"User-Agent\"] = \"ringcentral-softphone-ts\";\n }\n}\n\nexport default OutboundMessage;\n"],"mappings":";;AAEA,IAAM,kBAAN,cAA8B,WAAW;CACvC,YAAmB,UAAU,IAAI,UAAU,EAAE,EAAE,OAAO,IAAI;AACxD,QAAM,SAAS,SAAS,KAAK;AAC7B,OAAK,QAAQ,oBAAoB,KAAK,KAAK,OAAO,UAAU;AAC5D,OAAK,QAAQ,gBAAgB"}
@@ -1,9 +1,2 @@
1
- import OutboundMessage from "./index.cjs";
2
-
3
- //#region src/sip-message/outbound/request.d.ts
4
- declare class RequestMessage extends OutboundMessage {
5
- constructor(subject?: string, headers?: {}, body?: string);
6
- newCseq(): void;
7
- fork(): RequestMessage;
8
- }
1
+ import { t as RequestMessage } from "../../request-B_auLSJn.cjs";
9
2
  export = RequestMessage;
@@ -0,0 +1,2 @@
1
+ import { t as RequestMessage } from "../../request-pBe7_mYv.mjs";
2
+ export { RequestMessage as default };
@@ -1,5 +1,5 @@
1
- import { branch } from "../../utils.js";
2
- import OutboundMessage from "./index.js";
1
+ import { branch } from "../../utils.mjs";
2
+ import OutboundMessage from "./index.mjs";
3
3
  //#region src/sip-message/outbound/request.ts
4
4
  let cseq = Math.floor(Math.random() * 1e4);
5
5
  var RequestMessage = class RequestMessage extends OutboundMessage {
@@ -19,3 +19,5 @@ var RequestMessage = class RequestMessage extends OutboundMessage {
19
19
  };
20
20
  //#endregion
21
21
  export { RequestMessage as default };
22
+
23
+ //# sourceMappingURL=request.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.mjs","names":[],"sources":["../../../src/sip-message/outbound/request.ts"],"sourcesContent":["import { branch } from \"../../utils.js\";\nimport OutboundMessage from \"./index.js\";\n\nlet cseq = Math.floor(Math.random() * 10000);\n\nclass RequestMessage extends OutboundMessage {\n public constructor(subject = \"\", headers = {}, body = \"\") {\n super(subject, headers, body);\n if (this.headers.CSeq === undefined) {\n this.newCseq();\n }\n }\n\n public newCseq() {\n this.headers.CSeq = `${++cseq} ${this.subject.split(\" \")[0]}`;\n }\n\n public fork() {\n const newMessage = new RequestMessage(\n this.subject,\n { ...this.headers },\n this.body,\n );\n newMessage.newCseq();\n if (newMessage.headers.Via) {\n newMessage.headers.Via = newMessage.headers.Via.replace(\n /;branch=.+?$/,\n `;branch=${branch()}`,\n );\n }\n return newMessage;\n }\n}\n\nexport default RequestMessage;\n"],"mappings":";;;AAGA,IAAI,OAAO,KAAK,MAAM,KAAK,QAAQ,GAAG,IAAM;AAE5C,IAAM,iBAAN,MAAM,uBAAuB,gBAAgB;CAC3C,YAAmB,UAAU,IAAI,UAAU,EAAE,EAAE,OAAO,IAAI;AACxD,QAAM,SAAS,SAAS,KAAK;AAC7B,MAAI,KAAK,QAAQ,SAAS,KAAA,EACxB,MAAK,SAAS;;CAIlB,UAAiB;AACf,OAAK,QAAQ,OAAO,GAAG,EAAE,KAAK,GAAG,KAAK,QAAQ,MAAM,IAAI,CAAC;;CAG3D,OAAc;EACZ,MAAM,aAAa,IAAI,eACrB,KAAK,SACL,EAAE,GAAG,KAAK,SAAS,EACnB,KAAK,KACN;AACD,aAAW,SAAS;AACpB,MAAI,WAAW,QAAQ,IACrB,YAAW,QAAQ,MAAM,WAAW,QAAQ,IAAI,QAC9C,gBACA,WAAW,QAAQ,GACpB;AAEH,SAAO"}
@@ -1,8 +1,2 @@
1
- import InboundMessage from "../inbound/index.cjs";
2
- import OutboundMessage from "./index.cjs";
3
-
4
- //#region src/sip-message/outbound/response.d.ts
5
- declare class ResponseMessage extends OutboundMessage {
6
- constructor(inboundMessage: InboundMessage, responseCode: number, headers?: {}, body?: string);
7
- }
1
+ import { t as ResponseMessage } from "../../response-ReKvb5x9.cjs";
8
2
  export = ResponseMessage;
@@ -0,0 +1,2 @@
1
+ import { t as ResponseMessage } from "../../response-LRRpY8lX.mjs";
2
+ export { ResponseMessage as default };
@@ -1,5 +1,5 @@
1
- import OutboundMessage from "./index.js";
2
- import responseCodes from "../response-codes.js";
1
+ import OutboundMessage from "./index.mjs";
2
+ import responseCodes from "../response-codes.mjs";
3
3
  //#region src/sip-message/outbound/response.ts
4
4
  var ResponseMessage = class extends OutboundMessage {
5
5
  constructor(inboundMessage, responseCode, headers = {}, body = "") {
@@ -24,3 +24,5 @@ var ResponseMessage = class extends OutboundMessage {
24
24
  };
25
25
  //#endregion
26
26
  export { ResponseMessage as default };
27
+
28
+ //# sourceMappingURL=response.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.mjs","names":[],"sources":["../../../src/sip-message/outbound/response.ts"],"sourcesContent":["import type InboundMessage from \"../inbound/index.js\";\nimport responseCodes from \"../response-codes.js\";\nimport OutboundMessage from \"./index.js\";\n\nclass ResponseMessage extends OutboundMessage {\n public constructor(\n inboundMessage: InboundMessage,\n responseCode: number,\n headers = {},\n body = \"\",\n ) {\n super(undefined, { ...headers }, body);\n this.subject = `SIP/2.0 ${responseCode} ${responseCodes[responseCode]}`;\n const requiredKeys = new Set([\"via\", \"from\", \"to\", \"call-id\", \"cseq\"]);\n const allKeys = Object.keys(inboundMessage.headers).reduce(\n (acc, key) => {\n acc[key.toLowerCase()] = key;\n return acc;\n },\n {} as Record<string, string>,\n );\n for (const key of requiredKeys) {\n if (allKeys[key]) {\n const originalKey = allKeys[key];\n this.headers[originalKey] = inboundMessage.headers[originalKey];\n }\n }\n }\n}\n\nexport default ResponseMessage;\n"],"mappings":";;;AAIA,IAAM,kBAAN,cAA8B,gBAAgB;CAC5C,YACE,gBACA,cACA,UAAU,EAAE,EACZ,OAAO,IACP;AACA,QAAM,KAAA,GAAW,EAAE,GAAG,SAAS,EAAE,KAAK;AACtC,OAAK,UAAU,WAAW,aAAa,GAAG,cAAc;EACxD,MAAM,eAAe,IAAI,IAAI;GAAC;GAAO;GAAQ;GAAM;GAAW;GAAO,CAAC;EACtE,MAAM,UAAU,OAAO,KAAK,eAAe,QAAQ,CAAC,QACjD,KAAK,QAAQ;AACZ,OAAI,IAAI,aAAa,IAAI;AACzB,UAAO;KAET,EAAE,CACH;AACD,OAAK,MAAM,OAAO,aAChB,KAAI,QAAQ,MAAM;GAChB,MAAM,cAAc,QAAQ;AAC5B,QAAK,QAAQ,eAAe,eAAe,QAAQ"}
@@ -2,4 +2,5 @@
2
2
  declare const responseCodes: {
3
3
  [key: number]: string;
4
4
  };
5
- export = responseCodes;
5
+ export = responseCodes;
6
+ //# sourceMappingURL=response-codes.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-codes.d.cts","names":[],"sources":["../../src/sip-message/response-codes.ts"],"mappings":";cACM,aAAA;EAAA,CACH,GAAA;AAAA;AAAA"}
@@ -3,4 +3,5 @@ declare const responseCodes: {
3
3
  [key: number]: string;
4
4
  };
5
5
  //#endregion
6
- export { responseCodes as default };
6
+ export { responseCodes as default };
7
+ //# sourceMappingURL=response-codes.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-codes.d.mts","names":[],"sources":["../../src/sip-message/response-codes.ts"],"mappings":";cACM,aAAA;EAAA,CACH,GAAA;AAAA"}
@@ -80,3 +80,5 @@ const responseCodes = {
80
80
  };
81
81
  //#endregion
82
82
  export { responseCodes as default };
83
+
84
+ //# sourceMappingURL=response-codes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-codes.mjs","names":[],"sources":["../../src/sip-message/response-codes.ts"],"sourcesContent":["// Ref: https://en.wikipedia.org/wiki/List_of_SIP_response_codes'\nconst responseCodes: {\n [key: number]: string;\n} = {\n 100: \"Trying\",\n 180: \"Ringing\",\n 181: \"Call is Being Forwarded\",\n 182: \"Queued\",\n 183: \"Session Progress\",\n 199: \"Early Dialog Terminated\",\n 200: \"OK\",\n 202: \"Accepted\",\n 204: \"No Notification\",\n 300: \"Multiple Choices\",\n 301: \"Moved Permanently\",\n 302: \"Moved Temporarily\",\n 305: \"Use Proxy\",\n 380: \"Alternative Service\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 402: \"Payment Required\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 406: \"Not Acceptable\",\n 407: \"Proxy Authentication Required\",\n 408: \"Request Timeout\",\n 409: \"Conflict\",\n 410: \"Gone\",\n 411: \"Length Required\",\n 412: \"Conditional Request Failed\",\n 413: \"Request Entity Too Large\",\n 414: \"Request-URI Too Long\",\n 415: \"Unsupported Media Type\",\n 416: \"Unsupported URI Scheme\",\n 417: \"Unknown Resource-Priority\",\n 420: \"Bad Extension\",\n 421: \"Extension Required\",\n 422: \"Session Interval Too Small\",\n 423: \"Interval Too Brief\",\n 424: \"Bad Location Information\",\n 425: \"Bad Alert Message\",\n 428: \"Use Identity Header\",\n 429: \"Provide Referrer Identity\",\n 430: \"Flow Failed\",\n 433: \"Anonymity Disallowed\",\n 436: \"Bad Identity-Info\",\n 437: \"Unsupported Certificate\",\n 438: \"Invalid Identity Header\",\n 439: \"First Hop Lacks Outbound Support\",\n 440: \"Max-Breadth Exceeded\",\n 469: \"Bad Info Package\",\n 470: \"Consent Needed\",\n 480: \"Temporarily Unavailable\",\n 481: \"Call/Transaction Does Not Exist\",\n 482: \"Loop Detected\",\n 483: \"Too Many Hops\",\n 484: \"Address Incomplete\",\n 485: \"Ambiguous\",\n 486: \"Busy Here\",\n 487: \"Request Terminated\",\n 488: \"Not Acceptable Here\",\n 489: \"Bad Event\",\n 491: \"Request Pending\",\n 493: \"Undecipherable\",\n 494: \"Security Agreement Required\",\n 500: \"Server Internal Error\",\n 501: \"Not Implemented\",\n 502: \"Bad Gateway\",\n 503: \"Service Unavailable\",\n 504: \"Server Time-out\",\n 505: \"Version Not Supported\",\n 513: \"Message Too Large\",\n 555: \"Push Notification Service Not Supported\",\n 580: \"Precondition Failure\",\n 600: \"Busy Everywhere\",\n 603: \"Decline\",\n 604: \"Does Not Exist Anywhere\",\n 606: \"Not Acceptable\",\n 607: \"Unwanted\",\n 608: \"Rejected\",\n};\n\nexport default responseCodes;\n"],"mappings":";AACA,MAAM,gBAEF;CACF,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACN"}
@@ -1,12 +1,2 @@
1
- //#region src/sip-message/sip-message.d.ts
2
- declare class SipMessage {
3
- subject: string;
4
- headers: {
5
- [key: string]: string;
6
- };
7
- body: string;
8
- constructor(subject?: string, headers?: {}, body?: string);
9
- toString(): string;
10
- getHeader(key: string): string | undefined;
11
- }
1
+ import { t as SipMessage } from "../sip-message-B2D5MPBI.cjs";
12
2
  export = SipMessage;
@@ -0,0 +1,2 @@
1
+ import { t as SipMessage } from "../sip-message-PaPho4qU.mjs";
2
+ export { SipMessage as default };
@@ -24,3 +24,5 @@ var SipMessage = class {
24
24
  };
25
25
  //#endregion
26
26
  export { SipMessage as default };
27
+
28
+ //# sourceMappingURL=sip-message.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sip-message.mjs","names":[],"sources":["../../src/sip-message/sip-message.ts"],"sourcesContent":["class SipMessage {\n public subject: string;\n public headers: {\n [key: string]: string;\n };\n public body: string;\n\n public constructor(subject = \"\", headers = {}, body = \"\") {\n this.subject = subject;\n this.headers = headers;\n this.body = body\n .trim()\n .split(/[\\r\\n]+/)\n .join(\"\\r\\n\");\n if (this.body.length > 0) {\n this.body += \"\\r\\n\";\n }\n }\n\n public toString() {\n const r = [\n this.subject,\n ...Object.keys(this.headers).map((key) => `${key}: ${this.headers[key]}`),\n \"\",\n this.body,\n ].join(\"\\r\\n\");\n return r;\n }\n\n public getHeader(key: string): string | undefined {\n const foundKey = Object.keys(this.headers).find(\n (k) => k.toLowerCase() === key.toLowerCase(),\n );\n if (foundKey) {\n return this.headers[foundKey];\n }\n }\n}\n\nexport default SipMessage;\n"],"mappings":";AAAA,IAAM,aAAN,MAAiB;CACf;CACA;CAGA;CAEA,YAAmB,UAAU,IAAI,UAAU,EAAE,EAAE,OAAO,IAAI;AACxD,OAAK,UAAU;AACf,OAAK,UAAU;AACf,OAAK,OAAO,KACT,MAAM,CACN,MAAM,UAAU,CAChB,KAAK,OAAO;AACf,MAAI,KAAK,KAAK,SAAS,EACrB,MAAK,QAAQ;;CAIjB,WAAkB;AAOhB,SANU;GACR,KAAK;GACL,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,KAAK,QAAQ,GAAG,IAAI,IAAI,KAAK,QAAQ,OAAO;GACzE;GACA,KAAK;GACN,CAAC,KAAK,OACC;;CAGV,UAAiB,KAAiC;EAChD,MAAM,WAAW,OAAO,KAAK,KAAK,QAAQ,CAAC,MACxC,MAAM,EAAE,aAAa,KAAK,IAAI,aAAa,CAC7C;AACD,MAAI,SACF,QAAO,KAAK,QAAQ"}