@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.
@@ -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(_options?: RTCOfferOptions): Promise<any>;
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(_options) {
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: RTCOfferOptions): Promise<string>;
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(offerOptions) {
42
- return __awaiter(this, void 0, void 0, function* () {
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
  });
@@ -21,6 +21,7 @@ export interface WebRtcVcPluginCreateOfferOptions {
21
21
  offerOptions: {
22
22
  offerToReceiveAudio?: boolean;
23
23
  offerToReceiveVideo?: boolean;
24
+ iceRestart?: boolean;
24
25
  };
25
26
  }
26
27
  export interface WebRtcStateEventMap {
@@ -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(_options?: RTCOfferOptions): Promise<any>;
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(_options) {
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: RTCOfferOptions): Promise<string>;
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
  });
@@ -21,6 +21,7 @@ export interface WebRtcVcPluginCreateOfferOptions {
21
21
  offerOptions: {
22
22
  offerToReceiveAudio?: boolean;
23
23
  offerToReceiveVideo?: boolean;
24
+ iceRestart?: boolean;
24
25
  };
25
26
  }
26
27
  export interface WebRtcStateEventMap {
@@ -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.7.2",
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.699",
82
- "@sprucelabs/error": "^6.0.603",
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.78",
85
- "@sprucelabs/mercury-types": "^47.2.86",
86
- "@sprucelabs/schema": "^31.1.3",
87
- "@sprucelabs/spruce-core-schemas": "^40.1.691",
88
- "@sprucelabs/spruce-event-utils": "^40.2.95",
89
- "@sprucelabs/spruce-skill-utils": "^31.2.104",
90
- "@sprucelabs/test-utils": "^5.5.51",
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.604",
105
- "@sprucelabs/mercury-client": "^42.0.798",
106
- "@sprucelabs/mercury-event-emitter": "^42.0.798",
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",