mockrtc 0.2.0 → 0.3.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 (84) hide show
  1. package/.github/workflows/ci.yml +2 -2
  2. package/dist/client/mockrtc-admin-request-builder.d.ts +7 -1
  3. package/dist/client/mockrtc-admin-request-builder.js +30 -0
  4. package/dist/client/mockrtc-admin-request-builder.js.map +1 -1
  5. package/dist/client/mockrtc-client.d.ts +8 -4
  6. package/dist/client/mockrtc-client.js +21 -9
  7. package/dist/client/mockrtc-client.js.map +1 -1
  8. package/dist/handling/handler-builder.d.ts +16 -9
  9. package/dist/handling/handler-builder.js +11 -1
  10. package/dist/handling/handler-builder.js.map +1 -1
  11. package/dist/handling/handler-step-definitions.d.ts +40 -23
  12. package/dist/handling/handler-step-definitions.js +61 -19
  13. package/dist/handling/handler-step-definitions.js.map +1 -1
  14. package/dist/handling/handler-steps.d.ts +4 -1
  15. package/dist/handling/handler-steps.js +26 -16
  16. package/dist/handling/handler-steps.js.map +1 -1
  17. package/dist/main-browser.d.ts +1 -0
  18. package/dist/main-browser.js +2 -1
  19. package/dist/main-browser.js.map +1 -1
  20. package/dist/main.d.ts +5 -3
  21. package/dist/main.js +2 -1
  22. package/dist/main.js.map +1 -1
  23. package/dist/matching/matcher-definitions.d.ts +51 -0
  24. package/dist/matching/matcher-definitions.js +94 -0
  25. package/dist/matching/matcher-definitions.js.map +1 -0
  26. package/dist/matching/matchers.d.ts +27 -0
  27. package/dist/matching/matchers.js +87 -0
  28. package/dist/matching/matchers.js.map +1 -0
  29. package/dist/mockrtc-base.d.ts +16 -0
  30. package/dist/mockrtc-base.js +19 -0
  31. package/dist/mockrtc-base.js.map +1 -0
  32. package/dist/mockrtc-peer.d.ts +9 -2
  33. package/dist/mockrtc.d.ts +62 -0
  34. package/dist/mockrtc.js.map +1 -1
  35. package/dist/rule-builder.d.ts +86 -0
  36. package/dist/rule-builder.js +113 -0
  37. package/dist/rule-builder.js.map +1 -0
  38. package/dist/server/mockrtc-admin-plugin.js +18 -1
  39. package/dist/server/mockrtc-admin-plugin.js.map +1 -1
  40. package/dist/server/mockrtc-server-peer.d.ts +1 -1
  41. package/dist/server/mockrtc-server-peer.js +19 -7
  42. package/dist/server/mockrtc-server-peer.js.map +1 -1
  43. package/dist/server/mockrtc-server.d.ts +12 -5
  44. package/dist/server/mockrtc-server.js +53 -18
  45. package/dist/server/mockrtc-server.js.map +1 -1
  46. package/dist/webrtc/datachannel-stream.d.ts +2 -0
  47. package/dist/webrtc/datachannel-stream.js +15 -1
  48. package/dist/webrtc/datachannel-stream.js.map +1 -1
  49. package/dist/webrtc/mediatrack-stream.d.ts +2 -0
  50. package/dist/webrtc/mediatrack-stream.js +15 -1
  51. package/dist/webrtc/mediatrack-stream.js.map +1 -1
  52. package/dist/webrtc/mockrtc-connection.js +1 -1
  53. package/dist/webrtc/mockrtc-connection.js.map +1 -1
  54. package/dist/webrtc/rtc-connection.d.ts +6 -2
  55. package/dist/webrtc/rtc-connection.js +20 -20
  56. package/dist/webrtc/rtc-connection.js.map +1 -1
  57. package/dist/webrtc-hooks.js +8 -2
  58. package/dist/webrtc-hooks.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/client/mockrtc-admin-request-builder.ts +49 -1
  61. package/src/client/mockrtc-client.ts +28 -10
  62. package/src/handling/handler-builder.ts +22 -10
  63. package/src/handling/handler-step-definitions.ts +81 -23
  64. package/src/handling/handler-steps.ts +28 -15
  65. package/src/main-browser.ts +1 -0
  66. package/src/main.ts +5 -1
  67. package/src/matching/matcher-definitions.ts +109 -0
  68. package/src/matching/matchers.ts +118 -0
  69. package/src/mockrtc-base.ts +49 -0
  70. package/src/mockrtc-peer.ts +9 -2
  71. package/src/mockrtc.ts +72 -0
  72. package/src/rule-builder.ts +142 -0
  73. package/src/server/mockrtc-admin-plugin.ts +41 -3
  74. package/src/server/mockrtc-server-peer.ts +28 -18
  75. package/src/server/mockrtc-server.ts +71 -15
  76. package/src/webrtc/datachannel-stream.ts +15 -1
  77. package/src/webrtc/mediatrack-stream.ts +15 -1
  78. package/src/webrtc/mockrtc-connection.ts +1 -1
  79. package/src/webrtc/rtc-connection.ts +36 -19
  80. package/src/webrtc-hooks.ts +8 -2
  81. package/test/integration/events.spec.ts +3 -1
  82. package/test/integration/matching.spec.ts +189 -0
  83. package/test/integration/proxy.spec.ts +4 -2
  84. package/test/integration/send-steps.spec.ts +25 -0
@@ -0,0 +1,86 @@
1
+ /// <reference types="node" />
2
+ import { MockRTCHandlerBuilder } from "./handling/handler-builder";
3
+ import { HandlerStepDefinition } from "./handling/handler-step-definitions";
4
+ import { MatcherDefinition } from "./matching/matcher-definitions";
5
+ export declare type RuleHandlerBuilder = MockRTCHandlerBuilder<void>;
6
+ /**
7
+ * Rule builders allow you to combine sets of matchers, progressively
8
+ * building a set of matching conditions, before defining the resulting
9
+ * behaviour that will be applied to matching traffic.
10
+ */
11
+ export declare class MockRTCRuleBuilder implements Omit<RuleHandlerBuilder, 'handlerSteps' | 'buildCallback'> {
12
+ private addRuleCallback;
13
+ constructor(addRuleCallback: (matcherDefinitions: MatcherDefinition[], handlerStepDefinitions: HandlerStepDefinition[]) => Promise<void>);
14
+ private matchers;
15
+ /**
16
+ * Match RTC connections whose initial negotiation includes a data channel.
17
+ */
18
+ withDataChannels(): this;
19
+ /**
20
+ * Match RTC connections whose initial negotiation includes either an audio or video
21
+ * media track.
22
+ */
23
+ withMedia(): this;
24
+ /**
25
+ * Match RTC connections whose initial negotiation includes a video media track
26
+ */
27
+ withVideo(): this;
28
+ /**
29
+ * Match RTC connections whose initial negotiation includes an audio media track
30
+ */
31
+ withAudio(): this;
32
+ /**
33
+ * Match RTC connections made from hooked JavaScript running on a given hostname.
34
+ *
35
+ * This only matches connections with explicit `sourceURL` metadata, which must be
36
+ * either added automatically (by using the `hookAllWebRTC` or `hookWebRTCConnection`
37
+ * methods) or manually (by providing `metadata: { sourceURL: '...' }` options
38
+ * during mock connection setup).
39
+ *
40
+ * @category Matcher
41
+ */
42
+ fromPageHostname(hostname: string): this;
43
+ /**
44
+ * Match RTC connections made from hooked JavaScript running on a matching URL.
45
+ *
46
+ * This only matches connections with explicit `sourceURL` metadata, which must be
47
+ * either added automatically (by using the `hookAllWebRTC` or `hookWebRTCConnection`
48
+ * methods) or manually (by providing `metadata: { sourceURL: '...' }` options
49
+ * during mock connection setup).
50
+ *
51
+ * @category Matcher
52
+ */
53
+ fromPageUrlMatching(urlRegex: RegExp): this;
54
+ /**
55
+ * Match RTC connections made by hooked JavaScript running within a browser with a
56
+ * matching user agent string.
57
+ *
58
+ * This only matches connections with explicit `userAgent` metadata, which must be
59
+ * either added automatically (by using the `hookAllWebRTC` or `hookWebRTCConnection`
60
+ * methods) or manually (by providing `metadata: { userAgent: '...' }` options
61
+ * during mock connection setup).
62
+ *
63
+ * @category Matcher
64
+ */
65
+ fromUserAgentMatching(userAgentRegEx: RegExp): this;
66
+ private buildDefinitionMethod;
67
+ sleep: (duration: number) => MockRTCHandlerBuilder<void>;
68
+ waitForChannel: (channelLabel?: string | undefined) => MockRTCHandlerBuilder<void>;
69
+ waitForTrack: () => MockRTCHandlerBuilder<void>;
70
+ waitForNextMessage: () => MockRTCHandlerBuilder<void>;
71
+ waitForNextMedia: () => MockRTCHandlerBuilder<void>;
72
+ waitForNextMessageOnChannel: (channelLabel: string) => MockRTCHandlerBuilder<void>;
73
+ createDataChannel: (channelLabel: string) => MockRTCHandlerBuilder<void>;
74
+ send: {
75
+ (message: string | Buffer): MockRTCHandlerBuilder<void>;
76
+ (channel: string | undefined, message: string | Buffer): MockRTCHandlerBuilder<void>;
77
+ };
78
+ thenClose: () => Promise<void>;
79
+ thenSend: {
80
+ (message: string | Buffer): Promise<void>;
81
+ (channel: string, message: string | Buffer): Promise<void>;
82
+ };
83
+ thenEcho: () => Promise<void>;
84
+ thenForwardTo: (peer: RTCPeerConnection) => Promise<void>;
85
+ thenPassThrough: () => Promise<void>;
86
+ }
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /*
3
+ * SPDX-FileCopyrightText: 2022 Tim Perry <tim@httptoolkit.tech>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MockRTCRuleBuilder = void 0;
8
+ const handler_builder_1 = require("./handling/handler-builder");
9
+ const matcher_definitions_1 = require("./matching/matcher-definitions");
10
+ /**
11
+ * Rule builders allow you to combine sets of matchers, progressively
12
+ * building a set of matching conditions, before defining the resulting
13
+ * behaviour that will be applied to matching traffic.
14
+ */
15
+ class MockRTCRuleBuilder {
16
+ constructor(addRuleCallback) {
17
+ this.addRuleCallback = addRuleCallback;
18
+ this.matchers = [];
19
+ // For all handler methods, return a handler builder - i.e. once you start calling
20
+ // any of these step-definition methods, you can't keep calling matcher methods:
21
+ this.buildDefinitionMethod = (methodName) => ((...args) => {
22
+ const handlerBuilder = new handler_builder_1.MockRTCHandlerBuilder((steps) => this.addRuleCallback(this.matchers, steps));
23
+ return handlerBuilder[methodName](...args);
24
+ });
25
+ this.sleep = this.buildDefinitionMethod('sleep');
26
+ this.waitForChannel = this.buildDefinitionMethod('waitForChannel');
27
+ this.waitForTrack = this.buildDefinitionMethod('waitForTrack');
28
+ this.waitForNextMessage = this.buildDefinitionMethod('waitForNextMessage');
29
+ this.waitForNextMedia = this.buildDefinitionMethod('waitForNextMedia');
30
+ this.waitForNextMessageOnChannel = this.buildDefinitionMethod('waitForNextMessageOnChannel');
31
+ this.createDataChannel = this.buildDefinitionMethod('createDataChannel');
32
+ this.send = this.buildDefinitionMethod('send');
33
+ this.thenClose = this.buildDefinitionMethod('thenClose');
34
+ this.thenSend = this.buildDefinitionMethod('thenSend');
35
+ this.thenEcho = this.buildDefinitionMethod('thenEcho');
36
+ this.thenForwardTo = this.buildDefinitionMethod('thenForwardTo');
37
+ this.thenPassThrough = this.buildDefinitionMethod('thenPassThrough');
38
+ }
39
+ /**
40
+ * Match RTC connections whose initial negotiation includes a data channel.
41
+ */
42
+ withDataChannels() {
43
+ this.matchers.push(new matcher_definitions_1.HasDataChannelMatcherDefinition());
44
+ return this;
45
+ }
46
+ /**
47
+ * Match RTC connections whose initial negotiation includes either an audio or video
48
+ * media track.
49
+ */
50
+ withMedia() {
51
+ this.matchers.push(new matcher_definitions_1.HasMediaTrackMatcherDefinition());
52
+ return this;
53
+ }
54
+ /**
55
+ * Match RTC connections whose initial negotiation includes a video media track
56
+ */
57
+ withVideo() {
58
+ this.matchers.push(new matcher_definitions_1.HasVideoTrackMatcherDefinition());
59
+ return this;
60
+ }
61
+ /**
62
+ * Match RTC connections whose initial negotiation includes an audio media track
63
+ */
64
+ withAudio() {
65
+ this.matchers.push(new matcher_definitions_1.HasAudioTrackMatcherDefinition());
66
+ return this;
67
+ }
68
+ /**
69
+ * Match RTC connections made from hooked JavaScript running on a given hostname.
70
+ *
71
+ * This only matches connections with explicit `sourceURL` metadata, which must be
72
+ * either added automatically (by using the `hookAllWebRTC` or `hookWebRTCConnection`
73
+ * methods) or manually (by providing `metadata: { sourceURL: '...' }` options
74
+ * during mock connection setup).
75
+ *
76
+ * @category Matcher
77
+ */
78
+ fromPageHostname(hostname) {
79
+ this.matchers.push(new matcher_definitions_1.HostnameMatcherDefinition(hostname));
80
+ return this;
81
+ }
82
+ /**
83
+ * Match RTC connections made from hooked JavaScript running on a matching URL.
84
+ *
85
+ * This only matches connections with explicit `sourceURL` metadata, which must be
86
+ * either added automatically (by using the `hookAllWebRTC` or `hookWebRTCConnection`
87
+ * methods) or manually (by providing `metadata: { sourceURL: '...' }` options
88
+ * during mock connection setup).
89
+ *
90
+ * @category Matcher
91
+ */
92
+ fromPageUrlMatching(urlRegex) {
93
+ this.matchers.push(new matcher_definitions_1.UrlRegexMatcherDefinition(urlRegex));
94
+ return this;
95
+ }
96
+ /**
97
+ * Match RTC connections made by hooked JavaScript running within a browser with a
98
+ * matching user agent string.
99
+ *
100
+ * This only matches connections with explicit `userAgent` metadata, which must be
101
+ * either added automatically (by using the `hookAllWebRTC` or `hookWebRTCConnection`
102
+ * methods) or manually (by providing `metadata: { userAgent: '...' }` options
103
+ * during mock connection setup).
104
+ *
105
+ * @category Matcher
106
+ */
107
+ fromUserAgentMatching(userAgentRegEx) {
108
+ this.matchers.push(new matcher_definitions_1.UserAgentRegexMatcherDefinition(userAgentRegEx));
109
+ return this;
110
+ }
111
+ }
112
+ exports.MockRTCRuleBuilder = MockRTCRuleBuilder;
113
+ //# sourceMappingURL=rule-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-builder.js","sourceRoot":"","sources":["../src/rule-builder.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ const mockttp_1 = require("mockttp");
20
20
  const graphql_subscriptions_1 = require("graphql-subscriptions");
21
21
  const handler_steps_1 = require("../handling/handler-steps");
22
22
  const mockrtc_server_1 = require("./mockrtc-server");
23
+ const matchers_1 = require("../matching/matchers");
23
24
  const { deserialize } = mockttp_1.PluggableAdmin.Serialization;
24
25
  const EVENTS = [
25
26
  'peer-connected',
@@ -38,6 +39,8 @@ class MockRTCAdminPlugin {
38
39
  this.schema = (0, graphql_tag_1.gql) `
39
40
  extend type Mutation {
40
41
  createPeer(data: RTCHandlerData!): MockedPeer!
42
+ addRTCRule(data: RTCRuleData!): Void
43
+ setRTCRules(data: [RTCRuleData!]!): Void
41
44
 
42
45
  createOffer(peerId: ID!, sessionId: ID, options: Raw): Session!
43
46
  createExternalOffer(peerId: ID!, options: Raw): Session!
@@ -51,6 +54,11 @@ class MockRTCAdminPlugin {
51
54
  steps: [Raw!]!
52
55
  }
53
56
 
57
+ input RTCRuleData {
58
+ matchers: [Raw!]!
59
+ steps: [Raw!]!
60
+ }
61
+
54
62
  type MockedPeer {
55
63
  peerId: ID!
56
64
  }
@@ -217,7 +225,16 @@ class MockRTCAdminPlugin {
217
225
  return {
218
226
  Mutation: {
219
227
  createPeer: (__, { data: { steps } }) => {
220
- return this.mockRTCServer.buildPeerFromData(steps.map((stepData) => deserialize(stepData, adminStream, ruleParams, handler_steps_1.StepLookup)));
228
+ return this.mockRTCServer.buildPeerFromDefinition(steps.map((stepData) => deserialize(stepData, adminStream, ruleParams, handler_steps_1.StepLookup)));
229
+ },
230
+ addRTCRule: (__, { data: { steps, matchers } }) => {
231
+ return this.mockRTCServer.addRuleFromDefinition(matchers.map((matcherData) => deserialize(matcherData, adminStream, ruleParams, matchers_1.MatcherLookup)), steps.map((stepData) => deserialize(stepData, adminStream, ruleParams, handler_steps_1.StepLookup)));
232
+ },
233
+ setRTCRules: (__, { data: rules }) => {
234
+ return this.mockRTCServer.setRulesFromDefinitions(rules.map(({ matchers, steps }) => ({
235
+ matchers: matchers.map((matcherData) => deserialize(matcherData, adminStream, ruleParams, matchers_1.MatcherLookup)),
236
+ steps: steps.map((stepData) => deserialize(stepData, adminStream, ruleParams, handler_steps_1.StepLookup))
237
+ })));
221
238
  },
222
239
  createOffer: (__, { peerId, sessionId, options }) => __awaiter(this, void 0, void 0, function* () {
223
240
  const peer = this.mockRTCServer.getPeer(peerId);
@@ -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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"}
@@ -11,7 +11,7 @@ export declare class MockRTCServerPeer implements MockRTCPeer {
11
11
  private debug;
12
12
  private readonly connections;
13
13
  private readonly unassignedExternalConnections;
14
- constructor(getHandlerSteps: (conn: RTCConnection) => HandlerStep[], options: MockRTCPeerOptions & {
14
+ constructor(getHandlerSteps: (conn: RTCConnection) => (HandlerStep[] | Promise<HandlerStep[]>), options: MockRTCPeerOptions & {
15
15
  peerId?: string;
16
16
  }, eventEmitter: EventEmitter);
17
17
  private trackConnection;
@@ -74,7 +74,13 @@ class MockRTCServerPeer {
74
74
  });
75
75
  const emitChannelEvents = (channelStream) => {
76
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() }));
77
+ const announceOpen = () => {
78
+ this.eventEmitter.emit('data-channel-opened', Object.assign(Object.assign({}, channelEventParams), { channelLabel: channelStream.label, channelProtocol: channelStream.protocol, eventTimestamp: now() }));
79
+ };
80
+ if (channelStream.isOpen)
81
+ announceOpen();
82
+ else
83
+ channelStream.on('channel-open', announceOpen);
78
84
  const emitMessage = (direction) => (data) => {
79
85
  const isBinary = Buffer.isBuffer(data);
80
86
  const content = isBinary
@@ -88,14 +94,20 @@ class MockRTCServerPeer {
88
94
  channelStream.on('wrote-data', emitMessage('sent'));
89
95
  channelStream.on('close', () => this.eventEmitter.emit('data-channel-closed', Object.assign(Object.assign({}, channelEventParams), { eventTimestamp: now() })));
90
96
  };
91
- conn.on('channel-open', emitChannelEvents);
97
+ conn.on('channel-created', emitChannelEvents);
92
98
  // Due to race conditions somewhere (?) presumably in node-datachannel, channels can
93
99
  // be created before the 'connected' event fires, so we need to handle already
94
100
  // existing channels here too:
95
101
  conn.channels.forEach(emitChannelEvents);
96
102
  const emitTrackEvents = (mediaTrack) => {
97
103
  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() }));
104
+ const announceOpen = () => {
105
+ this.eventEmitter.emit('media-track-opened', Object.assign(Object.assign({}, trackEventParams), { trackType: mediaTrack.type, trackDirection: mediaTrack.direction, eventTimestamp: now() }));
106
+ };
107
+ if (mediaTrack.isOpen)
108
+ announceOpen();
109
+ else
110
+ mediaTrack.on('track-open', announceOpen);
99
111
  let previousBytesSent = 0;
100
112
  let previousBytesReceived = 0;
101
113
  const statsInterval = setInterval(() => {
@@ -111,7 +123,7 @@ class MockRTCServerPeer {
111
123
  this.eventEmitter.emit('media-track-closed', Object.assign(Object.assign({}, trackEventParams), { eventTimestamp: now() }));
112
124
  });
113
125
  };
114
- conn.on('track-open', emitTrackEvents);
126
+ conn.on('track-created', emitTrackEvents);
115
127
  // Due to race conditions somewhere (?) presumably in node-datachannel, tracks can
116
128
  // be created before the 'connected' event fires, so we need to handle already
117
129
  // existing tracks here too:
@@ -169,12 +181,12 @@ class MockRTCServerPeer {
169
181
  var _b;
170
182
  const channelLabel = channel.label;
171
183
  const messageLog = ((_a = (_b = this.messages)[channelLabel]) !== null && _a !== void 0 ? _a : (_b[channelLabel] = []));
172
- channel.on('data', d => {
184
+ channel.on('read-data', d => {
173
185
  messageLog.push(d);
174
186
  });
175
187
  };
176
188
  conn.channels.forEach(logChannelMessages);
177
- conn.on('channel-open', logChannelMessages);
189
+ conn.on('channel-created', logChannelMessages);
178
190
  }
179
191
  return conn;
180
192
  }
@@ -209,7 +221,7 @@ class MockRTCServerPeer {
209
221
  handleConnection(conn) {
210
222
  return __awaiter(this, void 0, void 0, function* () {
211
223
  yield conn.waitUntilConnected();
212
- const handlerSteps = this.getHandlerSteps(conn);
224
+ const handlerSteps = yield this.getHandlerSteps(conn);
213
225
  for (const step of handlerSteps) {
214
226
  yield step.handle(conn);
215
227
  }
@@ -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,8 +1,10 @@
1
- import { MockRTC, MockRTCEvent, MockRTCOptions, MockRTCPeerBuilder } from "../mockrtc";
1
+ import { MockRTC, MockRTCEvent, MockRTCOptions } from "../mockrtc";
2
+ import { MockRTCBase } from "../mockrtc-base";
2
3
  import { MockRTCServerPeer } from "./mockrtc-server-peer";
3
- import { HandlerStepDefinition } from "../handling/handler-step-definitions";
4
4
  import { MockRTCPeer } from "../mockrtc-peer";
5
- export declare class MockRTCServer implements MockRTC {
5
+ import type { MatcherDefinition } from "../matching/matcher-definitions";
6
+ import type { HandlerStepDefinition } from "../handling/handler-step-definitions";
7
+ export declare class MockRTCServer extends MockRTCBase implements MockRTC {
6
8
  private options;
7
9
  private debug;
8
10
  constructor(options?: MockRTCOptions);
@@ -16,7 +18,12 @@ export declare class MockRTCServer implements MockRTC {
16
18
  on(event: MockRTCEvent, callback: (...args: any) => void): Promise<void>;
17
19
  private matchingPeer;
18
20
  getMatchingPeer(): MockRTCPeer;
21
+ private rules;
22
+ setRulesFromDefinitions(rules: Array<{
23
+ matchers: MatcherDefinition[];
24
+ steps: HandlerStepDefinition[];
25
+ }>): Promise<void>;
26
+ addRuleFromDefinition(matcherDefinitions: MatcherDefinition[], handlerStepDefinitions: HandlerStepDefinition[]): Promise<void>;
19
27
  private matchConnection;
20
- buildPeer(): MockRTCPeerBuilder;
21
- buildPeerFromData: (handlerStepDefinitions: HandlerStepDefinition[]) => Promise<MockRTCServerPeer>;
28
+ buildPeerFromDefinition(handlerStepDefinitions: HandlerStepDefinition[]): Promise<MockRTCServerPeer>;
22
29
  }
@@ -15,27 +15,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.MockRTCServer = void 0;
17
17
  const events_1 = require("events");
18
+ const mockrtc_base_1 = require("../mockrtc-base");
18
19
  const mockrtc_server_peer_1 = require("./mockrtc-server-peer");
19
- const handler_builder_1 = require("../handling/handler-builder");
20
+ const matchers_1 = require("../matching/matchers");
20
21
  const handler_steps_1 = require("../handling/handler-steps");
21
22
  const MATCHING_PEER_ID = 'matching-peer';
22
- class MockRTCServer {
23
+ class MockRTCServer extends mockrtc_base_1.MockRTCBase {
23
24
  constructor(options = {}) {
25
+ super();
24
26
  this.options = options;
25
27
  this.debug = false;
26
28
  this.eventEmitter = new events_1.EventEmitter();
27
29
  this._activePeers = {};
28
- this.buildPeerFromData = (handlerStepDefinitions) => __awaiter(this, void 0, void 0, function* () {
29
- const handlerSteps = handlerStepDefinitions.map((definition) => {
30
- return Object.assign(Object.create(handler_steps_1.StepLookup[definition.type].prototype), definition);
31
- });
32
- const peer = new mockrtc_server_peer_1.MockRTCServerPeer(() => handlerSteps, // Always runs a fixed set of steps
33
- this.options, this.eventEmitter);
34
- this._activePeers[peer.peerId] = peer;
35
- if (this.debug)
36
- console.log(`Built MockRTC peer ${peer.peerId} with steps: ${handlerStepDefinitions.map(d => d.type).join(', ')}`);
37
- return peer;
38
- });
30
+ this.rules = [];
39
31
  this.debug = !!options.debug;
40
32
  }
41
33
  start() {
@@ -57,6 +49,7 @@ class MockRTCServer {
57
49
  yield Promise.all(this.activePeers.map(peer => peer.close()));
58
50
  this._activePeers = {};
59
51
  this.matchingPeer = undefined;
52
+ this.rules = [];
60
53
  this.eventEmitter.removeAllListeners();
61
54
  });
62
55
  }
@@ -77,14 +70,56 @@ class MockRTCServer {
77
70
  }
78
71
  return this.matchingPeer;
79
72
  }
73
+ setRulesFromDefinitions(rules) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ this.rules = [];
76
+ yield Promise.all(rules.map(({ matchers, steps }) => this.addRuleFromDefinition(matchers, steps)));
77
+ });
78
+ }
79
+ addRuleFromDefinition(matcherDefinitions, handlerStepDefinitions) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const matchers = matcherDefinitions.map((definition) => {
82
+ return Object.assign(Object.create(matchers_1.MatcherLookup[definition.type].prototype), definition);
83
+ });
84
+ const handlerSteps = handlerStepDefinitions.map((definition) => {
85
+ return Object.assign(Object.create(handler_steps_1.StepLookup[definition.type].prototype), definition);
86
+ });
87
+ this.rules.push({ matchers, handlerSteps });
88
+ });
89
+ }
80
90
  matchConnection(connection) {
81
- return [
82
- new handler_steps_1.DynamicProxyStep()
83
- ];
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ if (this.debug)
93
+ console.log('Matching incoming RTC connection...');
94
+ yield connection.waitUntilConnected();
95
+ for (const rule of this.rules) {
96
+ const matches = rule.matchers.every(matcher => matcher.matches(connection));
97
+ if (matches) {
98
+ if (this.debug)
99
+ console.log(`Matched incoming RTC connection, running steps: ${rule.handlerSteps.map(s => s.type).join(', ')}`);
100
+ return rule.handlerSteps;
101
+ }
102
+ }
103
+ if (this.debug)
104
+ console.log('RTC connection did not match any rules');
105
+ // Unmatched connections are proxied dynamically. In practice, that means they're accepted
106
+ // and ignored initially, unless an external peer also connects and is attached:
107
+ return [new handler_steps_1.DynamicProxyStep()];
108
+ });
84
109
  }
85
110
  // Peer definition API:
86
- buildPeer() {
87
- return new handler_builder_1.MockRTCHandlerBuilder(this.buildPeerFromData);
111
+ buildPeerFromDefinition(handlerStepDefinitions) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ const handlerSteps = handlerStepDefinitions.map((definition) => {
114
+ return Object.assign(Object.create(handler_steps_1.StepLookup[definition.type].prototype), definition);
115
+ });
116
+ const peer = new mockrtc_server_peer_1.MockRTCServerPeer(() => handlerSteps, // Always runs a fixed set of steps
117
+ this.options, this.eventEmitter);
118
+ this._activePeers[peer.peerId] = peer;
119
+ if (this.debug)
120
+ console.log(`Built MockRTC peer ${peer.peerId} with steps: ${handlerStepDefinitions.map(d => d.type).join(', ')}`);
121
+ return peer;
122
+ });
88
123
  }
89
124
  }
90
125
  exports.MockRTCServer = MockRTCServer;
@@ -1 +1 @@
1
- {"version":3,"file":"mockrtc-server.js","sourceRoot":"","sources":["../../src/server/mockrtc-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mockrtc-server.js","sourceRoot":"","sources":["../../src/server/mockrtc-server.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ export declare class DataChannelStream extends stream.Duplex {
16
16
  writableHighWaterMark?: number | undefined;
17
17
  allowHalfOpen?: boolean;
18
18
  });
19
+ private _isOpen;
20
+ get isOpen(): boolean;
19
21
  private _readActive;
20
22
  _read(): void;
21
23
  _write(chunk: string | Buffer | unknown, encoding: string, callback: (error: Error | null) => void): void;
@@ -19,6 +19,7 @@ class DataChannelStream extends stream.Duplex {
19
19
  super(Object.assign(Object.assign({ allowHalfOpen: false }, streamOptions), { objectMode: true // Preserve the string/buffer distinction (WebRTC treats them differently)
20
20
  }));
21
21
  this.rawChannel = rawChannel;
22
+ this._isOpen = false;
22
23
  this._readActive = true;
23
24
  rawChannel.onMessage((msg) => {
24
25
  // Independently of the stream and it's normal events, we also fire our own
@@ -42,8 +43,21 @@ class DataChannelStream extends stream.Duplex {
42
43
  // Buffer all writes until the DataChannel opens
43
44
  if (!rawChannel.isOpen()) {
44
45
  this.cork();
45
- rawChannel.onOpen(() => this.uncork());
46
+ rawChannel.onOpen(() => {
47
+ this.uncork();
48
+ this._isOpen = true;
49
+ this.emit('channel-open');
50
+ });
46
51
  }
52
+ else {
53
+ setImmediate(() => {
54
+ this._isOpen = true;
55
+ this.emit('channel-open');
56
+ });
57
+ }
58
+ }
59
+ get isOpen() {
60
+ return this._isOpen;
47
61
  }
48
62
  _read() {
49
63
  // Stop dropping messages, if the buffer filling up meant we were doing so before.
@@ -1 +1 @@
1
- {"version":3,"file":"datachannel-stream.js","sourceRoot":"","sources":["../../src/webrtc/datachannel-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datachannel-stream.js","sourceRoot":"","sources":["../../src/webrtc/datachannel-stream.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export declare class MediaTrackStream extends stream.Duplex {
13
13
  writableHighWaterMark?: number | undefined;
14
14
  allowHalfOpen?: boolean;
15
15
  });
16
+ private _isOpen;
17
+ get isOpen(): boolean;
16
18
  private _totalBytesSent;
17
19
  get totalBytesSent(): number;
18
20
  private _totalBytesReceived;