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
@@ -13,7 +13,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
13
13
  });
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.StepLookup = exports.DynamicProxyStep = exports.PeerProxyStep = exports.EchoStep = exports.CloseStep = exports.SendStep = exports.WaitForMediaStep = exports.WaitForTrackStep = exports.WaitForMessageStep = exports.WaitForChannelStep = exports.WaitForDurationStep = void 0;
16
+ exports.StepLookup = exports.DynamicProxyStep = exports.PeerProxyStep = exports.EchoStep = exports.CloseStep = exports.SendStep = exports.CreateChannelStep = exports.WaitForMediaStep = exports.WaitForTrackStep = exports.WaitForMessageStep = exports.WaitForChannelStep = exports.WaitForDurationStep = void 0;
17
17
  const rtc_connection_1 = require("../webrtc/rtc-connection");
18
18
  const handler_step_definitions_1 = require("./handler-step-definitions");
19
19
  class WaitForDurationStep extends handler_step_definitions_1.WaitForDurationStepDefinition {
@@ -52,7 +52,7 @@ class WaitForMessageStep extends handler_step_definitions_1.WaitForMessageStepDe
52
52
  return __awaiter(this, void 0, void 0, function* () {
53
53
  return new Promise((resolve) => {
54
54
  const messageReceived = () => {
55
- connection.removeListener('channel-open', listenForMessage);
55
+ connection.removeListener('channel-created', listenForMessage);
56
56
  connection.channels.forEach((channel) => {
57
57
  channel.removeListener('data', messageReceived);
58
58
  channel.pause();
@@ -64,7 +64,7 @@ class WaitForMessageStep extends handler_step_definitions_1.WaitForMessageStepDe
64
64
  channel.once('data', messageReceived);
65
65
  }
66
66
  };
67
- connection.on('channel-open', listenForMessage);
67
+ connection.on('channel-created', listenForMessage);
68
68
  connection.channels.forEach(listenForMessage);
69
69
  });
70
70
  });
@@ -89,7 +89,7 @@ class WaitForMediaStep extends handler_step_definitions_1.WaitForMediaStepDefini
89
89
  return __awaiter(this, void 0, void 0, function* () {
90
90
  return new Promise((resolve) => {
91
91
  const messageReceived = () => {
92
- connection.removeListener('track-open', listenForData);
92
+ connection.removeListener('track-created', listenForData);
93
93
  connection.mediaTracks.forEach((track) => {
94
94
  track.removeListener('data', messageReceived);
95
95
  track.pause();
@@ -99,13 +99,22 @@ class WaitForMediaStep extends handler_step_definitions_1.WaitForMediaStepDefini
99
99
  const listenForData = (track) => {
100
100
  track.once('data', messageReceived);
101
101
  };
102
- connection.on('track-open', listenForData);
102
+ connection.on('track-created', listenForData);
103
103
  connection.mediaTracks.forEach(listenForData);
104
104
  });
105
105
  });
106
106
  }
107
107
  }
108
108
  exports.WaitForMediaStep = WaitForMediaStep;
109
+ class CreateChannelStep extends handler_step_definitions_1.CreateChannelStepDefinition {
110
+ handle(conn) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const channel = conn.createDataChannel(this.channelLabel);
113
+ return new Promise((resolve) => channel.once('channel-open', resolve));
114
+ });
115
+ }
116
+ }
117
+ exports.CreateChannelStep = CreateChannelStep;
109
118
  class SendStep extends handler_step_definitions_1.SendStepDefinition {
110
119
  matchesChannel(channel) {
111
120
  return this.channelLabel === undefined || this.channelLabel === channel.label;
@@ -142,8 +151,8 @@ class EchoStep extends handler_step_definitions_1.EchoStepDefinition {
142
151
  const echoContent = (stream) => {
143
152
  stream.pipe(stream);
144
153
  };
145
- connection.on('channel-open', echoContent);
146
- connection.on('track-open', echoContent);
154
+ connection.on('channel-created', echoContent);
155
+ connection.on('track-created', echoContent);
147
156
  connection.channels.forEach(echoContent);
148
157
  connection.mediaTracks.forEach(echoContent);
149
158
  // This step keeps running indefinitely, until the connection closes
@@ -205,14 +214,15 @@ class DynamicProxyStep extends handler_step_definitions_1.DynamicProxyStepDefini
205
214
  exports.DynamicProxyStep = DynamicProxyStep;
206
215
  exports.StepLookup = {
207
216
  'wait-for-duration': WaitForDurationStep,
208
- 'wait-for-channel': WaitForChannelStep,
209
- 'wait-for-track': WaitForTrackStep,
210
- 'wait-for-media': WaitForMediaStep,
211
- 'wait-for-message': WaitForMessageStep,
212
- 'send-message': SendStep,
213
- 'close-connection': CloseStep,
214
- 'echo-channels': EchoStep,
215
- 'peer-proxy': PeerProxyStep,
216
- 'dynamic-proxy': DynamicProxyStep
217
+ 'wait-for-rtc-data-channel': WaitForChannelStep,
218
+ 'wait-for-rtc-track': WaitForTrackStep,
219
+ 'wait-for-rtc-media': WaitForMediaStep,
220
+ 'wait-for-rtc-message': WaitForMessageStep,
221
+ 'create-rtc-data-channel': CreateChannelStep,
222
+ 'send-rtc-data-message': SendStep,
223
+ 'close-rtc-connection': CloseStep,
224
+ 'echo-rtc': EchoStep,
225
+ 'rtc-peer-proxy': PeerProxyStep,
226
+ 'rtc-dynamic-proxy': DynamicProxyStep
217
227
  };
218
228
  //# sourceMappingURL=handler-steps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler-steps.js","sourceRoot":"","sources":["../../src/handling/handler-steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler-steps.js","sourceRoot":"","sources":["../../src/handling/handler-steps.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { MockRTC, MockRTCOptions } from "./mockrtc";
2
2
  import { MockRTCClientOptions } from "./client/mockrtc-client";
3
3
  export * as HandlerStepDefinitions from "./handling/handler-step-definitions";
4
+ export * as MatcherDefinitions from "./matching/matcher-definitions";
4
5
  export { MockRTCAdminRequestBuilder } from "./client/mockrtc-admin-request-builder";
5
6
  export type { MockRTC, MockRTCOptions };
6
7
  export type { MockRTCPeer, MockRTCSession, MockRTCOfferParams, MockRTCAnswerParams, MockRTCExternalOfferParams, MockRTCExternalAnswerParams, OfferOptions, AnswerOptions } from './mockrtc-peer';
@@ -4,10 +4,11 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.getAdminServer = exports.getRemote = exports.getLocal = exports.hookAllWebRTC = exports.hookWebRTCConnection = exports.MOCKRTC_CONTROL_CHANNEL = exports.MockRTCAdminRequestBuilder = exports.HandlerStepDefinitions = void 0;
7
+ exports.getAdminServer = exports.getRemote = exports.getLocal = exports.hookAllWebRTC = exports.hookWebRTCConnection = exports.MOCKRTC_CONTROL_CHANNEL = exports.MockRTCAdminRequestBuilder = exports.MatcherDefinitions = exports.HandlerStepDefinitions = void 0;
8
8
  const mockrtc_client_1 = require("./client/mockrtc-client");
9
9
  // Export the required structures to remotely build and send rules to the admin API:
10
10
  exports.HandlerStepDefinitions = require("./handling/handler-step-definitions");
11
+ exports.MatcherDefinitions = require("./matching/matcher-definitions");
11
12
  var mockrtc_admin_request_builder_1 = require("./client/mockrtc-admin-request-builder");
12
13
  Object.defineProperty(exports, "MockRTCAdminRequestBuilder", { enumerable: true, get: function () { return mockrtc_admin_request_builder_1.MockRTCAdminRequestBuilder; } });
13
14
  var control_channel_1 = require("./webrtc/control-channel");
@@ -1 +1 @@
1
- {"version":3,"file":"main-browser.js","sourceRoot":"","sources":["../src/main-browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,4DAA8E;AAE9E,oFAAoF;AACpF,gFAA8E;AAC9E,wFAAoF;AAA3E,2IAAA,0BAA0B,OAAA;AAkBnC,4DAAmE;AAA1D,0HAAA,uBAAuB,OAAA;AAChC,+CAGwB;AAFpB,oHAAA,oBAAoB,OAAA;AACpB,6GAAA,aAAa,OAAA;AAGjB,SAAgB,QAAQ;IACpB,OAAO,IAAI,8BAAa,EAAE,CAAC;AAC/B,CAAC;AAFD,4BAEC;AAED,SAAgB,SAAS,CAAC,UAAgC,EAAE;IACxD,OAAO,IAAI,8BAAa,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,8BAEC;AAED,SAAgB,cAAc;IAC1B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACjE,CAAC;AAFD,wCAEC"}
1
+ {"version":3,"file":"main-browser.js","sourceRoot":"","sources":["../src/main-browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,4DAA8E;AAE9E,oFAAoF;AACpF,gFAA8E;AAC9E,uEAAqE;AACrE,wFAAoF;AAA3E,2IAAA,0BAA0B,OAAA;AAkBnC,4DAAmE;AAA1D,0HAAA,uBAAuB,OAAA;AAChC,+CAGwB;AAFpB,oHAAA,oBAAoB,OAAA;AACpB,6GAAA,aAAa,OAAA;AAGjB,SAAgB,QAAQ;IACpB,OAAO,IAAI,8BAAa,EAAE,CAAC;AAC/B,CAAC;AAFD,4BAEC;AAED,SAAgB,SAAS,CAAC,UAAgC,EAAE;IACxD,OAAO,IAAI,8BAAa,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,8BAEC;AAED,SAAgB,cAAc;IAC1B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACjE,CAAC;AAFD,wCAEC"}
package/dist/main.d.ts CHANGED
@@ -1,19 +1,21 @@
1
- import { MockRTC, MockRTCOptions, MockRTCPeerBuilder, MockRTCEvent, MockRTCEventData, MockRTCSessionDescription, SelectedRTCCandidate, TimingEvents } from "./mockrtc";
1
+ import { MockRTC, MockRTCOptions, MockRTCPeerBuilder, MockRTCEvent, MockRTCEventData, MockRTCRuleDefinition, MockRTCSessionDescription, SelectedRTCCandidate, TimingEvents } from "./mockrtc";
2
2
  import { MockRTCAdminServer } from "./server/mockrtc-admin-server";
3
3
  export { MockRTCAdminPlugin } from "./server/mockrtc-admin-plugin";
4
4
  import { MockRTCClientOptions } from "./client/mockrtc-client";
5
5
  export * as HandlerStepDefinitions from "./handling/handler-step-definitions";
6
+ export * as MatcherDefinitions from "./matching/matcher-definitions";
6
7
  export { MockRTCAdminRequestBuilder } from "./client/mockrtc-admin-request-builder";
7
8
  export type { HandlerStep } from "./handling/handler-steps";
8
9
  export type { MockRTCHandlerBuilder } from "./handling/handler-builder";
10
+ export type { MockRTCRuleBuilder, RuleHandlerBuilder } from "./rule-builder";
9
11
  export type { MockRTCServerPeer } from "./server/mockrtc-server-peer";
10
12
  export type { SessionData } from "./server/mockrtc-admin-plugin";
11
- export type { RTCConnection } from "./webrtc/rtc-connection";
13
+ export type { RTCConnection, ParsedSDP } from "./webrtc/rtc-connection";
12
14
  export type { MockRTCConnection } from "./webrtc/mockrtc-connection";
13
15
  export type { DataChannelStream } from "./webrtc/datachannel-stream";
14
16
  export type { MediaTrackStream } from "./webrtc/mediatrack-stream";
15
17
  export type { PluggableAdmin } from 'mockttp';
16
- export type { MockRTC, MockRTCOptions, MockRTCClientOptions, MockRTCPeerBuilder, MockRTCAdminServer, MockRTCEvent, MockRTCEventData, MockRTCSessionDescription, SelectedRTCCandidate, TimingEvents };
18
+ export type { MockRTC, MockRTCOptions, MockRTCClientOptions, MockRTCPeerBuilder, MockRTCAdminServer, MockRTCEvent, MockRTCEventData, MockRTCRuleDefinition, MockRTCSessionDescription, SelectedRTCCandidate, TimingEvents };
17
19
  export type { MockRTCPeer, MockRTCPeerOptions, MockRTCSession, MockRTCOfferParams, MockRTCAnswerParams, MockRTCExternalOfferParams, MockRTCExternalAnswerParams, OfferOptions, AnswerOptions, ConnectionMetadata } from './mockrtc-peer';
18
20
  export { MOCKRTC_CONTROL_CHANNEL, type MockRTCControlMessage } from './webrtc/control-channel';
19
21
  export { hookWebRTCConnection, hookAllWebRTC } from "./webrtc-hooks";
package/dist/main.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.getAdminServer = exports.getRemote = exports.getLocal = exports.hookAllWebRTC = exports.hookWebRTCConnection = exports.MOCKRTC_CONTROL_CHANNEL = exports.MockRTCAdminRequestBuilder = exports.HandlerStepDefinitions = exports.MockRTCAdminPlugin = void 0;
7
+ exports.getAdminServer = exports.getRemote = exports.getLocal = exports.hookAllWebRTC = exports.hookWebRTCConnection = exports.MOCKRTC_CONTROL_CHANNEL = exports.MockRTCAdminRequestBuilder = exports.MatcherDefinitions = exports.HandlerStepDefinitions = exports.MockRTCAdminPlugin = void 0;
8
8
  const mockrtc_server_1 = require("./server/mockrtc-server");
9
9
  const mockrtc_admin_server_1 = require("./server/mockrtc-admin-server");
10
10
  var mockrtc_admin_plugin_1 = require("./server/mockrtc-admin-plugin");
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "MockRTCAdminPlugin", { enumerable: true, get: fu
12
12
  const mockrtc_client_1 = require("./client/mockrtc-client");
13
13
  // Export the required structures to remotely build and send rules to the admin API:
14
14
  exports.HandlerStepDefinitions = require("./handling/handler-step-definitions");
15
+ exports.MatcherDefinitions = require("./matching/matcher-definitions");
15
16
  var mockrtc_admin_request_builder_1 = require("./client/mockrtc-admin-request-builder");
16
17
  Object.defineProperty(exports, "MockRTCAdminRequestBuilder", { enumerable: true, get: function () { return mockrtc_admin_request_builder_1.MockRTCAdminRequestBuilder; } });
17
18
  var control_channel_1 = require("./webrtc/control-channel");
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAaH,4DAAwD;AACxD,wEAAmE;AACnE,sEAAmE;AAA1D,0HAAA,kBAAkB,OAAA;AAE3B,4DAA8E;AAE9E,oFAAoF;AACpF,gFAA8E;AAC9E,wFAAoF;AAA3E,2IAAA,0BAA0B,OAAA;AA0CnC,4DAGkC;AAF9B,0HAAA,uBAAuB,OAAA;AAG3B,+CAGwB;AAFpB,oHAAA,oBAAoB,OAAA;AACpB,6GAAA,aAAa,OAAA;AAGjB;;;;;;;;;;;;;GAaG;AACH,SAAgB,QAAQ;IACpB,OAAO,IAAI,8BAAa,EAAE,CAAC;AAC/B,CAAC;AAFD,4BAEC;AAED;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,UAAgC,EAAE;IACxD,OAAO,IAAI,8BAAa,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,8BAEC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,cAAc;IAC1B,OAAO,IAAI,yCAAkB,EAAE,CAAC;AACpC,CAAC;AAFD,wCAEC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,4DAAwD;AACxD,wEAAmE;AACnE,sEAAmE;AAA1D,0HAAA,kBAAkB,OAAA;AAE3B,4DAA8E;AAE9E,oFAAoF;AACpF,gFAA8E;AAC9E,uEAAqE;AACrE,wFAAoF;AAA3E,2IAAA,0BAA0B,OAAA;AA4CnC,4DAGkC;AAF9B,0HAAA,uBAAuB,OAAA;AAG3B,+CAGwB;AAFpB,oHAAA,oBAAoB,OAAA;AACpB,6GAAA,aAAa,OAAA;AAGjB;;;;;;;;;;;;;GAaG;AACH,SAAgB,QAAQ;IACpB,OAAO,IAAI,8BAAa,EAAE,CAAC;AAC/B,CAAC;AAFD,4BAEC;AAED;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,UAAgC,EAAE;IACxD,OAAO,IAAI,8BAAa,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,8BAEC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,cAAc;IAC1B,OAAO,IAAI,yCAAkB,EAAE,CAAC;AACpC,CAAC;AAFD,wCAEC"}
@@ -0,0 +1,51 @@
1
+ import * as PluggableAdmin from 'mockttp/dist/pluggable-admin-api/pluggable-admin.browser';
2
+ export declare type Serializable = PluggableAdmin.Serialization.Serializable;
3
+ export declare const Serializable: typeof PluggableAdmin.Serialization.Serializable;
4
+ export interface MatcherDefinition extends Serializable {
5
+ readonly type: keyof typeof MatcherDefinitionLookup;
6
+ }
7
+ export declare class HasDataChannelMatcherDefinition extends Serializable implements MatcherDefinition {
8
+ readonly type = "has-rtc-data-channel";
9
+ explain(): string;
10
+ }
11
+ export declare class HasVideoTrackMatcherDefinition extends Serializable implements MatcherDefinition {
12
+ readonly type = "has-rtc-video-track";
13
+ explain(): string;
14
+ }
15
+ export declare class HasAudioTrackMatcherDefinition extends Serializable implements MatcherDefinition {
16
+ readonly type = "has-rtc-audio-track";
17
+ explain(): string;
18
+ }
19
+ export declare class HasMediaTrackMatcherDefinition extends Serializable implements MatcherDefinition {
20
+ readonly type = "has-rtc-media-track";
21
+ explain(): string;
22
+ }
23
+ export declare class HostnameMatcherDefinition extends Serializable implements MatcherDefinition {
24
+ readonly hostname: string;
25
+ readonly type = "rtc-page-hostname";
26
+ constructor(hostname: string);
27
+ explain(): string;
28
+ }
29
+ export declare class UrlRegexMatcherDefinition extends Serializable implements MatcherDefinition {
30
+ readonly type = "rtc-page-regex";
31
+ readonly regexSource: string;
32
+ readonly regexFlags: string;
33
+ constructor(regex: RegExp);
34
+ explain(): string;
35
+ }
36
+ export declare class UserAgentRegexMatcherDefinition extends Serializable implements MatcherDefinition {
37
+ readonly type = "rtc-user-agent-regex";
38
+ readonly regexSource: string;
39
+ readonly regexFlags: string;
40
+ constructor(regex: RegExp);
41
+ explain(): string;
42
+ }
43
+ export declare const MatcherDefinitionLookup: {
44
+ 'has-rtc-data-channel': typeof HasDataChannelMatcherDefinition;
45
+ 'has-rtc-video-track': typeof HasVideoTrackMatcherDefinition;
46
+ 'has-rtc-audio-track': typeof HasAudioTrackMatcherDefinition;
47
+ 'has-rtc-media-track': typeof HasMediaTrackMatcherDefinition;
48
+ 'rtc-page-hostname': typeof HostnameMatcherDefinition;
49
+ 'rtc-page-regex': typeof UrlRegexMatcherDefinition;
50
+ 'rtc-user-agent-regex': typeof UserAgentRegexMatcherDefinition;
51
+ };
@@ -0,0 +1,94 @@
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.MatcherDefinitionLookup = exports.UserAgentRegexMatcherDefinition = exports.UrlRegexMatcherDefinition = exports.HostnameMatcherDefinition = exports.HasMediaTrackMatcherDefinition = exports.HasAudioTrackMatcherDefinition = exports.HasVideoTrackMatcherDefinition = exports.HasDataChannelMatcherDefinition = exports.Serializable = void 0;
8
+ const PluggableAdmin = require("mockttp/dist/pluggable-admin-api/pluggable-admin.browser");
9
+ exports.Serializable = PluggableAdmin.Serialization.Serializable;
10
+ class HasDataChannelMatcherDefinition extends exports.Serializable {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = 'has-rtc-data-channel';
14
+ }
15
+ explain() {
16
+ return `with a data channel`;
17
+ }
18
+ }
19
+ exports.HasDataChannelMatcherDefinition = HasDataChannelMatcherDefinition;
20
+ class HasVideoTrackMatcherDefinition extends exports.Serializable {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.type = 'has-rtc-video-track';
24
+ }
25
+ explain() {
26
+ return `with a video track`;
27
+ }
28
+ }
29
+ exports.HasVideoTrackMatcherDefinition = HasVideoTrackMatcherDefinition;
30
+ class HasAudioTrackMatcherDefinition extends exports.Serializable {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.type = 'has-rtc-audio-track';
34
+ }
35
+ explain() {
36
+ return `with an audio track`;
37
+ }
38
+ }
39
+ exports.HasAudioTrackMatcherDefinition = HasAudioTrackMatcherDefinition;
40
+ class HasMediaTrackMatcherDefinition extends exports.Serializable {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.type = 'has-rtc-media-track';
44
+ }
45
+ explain() {
46
+ return `with any media track`;
47
+ }
48
+ }
49
+ exports.HasMediaTrackMatcherDefinition = HasMediaTrackMatcherDefinition;
50
+ class HostnameMatcherDefinition extends exports.Serializable {
51
+ constructor(hostname) {
52
+ super();
53
+ this.hostname = hostname;
54
+ this.type = 'rtc-page-hostname';
55
+ }
56
+ explain() {
57
+ return `from a page on ${this.hostname}`;
58
+ }
59
+ }
60
+ exports.HostnameMatcherDefinition = HostnameMatcherDefinition;
61
+ class UrlRegexMatcherDefinition extends exports.Serializable {
62
+ constructor(regex) {
63
+ super();
64
+ this.type = 'rtc-page-regex';
65
+ this.regexSource = regex.source;
66
+ this.regexFlags = regex.flags;
67
+ }
68
+ explain() {
69
+ return `from a page with URL matching /${this.regexSource}/${this.regexFlags}`;
70
+ }
71
+ }
72
+ exports.UrlRegexMatcherDefinition = UrlRegexMatcherDefinition;
73
+ class UserAgentRegexMatcherDefinition extends exports.Serializable {
74
+ constructor(regex) {
75
+ super();
76
+ this.type = 'rtc-user-agent-regex';
77
+ this.regexSource = regex.source;
78
+ this.regexFlags = regex.flags;
79
+ }
80
+ explain() {
81
+ return `from a user agent matching /${this.regexSource}/${this.regexFlags}`;
82
+ }
83
+ }
84
+ exports.UserAgentRegexMatcherDefinition = UserAgentRegexMatcherDefinition;
85
+ exports.MatcherDefinitionLookup = {
86
+ 'has-rtc-data-channel': HasDataChannelMatcherDefinition,
87
+ 'has-rtc-video-track': HasVideoTrackMatcherDefinition,
88
+ 'has-rtc-audio-track': HasAudioTrackMatcherDefinition,
89
+ 'has-rtc-media-track': HasMediaTrackMatcherDefinition,
90
+ 'rtc-page-hostname': HostnameMatcherDefinition,
91
+ 'rtc-page-regex': UrlRegexMatcherDefinition,
92
+ 'rtc-user-agent-regex': UserAgentRegexMatcherDefinition
93
+ };
94
+ //# sourceMappingURL=matcher-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher-definitions.js","sourceRoot":"","sources":["../../src/matching/matcher-definitions.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2FAA2F;AAG5E,oBAAY,GAAK,cAAc,CAAC,aAAa,cAAC;AAM7D,MAAa,+BAAgC,SAAQ,oBAAY;IAAjE;;QACa,SAAI,GAAG,sBAAsB,CAAC;IAK3C,CAAC;IAHG,OAAO;QACH,OAAO,qBAAqB,CAAC;IACjC,CAAC;CACJ;AAND,0EAMC;AAED,MAAa,8BAA+B,SAAQ,oBAAY;IAAhE;;QACa,SAAI,GAAG,qBAAqB,CAAC;IAK1C,CAAC;IAHG,OAAO;QACH,OAAO,oBAAoB,CAAC;IAChC,CAAC;CACJ;AAND,wEAMC;AAED,MAAa,8BAA+B,SAAQ,oBAAY;IAAhE;;QACa,SAAI,GAAG,qBAAqB,CAAC;IAK1C,CAAC;IAHG,OAAO;QACH,OAAO,qBAAqB,CAAC;IACjC,CAAC;CACJ;AAND,wEAMC;AAED,MAAa,8BAA+B,SAAQ,oBAAY;IAAhE;;QACa,SAAI,GAAG,qBAAqB,CAAC;IAK1C,CAAC;IAHG,OAAO;QACH,OAAO,sBAAsB,CAAC;IAClC,CAAC;CACJ;AAND,wEAMC;AAED,MAAa,yBAA0B,SAAQ,oBAAY;IAIvD,YACoB,QAAgB;QAEhC,KAAK,EAAE,CAAC;QAFQ,aAAQ,GAAR,QAAQ,CAAQ;QAH3B,SAAI,GAAG,mBAAmB,CAAC;IAMpC,CAAC;IAED,OAAO;QACH,OAAO,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC7C,CAAC;CAEJ;AAdD,8DAcC;AAED,MAAa,yBAA0B,SAAQ,oBAAY;IAOvD,YAAY,KAAa;QACrB,KAAK,EAAE,CAAC;QANH,SAAI,GAAG,gBAAgB,CAAC;QAO7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,OAAO;QACH,OAAO,kCAAkC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IACnF,CAAC;CAEJ;AAjBD,8DAiBC;AAED,MAAa,+BAAiC,SAAQ,oBAAY;IAO9D,YAAY,KAAa;QACrB,KAAK,EAAE,CAAC;QANH,SAAI,GAAG,sBAAsB,CAAC;QAOnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,OAAO;QACH,OAAO,+BAA+B,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IAChF,CAAC;CAEJ;AAjBD,0EAiBC;AAEY,QAAA,uBAAuB,GAAG;IACnC,sBAAsB,EAAE,+BAA+B;IACvD,qBAAqB,EAAE,8BAA8B;IACrD,qBAAqB,EAAE,8BAA8B;IACrD,qBAAqB,EAAE,8BAA8B;IACrD,mBAAmB,EAAE,yBAAyB;IAC9C,gBAAgB,EAAE,yBAAyB;IAC3C,sBAAsB,EAAE,+BAA+B;CAC1D,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { RTCConnection } from "../webrtc/rtc-connection";
2
+ import { MatcherDefinition, MatcherDefinitionLookup, HasAudioTrackMatcherDefinition, HasDataChannelMatcherDefinition, HasMediaTrackMatcherDefinition, HasVideoTrackMatcherDefinition, HostnameMatcherDefinition, UrlRegexMatcherDefinition, UserAgentRegexMatcherDefinition } from "./matcher-definitions";
3
+ export interface Matcher extends MatcherDefinition {
4
+ matches(connection: RTCConnection): boolean;
5
+ }
6
+ export declare class HasDataChannelMatcher extends HasDataChannelMatcherDefinition {
7
+ matches(connection: RTCConnection): boolean;
8
+ }
9
+ export declare class HasVideoTrackMatcher extends HasVideoTrackMatcherDefinition {
10
+ matches(connection: RTCConnection): boolean;
11
+ }
12
+ export declare class HasAudioTrackMatcher extends HasAudioTrackMatcherDefinition {
13
+ matches(connection: RTCConnection): boolean;
14
+ }
15
+ export declare class HasMediaTrackMatcher extends HasMediaTrackMatcherDefinition {
16
+ matches(connection: RTCConnection): boolean;
17
+ }
18
+ export declare class HostnameMatcher extends HostnameMatcherDefinition {
19
+ matches(connection: RTCConnection): boolean;
20
+ }
21
+ export declare class UrlRegexMatcher extends UrlRegexMatcherDefinition {
22
+ matches(connection: RTCConnection): boolean;
23
+ }
24
+ export declare class UserAgentRegexMatcher extends UserAgentRegexMatcherDefinition {
25
+ matches(connection: RTCConnection): boolean;
26
+ }
27
+ export declare const MatcherLookup: typeof MatcherDefinitionLookup;
@@ -0,0 +1,87 @@
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.MatcherLookup = exports.UserAgentRegexMatcher = exports.UrlRegexMatcher = exports.HostnameMatcher = exports.HasMediaTrackMatcher = exports.HasAudioTrackMatcher = exports.HasVideoTrackMatcher = exports.HasDataChannelMatcher = void 0;
8
+ const matcher_definitions_1 = require("./matcher-definitions");
9
+ class HasDataChannelMatcher extends matcher_definitions_1.HasDataChannelMatcherDefinition {
10
+ matches(connection) {
11
+ return [
12
+ ...connection.getLocalDescription().parsedSdp.media,
13
+ ...connection.getRemoteDescription().parsedSdp.media
14
+ ].some(media => media.type === 'application');
15
+ }
16
+ }
17
+ exports.HasDataChannelMatcher = HasDataChannelMatcher;
18
+ class HasVideoTrackMatcher extends matcher_definitions_1.HasVideoTrackMatcherDefinition {
19
+ matches(connection) {
20
+ return [
21
+ ...connection.getLocalDescription().parsedSdp.media,
22
+ ...connection.getRemoteDescription().parsedSdp.media
23
+ ].some(media => media.type === 'video');
24
+ }
25
+ }
26
+ exports.HasVideoTrackMatcher = HasVideoTrackMatcher;
27
+ class HasAudioTrackMatcher extends matcher_definitions_1.HasAudioTrackMatcherDefinition {
28
+ matches(connection) {
29
+ return [
30
+ ...connection.getLocalDescription().parsedSdp.media,
31
+ ...connection.getRemoteDescription().parsedSdp.media
32
+ ].some(media => media.type === 'audio');
33
+ }
34
+ }
35
+ exports.HasAudioTrackMatcher = HasAudioTrackMatcher;
36
+ class HasMediaTrackMatcher extends matcher_definitions_1.HasMediaTrackMatcherDefinition {
37
+ matches(connection) {
38
+ return [
39
+ ...connection.getLocalDescription().parsedSdp.media,
40
+ ...connection.getRemoteDescription().parsedSdp.media
41
+ ].some(media => media.type === 'video' || media.type === 'audio');
42
+ }
43
+ }
44
+ exports.HasMediaTrackMatcher = HasMediaTrackMatcher;
45
+ const getConnectionSourceURL = (connection) => {
46
+ const { sourceURL } = connection.metadata;
47
+ if (!sourceURL)
48
+ return;
49
+ try {
50
+ return new URL(sourceURL);
51
+ }
52
+ catch (e) {
53
+ console.warn('Unparseable RTC source URL:', e);
54
+ return;
55
+ }
56
+ };
57
+ class HostnameMatcher extends matcher_definitions_1.HostnameMatcherDefinition {
58
+ matches(connection) {
59
+ const url = getConnectionSourceURL(connection);
60
+ return (url === null || url === void 0 ? void 0 : url.hostname) === this.hostname;
61
+ }
62
+ }
63
+ exports.HostnameMatcher = HostnameMatcher;
64
+ class UrlRegexMatcher extends matcher_definitions_1.UrlRegexMatcherDefinition {
65
+ matches(connection) {
66
+ const url = getConnectionSourceURL(connection);
67
+ return !!(url === null || url === void 0 ? void 0 : url.toString().match(new RegExp(this.regexSource, this.regexFlags)));
68
+ }
69
+ }
70
+ exports.UrlRegexMatcher = UrlRegexMatcher;
71
+ class UserAgentRegexMatcher extends matcher_definitions_1.UserAgentRegexMatcherDefinition {
72
+ matches(connection) {
73
+ const userAgent = connection.metadata.userAgent;
74
+ return !!(userAgent === null || userAgent === void 0 ? void 0 : userAgent.match(new RegExp(this.regexSource, this.regexFlags)));
75
+ }
76
+ }
77
+ exports.UserAgentRegexMatcher = UserAgentRegexMatcher;
78
+ exports.MatcherLookup = {
79
+ 'has-rtc-data-channel': HasDataChannelMatcher,
80
+ 'has-rtc-video-track': HasVideoTrackMatcher,
81
+ 'has-rtc-audio-track': HasAudioTrackMatcher,
82
+ 'has-rtc-media-track': HasMediaTrackMatcher,
83
+ 'rtc-page-hostname': HostnameMatcher,
84
+ 'rtc-page-regex': UrlRegexMatcher,
85
+ 'rtc-user-agent-regex': UserAgentRegexMatcher
86
+ };
87
+ //# sourceMappingURL=matchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/matching/matchers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { MockRTC, MockRTCEventData, MockRTCPeerBuilder, MockRTCRuleDefinition } from "./mockrtc";
2
+ import { MockRTCPeer } from "./mockrtc-peer";
3
+ import { HandlerStepDefinition } from "./handling/handler-step-definitions";
4
+ import { MatcherDefinition } from "./matching/matcher-definitions";
5
+ import { MockRTCRuleBuilder } from "./rule-builder";
6
+ export declare abstract class MockRTCBase implements MockRTC {
7
+ abstract getMatchingPeer(): MockRTCPeer;
8
+ abstract start(): Promise<void>;
9
+ abstract stop(): Promise<void>;
10
+ abstract on<E extends keyof MockRTCEventData>(event: E, callback: (param: MockRTCEventData[E]) => void): Promise<void>;
11
+ buildPeer(): MockRTCPeerBuilder;
12
+ abstract buildPeerFromDefinition(handlerStepDefinitions: HandlerStepDefinition[]): Promise<MockRTCPeer>;
13
+ forConnections(): MockRTCRuleBuilder;
14
+ abstract addRuleFromDefinition(matcherDefinitions: MatcherDefinition[], handlerStepDefinitions: HandlerStepDefinition[]): Promise<void>;
15
+ abstract setRulesFromDefinitions(ruleDefinitions: Array<MockRTCRuleDefinition>): Promise<void>;
16
+ }
@@ -0,0 +1,19 @@
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.MockRTCBase = void 0;
8
+ const handler_builder_1 = require("./handling/handler-builder");
9
+ const rule_builder_1 = require("./rule-builder");
10
+ class MockRTCBase {
11
+ buildPeer() {
12
+ return new handler_builder_1.MockRTCHandlerBuilder(this.buildPeerFromDefinition.bind(this));
13
+ }
14
+ forConnections() {
15
+ return new rule_builder_1.MockRTCRuleBuilder(this.addRuleFromDefinition.bind(this));
16
+ }
17
+ }
18
+ exports.MockRTCBase = MockRTCBase;
19
+ //# sourceMappingURL=mockrtc-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockrtc-base.js","sourceRoot":"","sources":["../src/mockrtc-base.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,gEAAmE;AAGnE,iDAAoD;AAEpD,MAAsB,WAAW;IAU7B,SAAS;QACL,OAAO,IAAI,uCAAqB,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAMD,cAAc;QACV,OAAO,IAAI,iCAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;CAWJ;AA/BD,kCA+BC"}
@@ -158,11 +158,18 @@ export interface AnswerOptions {
158
158
  * Extra metadata to associate with the connection. This will be exposed on
159
159
  * events like peer-connected, and can be used to add context to connections.
160
160
  *
161
- * The only defined value is 'userAgent' which must be a client user agent
162
- * string (in a browser, the navigator.userAgent value) if defined.
161
+ * The defined fields may only be used as defined here, but all values are
162
+ * optional, and any other metadata may be attached in any format here.
163
+ *
164
+ * The only defined values are:
165
+ * - `userAgent` - a client user-agent string (in a browser, the value of
166
+ * `navigator.userAgent`)
167
+ * - `sourceURL` - the URL of the referring page, when the request is sent by
168
+ * a browser
163
169
  */
164
170
  export interface ConnectionMetadata {
165
171
  userAgent?: string;
172
+ sourceURL?: string;
166
173
  [k: string]: any;
167
174
  }
168
175
  export interface MockRTCExternalOfferParams {
package/dist/mockrtc.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  /// <reference types="node" />
2
2
  import type { MockRTCHandlerBuilder } from "./handling/handler-builder";
3
+ import { HandlerStepDefinition } from "./handling/handler-step-definitions";
4
+ import { MatcherDefinition } from "./matching/matcher-definitions";
3
5
  import type { ConnectionMetadata, MockRTCPeer } from "./mockrtc-peer";
6
+ import { MockRTCRuleBuilder } from "./rule-builder";
4
7
  export interface MockRTCPeerBuilder extends MockRTCHandlerBuilder<MockRTCPeer> {
5
8
  }
6
9
  export interface MockRTCOptions {
@@ -125,6 +128,10 @@ export declare type MockRTCEventData = {
125
128
  };
126
129
  };
127
130
  export declare type MockRTCEvent = keyof MockRTCEventData;
131
+ export declare type MockRTCRuleDefinition = {
132
+ matchers: MatcherDefinition[];
133
+ steps: HandlerStepDefinition[];
134
+ };
128
135
  export interface MockRTC {
129
136
  /**
130
137
  * Start creating a mock WebRTC peer. This method returns a builder, who
@@ -140,6 +147,22 @@ export interface MockRTC {
140
147
  * rules using the `forX()` methods, and connect by using `getMatchingPeer()`.
141
148
  */
142
149
  buildPeer(): MockRTCPeerBuilder;
150
+ /**
151
+ * Starting defining a mock WebRTC rule. This methods returns a rule builder,
152
+ * which can be configured to define which incoming connections should be
153
+ * matched, with methods like `.fromPageHostname(hostname)`.
154
+ *
155
+ * Once the matching is configured, start calling handler methods like
156
+ * `.send()` to define a series of steps to run for matching connections,
157
+ * and then call a `.thenX()` method to complete the definition and
158
+ * define the rule.
159
+ *
160
+ * The rule definition is not complete until the returned promise resolves.
161
+ * Once it has resolved successfully, any future connections to the peer
162
+ * returned by `getMatchingPeer()` will be matched against these rules,
163
+ * and will run the steps for the first matching rule found.
164
+ */
165
+ forConnections(): MockRTCRuleBuilder;
143
166
  /**
144
167
  * Get the rule-matching peer.
145
168
  *
@@ -158,5 +181,44 @@ export interface MockRTC {
158
181
  getMatchingPeer(): MockRTCPeer;
159
182
  start(): Promise<void>;
160
183
  stop(): Promise<void>;
184
+ /**
185
+ * Subscribe to events to monitor WebRTC interactions across all peers managed by
186
+ * this MockRTC session. The events available include:
187
+ *
188
+ * - `peer-connected`
189
+ * - `peer-disconnected`
190
+ * - `external-peer-attached`
191
+ * - `data-channel-opened`
192
+ * - `data-channel-message-sent`
193
+ * - `data-channel-message-received`
194
+ * - `data-channel-closed`
195
+ * - `media-track-opened`
196
+ * - `media-track-stats`
197
+ * - `media-track-closed`
198
+ */
161
199
  on<E extends MockRTCEvent>(event: E, callback: (param: MockRTCEventData[E]) => void): Promise<void>;
200
+ /**
201
+ * Create a peer from a set of step definitions.
202
+ *
203
+ * This API is only useful if you're building peers from data programmatically,
204
+ * rather than using `buildPeer()` and `MockRTCPeerBuilder`, which are generally
205
+ * preferable otherwise.
206
+ */
207
+ buildPeerFromDefinition(handlerStepDefinitions: HandlerStepDefinition[]): Promise<MockRTCPeer>;
208
+ /**
209
+ * Create a connection-matching rule from a set of matchers and step definitions.
210
+ *
211
+ * This API is only useful if you're building rule from data programmatically,
212
+ * rather than using `forX()` and `MockRTCHandlerBuilder`, which are generally
213
+ * preferable otherwise.
214
+ */
215
+ addRuleFromDefinition(matcherDefinitions: MatcherDefinition[], handlerStepDefinitions: HandlerStepDefinition[]): Promise<void>;
216
+ /**
217
+ * Create a connection-matching rule from a set of matchers and step definitions.
218
+ *
219
+ * This API is only useful if you're building rule from data programmatically,
220
+ * rather than using `forX()` and `MockRTCHandlerBuilder`, which are generally
221
+ * preferable otherwise.
222
+ */
223
+ setRulesFromDefinitions(rules: Array<MockRTCRuleDefinition>): Promise<void>;
162
224
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mockrtc.js","sourceRoot":"","sources":["../src/mockrtc.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAkCF,CAAC"}
1
+ {"version":3,"file":"mockrtc.js","sourceRoot":"","sources":["../src/mockrtc.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAqCF,CAAC"}