node-datachannel 0.27.0 → 0.29.0
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/.eslintrc.json +25 -25
- package/.prettierignore +7 -0
- package/.prettierrc +1 -0
- package/API.md +34 -4
- package/BULDING.md +12 -2
- package/CMakeLists.txt +10 -4
- package/README.md +22 -18
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/lib/datachannel-stream.cjs +13 -13
- package/dist/cjs/lib/datachannel-stream.cjs.map +1 -1
- package/dist/cjs/lib/index.cjs +4 -1
- package/dist/cjs/lib/index.cjs.map +1 -1
- package/dist/cjs/lib/websocket-server.cjs.map +1 -1
- package/dist/cjs/lib/websocket.cjs.map +1 -1
- package/dist/cjs/polyfill/Events.cjs +52 -3
- package/dist/cjs/polyfill/Events.cjs.map +1 -1
- package/dist/cjs/polyfill/Exception.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCCertificate.cjs +5 -2
- package/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCDataChannel.cjs +43 -22
- package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs +6 -5
- package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCError.cjs +9 -2
- package/dist/cjs/polyfill/RTCError.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCIceCandidate.cjs +13 -8
- package/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCIceTransport.cjs +26 -16
- package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCPeerConnection.cjs +80 -70
- package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCSctpTransport.cjs +9 -11
- package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -1
- package/dist/cjs/polyfill/RTCSessionDescription.cjs +10 -2
- package/dist/cjs/polyfill/RTCSessionDescription.cjs.map +1 -1
- package/dist/cjs/polyfill/index.cjs.map +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/lib/datachannel-stream.mjs.map +1 -1
- package/dist/esm/lib/index.mjs +4 -2
- package/dist/esm/lib/index.mjs.map +1 -1
- package/dist/esm/lib/websocket-server.mjs.map +1 -1
- package/dist/esm/lib/websocket.mjs.map +1 -1
- package/dist/esm/polyfill/Events.mjs +52 -4
- package/dist/esm/polyfill/Events.mjs.map +1 -1
- package/dist/esm/polyfill/Exception.mjs.map +1 -1
- package/dist/esm/polyfill/RTCCertificate.mjs +5 -2
- package/dist/esm/polyfill/RTCCertificate.mjs.map +1 -1
- package/dist/esm/polyfill/RTCDataChannel.mjs +43 -22
- package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -1
- package/dist/esm/polyfill/RTCDtlsTransport.mjs +6 -5
- package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -1
- package/dist/esm/polyfill/RTCError.mjs +9 -2
- package/dist/esm/polyfill/RTCError.mjs.map +1 -1
- package/dist/esm/polyfill/RTCIceCandidate.mjs +13 -8
- package/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -1
- package/dist/esm/polyfill/RTCIceTransport.mjs +26 -17
- package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -1
- package/dist/esm/polyfill/RTCPeerConnection.mjs +80 -70
- package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -1
- package/dist/esm/polyfill/RTCSctpTransport.mjs +9 -11
- package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -1
- package/dist/esm/polyfill/RTCSessionDescription.mjs +10 -2
- package/dist/esm/polyfill/RTCSessionDescription.mjs.map +1 -1
- package/dist/esm/polyfill/index.mjs.map +1 -1
- package/dist/types/lib/index.d.ts +14 -3
- package/dist/types/lib/types.d.ts +30 -7
- package/dist/types/polyfill/Events.d.ts +4 -1
- package/dist/types/polyfill/RTCCertificate.d.ts +1 -0
- package/dist/types/polyfill/RTCDataChannel.d.ts +6 -6
- package/dist/types/polyfill/RTCDtlsTransport.d.ts +5 -4
- package/dist/types/polyfill/RTCError.d.ts +1 -0
- package/dist/types/polyfill/RTCIceCandidate.d.ts +1 -1
- package/dist/types/polyfill/RTCIceTransport.d.ts +17 -8
- package/dist/types/polyfill/RTCPeerConnection.d.ts +22 -11
- package/dist/types/polyfill/RTCSctpTransport.d.ts +4 -3
- package/dist/types/polyfill/RTCSessionDescription.d.ts +1 -0
- package/jest.config.ts +8 -8
- package/package.json +6 -3
- package/rollup.config.mjs +1 -1
- package/src/cpp/data-channel-wrapper.cpp +11 -0
- package/src/cpp/ice-udp-mux-listener-wrapper.cpp +150 -0
- package/src/cpp/ice-udp-mux-listener-wrapper.h +43 -0
- package/src/cpp/main.cpp +2 -0
- package/src/cpp/peer-connection-wrapper.cpp +68 -2
- package/src/cpp/peer-connection-wrapper.h +1 -0
- package/src/index.ts +0 -1
- package/src/lib/datachannel-stream.ts +83 -84
- package/src/lib/index.ts +175 -139
- package/src/lib/types.ts +122 -71
- package/src/lib/websocket-server.ts +25 -25
- package/src/lib/websocket.ts +19 -19
- package/src/polyfill/Events.ts +71 -18
- package/src/polyfill/Exception.ts +24 -24
- package/src/polyfill/README.md +8 -8
- package/src/polyfill/RTCCertificate.ts +16 -12
- package/src/polyfill/RTCDataChannel.ts +216 -191
- package/src/polyfill/RTCDtlsTransport.ts +39 -39
- package/src/polyfill/RTCError.ts +63 -56
- package/src/polyfill/RTCIceCandidate.ts +120 -116
- package/src/polyfill/RTCIceTransport.ts +72 -64
- package/src/polyfill/RTCPeerConnection.ts +436 -420
- package/src/polyfill/RTCSctpTransport.ts +44 -47
- package/src/polyfill/RTCSessionDescription.ts +26 -17
- package/src/polyfill/index.ts +22 -22
|
@@ -10,31 +10,30 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
10
10
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
11
11
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
12
12
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
13
|
-
var _pc,
|
|
13
|
+
var _pc, _transport;
|
|
14
14
|
class RTCSctpTransport extends EventTarget {
|
|
15
15
|
constructor(initial) {
|
|
16
16
|
super();
|
|
17
17
|
__privateAdd(this, _pc, null);
|
|
18
|
-
__privateAdd(this, _extraFunctions, null);
|
|
19
18
|
__privateAdd(this, _transport, null);
|
|
20
19
|
__publicField(this, "onstatechange", null);
|
|
21
20
|
__privateSet(this, _pc, initial.pc);
|
|
22
|
-
__privateSet(this,
|
|
23
|
-
|
|
21
|
+
__privateSet(this, _transport, new RTCDtlsTransport({
|
|
22
|
+
pc: initial.pc
|
|
23
|
+
}));
|
|
24
24
|
__privateGet(this, _pc).addEventListener("connectionstatechange", () => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (this.onstatechange) this.onstatechange(e);
|
|
25
|
+
const e = new Event("statechange");
|
|
26
|
+
this.dispatchEvent(e);
|
|
27
|
+
this.onstatechange?.(e);
|
|
29
28
|
});
|
|
30
29
|
}
|
|
31
30
|
get maxChannels() {
|
|
32
31
|
if (this.state !== "connected") return null;
|
|
33
|
-
return __privateGet(this, _pc)
|
|
32
|
+
return __privateGet(this, _pc).ext_maxDataChannelId;
|
|
34
33
|
}
|
|
35
34
|
get maxMessageSize() {
|
|
36
35
|
if (this.state !== "connected") return null;
|
|
37
|
-
return __privateGet(this, _pc)
|
|
36
|
+
return __privateGet(this, _pc)?.ext_maxMessageSize ?? 65536;
|
|
38
37
|
}
|
|
39
38
|
get state() {
|
|
40
39
|
let state = __privateGet(this, _pc).connectionState;
|
|
@@ -50,7 +49,6 @@ class RTCSctpTransport extends EventTarget {
|
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
_pc = new WeakMap();
|
|
53
|
-
_extraFunctions = new WeakMap();
|
|
54
52
|
_transport = new WeakMap();
|
|
55
53
|
|
|
56
54
|
export { RTCSctpTransport as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RTCSctpTransport.mjs","sources":["../../../src/polyfill/RTCSctpTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCDtlsTransport from './RTCDtlsTransport';\n\nexport default class RTCSctpTransport extends EventTarget implements globalThis.RTCSctpTransport {\n
|
|
1
|
+
{"version":3,"file":"RTCSctpTransport.mjs","sources":["../../../src/polyfill/RTCSctpTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCDtlsTransport from './RTCDtlsTransport';\nimport RTCPeerConnection from './RTCPeerConnection';\n\nexport default class RTCSctpTransport extends EventTarget implements globalThis.RTCSctpTransport {\n #pc: RTCPeerConnection = null;\n #transport: globalThis.RTCDtlsTransport = null;\n\n onstatechange: globalThis.RTCSctpTransport['onstatechange'] = null;\n\n constructor(initial: { pc: RTCPeerConnection }) {\n super();\n this.#pc = initial.pc;\n\n this.#transport = new RTCDtlsTransport({\n pc: initial.pc,\n });\n\n this.#pc.addEventListener('connectionstatechange', () => {\n const e = new Event('statechange');\n this.dispatchEvent(e);\n this.onstatechange?.(e);\n });\n }\n\n get maxChannels(): number | null {\n if (this.state !== 'connected') return null;\n return this.#pc.ext_maxDataChannelId;\n }\n\n get maxMessageSize(): number {\n if (this.state !== 'connected') return null;\n return this.#pc?.ext_maxMessageSize ?? 65536;\n }\n\n get state(): globalThis.RTCSctpTransportState {\n // reduce state from new, connecting, connected, disconnected, failed, closed, unknown\n // to RTCSctpTransport states connecting, connected, closed\n let state = this.#pc.connectionState;\n if (state === 'new' || state === 'connecting') {\n state = 'connecting';\n } else if (state === 'disconnected' || state === 'failed' || state === 'closed') {\n state = 'closed';\n }\n return state;\n }\n\n get transport(): globalThis.RTCDtlsTransport {\n return this.#transport;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA,IAAA,GAAA,EAAA,UAAA,CAAA;AAIA,MAAqB,yBAAyB,WAAmD,CAAA;AAAA,EAM/F,YAAY,OAAoC,EAAA;AAC9C,IAAM,KAAA,EAAA,CAAA;AANR,IAAyB,YAAA,CAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA;AACzB,IAA0C,YAAA,CAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAE1C,IAA8D,aAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAI5D,IAAA,YAAA,CAAA,IAAA,EAAK,KAAM,OAAQ,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAK,YAAA,CAAA,IAAA,EAAA,UAAA,EAAa,IAAI,gBAAiB,CAAA;AAAA,MACrC,IAAI,OAAQ,CAAA,EAAA;AAAA,KACb,CAAA,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,uBAAA,EAAyB,MAAM;AACvD,MAAM,MAAA,CAAA,GAAI,IAAI,KAAA,CAAM,aAAa,CAAA,CAAA;AACjC,MAAA,IAAA,CAAK,cAAc,CAAC,CAAA,CAAA;AACpB,MAAA,IAAA,CAAK,gBAAgB,CAAC,CAAA,CAAA;AAAA,KACvB,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,IAAI,WAA6B,GAAA;AAC/B,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAA,OAAO,mBAAK,GAAI,CAAA,CAAA,oBAAA,CAAA;AAAA,GAClB;AAAA,EAEA,IAAI,cAAyB,GAAA;AAC3B,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,MAAK,kBAAsB,IAAA,KAAA,CAAA;AAAA,GACzC;AAAA,EAEA,IAAI,KAA0C,GAAA;AAG5C,IAAI,IAAA,KAAA,GAAQ,mBAAK,GAAI,CAAA,CAAA,eAAA,CAAA;AACrB,IAAI,IAAA,KAAA,KAAU,KAAS,IAAA,KAAA,KAAU,YAAc,EAAA;AAC7C,MAAQ,KAAA,GAAA,YAAA,CAAA;AAAA,eACC,KAAU,KAAA,cAAA,IAAkB,KAAU,KAAA,QAAA,IAAY,UAAU,QAAU,EAAA;AAC/E,MAAQ,KAAA,GAAA,QAAA,CAAA;AAAA,KACV;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEA,IAAI,SAAyC,GAAA;AAC3C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GACd;AACF,CAAA;AA7CE,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
|
|
@@ -10,12 +10,20 @@ class RTCSessionDescription {
|
|
|
10
10
|
constructor(init) {
|
|
11
11
|
__privateAdd(this, _type);
|
|
12
12
|
__privateAdd(this, _sdp);
|
|
13
|
-
__privateSet(this, _type, init
|
|
14
|
-
__privateSet(this, _sdp, init
|
|
13
|
+
__privateSet(this, _type, init?.type);
|
|
14
|
+
__privateSet(this, _sdp, init?.sdp ?? "");
|
|
15
15
|
}
|
|
16
16
|
get type() {
|
|
17
17
|
return __privateGet(this, _type);
|
|
18
18
|
}
|
|
19
|
+
set type(type) {
|
|
20
|
+
if (type !== "offer" && type !== "answer" && type !== "pranswer" && type !== "rollback") {
|
|
21
|
+
throw new TypeError(
|
|
22
|
+
`Failed to set the 'type' property on 'RTCSessionDescription': The provided value '${type}' is not a valid enum value of type RTCSdpType.`
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
__privateSet(this, _type, type);
|
|
26
|
+
}
|
|
19
27
|
get sdp() {
|
|
20
28
|
return __privateGet(this, _sdp);
|
|
21
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RTCSessionDescription.mjs","sources":["../../../src/polyfill/RTCSessionDescription.ts"],"sourcesContent":["// https://developer.mozilla.org/docs/Web/API/RTCSessionDescription\n//\n// Example usage\n// const init = {\n// type: 'offer',\n// sdp: 'v=0\\r\\no=- 1234567890 1234567890 IN IP4 192.168.1.1\\r\\ns=-\\r\\nt=0 0\\r\\na=ice-ufrag:abcd\\r\\na=ice-pwd:efgh\\r\\n'\n// };\n\nexport default class RTCSessionDescription implements globalThis.RTCSessionDescriptionInit {\n
|
|
1
|
+
{"version":3,"file":"RTCSessionDescription.mjs","sources":["../../../src/polyfill/RTCSessionDescription.ts"],"sourcesContent":["// https://developer.mozilla.org/docs/Web/API/RTCSessionDescription\n//\n// Example usage\n// const init = {\n// type: 'offer',\n// sdp: 'v=0\\r\\no=- 1234567890 1234567890 IN IP4 192.168.1.1\\r\\ns=-\\r\\nt=0 0\\r\\na=ice-ufrag:abcd\\r\\na=ice-pwd:efgh\\r\\n'\n// };\n\nexport default class RTCSessionDescription implements globalThis.RTCSessionDescriptionInit {\n #type: globalThis.RTCSdpType;\n #sdp: string;\n\n constructor(init: globalThis.RTCSessionDescriptionInit) {\n this.#type = init?.type;\n this.#sdp = init?.sdp ?? '';\n }\n\n get type(): globalThis.RTCSdpType {\n return this.#type;\n }\n\n set type(type) {\n if (type !== 'offer' && type !== 'answer' && type !== 'pranswer' && type !== 'rollback') {\n throw new TypeError(\n `Failed to set the 'type' property on 'RTCSessionDescription': The provided value '${type}' is not a valid enum value of type RTCSdpType.`,\n );\n }\n this.#type = type;\n }\n\n get sdp(): string {\n return this.#sdp;\n }\n\n toJSON(): globalThis.RTCSessionDescriptionInit {\n return {\n sdp: this.#sdp,\n type: this.#type,\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAA,IAAA,KAAA,EAAA,IAAA,CAAA;AAQA,MAAqB,qBAAsE,CAAA;AAAA,EAIzF,YAAY,IAA4C,EAAA;AAHxD,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAGE,IAAA,YAAA,CAAA,IAAA,EAAK,OAAQ,IAAM,EAAA,IAAA,CAAA,CAAA;AACnB,IAAK,YAAA,CAAA,IAAA,EAAA,IAAA,EAAO,MAAM,GAAO,IAAA,EAAA,CAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,IAAI,IAA8B,GAAA;AAChC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,KAAK,IAAM,EAAA;AACb,IAAA,IAAI,SAAS,OAAW,IAAA,IAAA,KAAS,YAAY,IAAS,KAAA,UAAA,IAAc,SAAS,UAAY,EAAA;AACvF,MAAA,MAAM,IAAI,SAAA;AAAA,QACR,qFAAqF,IAAI,CAAA,+CAAA,CAAA;AAAA,OAC3F,CAAA;AAAA,KACF;AACA,IAAA,YAAA,CAAA,IAAA,EAAK,KAAQ,EAAA,IAAA,CAAA,CAAA;AAAA,GACf;AAAA,EAEA,IAAI,GAAc,GAAA;AAChB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAA+C,GAAA;AAC7C,IAAO,OAAA;AAAA,MACL,KAAK,YAAK,CAAA,IAAA,EAAA,IAAA,CAAA;AAAA,MACV,MAAM,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA;AAAA,KACb,CAAA;AAAA,GACF;AACF,CAAA;AA/BE,KAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,IAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/polyfill/index.ts"],"sourcesContent":["import RTCCertificate from './RTCCertificate';\nimport RTCDataChannel from './RTCDataChannel';\nimport RTCDtlsTransport from './RTCDtlsTransport';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport RTCIceTransport from './RTCIceTransport';\nimport RTCPeerConnection from './RTCPeerConnection';\nimport RTCSctpTransport from './RTCSctpTransport';\nimport RTCSessionDescription from './RTCSessionDescription';\nimport { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events';\nimport RTCError from './RTCError';\n\nexport {\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/polyfill/index.ts"],"sourcesContent":["import RTCCertificate from './RTCCertificate';\nimport RTCDataChannel from './RTCDataChannel';\nimport RTCDtlsTransport from './RTCDtlsTransport';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport RTCIceTransport from './RTCIceTransport';\nimport RTCPeerConnection from './RTCPeerConnection';\nimport RTCSctpTransport from './RTCSctpTransport';\nimport RTCSessionDescription from './RTCSessionDescription';\nimport { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events';\nimport RTCError from './RTCError';\n\nexport {\n RTCCertificate,\n RTCDataChannel,\n RTCDtlsTransport,\n RTCIceCandidate,\n RTCIceTransport,\n RTCPeerConnection,\n RTCSctpTransport,\n RTCSessionDescription,\n RTCDataChannelEvent,\n RTCPeerConnectionIceEvent,\n RTCError,\n};\n\nexport default {\n RTCCertificate,\n RTCDataChannel,\n RTCDtlsTransport,\n RTCIceCandidate,\n RTCIceTransport,\n RTCPeerConnection,\n RTCSctpTransport,\n RTCSessionDescription,\n RTCDataChannelEvent,\n RTCPeerConnectionIceEvent,\n RTCError,\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAyBA,QAAe;AAAA,EACb,cAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,yBAAA;AAAA,EACA,QAAA;AACF,CAAA;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LogLevel, SctpSettings, Direction, Channel, DescriptionType, DataChannelInitConfig, RTCPeerConnectionState, RTCIceConnectionState, RTCSignalingState, RTCIceGatheringState, SelectedCandidateInfo, RtcConfig, WebSocketServerConfiguration } from './types.js';
|
|
1
|
+
import { LogLevel, SctpSettings, Direction, Channel, DescriptionType, LocalDescriptionInit, CertificateFingerprint, DataChannelInitConfig, RTCPeerConnectionState, RTCIceConnectionState, RTCSignalingState, RTCIceGatheringState, SelectedCandidateInfo, RtcConfig, IceUdpMuxRequest, WebSocketServerConfiguration } from './types.js';
|
|
2
2
|
export { IceServer, ProxyServer, ProxyServerType, RTCIceGathererState, RTCIceTransportState, RTCSdpType, RelayType, TransportPolicy } from './types.js';
|
|
3
3
|
import DataChannelStream$1 from './datachannel-stream.js';
|
|
4
4
|
import { WebSocketServer } from './websocket-server.js';
|
|
@@ -104,7 +104,7 @@ interface DataChannel extends Channel {
|
|
|
104
104
|
declare const DataChannel: {};
|
|
105
105
|
interface PeerConnection {
|
|
106
106
|
close(): void;
|
|
107
|
-
setLocalDescription(type?: DescriptionType): void;
|
|
107
|
+
setLocalDescription(type?: DescriptionType, init?: LocalDescriptionInit): void;
|
|
108
108
|
setRemoteDescription(sdp: string, type: DescriptionType): void;
|
|
109
109
|
localDescription(): {
|
|
110
110
|
type: DescriptionType;
|
|
@@ -114,6 +114,7 @@ interface PeerConnection {
|
|
|
114
114
|
type: DescriptionType;
|
|
115
115
|
sdp: string;
|
|
116
116
|
} | null;
|
|
117
|
+
remoteFingerprint(): CertificateFingerprint;
|
|
117
118
|
addRemoteCandidate(candidate: string, mid: string): void;
|
|
118
119
|
createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;
|
|
119
120
|
addTrack(media: Video | Audio): Track;
|
|
@@ -143,6 +144,15 @@ interface PeerConnection {
|
|
|
143
144
|
declare const PeerConnection: {
|
|
144
145
|
new (peerName: string, config: RtcConfig): PeerConnection;
|
|
145
146
|
};
|
|
147
|
+
interface IceUdpMuxListener {
|
|
148
|
+
address?: string;
|
|
149
|
+
port: number;
|
|
150
|
+
stop(): void;
|
|
151
|
+
onUnhandledStunRequest(cb: (req: IceUdpMuxRequest) => void): void;
|
|
152
|
+
}
|
|
153
|
+
declare const IceUdpMuxListener: {
|
|
154
|
+
new (port: number, address?: string): IceUdpMuxListener;
|
|
155
|
+
};
|
|
146
156
|
interface RtcpReceivingSession {
|
|
147
157
|
}
|
|
148
158
|
declare const RtcpReceivingSession: {
|
|
@@ -165,6 +175,7 @@ declare const _default: {
|
|
|
165
175
|
WebSocket: new (config?: WebSocketServerConfiguration) => WebSocket;
|
|
166
176
|
WebSocketServer: typeof WebSocketServer;
|
|
167
177
|
DataChannelStream: typeof DataChannelStream$1;
|
|
178
|
+
IceUdpMuxListener: new (port: number, address?: string) => IceUdpMuxListener;
|
|
168
179
|
};
|
|
169
180
|
|
|
170
|
-
export { Audio, Channel, DataChannel, DataChannelInitConfig, DataChannelStream, DescriptionType, Direction, LogLevel, PeerConnection, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, RtcConfig, RtcpReceivingSession, SctpSettings, SelectedCandidateInfo, Track, Video, WebSocket, WebSocketServer, WebSocketServerConfiguration, cleanup, _default as default, getLibraryVersion, initLogger, preload, setSctpSettings };
|
|
181
|
+
export { Audio, CertificateFingerprint, Channel, DataChannel, DataChannelInitConfig, DataChannelStream, DescriptionType, Direction, IceUdpMuxListener, IceUdpMuxRequest, LocalDescriptionInit, LogLevel, PeerConnection, RTCIceConnectionState, RTCIceGatheringState, RTCPeerConnectionState, RTCSignalingState, RtcConfig, RtcpReceivingSession, SctpSettings, SelectedCandidateInfo, Track, Video, WebSocket, WebSocketServer, WebSocketServerConfiguration, cleanup, _default as default, getLibraryVersion, initLogger, preload, setSctpSettings };
|
|
@@ -62,15 +62,23 @@ interface RtcConfig {
|
|
|
62
62
|
mtu?: number;
|
|
63
63
|
iceTransportPolicy?: TransportPolicy;
|
|
64
64
|
disableFingerprintVerification?: boolean;
|
|
65
|
+
disableAutoGathering?: boolean;
|
|
66
|
+
certificatePemFile?: string;
|
|
67
|
+
keyPemFile?: string;
|
|
68
|
+
keyPemPass?: string;
|
|
65
69
|
}
|
|
66
70
|
type DescriptionType = 'unspec' | 'offer' | 'answer' | 'pranswer' | 'rollback';
|
|
67
71
|
type RTCSdpType = 'answer' | 'offer' | 'pranswer' | 'rollback';
|
|
68
|
-
type RTCIceTransportState =
|
|
69
|
-
type RTCPeerConnectionState =
|
|
70
|
-
type RTCIceConnectionState =
|
|
71
|
-
type RTCIceGathererState =
|
|
72
|
-
type RTCIceGatheringState =
|
|
73
|
-
type RTCSignalingState =
|
|
72
|
+
type RTCIceTransportState = 'checking' | 'closed' | 'completed' | 'connected' | 'disconnected' | 'failed' | 'new';
|
|
73
|
+
type RTCPeerConnectionState = 'closed' | 'connected' | 'connecting' | 'disconnected' | 'failed' | 'new';
|
|
74
|
+
type RTCIceConnectionState = 'checking' | 'closed' | 'completed' | 'connected' | 'disconnected' | 'failed' | 'new';
|
|
75
|
+
type RTCIceGathererState = 'complete' | 'gathering' | 'new';
|
|
76
|
+
type RTCIceGatheringState = 'complete' | 'gathering' | 'new';
|
|
77
|
+
type RTCSignalingState = 'closed' | 'have-local-offer' | 'have-local-pranswer' | 'have-remote-offer' | 'have-remote-pranswer' | 'stable';
|
|
78
|
+
interface LocalDescriptionInit {
|
|
79
|
+
iceUfrag?: string;
|
|
80
|
+
icePwd?: string;
|
|
81
|
+
}
|
|
74
82
|
interface DataChannelInitConfig {
|
|
75
83
|
protocol?: string;
|
|
76
84
|
negotiated?: boolean;
|
|
@@ -79,6 +87,16 @@ interface DataChannelInitConfig {
|
|
|
79
87
|
maxPacketLifeTime?: number;
|
|
80
88
|
maxRetransmits?: number;
|
|
81
89
|
}
|
|
90
|
+
interface CertificateFingerprint {
|
|
91
|
+
/**
|
|
92
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCCertificate/getFingerprints#value
|
|
93
|
+
*/
|
|
94
|
+
value: string;
|
|
95
|
+
/**
|
|
96
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCCertificate/getFingerprints#algorithm
|
|
97
|
+
*/
|
|
98
|
+
algorithm: 'sha-1' | 'sha-224' | 'sha-256' | 'sha-384' | 'sha-512' | 'md5' | 'md2';
|
|
99
|
+
}
|
|
82
100
|
interface SelectedCandidateInfo {
|
|
83
101
|
address: string;
|
|
84
102
|
port: number;
|
|
@@ -89,5 +107,10 @@ interface SelectedCandidateInfo {
|
|
|
89
107
|
priority: number;
|
|
90
108
|
}
|
|
91
109
|
type Direction = 'SendOnly' | 'RecvOnly' | 'SendRecv' | 'Inactive' | 'Unknown';
|
|
110
|
+
interface IceUdpMuxRequest {
|
|
111
|
+
ufrag: string;
|
|
112
|
+
host: string;
|
|
113
|
+
port: number;
|
|
114
|
+
}
|
|
92
115
|
|
|
93
|
-
export type { Channel, DataChannelInitConfig, DescriptionType, Direction, IceServer, LogLevel, ProxyServer, ProxyServerType, RTCIceConnectionState, RTCIceGathererState, RTCIceGatheringState, RTCIceTransportState, RTCPeerConnectionState, RTCSdpType, RTCSignalingState, RelayType, RtcConfig, SctpSettings, SelectedCandidateInfo, TransportPolicy, WebSocketServerConfiguration };
|
|
116
|
+
export type { CertificateFingerprint, Channel, DataChannelInitConfig, DescriptionType, Direction, IceServer, IceUdpMuxRequest, LocalDescriptionInit, LogLevel, ProxyServer, ProxyServerType, RTCIceConnectionState, RTCIceGathererState, RTCIceGatheringState, RTCIceTransportState, RTCPeerConnectionState, RTCSdpType, RTCSignalingState, RelayType, RtcConfig, SctpSettings, SelectedCandidateInfo, TransportPolicy, WebSocketServerConfiguration };
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import RTCDataChannel from './RTCDataChannel.js';
|
|
2
|
+
|
|
1
3
|
declare class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {
|
|
2
4
|
#private;
|
|
3
5
|
constructor(candidate: globalThis.RTCIceCandidate);
|
|
4
6
|
get candidate(): globalThis.RTCIceCandidate;
|
|
7
|
+
get url(): string;
|
|
5
8
|
}
|
|
6
9
|
declare class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {
|
|
7
10
|
#private;
|
|
8
11
|
constructor(type: string, eventInitDict: globalThis.RTCDataChannelEventInit);
|
|
9
|
-
get channel():
|
|
12
|
+
get channel(): RTCDataChannel;
|
|
10
13
|
}
|
|
11
14
|
|
|
12
15
|
export { RTCDataChannelEvent, RTCPeerConnectionIceEvent };
|
|
@@ -2,12 +2,12 @@ import { DataChannel } from '../lib/index';
|
|
|
2
2
|
|
|
3
3
|
declare class RTCDataChannel extends EventTarget implements globalThis.RTCDataChannel {
|
|
4
4
|
#private;
|
|
5
|
-
onbufferedamountlow:
|
|
6
|
-
onclose:
|
|
7
|
-
onclosing:
|
|
8
|
-
onerror:
|
|
9
|
-
onmessage:
|
|
10
|
-
onopen:
|
|
5
|
+
onbufferedamountlow: globalThis.RTCDataChannel['onbufferedamountlow'];
|
|
6
|
+
onclose: globalThis.RTCDataChannel['onclose'];
|
|
7
|
+
onclosing: globalThis.RTCDataChannel['onclosing'];
|
|
8
|
+
onerror: globalThis.RTCDataChannel['onerror'];
|
|
9
|
+
onmessage: globalThis.RTCDataChannel['onmessage'];
|
|
10
|
+
onopen: globalThis.RTCDataChannel['onopen'];
|
|
11
11
|
constructor(dataChannel: DataChannel, opts?: globalThis.RTCDataChannelInit);
|
|
12
12
|
set binaryType(type: BinaryType);
|
|
13
13
|
get binaryType(): BinaryType;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import RTCPeerConnection from './RTCPeerConnection.js';
|
|
2
|
+
|
|
1
3
|
declare class RTCDtlsTransport extends EventTarget implements globalThis.RTCDtlsTransport {
|
|
2
4
|
#private;
|
|
3
|
-
onstatechange:
|
|
4
|
-
onerror:
|
|
5
|
+
onstatechange: globalThis.RTCDtlsTransport['onstatechange'];
|
|
6
|
+
onerror: globalThis.RTCDtlsTransport['onstatechange'];
|
|
5
7
|
constructor(init: {
|
|
6
|
-
pc:
|
|
7
|
-
extraFunctions: any;
|
|
8
|
+
pc: RTCPeerConnection;
|
|
8
9
|
});
|
|
9
10
|
get iceTransport(): globalThis.RTCIceTransport;
|
|
10
11
|
get state(): globalThis.RTCDtlsTransportState;
|
|
@@ -7,6 +7,7 @@ declare class RTCError extends DOMException implements globalThis.RTCError {
|
|
|
7
7
|
set receivedAlert(_value: number | null);
|
|
8
8
|
get sctpCauseCode(): number | null;
|
|
9
9
|
set sctpCauseCode(_value: number | null);
|
|
10
|
+
get httpRequestStatusCode(): number | null;
|
|
10
11
|
get sdpLineNumber(): number | null;
|
|
11
12
|
set sdpLineNumber(_value: number | null);
|
|
12
13
|
get sentAlert(): number | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare class RTCIceCandidate implements globalThis.RTCIceCandidate {
|
|
2
2
|
#private;
|
|
3
|
-
constructor({ candidate, sdpMLineIndex, sdpMid, usernameFragment }: globalThis.RTCIceCandidateInit);
|
|
3
|
+
constructor({ candidate, sdpMLineIndex, sdpMid, usernameFragment, }: globalThis.RTCIceCandidateInit);
|
|
4
4
|
get address(): string | null;
|
|
5
5
|
get candidate(): string;
|
|
6
6
|
get component(): globalThis.RTCIceComponent | null;
|
|
@@ -1,21 +1,30 @@
|
|
|
1
|
+
import RTCPeerConnection from './RTCPeerConnection.js';
|
|
2
|
+
|
|
1
3
|
declare class RTCIceTransport extends EventTarget implements globalThis.RTCIceTransport {
|
|
2
4
|
#private;
|
|
3
|
-
ongatheringstatechange:
|
|
4
|
-
onselectedcandidatepairchange:
|
|
5
|
-
onstatechange:
|
|
5
|
+
ongatheringstatechange: globalThis.RTCIceTransport['ongatheringstatechange'];
|
|
6
|
+
onselectedcandidatepairchange: globalThis.RTCIceTransport['onselectedcandidatepairchange'];
|
|
7
|
+
onstatechange: globalThis.RTCIceTransport['onstatechange'];
|
|
6
8
|
constructor(init: {
|
|
7
|
-
pc:
|
|
8
|
-
extraFunctions: any;
|
|
9
|
+
pc: RTCPeerConnection;
|
|
9
10
|
});
|
|
10
11
|
get component(): globalThis.RTCIceComponent;
|
|
11
12
|
get gatheringState(): globalThis.RTCIceGatheringState;
|
|
12
|
-
get role():
|
|
13
|
+
get role(): globalThis.RTCIceRole;
|
|
13
14
|
get state(): globalThis.RTCIceTransportState;
|
|
14
15
|
getLocalCandidates(): globalThis.RTCIceCandidate[];
|
|
15
|
-
getLocalParameters():
|
|
16
|
+
getLocalParameters(): RTCIceParameters | null;
|
|
16
17
|
getRemoteCandidates(): globalThis.RTCIceCandidate[];
|
|
17
18
|
getRemoteParameters(): any;
|
|
18
19
|
getSelectedCandidatePair(): globalThis.RTCIceCandidatePair | null;
|
|
19
20
|
}
|
|
21
|
+
declare class RTCIceParameters implements globalThis.RTCIceParameters {
|
|
22
|
+
usernameFragment: string;
|
|
23
|
+
password: string;
|
|
24
|
+
constructor({ usernameFragment, password }: {
|
|
25
|
+
usernameFragment: any;
|
|
26
|
+
password?: string;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
20
29
|
|
|
21
|
-
export { RTCIceTransport as default };
|
|
30
|
+
export { RTCIceParameters, RTCIceTransport as default };
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { SelectedCandidateInfo } from '../lib/types';
|
|
1
2
|
import { PeerConnection } from '../lib/index';
|
|
3
|
+
import RTCDataChannel from './RTCDataChannel.js';
|
|
4
|
+
import { RTCDataChannelEvent } from './Events.js';
|
|
2
5
|
import RTCCertificate from './RTCCertificate.js';
|
|
3
6
|
|
|
4
7
|
interface RTCConfiguration extends globalThis.RTCConfiguration {
|
|
@@ -8,18 +11,26 @@ interface RTCConfiguration extends globalThis.RTCConfiguration {
|
|
|
8
11
|
declare class RTCPeerConnection extends EventTarget implements globalThis.RTCPeerConnection {
|
|
9
12
|
#private;
|
|
10
13
|
static generateCertificate(): Promise<RTCCertificate>;
|
|
11
|
-
onconnectionstatechange:
|
|
12
|
-
ondatachannel: ((this: globalThis.RTCPeerConnection, ev:
|
|
13
|
-
onicecandidate:
|
|
14
|
-
onicecandidateerror:
|
|
15
|
-
oniceconnectionstatechange:
|
|
16
|
-
onicegatheringstatechange:
|
|
17
|
-
onnegotiationneeded:
|
|
18
|
-
onsignalingstatechange:
|
|
19
|
-
ontrack:
|
|
14
|
+
onconnectionstatechange: globalThis.RTCPeerConnection['onconnectionstatechange'];
|
|
15
|
+
ondatachannel: ((this: globalThis.RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;
|
|
16
|
+
onicecandidate: globalThis.RTCPeerConnection['onicecandidate'];
|
|
17
|
+
onicecandidateerror: globalThis.RTCPeerConnection['onicecandidateerror'];
|
|
18
|
+
oniceconnectionstatechange: globalThis.RTCPeerConnection['oniceconnectionstatechange'];
|
|
19
|
+
onicegatheringstatechange: globalThis.RTCPeerConnection['onicegatheringstatechange'];
|
|
20
|
+
onnegotiationneeded: globalThis.RTCPeerConnection['onnegotiationneeded'];
|
|
21
|
+
onsignalingstatechange: globalThis.RTCPeerConnection['onsignalingstatechange'];
|
|
22
|
+
ontrack: globalThis.RTCPeerConnection['ontrack'];
|
|
20
23
|
private _checkConfiguration;
|
|
21
24
|
setConfiguration(config: globalThis.RTCConfiguration): void;
|
|
22
25
|
constructor(config?: RTCConfiguration);
|
|
26
|
+
get ext_maxDataChannelId(): number;
|
|
27
|
+
get ext_maxMessageSize(): number;
|
|
28
|
+
get ext_localCandidates(): globalThis.RTCIceCandidate[];
|
|
29
|
+
get ext_remoteCandidates(): globalThis.RTCIceCandidate[];
|
|
30
|
+
selectedCandidatePair(): {
|
|
31
|
+
local: SelectedCandidateInfo;
|
|
32
|
+
remote: SelectedCandidateInfo;
|
|
33
|
+
} | null;
|
|
23
34
|
get canTrickleIceCandidates(): boolean | null;
|
|
24
35
|
get connectionState(): globalThis.RTCPeerConnectionState;
|
|
25
36
|
get iceConnectionState(): globalThis.RTCIceConnectionState;
|
|
@@ -37,12 +48,12 @@ declare class RTCPeerConnection extends EventTarget implements globalThis.RTCPee
|
|
|
37
48
|
addTransceiver(_trackOrKind: any, _init: any): globalThis.RTCRtpTransceiver;
|
|
38
49
|
close(): void;
|
|
39
50
|
createAnswer(): Promise<globalThis.RTCSessionDescriptionInit | any>;
|
|
40
|
-
createDataChannel(label:
|
|
51
|
+
createDataChannel(label: string, opts?: globalThis.RTCDataChannelInit): RTCDataChannel;
|
|
41
52
|
createOffer(): Promise<globalThis.RTCSessionDescriptionInit | any>;
|
|
42
53
|
getConfiguration(): globalThis.RTCConfiguration;
|
|
43
54
|
getReceivers(): globalThis.RTCRtpReceiver[];
|
|
44
55
|
getSenders(): globalThis.RTCRtpSender[];
|
|
45
|
-
getStats(): Promise<globalThis.RTCStatsReport
|
|
56
|
+
getStats(): Promise<globalThis.RTCStatsReport> | any;
|
|
46
57
|
getTransceivers(): globalThis.RTCRtpTransceiver[];
|
|
47
58
|
removeTrack(): void;
|
|
48
59
|
restartIce(): Promise<void>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import RTCPeerConnection from './RTCPeerConnection.js';
|
|
2
|
+
|
|
1
3
|
declare class RTCSctpTransport extends EventTarget implements globalThis.RTCSctpTransport {
|
|
2
4
|
#private;
|
|
3
|
-
onstatechange:
|
|
5
|
+
onstatechange: globalThis.RTCSctpTransport['onstatechange'];
|
|
4
6
|
constructor(initial: {
|
|
5
|
-
pc:
|
|
6
|
-
extraFunctions: any;
|
|
7
|
+
pc: RTCPeerConnection;
|
|
7
8
|
});
|
|
8
9
|
get maxChannels(): number | null;
|
|
9
10
|
get maxMessageSize(): number;
|
|
@@ -2,6 +2,7 @@ declare class RTCSessionDescription implements globalThis.RTCSessionDescriptionI
|
|
|
2
2
|
#private;
|
|
3
3
|
constructor(init: globalThis.RTCSessionDescriptionInit);
|
|
4
4
|
get type(): globalThis.RTCSdpType;
|
|
5
|
+
set type(type: globalThis.RTCSdpType);
|
|
5
6
|
get sdp(): string;
|
|
6
7
|
toJSON(): globalThis.RTCSessionDescriptionInit;
|
|
7
8
|
}
|
package/jest.config.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { Config } from 'jest';
|
|
2
2
|
|
|
3
3
|
const config: Config = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
clearMocks: true,
|
|
5
|
+
collectCoverage: false,
|
|
6
|
+
coverageDirectory: 'coverage',
|
|
7
|
+
coverageProvider: 'v8',
|
|
8
|
+
preset: 'ts-jest',
|
|
9
|
+
testEnvironment: 'jest-environment-node',
|
|
10
|
+
testRegex: '(/test/jest-tests/.*|(\\.|/)(test|spec))\\.(m)?ts$',
|
|
11
|
+
testPathIgnorePatterns: ['node_modules', 'multiple-run.test'],
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
export default config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-datachannel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "WebRTC For Node.js and Electron. libdatachannel node bindings.",
|
|
5
5
|
"main": "./dist/cjs/lib/index.cjs",
|
|
6
6
|
"module": "./dist/esm/lib/index.mjs",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"install:gnu": "npm run clean && npm install --ignore-scripts --production=false && cmake-js configure --CDUSE_GNUTLS=1 && cmake-js build",
|
|
39
39
|
"build": "npm run compile && npm run build:tsc",
|
|
40
40
|
"compile": "cmake-js build",
|
|
41
|
-
"
|
|
41
|
+
"build:debug": "npm run compile:debug && npm run build:tsc",
|
|
42
|
+
"compile:debug": "cmake-js configure -D && cmake-js build -D",
|
|
42
43
|
"build:tsc": "rimraf dist && rollup -c",
|
|
43
44
|
"build:tsc:watch": "rollup -c -w",
|
|
44
45
|
"clean": "rimraf dist build",
|
|
@@ -49,7 +50,8 @@
|
|
|
49
50
|
"wpt:server": "cd test/wpt-tests/wpt && ./wpt serve",
|
|
50
51
|
"wpt:test": "ts-node test/wpt-tests/index.ts",
|
|
51
52
|
"_prebuild": "prebuild -r napi --backend cmake-js",
|
|
52
|
-
"prepack": "npm run build:tsc"
|
|
53
|
+
"prepack": "npm run build:tsc",
|
|
54
|
+
"prettier": "prettier --write ."
|
|
53
55
|
},
|
|
54
56
|
"binary": {
|
|
55
57
|
"napi_versions": [
|
|
@@ -89,6 +91,7 @@
|
|
|
89
91
|
"@rollup/plugin-replace": "^6.0.1",
|
|
90
92
|
"@types/jest": "^29.5.12",
|
|
91
93
|
"@types/node": "^20.6.1",
|
|
94
|
+
"@types/webrtc": "^0.0.46",
|
|
92
95
|
"@typescript-eslint/eslint-plugin": "^7.17.0",
|
|
93
96
|
"@typescript-eslint/parser": "^7.17.0",
|
|
94
97
|
"cmake-js": "^7.3.0",
|
package/rollup.config.mjs
CHANGED
|
@@ -103,6 +103,17 @@ void DataChannelWrapper::doCleanup()
|
|
|
103
103
|
{
|
|
104
104
|
PLOG_DEBUG << "doCleanup() called";
|
|
105
105
|
mOnClosedCallback.reset();
|
|
106
|
+
|
|
107
|
+
// For close there are 3 cases:
|
|
108
|
+
// 1. Close was called from JS
|
|
109
|
+
// 2. Close was called from RTC
|
|
110
|
+
// 3. Close was not called from JS or RTC (we are destroying the object)
|
|
111
|
+
// This could be coming from rtc (case 2)
|
|
112
|
+
mDataChannelPtr.reset();
|
|
113
|
+
mOnOpenCallback.reset();
|
|
114
|
+
mOnErrorCallback.reset();
|
|
115
|
+
mOnBufferedAmountLowCallback.reset();
|
|
116
|
+
mOnMessageCallback.reset();
|
|
106
117
|
instances.erase(this);
|
|
107
118
|
}
|
|
108
119
|
|