Skip to content

Commit daeb382

Browse files
committed
Streamline & update deps
1 parent 3b4f877 commit daeb382

File tree

7 files changed

+42
-32
lines changed

7 files changed

+42
-32
lines changed

package.json

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"scripts": {
2121
"build": "npm run build:src && npm run build:doc",
2222
"build:src": "tsc && chmod +x ./dist/admin-bin.js",
23-
"build:doc": "typedoc src/main.ts",
23+
"build:doc": "typedoc src/main.ts --excludeExternals --excludeInternal",
2424
"prepack": "npm run build",
2525
"test": "tsc --noEmit -p test/tsconfig.json && karma start",
2626
"test:dev": "CONTINUOUS_TEST=true npm run test",
@@ -50,11 +50,8 @@
5050
"@esbuild-plugins/node-globals-polyfill": "^0.1.1",
5151
"@esbuild-plugins/node-modules-polyfill": "^0.1.4",
5252
"@types/chai": "4.3.0",
53-
"@types/dom-mediacapture-transform": "0.1.2",
54-
"@types/dom-webcodecs": "0.1.3",
55-
"@types/lodash": "4.14.182",
5653
"@types/mocha": "9.1.1",
57-
"@types/node": "16.18.38",
54+
"@types/node": "20.19.37",
5855
"buffer": "^6.0.3",
5956
"chai": "^4.3.6",
6057
"esbuild": "^0.15.0",
@@ -68,20 +65,18 @@
6865
"node-dev": "^7.1.0",
6966
"rollup-plugin-node-polyfills": "^0.2.1",
7067
"ts-node": "^10.5.0",
71-
"typedoc": "^0.24.8",
72-
"typescript": "4.6.4",
68+
"typedoc": "^0.26.11",
69+
"typescript": "~5.2.2",
7370
"util": "^0.12.4"
7471
},
7572
"dependencies": {
76-
"@graphql-tools/utils": "^8.8.0",
73+
"@graphql-tools/utils": "^11.0.0",
7774
"@types/sdp-transform": "^2.4.5",
78-
"graphql": "^15.8.0",
79-
"graphql-subscriptions": "^1.2.1",
75+
"graphql": "^16.0.0",
76+
"graphql-subscriptions": "^2.0.0",
8077
"graphql-tag": "^2.12.6",
81-
"lodash": "^4.17.21",
8278
"mockttp": "^4.0.0",
8379
"node-datachannel": "^0.12.0",
84-
"performance-now": "^2.1.0",
8580
"sdp-transform": "^2.14.1"
8681
},
8782
"overrides": {

src/server/mockrtc-admin-plugin.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,25 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
import * as _ from 'lodash';
76
import * as stream from 'stream';
87
import { gql } from 'graphql-tag';
98
import { PluggableAdmin } from 'mockttp';
109
import type { IResolvers } from "@graphql-tools/utils";
1110
import { PubSub } from "graphql-subscriptions";
1211

1312
import { StepLookup } from '../handling/handler-step-impls';
13+
1414
import { MockRTCOptions, MockRTCSessionDescription } from '../mockrtc';
1515
import { MockRTCServer } from './mockrtc-server';
1616
import { AnswerOptions, OfferOptions } from '../mockrtc-peer';
1717
import { MatcherDefinition } from '../matching/matcher-definitions';
1818
import { MatcherLookup } from '../matching/matcher-impls';
1919
import { HandlerStepDefinition } from '../handling/handler-step-definitions';
2020

21+
function kebabToCamel(str: string) {
22+
return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
23+
}
24+
2125
const { deserialize } = PluggableAdmin.Serialization;
2226
type SerializedValue<T> = PluggableAdmin.Serialization.SerializedValue<T>;
2327

@@ -230,7 +234,7 @@ export class MockRTCAdminPlugin implements PluggableAdmin.AdminPlugin<MockRTCOpt
230234

231235
EVENTS.forEach((eventName) => {
232236
this.mockRTCServer.on(eventName, (peer) => {
233-
pubsub.publish(eventName, { [_.camelCase(eventName)]: peer });
237+
pubsub.publish(eventName, { [kebabToCamel(eventName)]: peer });
234238
});
235239
});
236240

@@ -377,7 +381,7 @@ export class MockRTCAdminPlugin implements PluggableAdmin.AdminPlugin<MockRTCOpt
377381
Subscription: {
378382
...(EVENTS.reduce((acc, eventName) => ({
379383
...acc,
380-
[_.camelCase(eventName)]: {
384+
[kebabToCamel(eventName)]: {
381385
subscribe: () => pubsub.asyncIterator(eventName)
382386
}
383387
}), {}))

src/server/mockrtc-server-peer.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
import { randomUUID } from 'crypto';
77
import { EventEmitter } from "events";
8-
import now = require("performance-now");
9-
108
import {
119
MockRTCPeer,
1210
MockRTCPeerOptions,
@@ -60,7 +58,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
6058
conn.once('connection-connected', () => {
6159
const timingEvents: TimingEvents = {
6260
startTime: Date.now(),
63-
connectTimestamp: now()
61+
connectTimestamp: performance.now()
6462
}
6563

6664
const connectionEventParams = {
@@ -83,7 +81,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
8381
});
8482

8583
conn.once('external-connection-attached', (externalConn: RTCConnection) => {
86-
timingEvents.externalAttachTimestamp = now();
84+
timingEvents.externalAttachTimestamp = performance.now();
8785

8886
const selectedExternalCandidates = externalConn.getSelectedCandidates()!;
8987

@@ -111,7 +109,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
111109
...channelEventParams,
112110
channelLabel: channelStream.label,
113111
channelProtocol: channelStream.protocol,
114-
eventTimestamp: now()
112+
eventTimestamp: performance.now()
115113
});
116114
};
117115
if (channelStream.isOpen) announceOpen();
@@ -129,7 +127,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
129127
direction,
130128
content,
131129
isBinary,
132-
eventTimestamp: now()
130+
eventTimestamp: performance.now()
133131
});
134132
};
135133

@@ -138,7 +136,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
138136

139137
channelStream.on('close', () => this.eventEmitter.emit('data-channel-closed', {
140138
...channelEventParams,
141-
eventTimestamp: now()
139+
eventTimestamp: performance.now()
142140
}));
143141
}
144142

@@ -159,7 +157,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
159157
...trackEventParams,
160158
trackType: mediaTrack.type,
161159
trackDirection: mediaTrack.direction,
162-
eventTimestamp: now()
160+
eventTimestamp: performance.now()
163161
});
164162
};
165163

@@ -179,7 +177,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
179177
...trackEventParams,
180178
totalBytesSent: mediaTrack.totalBytesSent,
181179
totalBytesReceived: mediaTrack.totalBytesReceived,
182-
eventTimestamp: now()
180+
eventTimestamp: performance.now()
183181
});
184182

185183
previousBytesSent = mediaTrack.totalBytesSent;
@@ -190,7 +188,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
190188
clearInterval(statsInterval);
191189
this.eventEmitter.emit('media-track-closed', {
192190
...trackEventParams,
193-
eventTimestamp: now()
191+
eventTimestamp: performance.now()
194192
});
195193
});
196194
}
@@ -202,7 +200,7 @@ export class MockRTCServerPeer implements MockRTCPeer {
202200
conn.mediaTracks.forEach(emitTrackEvents);
203201

204202
conn.once('connection-closed', () => {
205-
timingEvents.disconnectTimestamp = now();
203+
timingEvents.disconnectTimestamp = performance.now();
206204
this.eventEmitter.emit('peer-disconnected', { ...connectionEventParams });
207205
});
208206
});

src/webrtc/datachannel-stream.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,13 @@ export class DataChannelStream extends stream.Duplex {
7676
}
7777

7878
private _readActive = true;
79+
/** @internal */
7980
_read() {
8081
// Stop dropping messages, if the buffer filling up meant we were doing so before.
8182
this._readActive = true;
8283
}
8384

85+
/** @internal */
8486
_write(chunk: string | Buffer | unknown, encoding: string, callback: (error: Error | null) => void) {
8587
let sentOk: boolean;
8688

@@ -106,11 +108,13 @@ export class DataChannelStream extends stream.Duplex {
106108
}
107109
}
108110

111+
/** @internal */
109112
_final(callback: (error: Error | null) => void) {
110113
if (!this.allowHalfOpen) this.destroy();
111114
callback(null);
112115
}
113116

117+
/** @internal */
114118
_destroy(maybeErr: Error | null, callback: (error: Error | null) => void) {
115119
// When the stream is destroyed, we close the DataChannel.
116120
this.rawChannel.close();

src/webrtc/mediatrack-stream.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,13 @@ export class MediaTrackStream extends stream.Duplex {
8080
}
8181

8282
private _readActive = true;
83+
/** @internal */
8384
_read() {
8485
// Stop dropping messages, if the buffer filling up meant we were doing so before.
8586
this._readActive = true;
8687
}
8788

89+
/** @internal */
8890
_write(chunk: Buffer, _encoding: string, callback: (error: Error | null) => void) {
8991
let sentOk: boolean;
9092

@@ -109,6 +111,7 @@ export class MediaTrackStream extends stream.Duplex {
109111
}
110112
}
111113

114+
/** @internal */
112115
_writev(chunks: Array<{ chunk: any; encoding: BufferEncoding; }>, callback: (error?: Error | null) => void) {
113116
let sentOk: boolean;
114117

@@ -134,11 +137,13 @@ export class MediaTrackStream extends stream.Duplex {
134137
}
135138
}
136139

140+
/** @internal */
137141
_final(callback: (error: Error | null) => void) {
138142
if (!this.allowHalfOpen) this.destroy();
139143
callback(null);
140144
}
141145

146+
/** @internal */
142147
_destroy(maybeErr: Error | null, callback: (error: Error | null) => void) {
143148
// When the stream is destroyed, we close the DataChannel.
144149
this.rawTrack.close();

src/webrtc/rtc-connection.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
import * as _ from 'lodash';
76
import { randomUUID } from 'crypto';
87
import { EventEmitter } from 'events';
98
import * as SDP from 'sdp-transform';
@@ -240,16 +239,20 @@ export class RTCConnection extends EventEmitter {
240239
if (!candidates) return undefined;
241240

242241
// Rename transportType -> protocol, to better match the browser WebRTC APIs
242+
// N.b. we omit transportType from *Candidate here
243+
const { transportType: localTransportType, ...localCandidate } = candidates.local;
244+
const { transportType: remoteTransportType, ...remoteCandidate } = candidates.remote;
245+
243246
return {
244247
local: {
245-
..._.omit(candidates.local, 'transportType'),
248+
...localCandidate,
246249
type: candidates.local.type as RTCIceCandidateType,
247-
protocol: candidates.local.transportType.toLowerCase()
250+
protocol: localTransportType.toLowerCase()
248251
},
249252
remote: {
250-
..._.omit(candidates.remote, 'transportType'),
253+
...remoteCandidate,
251254
type: candidates.remote.type as RTCIceCandidateType,
252-
protocol: candidates.remote.transportType.toLowerCase()
255+
protocol: remoteTransportType.toLowerCase()
253256
}
254257
};
255258
}

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"outDir": "./dist",
66
"declaration": true,
77
"sourceMap": true,
8-
"strict": true
8+
"strict": true,
9+
"lib": ["es6", "dom", "dom.iterable", "esnext.disposable"]
910
},
1011
"include": [
1112
"custom-typings/*.d.ts",

0 commit comments

Comments
 (0)