@sprucelabs/heartwood-view-controllers 119.7.2 → 119.8.1
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/build/esm/tests/MockRtcPeerConnection.d.ts +3 -1
- package/build/esm/tests/MockRtcPeerConnection.js +5 -1
- package/build/esm/viewControllers/webRtcStreaming/WebRtcPlayer.vc.d.ts +2 -1
- package/build/esm/viewControllers/webRtcStreaming/WebRtcPlayer.vc.js +2 -2
- package/build/esm/webRtcStreaming/WebRtcConnection.d.ts +1 -0
- package/build/esm/webRtcStreaming/WebRtcConnection.js +13 -2
- package/build/tests/MockRtcPeerConnection.d.ts +3 -1
- package/build/tests/MockRtcPeerConnection.js +5 -1
- package/build/viewControllers/webRtcStreaming/WebRtcPlayer.vc.d.ts +2 -1
- package/build/viewControllers/webRtcStreaming/WebRtcPlayer.vc.js +1 -1
- package/build/webRtcStreaming/WebRtcConnection.d.ts +1 -0
- package/build/webRtcStreaming/WebRtcConnection.js +5 -2
- package/package.json +13 -13
|
@@ -9,6 +9,7 @@ export default class MockRtcPeerConnection implements RTCPeerConnection {
|
|
|
9
9
|
private lastCreatedDataChannel?;
|
|
10
10
|
private tranceiverAndDataChannelCalls;
|
|
11
11
|
private stats;
|
|
12
|
+
private lastCreateOfferOptions?;
|
|
12
13
|
constructor(options?: RTCConfiguration);
|
|
13
14
|
assertCreatedOfferEquals(offer: RTCSessionDescriptionInit): void;
|
|
14
15
|
assertCreatedDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): void;
|
|
@@ -25,6 +26,7 @@ export default class MockRtcPeerConnection implements RTCPeerConnection {
|
|
|
25
26
|
sdp: string;
|
|
26
27
|
}): void;
|
|
27
28
|
assertTrackListenerSet(expected: () => void): void;
|
|
29
|
+
assertCreateOfferOptionsEqual(expected: RTCOfferOptions): void;
|
|
28
30
|
static onCreateOffer(cb?: () => void): void;
|
|
29
31
|
canTrickleIceCandidates: boolean | null;
|
|
30
32
|
connectionState: RTCPeerConnectionState;
|
|
@@ -53,7 +55,7 @@ export default class MockRtcPeerConnection implements RTCPeerConnection {
|
|
|
53
55
|
close(): void;
|
|
54
56
|
createAnswer(_successCallback?: unknown, _failureCallback?: unknown): Promise<any>;
|
|
55
57
|
createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;
|
|
56
|
-
createOffer(
|
|
58
|
+
createOffer(options?: RTCOfferOptions): Promise<any>;
|
|
57
59
|
getConfiguration(): RTCConfiguration;
|
|
58
60
|
getReceivers(): RTCRtpReceiver[];
|
|
59
61
|
getSenders(): RTCRtpSender[];
|
|
@@ -84,6 +84,9 @@ export default class MockRtcPeerConnection {
|
|
|
84
84
|
listener: expected,
|
|
85
85
|
}, 'did not call connection.addEventListener with track listener');
|
|
86
86
|
}
|
|
87
|
+
assertCreateOfferOptionsEqual(expected) {
|
|
88
|
+
assert.isEqualDeep(this.lastCreateOfferOptions, expected, 'Did not pass expected options to createOffer');
|
|
89
|
+
}
|
|
87
90
|
static onCreateOffer(cb) {
|
|
88
91
|
this.onCreateOfferHandler = cb;
|
|
89
92
|
}
|
|
@@ -120,10 +123,11 @@ export default class MockRtcPeerConnection {
|
|
|
120
123
|
return {};
|
|
121
124
|
}
|
|
122
125
|
//@ts-ignore
|
|
123
|
-
createOffer(
|
|
126
|
+
createOffer(options) {
|
|
124
127
|
return __awaiter(this, void 0, void 0, function* () {
|
|
125
128
|
var _a;
|
|
126
129
|
(_a = MockRtcPeerConnection.onCreateOfferHandler) === null || _a === void 0 ? void 0 : _a.call(MockRtcPeerConnection);
|
|
130
|
+
this.lastCreateOfferOptions = options;
|
|
127
131
|
return this.offer;
|
|
128
132
|
});
|
|
129
133
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ViewControllerOptions, WebRtcCropPoint, WebRtcPlayer } from '../../types/heartwood.types';
|
|
2
|
+
import { WebRtcVcPluginCreateOfferOptions } from '../../webRtcStreaming/WebRtcConnection';
|
|
2
3
|
import { WebRtcStreamer } from '../../webRtcStreaming/WebRtcStreamer';
|
|
3
4
|
import AbstractViewController from '../Abstract.vc';
|
|
4
5
|
export default class WebRtcPlayerViewController extends AbstractViewController<WebRtcPlayer> {
|
|
@@ -7,7 +8,7 @@ export default class WebRtcPlayerViewController extends AbstractViewController<W
|
|
|
7
8
|
private connection;
|
|
8
9
|
constructor(options: ViewControllerOptions & WebRtcPlayerOptions);
|
|
9
10
|
setStreamer(streamer: WebRtcStreamer): void;
|
|
10
|
-
createOffer(offerOptions
|
|
11
|
+
createOffer(offerOptions?: WebRtcVcPluginCreateOfferOptions['offerOptions']): Promise<string>;
|
|
11
12
|
setAnswer(answerSdp: string): Promise<void>;
|
|
12
13
|
getCrop(): import("@sprucelabs/mercury-types").SpruceSchemas.HeartwoodViewControllers.v2021_02_11.WebRtcCropPoint | null | undefined;
|
|
13
14
|
enableCropping(): void;
|
|
@@ -38,8 +38,8 @@ class WebRtcPlayerViewController extends AbstractViewController {
|
|
|
38
38
|
this.model.streamer = streamer;
|
|
39
39
|
this.triggerRender();
|
|
40
40
|
}
|
|
41
|
-
createOffer(
|
|
42
|
-
return __awaiter(this,
|
|
41
|
+
createOffer() {
|
|
42
|
+
return __awaiter(this, arguments, void 0, function* (offerOptions = {}) {
|
|
43
43
|
const { offerSdp, streamer } = yield this.connection.createOffer({
|
|
44
44
|
offerOptions,
|
|
45
45
|
});
|
|
@@ -7,6 +7,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
10
21
|
import { assertOptions } from '@sprucelabs/schema';
|
|
11
22
|
import { buildLog } from '@sprucelabs/spruce-skill-utils';
|
|
12
23
|
import SpruceError from '../errors/SpruceError.js';
|
|
@@ -45,7 +56,7 @@ export default class WebRtcConnectionImpl {
|
|
|
45
56
|
});
|
|
46
57
|
this.rtcPeerConnection = connection;
|
|
47
58
|
this.addStateChangeListener();
|
|
48
|
-
const { offerToReceiveAudio, offerToReceiveVideo } = offerOptions;
|
|
59
|
+
const { offerToReceiveAudio, offerToReceiveVideo } = offerOptions, restOfferOptions = __rest(offerOptions, ["offerToReceiveAudio", "offerToReceiveVideo"]);
|
|
49
60
|
if (offerToReceiveAudio) {
|
|
50
61
|
connection.addTransceiver('audio', { direction: 'recvonly' });
|
|
51
62
|
}
|
|
@@ -55,7 +66,7 @@ export default class WebRtcConnectionImpl {
|
|
|
55
66
|
//must create this and add transceivers in order for Google Devices, if changing, make sure this
|
|
56
67
|
//stays the default behavior
|
|
57
68
|
connection.createDataChannel('dataSendChannel');
|
|
58
|
-
const offer = yield connection.createOffer({});
|
|
69
|
+
const offer = yield connection.createOffer(Object.assign({ iceRestart: true }, restOfferOptions));
|
|
59
70
|
yield connection.setLocalDescription(offer);
|
|
60
71
|
void this.emitStateChange('createdOffer');
|
|
61
72
|
connection.addEventListener('track', (event) => {
|
|
@@ -9,6 +9,7 @@ export default class MockRtcPeerConnection implements RTCPeerConnection {
|
|
|
9
9
|
private lastCreatedDataChannel?;
|
|
10
10
|
private tranceiverAndDataChannelCalls;
|
|
11
11
|
private stats;
|
|
12
|
+
private lastCreateOfferOptions?;
|
|
12
13
|
constructor(options?: RTCConfiguration);
|
|
13
14
|
assertCreatedOfferEquals(offer: RTCSessionDescriptionInit): void;
|
|
14
15
|
assertCreatedDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): void;
|
|
@@ -25,6 +26,7 @@ export default class MockRtcPeerConnection implements RTCPeerConnection {
|
|
|
25
26
|
sdp: string;
|
|
26
27
|
}): void;
|
|
27
28
|
assertTrackListenerSet(expected: () => void): void;
|
|
29
|
+
assertCreateOfferOptionsEqual(expected: RTCOfferOptions): void;
|
|
28
30
|
static onCreateOffer(cb?: () => void): void;
|
|
29
31
|
canTrickleIceCandidates: boolean | null;
|
|
30
32
|
connectionState: RTCPeerConnectionState;
|
|
@@ -53,7 +55,7 @@ export default class MockRtcPeerConnection implements RTCPeerConnection {
|
|
|
53
55
|
close(): void;
|
|
54
56
|
createAnswer(_successCallback?: unknown, _failureCallback?: unknown): Promise<any>;
|
|
55
57
|
createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;
|
|
56
|
-
createOffer(
|
|
58
|
+
createOffer(options?: RTCOfferOptions): Promise<any>;
|
|
57
59
|
getConfiguration(): RTCConfiguration;
|
|
58
60
|
getReceivers(): RTCRtpReceiver[];
|
|
59
61
|
getSenders(): RTCRtpSender[];
|
|
@@ -77,6 +77,9 @@ class MockRtcPeerConnection {
|
|
|
77
77
|
listener: expected,
|
|
78
78
|
}, 'did not call connection.addEventListener with track listener');
|
|
79
79
|
}
|
|
80
|
+
assertCreateOfferOptionsEqual(expected) {
|
|
81
|
+
test_utils_1.assert.isEqualDeep(this.lastCreateOfferOptions, expected, 'Did not pass expected options to createOffer');
|
|
82
|
+
}
|
|
80
83
|
static onCreateOffer(cb) {
|
|
81
84
|
this.onCreateOfferHandler = cb;
|
|
82
85
|
}
|
|
@@ -109,8 +112,9 @@ class MockRtcPeerConnection {
|
|
|
109
112
|
return {};
|
|
110
113
|
}
|
|
111
114
|
//@ts-ignore
|
|
112
|
-
async createOffer(
|
|
115
|
+
async createOffer(options) {
|
|
113
116
|
MockRtcPeerConnection.onCreateOfferHandler?.();
|
|
117
|
+
this.lastCreateOfferOptions = options;
|
|
114
118
|
return this.offer;
|
|
115
119
|
}
|
|
116
120
|
getConfiguration() {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ViewControllerOptions, WebRtcCropPoint, WebRtcPlayer } from '../../types/heartwood.types';
|
|
2
|
+
import { WebRtcVcPluginCreateOfferOptions } from '../../webRtcStreaming/WebRtcConnection';
|
|
2
3
|
import { WebRtcStreamer } from '../../webRtcStreaming/WebRtcStreamer';
|
|
3
4
|
import AbstractViewController from '../Abstract.vc';
|
|
4
5
|
export default class WebRtcPlayerViewController extends AbstractViewController<WebRtcPlayer> {
|
|
@@ -7,7 +8,7 @@ export default class WebRtcPlayerViewController extends AbstractViewController<W
|
|
|
7
8
|
private connection;
|
|
8
9
|
constructor(options: ViewControllerOptions & WebRtcPlayerOptions);
|
|
9
10
|
setStreamer(streamer: WebRtcStreamer): void;
|
|
10
|
-
createOffer(offerOptions
|
|
11
|
+
createOffer(offerOptions?: WebRtcVcPluginCreateOfferOptions['offerOptions']): Promise<string>;
|
|
11
12
|
setAnswer(answerSdp: string): Promise<void>;
|
|
12
13
|
getCrop(): import("@sprucelabs/mercury-types").SpruceSchemas.HeartwoodViewControllers.v2021_02_11.WebRtcCropPoint | null | undefined;
|
|
13
14
|
enableCropping(): void;
|
|
@@ -28,7 +28,7 @@ class WebRtcPlayerViewController extends Abstract_vc_1.default {
|
|
|
28
28
|
this.model.streamer = streamer;
|
|
29
29
|
this.triggerRender();
|
|
30
30
|
}
|
|
31
|
-
async createOffer(offerOptions) {
|
|
31
|
+
async createOffer(offerOptions = {}) {
|
|
32
32
|
const { offerSdp, streamer } = await this.connection.createOffer({
|
|
33
33
|
offerOptions,
|
|
34
34
|
});
|
|
@@ -39,7 +39,7 @@ class WebRtcConnectionImpl {
|
|
|
39
39
|
});
|
|
40
40
|
this.rtcPeerConnection = connection;
|
|
41
41
|
this.addStateChangeListener();
|
|
42
|
-
const { offerToReceiveAudio, offerToReceiveVideo } = offerOptions;
|
|
42
|
+
const { offerToReceiveAudio, offerToReceiveVideo, ...restOfferOptions } = offerOptions;
|
|
43
43
|
if (offerToReceiveAudio) {
|
|
44
44
|
connection.addTransceiver('audio', { direction: 'recvonly' });
|
|
45
45
|
}
|
|
@@ -49,7 +49,10 @@ class WebRtcConnectionImpl {
|
|
|
49
49
|
//must create this and add transceivers in order for Google Devices, if changing, make sure this
|
|
50
50
|
//stays the default behavior
|
|
51
51
|
connection.createDataChannel('dataSendChannel');
|
|
52
|
-
const offer = await connection.createOffer({
|
|
52
|
+
const offer = await connection.createOffer({
|
|
53
|
+
iceRestart: true,
|
|
54
|
+
...restOfferOptions,
|
|
55
|
+
});
|
|
53
56
|
await connection.setLocalDescription(offer);
|
|
54
57
|
void this.emitStateChange('createdOffer');
|
|
55
58
|
connection.addEventListener('track', (event) => {
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"description": "All the power of Heartwood in one, convenient package.",
|
|
16
|
-
"version": "119.
|
|
16
|
+
"version": "119.8.1",
|
|
17
17
|
"skill": {
|
|
18
18
|
"namespace": "HeartwoodViewControllers",
|
|
19
19
|
"commandOverrides": {
|
|
@@ -78,16 +78,16 @@
|
|
|
78
78
|
"@babel/preset-env": "^7.27.2",
|
|
79
79
|
"@babel/preset-typescript": "^7.27.1",
|
|
80
80
|
"@babel/runtime": "^7.27.1",
|
|
81
|
-
"@sprucelabs/calendar-utils": "^42.0.
|
|
82
|
-
"@sprucelabs/error": "^6.0.
|
|
81
|
+
"@sprucelabs/calendar-utils": "^42.0.700",
|
|
82
|
+
"@sprucelabs/error": "^6.0.604",
|
|
83
83
|
"@sprucelabs/globby": "^2.0.502",
|
|
84
|
-
"@sprucelabs/mercury-core-events": "^26.0.
|
|
85
|
-
"@sprucelabs/mercury-types": "^47.2.
|
|
86
|
-
"@sprucelabs/schema": "^31.1.
|
|
87
|
-
"@sprucelabs/spruce-core-schemas": "^40.1.
|
|
88
|
-
"@sprucelabs/spruce-event-utils": "^40.2.
|
|
89
|
-
"@sprucelabs/spruce-skill-utils": "^31.2.
|
|
90
|
-
"@sprucelabs/test-utils": "^5.5.
|
|
84
|
+
"@sprucelabs/mercury-core-events": "^26.0.79",
|
|
85
|
+
"@sprucelabs/mercury-types": "^47.2.87",
|
|
86
|
+
"@sprucelabs/schema": "^31.1.4",
|
|
87
|
+
"@sprucelabs/spruce-core-schemas": "^40.1.692",
|
|
88
|
+
"@sprucelabs/spruce-event-utils": "^40.2.96",
|
|
89
|
+
"@sprucelabs/spruce-skill-utils": "^31.2.105",
|
|
90
|
+
"@sprucelabs/test-utils": "^5.5.52",
|
|
91
91
|
"@swc/core": "1.2.103",
|
|
92
92
|
"babel-loader": "^10.0.0",
|
|
93
93
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
@@ -101,9 +101,9 @@
|
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
103
|
"@sprucelabs/esm-postbuild": "^6.0.565",
|
|
104
|
-
"@sprucelabs/jest-json-reporter": "^8.0.
|
|
105
|
-
"@sprucelabs/mercury-client": "^42.0.
|
|
106
|
-
"@sprucelabs/mercury-event-emitter": "^42.0.
|
|
104
|
+
"@sprucelabs/jest-json-reporter": "^8.0.605",
|
|
105
|
+
"@sprucelabs/mercury-client": "^42.0.799",
|
|
106
|
+
"@sprucelabs/mercury-event-emitter": "^42.0.799",
|
|
107
107
|
"@sprucelabs/resolve-path-aliases": "^2.0.543",
|
|
108
108
|
"@sprucelabs/semantic-release": "^5.0.2",
|
|
109
109
|
"@sprucelabs/test": "^9.0.82",
|