mockrtc 0.1.0 → 0.2.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.
Files changed (68) hide show
  1. package/README.md +2 -2
  2. package/dist/client/mockrtc-admin-request-builder.d.ts +21 -0
  3. package/dist/client/mockrtc-admin-request-builder.js +171 -0
  4. package/dist/client/mockrtc-admin-request-builder.js.map +1 -0
  5. package/dist/client/mockrtc-client.d.ts +5 -1
  6. package/dist/client/mockrtc-client.js +20 -16
  7. package/dist/client/mockrtc-client.js.map +1 -1
  8. package/dist/client/mockrtc-remote-peer.d.ts +3 -2
  9. package/dist/client/mockrtc-remote-peer.js.map +1 -1
  10. package/dist/handling/handler-step-definitions.d.ts +3 -2
  11. package/dist/handling/handler-step-definitions.js.map +1 -1
  12. package/dist/handling/handler-steps.js +1 -1
  13. package/dist/handling/handler-steps.js.map +1 -1
  14. package/dist/main-browser.d.ts +2 -0
  15. package/dist/main-browser.js +5 -1
  16. package/dist/main-browser.js.map +1 -1
  17. package/dist/main.d.ts +5 -4
  18. package/dist/main.js +5 -1
  19. package/dist/main.js.map +1 -1
  20. package/dist/mockrtc-peer.d.ts +37 -6
  21. package/dist/mockrtc.d.ts +138 -1
  22. package/dist/mockrtc.js +1 -0
  23. package/dist/mockrtc.js.map +1 -1
  24. package/dist/server/mockrtc-admin-plugin.d.ts +2 -2
  25. package/dist/server/mockrtc-admin-plugin.js +147 -2
  26. package/dist/server/mockrtc-admin-plugin.js.map +1 -1
  27. package/dist/server/mockrtc-server-peer.d.ts +8 -2
  28. package/dist/server/mockrtc-server-peer.js +106 -5
  29. package/dist/server/mockrtc-server-peer.js.map +1 -1
  30. package/dist/server/mockrtc-server.d.ts +11 -3
  31. package/dist/server/mockrtc-server.js +44 -6
  32. package/dist/server/mockrtc-server.js.map +1 -1
  33. package/dist/webrtc/datachannel-stream.d.ts +2 -0
  34. package/dist/webrtc/datachannel-stream.js +12 -0
  35. package/dist/webrtc/datachannel-stream.js.map +1 -1
  36. package/dist/webrtc/mediatrack-stream.d.ts +4 -0
  37. package/dist/webrtc/mediatrack-stream.js +13 -1
  38. package/dist/webrtc/mediatrack-stream.js.map +1 -1
  39. package/dist/webrtc/mockrtc-connection.d.ts +1 -1
  40. package/dist/webrtc/mockrtc-connection.js +77 -60
  41. package/dist/webrtc/mockrtc-connection.js.map +1 -1
  42. package/dist/webrtc/rtc-connection.d.ts +23 -4
  43. package/dist/webrtc/rtc-connection.js +45 -6
  44. package/dist/webrtc/rtc-connection.js.map +1 -1
  45. package/dist/webrtc-hooks.js +4 -2
  46. package/dist/webrtc-hooks.js.map +1 -1
  47. package/package.json +12 -6
  48. package/src/client/mockrtc-admin-request-builder.ts +184 -0
  49. package/src/client/mockrtc-client.ts +26 -22
  50. package/src/client/mockrtc-remote-peer.ts +9 -8
  51. package/src/handling/handler-step-definitions.ts +6 -4
  52. package/src/handling/handler-steps.ts +6 -5
  53. package/src/main-browser.ts +4 -0
  54. package/src/main.ts +18 -4
  55. package/src/mockrtc-peer.ts +41 -6
  56. package/src/mockrtc.ts +163 -1
  57. package/src/server/mockrtc-admin-plugin.ts +159 -6
  58. package/src/server/mockrtc-server-peer.ts +183 -6
  59. package/src/server/mockrtc-server.ts +75 -14
  60. package/src/webrtc/datachannel-stream.ts +16 -0
  61. package/src/webrtc/mediatrack-stream.ts +16 -3
  62. package/src/webrtc/mockrtc-connection.ts +21 -6
  63. package/src/webrtc/rtc-connection.ts +79 -14
  64. package/src/webrtc-hooks.ts +7 -4
  65. package/test/integration/events.spec.ts +536 -0
  66. package/test/integration/matching.spec.ts +68 -0
  67. package/test/integration/proxy.spec.ts +66 -1
  68. package/test/test-setup.ts +19 -0
package/dist/mockrtc.d.ts CHANGED
@@ -1,8 +1,13 @@
1
+ /// <reference types="node" />
1
2
  import type { MockRTCHandlerBuilder } from "./handling/handler-builder";
2
- import type { MockRTCPeer } from "./mockrtc-peer";
3
+ import type { ConnectionMetadata, MockRTCPeer } from "./mockrtc-peer";
3
4
  export interface MockRTCPeerBuilder extends MockRTCHandlerBuilder<MockRTCPeer> {
4
5
  }
5
6
  export interface MockRTCOptions {
7
+ /**
8
+ * Should the server print extra debug information?
9
+ */
10
+ debug?: boolean;
6
11
  /**
7
12
  * Whether or not all DataChannel messages should be saved for later examination.
8
13
  * This can be useful in quick testing, but may use large amounts of data if
@@ -12,14 +17,146 @@ export interface MockRTCOptions {
12
17
  */
13
18
  recordMessages?: boolean;
14
19
  }
20
+ export interface MockRTCSessionDescription {
21
+ type: 'offer' | 'answer';
22
+ sdp: string;
23
+ }
24
+ export interface SelectedRTCCandidate {
25
+ address: string;
26
+ port: number;
27
+ protocol: 'udp' | 'tcp';
28
+ type: RTCIceCandidateType;
29
+ }
30
+ export interface TimingEvents {
31
+ startTime: number;
32
+ connectTimestamp: number;
33
+ disconnectTimestamp?: number;
34
+ externalAttachTimestamp?: number;
35
+ }
36
+ export declare type MockRTCEventData = {
37
+ "peer-connected": {
38
+ peerId: string;
39
+ sessionId: string;
40
+ metadata: ConnectionMetadata;
41
+ localSessionDescription: MockRTCSessionDescription;
42
+ remoteSessionDescription: MockRTCSessionDescription;
43
+ selectedLocalCandidate: SelectedRTCCandidate;
44
+ selectedRemoteCandidate: SelectedRTCCandidate;
45
+ timingEvents: TimingEvents;
46
+ };
47
+ "peer-disconnected": {
48
+ peerId: string;
49
+ sessionId: string;
50
+ timingEvents: TimingEvents;
51
+ };
52
+ "external-peer-attached": {
53
+ peerId: string;
54
+ sessionId: string;
55
+ externalConnection: {
56
+ peerId: string;
57
+ sessionId: string;
58
+ localSessionDescription: MockRTCSessionDescription;
59
+ remoteSessionDescription: MockRTCSessionDescription;
60
+ selectedLocalCandidate: SelectedRTCCandidate;
61
+ selectedRemoteCandidate: SelectedRTCCandidate;
62
+ };
63
+ timingEvents: TimingEvents;
64
+ };
65
+ "data-channel-opened": {
66
+ peerId: string;
67
+ sessionId: string;
68
+ channelId: number;
69
+ channelLabel: string;
70
+ channelProtocol: string;
71
+ eventTimestamp: number;
72
+ timingEvents: TimingEvents;
73
+ };
74
+ "data-channel-message-sent": {
75
+ peerId: string;
76
+ sessionId: string;
77
+ channelId: number;
78
+ direction: 'sent';
79
+ content: Buffer;
80
+ isBinary: boolean;
81
+ eventTimestamp: number;
82
+ timingEvents: TimingEvents;
83
+ };
84
+ "data-channel-message-received": {
85
+ peerId: string;
86
+ sessionId: string;
87
+ channelId: number;
88
+ direction: 'received';
89
+ content: Buffer;
90
+ isBinary: boolean;
91
+ eventTimestamp: number;
92
+ timingEvents: TimingEvents;
93
+ };
94
+ "data-channel-closed": {
95
+ peerId: string;
96
+ sessionId: string;
97
+ channelId: number;
98
+ eventTimestamp: number;
99
+ timingEvents: TimingEvents;
100
+ };
101
+ "media-track-opened": {
102
+ peerId: string;
103
+ sessionId: string;
104
+ trackMid: string;
105
+ trackType: string;
106
+ trackDirection: string;
107
+ eventTimestamp: number;
108
+ timingEvents: TimingEvents;
109
+ };
110
+ "media-track-stats": {
111
+ peerId: string;
112
+ sessionId: string;
113
+ trackMid: string;
114
+ totalBytesSent: number;
115
+ totalBytesReceived: number;
116
+ eventTimestamp: number;
117
+ timingEvents: TimingEvents;
118
+ };
119
+ "media-track-closed": {
120
+ peerId: string;
121
+ sessionId: string;
122
+ trackMid: string;
123
+ eventTimestamp: number;
124
+ timingEvents: TimingEvents;
125
+ };
126
+ };
127
+ export declare type MockRTCEvent = keyof MockRTCEventData;
15
128
  export interface MockRTC {
16
129
  /**
17
130
  * Start creating a mock WebRTC peer. This method returns a builder, who
18
131
  * must be configured with the mock peer's settings. Once configured the
19
132
  * peer can be created by calling any `.thenX()` method to define the
20
133
  * peer's behaviour.
134
+ *
135
+ * This API allows you to define a single set of handling steps, and then
136
+ * connect directly to the resulting peer to run those steps directly.
137
+ *
138
+ * To instead define multiple behaviours that match different conditions, and
139
+ * then connect clients who may each see different behaviour, define your
140
+ * rules using the `forX()` methods, and connect by using `getMatchingPeer()`.
21
141
  */
22
142
  buildPeer(): MockRTCPeerBuilder;
143
+ /**
144
+ * Get the rule-matching peer.
145
+ *
146
+ * This peer accepts connections, matches them against defined rules (defined
147
+ * via the `.forX()` methods) and then handles them according to the steps
148
+ * for the defined rule.
149
+ *
150
+ * To more directly define a set of steps and make a connection that will
151
+ * follow those steps, define a peer with `.buildPeer()` and then connect
152
+ * to that directly.
153
+ *
154
+ * The default behaviour of this peer for unmatched connections is equivalent
155
+ * to `.thenPassThrough()` - it will accept all incoming data without response
156
+ * initially, and proxy all data to a remote peer if one is attached.
157
+ */
158
+ getMatchingPeer(): MockRTCPeer;
23
159
  start(): Promise<void>;
24
160
  stop(): Promise<void>;
161
+ on<E extends MockRTCEvent>(event: E, callback: (param: MockRTCEventData[E]) => void): Promise<void>;
25
162
  }
package/dist/mockrtc.js CHANGED
@@ -4,4 +4,5 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ ;
7
8
  //# sourceMappingURL=mockrtc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockrtc.js","sourceRoot":"","sources":["../src/mockrtc.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
1
+ {"version":3,"file":"mockrtc.js","sourceRoot":"","sources":["../src/mockrtc.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAkCF,CAAC"}
@@ -2,10 +2,10 @@
2
2
  import * as stream from 'stream';
3
3
  import { PluggableAdmin } from 'mockttp';
4
4
  import type { IResolvers } from "@graphql-tools/utils";
5
- import { MockRTCOptions } from '../mockrtc';
5
+ import { MockRTCOptions, MockRTCSessionDescription } from '../mockrtc';
6
6
  export interface SessionData {
7
7
  id: string;
8
- description: RTCSessionDescriptionInit;
8
+ description: MockRTCSessionDescription;
9
9
  }
10
10
  export declare class MockRTCAdminPlugin implements PluggableAdmin.AdminPlugin<MockRTCOptions, {}> {
11
11
  private mockRTCServer;
@@ -14,11 +14,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.MockRTCAdminPlugin = void 0;
17
+ const _ = require("lodash");
17
18
  const graphql_tag_1 = require("graphql-tag");
18
19
  const mockttp_1 = require("mockttp");
20
+ const graphql_subscriptions_1 = require("graphql-subscriptions");
19
21
  const handler_steps_1 = require("../handling/handler-steps");
20
22
  const mockrtc_server_1 = require("./mockrtc-server");
21
23
  const { deserialize } = mockttp_1.PluggableAdmin.Serialization;
24
+ const EVENTS = [
25
+ 'peer-connected',
26
+ 'peer-disconnected',
27
+ 'external-peer-attached',
28
+ 'data-channel-opened',
29
+ 'data-channel-message-sent',
30
+ 'data-channel-message-received',
31
+ 'data-channel-closed',
32
+ 'media-track-opened',
33
+ 'media-track-stats',
34
+ 'media-track-closed'
35
+ ];
22
36
  class MockRTCAdminPlugin {
23
37
  constructor() {
24
38
  this.schema = (0, graphql_tag_1.gql) `
@@ -61,17 +75,145 @@ class MockRTCAdminPlugin {
61
75
  }
62
76
 
63
77
  scalar HandlerStep
78
+
79
+ extend type Subscription {
80
+ peerConnected: RTCPeerConnectionEvent!
81
+ peerDisconnected: RTCPeerDisconnectionEvent!
82
+ externalPeerAttached: RTCAttachmentEvent!
83
+
84
+ dataChannelOpened: DataChannelOpenEvent!
85
+ dataChannelMessageSent: DataChannelMessageEvent!
86
+ dataChannelMessageReceived: DataChannelMessageEvent!
87
+ dataChannelClosed: DataChannelCloseEvent!
88
+
89
+ mediaTrackOpened: MediaTrackOpenEvent!
90
+ mediaTrackStats: MediaTrackStatsEvent!
91
+ mediaTrackClosed: MediaTrackCloseEvent!
92
+ }
93
+
94
+ type RTCPeerConnectionEvent {
95
+ peerId: ID!
96
+ sessionId: ID!
97
+
98
+ metadata: Raw!
99
+ timingEvents: Raw!
100
+
101
+ localSessionDescription: SessionDescriptionResult!
102
+ remoteSessionDescription: SessionDescriptionResult!
103
+ selectedLocalCandidate: RTCSelectedCandidate!
104
+ selectedRemoteCandidate: RTCSelectedCandidate!
105
+ }
106
+
107
+ type RTCSelectedCandidate {
108
+ address: String!
109
+ port: Int!
110
+ protocol: String!
111
+ type: String!
112
+ }
113
+
114
+ type RTCPeerDisconnectionEvent {
115
+ peerId: ID!
116
+ sessionId: ID!
117
+ timingEvents: Raw!
118
+ }
119
+
120
+ type RTCAttachmentEvent {
121
+ peerId: ID!
122
+ sessionId: ID!
123
+ externalConnection: RTCExternalPeerConnectionEvent!
124
+ timingEvents: Raw!
125
+ }
126
+
127
+ type RTCExternalPeerConnectionEvent {
128
+ sessionId: ID!
129
+ localSessionDescription: SessionDescriptionResult!
130
+ remoteSessionDescription: SessionDescriptionResult!
131
+ selectedLocalCandidate: RTCSelectedCandidate!
132
+ selectedRemoteCandidate: RTCSelectedCandidate!
133
+ }
134
+
135
+ type DataChannelOpenEvent {
136
+ peerId: ID!
137
+ sessionId: ID!
138
+ channelId: Int!
139
+ channelLabel: String!
140
+ channelProtocol: String!
141
+
142
+ eventTimestamp: Float!
143
+ timingEvents: Raw!
144
+ }
145
+
146
+ type DataChannelMessageEvent {
147
+ peerId: ID!
148
+ sessionId: ID!
149
+ channelId: Int!
150
+ direction: String!
151
+ content: Buffer!
152
+ isBinary: Boolean!
153
+
154
+ eventTimestamp: Float!
155
+ timingEvents: Raw!
156
+ }
157
+
158
+ type DataChannelCloseEvent {
159
+ peerId: ID!
160
+ sessionId: ID!
161
+ channelId: Int!
162
+
163
+ eventTimestamp: Float!
164
+ timingEvents: Raw!
165
+ }
166
+
167
+ type MediaTrackOpenEvent {
168
+ peerId: ID!
169
+ sessionId: ID!
170
+ trackMid: ID!
171
+ trackType: String!
172
+ trackDirection: String!
173
+
174
+ eventTimestamp: Float!
175
+ timingEvents: Raw!
176
+ }
177
+
178
+ type MediaTrackStatsEvent {
179
+ peerId: ID!
180
+ sessionId: ID!
181
+ trackMid: ID!
182
+
183
+ totalBytesSent: Int!
184
+ totalBytesReceived: Int!
185
+
186
+ eventTimestamp: Float!
187
+ timingEvents: Raw!
188
+ }
189
+
190
+ type MediaTrackCloseEvent {
191
+ peerId: ID!
192
+ sessionId: ID!
193
+ trackMid: ID!
194
+
195
+ eventTimestamp: Float!
196
+ timingEvents: Raw!
197
+ }
64
198
  `;
65
199
  }
66
200
  start(options) {
67
201
  this.mockRTCServer = new mockrtc_server_1.MockRTCServer(options);
68
202
  return this.mockRTCServer.start();
69
203
  }
70
- reset() { }
204
+ reset() {
205
+ this.mockRTCServer.reset();
206
+ }
71
207
  stop() {
72
208
  return this.mockRTCServer.stop();
73
209
  }
74
210
  buildResolvers(adminStream, ruleParams) {
211
+ const pubsub = new graphql_subscriptions_1.PubSub();
212
+ EVENTS.forEach((eventName) => {
213
+ this.mockRTCServer.on(eventName, (peer) => {
214
+ pubsub.publish(eventName, { [_.camelCase(eventName)]: peer });
215
+ });
216
+ });
75
217
  return {
76
218
  Mutation: {
77
219
  createPeer: (__, { data: { steps } }) => {
@@ -155,7 +297,10 @@ class MockRTCAdminPlugin {
155
297
  }
156
298
  });
157
299
  })
158
- }
300
+ },
301
+ Subscription: Object.assign({}, (EVENTS.reduce((acc, eventName) => (Object.assign(Object.assign({}, acc), { [_.camelCase(eventName)]: {
302
+ subscribe: () => pubsub.asyncIterator(eventName)
303
+ } })), {})))
159
304
  };
160
305
  }
161
306
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mockrtc-admin-plugin.js","sourceRoot":"","sources":["../../src/server/mockrtc-admin-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mockrtc-admin-plugin.js","sourceRoot":"","sources":["../../src/server/mockrtc-admin-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
1
  /// <reference types="node" />
2
+ import { EventEmitter } from "events";
2
3
  import { MockRTCPeer, MockRTCPeerOptions, MockRTCSession, MockRTCAnswerParams, MockRTCOfferParams, MockRTCExternalAnswerParams, MockRTCExternalOfferParams, OfferOptions, AnswerOptions } from "../mockrtc-peer";
3
4
  import { HandlerStep } from '../handling/handler-steps';
5
+ import { RTCConnection } from '../webrtc/rtc-connection';
4
6
  export declare class MockRTCServerPeer implements MockRTCPeer {
5
- private handlerSteps;
7
+ private getHandlerSteps;
6
8
  private options;
9
+ private eventEmitter;
7
10
  readonly peerId: string;
11
+ private debug;
8
12
  private readonly connections;
9
13
  private readonly unassignedExternalConnections;
10
- constructor(handlerSteps: HandlerStep[], options?: MockRTCPeerOptions);
14
+ constructor(getHandlerSteps: (conn: RTCConnection) => HandlerStep[], options: MockRTCPeerOptions & {
15
+ peerId?: string;
16
+ }, eventEmitter: EventEmitter);
11
17
  private trackConnection;
12
18
  private getExternalConnection;
13
19
  createExternalOffer(options?: OfferOptions): Promise<MockRTCExternalOfferParams>;
@@ -15,13 +15,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.MockRTCServerPeer = void 0;
17
17
  const crypto_1 = require("crypto");
18
+ const now = require("performance-now");
18
19
  const rtc_connection_1 = require("../webrtc/rtc-connection");
19
20
  const mockrtc_connection_1 = require("../webrtc/mockrtc-connection");
20
21
  class MockRTCServerPeer {
21
- constructor(handlerSteps, options = {}) {
22
- this.handlerSteps = handlerSteps;
22
+ constructor(getHandlerSteps, options = {}, eventEmitter) {
23
+ this.getHandlerSteps = getHandlerSteps;
23
24
  this.options = options;
25
+ this.eventEmitter = eventEmitter;
24
26
  this.peerId = (0, crypto_1.randomUUID)();
27
+ this.debug = false;
25
28
  // A list of all currently open connections managed by this peer
26
29
  this.connections = {};
27
30
  // A subset of the connections: external connections with no assigned internal connection
@@ -34,15 +37,96 @@ class MockRTCServerPeer {
34
37
  return externalConn;
35
38
  };
36
39
  this.messages = {};
40
+ this.debug = !!options.debug;
41
+ if (options.peerId)
42
+ this.peerId = options.peerId;
37
43
  }
38
44
  trackConnection(conn) {
39
45
  this.connections[conn.id] = conn;
40
46
  conn.once('connection-closed', () => {
41
47
  delete this.connections[conn.id];
42
48
  });
49
+ if (conn instanceof mockrtc_connection_1.MockRTCConnection) {
50
+ // Here we listen to the various internal connection events, and convert them into
51
+ // their corresponding public-API events.
52
+ conn.once('connection-connected', () => {
53
+ const timingEvents = {
54
+ startTime: Date.now(),
55
+ connectTimestamp: now()
56
+ };
57
+ const connectionEventParams = {
58
+ peerId: this.peerId,
59
+ sessionId: conn.id,
60
+ timingEvents
61
+ };
62
+ const selectedCandidates = conn.getSelectedCandidates();
63
+ this.eventEmitter.emit('peer-connected', Object.assign(Object.assign({}, connectionEventParams), { localSessionDescription: conn.getLocalDescription(), remoteSessionDescription: conn.getRemoteDescription(), metadata: conn.metadata, selectedLocalCandidate: selectedCandidates.local, selectedRemoteCandidate: selectedCandidates.remote }));
64
+ conn.once('external-connection-attached', (externalConn) => {
65
+ timingEvents.externalAttachTimestamp = now();
66
+ const selectedExternalCandidates = externalConn.getSelectedCandidates();
67
+ this.eventEmitter.emit('external-peer-attached', Object.assign(Object.assign({}, connectionEventParams), { externalConnection: {
68
+ sessionId: externalConn.id,
69
+ localSessionDescription: externalConn.getLocalDescription(),
70
+ remoteSessionDescription: externalConn.getRemoteDescription(),
71
+ selectedLocalCandidate: selectedExternalCandidates.local,
72
+ selectedRemoteCandidate: selectedExternalCandidates.remote
73
+ } }));
74
+ });
75
+ const emitChannelEvents = (channelStream) => {
76
+ const channelEventParams = Object.assign(Object.assign({}, connectionEventParams), { channelId: channelStream.id });
77
+ this.eventEmitter.emit('data-channel-opened', Object.assign(Object.assign({}, channelEventParams), { channelLabel: channelStream.label, channelProtocol: channelStream.protocol, eventTimestamp: now() }));
78
+ const emitMessage = (direction) => (data) => {
79
+ const isBinary = Buffer.isBuffer(data);
80
+ const content = isBinary
81
+ ? data
82
+ : Buffer.from(data, 'utf8');
83
+ this.eventEmitter.emit(`data-channel-message-${direction}`, Object.assign(Object.assign({}, channelEventParams), { direction,
84
+ content,
85
+ isBinary, eventTimestamp: now() }));
86
+ };
87
+ channelStream.on('read-data', emitMessage('received'));
88
+ channelStream.on('wrote-data', emitMessage('sent'));
89
+ channelStream.on('close', () => this.eventEmitter.emit('data-channel-closed', Object.assign(Object.assign({}, channelEventParams), { eventTimestamp: now() })));
90
+ };
91
+ conn.on('channel-open', emitChannelEvents);
92
+ // Due to race conditions somewhere (?) presumably in node-datachannel, channels can
93
+ // be created before the 'connected' event fires, so we need to handle already
94
+ // existing channels here too:
95
+ conn.channels.forEach(emitChannelEvents);
96
+ const emitTrackEvents = (mediaTrack) => {
97
+ const trackEventParams = Object.assign(Object.assign({}, connectionEventParams), { trackMid: mediaTrack.mid });
98
+ this.eventEmitter.emit('media-track-opened', Object.assign(Object.assign({}, trackEventParams), { trackType: mediaTrack.type, trackDirection: mediaTrack.direction, eventTimestamp: now() }));
99
+ let previousBytesSent = 0;
100
+ let previousBytesReceived = 0;
101
+ const statsInterval = setInterval(() => {
102
+ if (previousBytesSent === mediaTrack.totalBytesSent &&
103
+ previousBytesReceived === mediaTrack.totalBytesReceived)
104
+ return; // Skip zero-change events to limit traffic noise
105
+ this.eventEmitter.emit('media-track-stats', Object.assign(Object.assign({}, trackEventParams), { totalBytesSent: mediaTrack.totalBytesSent, totalBytesReceived: mediaTrack.totalBytesReceived, eventTimestamp: now() }));
106
+ previousBytesSent = mediaTrack.totalBytesSent;
107
+ previousBytesReceived = mediaTrack.totalBytesReceived;
108
+ }, 1000);
109
+ mediaTrack.on('close', () => {
110
+ clearInterval(statsInterval);
111
+ this.eventEmitter.emit('media-track-closed', Object.assign(Object.assign({}, trackEventParams), { eventTimestamp: now() }));
112
+ });
113
+ };
114
+ conn.on('track-open', emitTrackEvents);
115
+ // Due to race conditions somewhere (?) presumably in node-datachannel, tracks can
116
+ // be created before the 'connected' event fires, so we need to handle already
117
+ // existing tracks here too:
118
+ conn.mediaTracks.forEach(emitTrackEvents);
119
+ conn.once('connection-closed', () => {
120
+ timingEvents.disconnectTimestamp = now();
121
+ this.eventEmitter.emit('peer-disconnected', Object.assign({}, connectionEventParams));
122
+ });
123
+ });
124
+ }
43
125
  }
44
126
  createExternalOffer(options = {}) {
45
127
  return __awaiter(this, void 0, void 0, function* () {
128
+ if (this.debug)
129
+ console.log(`Creating external peer offer for ${this.peerId}`);
46
130
  const externalConn = new rtc_connection_1.RTCConnection();
47
131
  this.unassignedExternalConnections[externalConn.id] = externalConn;
48
132
  this.trackConnection(externalConn);
@@ -51,6 +135,8 @@ class MockRTCServerPeer {
51
135
  offer: yield externalConn.sessionApi.createOffer(options),
52
136
  session: externalConn.sessionApi,
53
137
  setAnswer: (answer) => __awaiter(this, void 0, void 0, function* () {
138
+ if (this.debug)
139
+ console.log(`Accepting answer for external peer offer for ${this.peerId}`);
54
140
  externalConn.sessionApi.completeOffer(answer);
55
141
  })
56
142
  };
@@ -58,6 +144,8 @@ class MockRTCServerPeer {
58
144
  }
59
145
  answerExternalOffer(offer, options) {
60
146
  return __awaiter(this, void 0, void 0, function* () {
147
+ if (this.debug)
148
+ console.log(`Answering offer with external peer for ${this.peerId}`);
61
149
  const externalConn = new rtc_connection_1.RTCConnection();
62
150
  this.unassignedExternalConnections[externalConn.id] = externalConn;
63
151
  this.trackConnection(externalConn);
@@ -76,7 +164,7 @@ class MockRTCServerPeer {
76
164
  conn.close().catch(() => { });
77
165
  });
78
166
  if (this.options.recordMessages) {
79
- conn.on('channel-open', (channel) => {
167
+ const logChannelMessages = (channel) => {
80
168
  var _a;
81
169
  var _b;
82
170
  const channelLabel = channel.label;
@@ -84,12 +172,16 @@ class MockRTCServerPeer {
84
172
  channel.on('data', d => {
85
173
  messageLog.push(d);
86
174
  });
87
- });
175
+ };
176
+ conn.channels.forEach(logChannelMessages);
177
+ conn.on('channel-open', logChannelMessages);
88
178
  }
89
179
  return conn;
90
180
  }
91
181
  createOffer(options = {}) {
92
182
  return __awaiter(this, void 0, void 0, function* () {
183
+ if (this.debug)
184
+ console.log(`Creating mock offer for ${this.peerId}`);
93
185
  const conn = this.createConnection();
94
186
  return {
95
187
  offer: yield conn.sessionApi.createOffer(options),
@@ -102,6 +194,8 @@ class MockRTCServerPeer {
102
194
  }
103
195
  answerOffer(offer, options = {}) {
104
196
  return __awaiter(this, void 0, void 0, function* () {
197
+ if (this.debug)
198
+ console.log(`Answering offer for mocking for ${this.peerId}`);
105
199
  const conn = this.createConnection();
106
200
  return {
107
201
  answer: yield conn.sessionApi.answerOffer(offer, options),
@@ -115,7 +209,8 @@ class MockRTCServerPeer {
115
209
  handleConnection(conn) {
116
210
  return __awaiter(this, void 0, void 0, function* () {
117
211
  yield conn.waitUntilConnected();
118
- for (const step of this.handlerSteps) {
212
+ const handlerSteps = this.getHandlerSteps(conn);
213
+ for (const step of handlerSteps) {
119
214
  yield step.handle(conn);
120
215
  }
121
216
  yield conn.close();
@@ -128,11 +223,17 @@ class MockRTCServerPeer {
128
223
  }
129
224
  getAllMessages() {
130
225
  return __awaiter(this, void 0, void 0, function* () {
226
+ if (!this.options.recordMessages) {
227
+ throw new Error("Can't query messages, as recordMessages was not enabled");
228
+ }
131
229
  return Object.values(this.messages).flat();
132
230
  });
133
231
  }
134
232
  getMessagesOnChannel(channelName) {
135
233
  return __awaiter(this, void 0, void 0, function* () {
234
+ if (!this.options.recordMessages) {
235
+ throw new Error("Can't query messages, as recordMessages was not enabled");
236
+ }
136
237
  return this.messages[channelName].flat();
137
238
  });
138
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mockrtc-server-peer.js","sourceRoot":"","sources":["../../src/server/mockrtc-server-peer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mockrtc-server-peer.js","sourceRoot":"","sources":["../../src/server/mockrtc-server-peer.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,22 @@
1
- import { MockRTC, MockRTCOptions, MockRTCPeerBuilder } from "../mockrtc";
1
+ import { MockRTC, MockRTCEvent, MockRTCOptions, MockRTCPeerBuilder } from "../mockrtc";
2
2
  import { MockRTCServerPeer } from "./mockrtc-server-peer";
3
3
  import { HandlerStepDefinition } from "../handling/handler-step-definitions";
4
+ import { MockRTCPeer } from "../mockrtc-peer";
4
5
  export declare class MockRTCServer implements MockRTC {
5
6
  private options;
7
+ private debug;
6
8
  constructor(options?: MockRTCOptions);
9
+ private eventEmitter;
7
10
  start(): Promise<void>;
8
11
  stop(): Promise<void>;
9
- buildPeer(): MockRTCPeerBuilder;
10
- buildPeerFromData: (handlerStepDefinitions: HandlerStepDefinition[]) => Promise<MockRTCServerPeer>;
12
+ reset(): Promise<void>;
11
13
  private _activePeers;
12
14
  get activePeers(): Readonly<MockRTCServerPeer[]>;
13
15
  getPeer(id: string): MockRTCServerPeer;
16
+ on(event: MockRTCEvent, callback: (...args: any) => void): Promise<void>;
17
+ private matchingPeer;
18
+ getMatchingPeer(): MockRTCPeer;
19
+ private matchConnection;
20
+ buildPeer(): MockRTCPeerBuilder;
21
+ buildPeerFromData: (handlerStepDefinitions: HandlerStepDefinition[]) => Promise<MockRTCServerPeer>;
14
22
  }