mockrtc 0.1.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.
- package/.github/workflows/ci.yml +2 -2
- package/README.md +2 -2
- package/dist/client/mockrtc-admin-request-builder.d.ts +27 -0
- package/dist/client/mockrtc-admin-request-builder.js +201 -0
- package/dist/client/mockrtc-admin-request-builder.js.map +1 -0
- package/dist/client/mockrtc-client.d.ts +12 -4
- package/dist/client/mockrtc-client.js +38 -22
- package/dist/client/mockrtc-client.js.map +1 -1
- package/dist/client/mockrtc-remote-peer.d.ts +3 -2
- package/dist/client/mockrtc-remote-peer.js.map +1 -1
- package/dist/handling/handler-builder.d.ts +16 -9
- package/dist/handling/handler-builder.js +11 -1
- package/dist/handling/handler-builder.js.map +1 -1
- package/dist/handling/handler-step-definitions.d.ts +43 -25
- package/dist/handling/handler-step-definitions.js +61 -19
- package/dist/handling/handler-step-definitions.js.map +1 -1
- package/dist/handling/handler-steps.d.ts +4 -1
- package/dist/handling/handler-steps.js +27 -17
- package/dist/handling/handler-steps.js.map +1 -1
- package/dist/main-browser.d.ts +3 -0
- package/dist/main-browser.js +6 -1
- package/dist/main-browser.js.map +1 -1
- package/dist/main.d.ts +8 -5
- package/dist/main.js +6 -1
- package/dist/main.js.map +1 -1
- package/dist/matching/matcher-definitions.d.ts +51 -0
- package/dist/matching/matcher-definitions.js +94 -0
- package/dist/matching/matcher-definitions.js.map +1 -0
- package/dist/matching/matchers.d.ts +27 -0
- package/dist/matching/matchers.js +87 -0
- package/dist/matching/matchers.js.map +1 -0
- package/dist/mockrtc-base.d.ts +16 -0
- package/dist/mockrtc-base.js +19 -0
- package/dist/mockrtc-base.js.map +1 -0
- package/dist/mockrtc-peer.d.ts +44 -6
- package/dist/mockrtc.d.ts +200 -1
- package/dist/mockrtc.js +1 -0
- package/dist/mockrtc.js.map +1 -1
- package/dist/rule-builder.d.ts +86 -0
- package/dist/rule-builder.js +113 -0
- package/dist/rule-builder.js.map +1 -0
- package/dist/server/mockrtc-admin-plugin.d.ts +2 -2
- package/dist/server/mockrtc-admin-plugin.js +165 -3
- package/dist/server/mockrtc-admin-plugin.js.map +1 -1
- package/dist/server/mockrtc-server-peer.d.ts +8 -2
- package/dist/server/mockrtc-server-peer.js +119 -6
- package/dist/server/mockrtc-server-peer.js.map +1 -1
- package/dist/server/mockrtc-server.d.ts +20 -5
- package/dist/server/mockrtc-server.js +87 -14
- package/dist/server/mockrtc-server.js.map +1 -1
- package/dist/webrtc/datachannel-stream.d.ts +4 -0
- package/dist/webrtc/datachannel-stream.js +27 -1
- package/dist/webrtc/datachannel-stream.js.map +1 -1
- package/dist/webrtc/mediatrack-stream.d.ts +6 -0
- package/dist/webrtc/mediatrack-stream.js +28 -2
- package/dist/webrtc/mediatrack-stream.js.map +1 -1
- package/dist/webrtc/mockrtc-connection.d.ts +1 -1
- package/dist/webrtc/mockrtc-connection.js +77 -60
- package/dist/webrtc/mockrtc-connection.js.map +1 -1
- package/dist/webrtc/rtc-connection.d.ts +28 -5
- package/dist/webrtc/rtc-connection.js +62 -23
- package/dist/webrtc/rtc-connection.js.map +1 -1
- package/dist/webrtc-hooks.js +10 -2
- package/dist/webrtc-hooks.js.map +1 -1
- package/package.json +12 -6
- package/src/client/mockrtc-admin-request-builder.ts +232 -0
- package/src/client/mockrtc-client.ts +50 -28
- package/src/client/mockrtc-remote-peer.ts +9 -8
- package/src/handling/handler-builder.ts +22 -10
- package/src/handling/handler-step-definitions.ts +87 -27
- package/src/handling/handler-steps.ts +34 -20
- package/src/main-browser.ts +5 -0
- package/src/main.ts +23 -5
- package/src/matching/matcher-definitions.ts +109 -0
- package/src/matching/matchers.ts +118 -0
- package/src/mockrtc-base.ts +49 -0
- package/src/mockrtc-peer.ts +48 -6
- package/src/mockrtc.ts +235 -1
- package/src/rule-builder.ts +142 -0
- package/src/server/mockrtc-admin-plugin.ts +200 -9
- package/src/server/mockrtc-server-peer.ts +194 -7
- package/src/server/mockrtc-server.ts +136 -19
- package/src/webrtc/datachannel-stream.ts +31 -1
- package/src/webrtc/mediatrack-stream.ts +31 -4
- package/src/webrtc/mockrtc-connection.ts +22 -7
- package/src/webrtc/rtc-connection.ts +111 -29
- package/src/webrtc-hooks.ts +13 -4
- package/test/integration/events.spec.ts +538 -0
- package/test/integration/matching.spec.ts +257 -0
- package/test/integration/proxy.spec.ts +68 -1
- package/test/integration/send-steps.spec.ts +25 -0
- package/test/test-setup.ts +19 -0
package/.github/workflows/ci.yml
CHANGED
|
@@ -7,7 +7,7 @@ jobs:
|
|
|
7
7
|
|
|
8
8
|
strategy:
|
|
9
9
|
matrix:
|
|
10
|
-
node-version: [14.x,
|
|
10
|
+
node-version: [14.x, 16.x, v16.16.0, '*']
|
|
11
11
|
|
|
12
12
|
steps:
|
|
13
13
|
- uses: actions/checkout@v2
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
- run: npm test
|
|
22
22
|
|
|
23
23
|
- name: Deploy docs
|
|
24
|
-
if: github.ref == 'refs/heads/main' && matrix.node-version == '
|
|
24
|
+
if: github.ref == 'refs/heads/main' && matrix.node-version == 'v16.16.0'
|
|
25
25
|
uses: JamesIves/github-pages-deploy-action@v4.2.2
|
|
26
26
|
with:
|
|
27
27
|
single-commit: true
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MockRTC [](https://github.com/httptoolkit/mockrtc/actions) [](https://npmjs.com/package/mockrtc)
|
|
1
|
+
# MockRTC [](https://github.com/httptoolkit/mockrtc/actions) [](https://npmjs.com/package/mockrtc)
|
|
2
2
|
|
|
3
3
|
> _Part of [HTTP Toolkit](https://httptoolkit.tech): powerful tools for building, testing & debugging HTTP(S), WebSockets and WebRTC_
|
|
4
4
|
|
|
@@ -287,4 +287,4 @@ You might also be interested in scrolling through MockRTC's [test suite](https:/
|
|
|
287
287
|
|
|
288
288
|
_This project has received funding from the European Union’s Horizon 2020 research and innovation programme within the framework of the NGI-POINTER Project funded under grant agreement No 871528._
|
|
289
289
|
|
|
290
|
-

|
|
290
|
+

|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as stream from 'stream';
|
|
3
|
+
import { AdminQuery } from 'mockttp/dist/client/admin-query';
|
|
4
|
+
import { MockRTCEvent, MockRTCEventData } from '../mockrtc';
|
|
5
|
+
import { HandlerStepDefinition } from '../handling/handler-step-definitions';
|
|
6
|
+
import { MatcherDefinition } from '../matching/matcher-definitions';
|
|
7
|
+
/**
|
|
8
|
+
* This is part of Mockttp's experimental 'pluggable admin' API. This may change
|
|
9
|
+
* unpredictably, even in minor releases.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare class MockRTCAdminRequestBuilder {
|
|
14
|
+
buildCreatePeerQuery(handlerSteps: Array<HandlerStepDefinition>, adminStream: stream.Duplex): AdminQuery<{
|
|
15
|
+
createPeer: {
|
|
16
|
+
peerId: string;
|
|
17
|
+
};
|
|
18
|
+
}, {
|
|
19
|
+
peerId: string;
|
|
20
|
+
}>;
|
|
21
|
+
buildAddRuleQuery(matchers: Array<MatcherDefinition>, handlerSteps: Array<HandlerStepDefinition>, adminStream: stream.Duplex): AdminQuery<void>;
|
|
22
|
+
buildSetRulesQuery(rules: Array<{
|
|
23
|
+
matchers: MatcherDefinition[];
|
|
24
|
+
steps: HandlerStepDefinition[];
|
|
25
|
+
}>, adminStream: stream.Duplex): AdminQuery<void>;
|
|
26
|
+
buildSubscriptionRequest<E extends MockRTCEvent>(event: E): AdminQuery<MockRTCEventData[E]> | undefined;
|
|
27
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
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.MockRTCAdminRequestBuilder = void 0;
|
|
8
|
+
const graphql_tag_1 = require("graphql-tag");
|
|
9
|
+
// Long-term, it'd be great to use the 'official' export path of mockttp/pluggable-admin, but
|
|
10
|
+
// if we do so, then TypeScript <4.7 doesn't understand it here or downstream, so we get errors.
|
|
11
|
+
// We don't want to use the main-exported version to avoid bundling all of Mockttp in browsers.
|
|
12
|
+
// For now we have to use the direct import. We can update once TS 4.7 is widely used.
|
|
13
|
+
const BrowserPluggableAdmin = require("mockttp/dist/pluggable-admin-api/pluggable-admin.browser");
|
|
14
|
+
/**
|
|
15
|
+
* This is part of Mockttp's experimental 'pluggable admin' API. This may change
|
|
16
|
+
* unpredictably, even in minor releases.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
class MockRTCAdminRequestBuilder {
|
|
21
|
+
buildCreatePeerQuery(handlerSteps, adminStream) {
|
|
22
|
+
return {
|
|
23
|
+
query: (0, graphql_tag_1.default) `
|
|
24
|
+
mutation CreatePeer($peerData: RTCHandlerData!) {
|
|
25
|
+
createPeer(data: $peerData) {
|
|
26
|
+
peerId
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
`,
|
|
30
|
+
variables: {
|
|
31
|
+
peerData: {
|
|
32
|
+
steps: handlerSteps.map(step => BrowserPluggableAdmin.Serialization.serialize(step, adminStream))
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
transformResponse: ({ createPeer }) => createPeer
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
buildAddRuleQuery(matchers, handlerSteps, adminStream) {
|
|
39
|
+
return {
|
|
40
|
+
query: (0, graphql_tag_1.default) `
|
|
41
|
+
mutation AddRTCRule($ruleData: RTCRuleData!) {
|
|
42
|
+
addRTCRule(data: $ruleData)
|
|
43
|
+
}
|
|
44
|
+
`,
|
|
45
|
+
variables: {
|
|
46
|
+
ruleData: {
|
|
47
|
+
matchers: matchers.map(matcher => BrowserPluggableAdmin.Serialization.serialize(matcher, adminStream)),
|
|
48
|
+
steps: handlerSteps.map(step => BrowserPluggableAdmin.Serialization.serialize(step, adminStream))
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
buildSetRulesQuery(rules, adminStream) {
|
|
54
|
+
return {
|
|
55
|
+
query: (0, graphql_tag_1.default) `
|
|
56
|
+
mutation SetRTCRules($ruleData: [RTCRuleData!]!) {
|
|
57
|
+
setRTCRules(data: $ruleData)
|
|
58
|
+
}
|
|
59
|
+
`,
|
|
60
|
+
variables: {
|
|
61
|
+
ruleData: rules.map(({ matchers, steps }) => ({
|
|
62
|
+
matchers: matchers.map(matcher => BrowserPluggableAdmin.Serialization.serialize(matcher, adminStream)),
|
|
63
|
+
steps: steps.map(step => BrowserPluggableAdmin.Serialization.serialize(step, adminStream))
|
|
64
|
+
}))
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
buildSubscriptionRequest(event) {
|
|
69
|
+
const query = {
|
|
70
|
+
'peer-connected': (0, graphql_tag_1.default) `subscription OnPeerConnected {
|
|
71
|
+
peerConnected {
|
|
72
|
+
peerId
|
|
73
|
+
sessionId
|
|
74
|
+
|
|
75
|
+
metadata
|
|
76
|
+
timingEvents
|
|
77
|
+
|
|
78
|
+
localSessionDescription { type, sdp }
|
|
79
|
+
remoteSessionDescription { type, sdp }
|
|
80
|
+
selectedLocalCandidate { address, port, protocol, type }
|
|
81
|
+
selectedRemoteCandidate { address, port, protocol, type }
|
|
82
|
+
}
|
|
83
|
+
}`,
|
|
84
|
+
'peer-disconnected': (0, graphql_tag_1.default) `subscription OnPeerDisconnected {
|
|
85
|
+
peerDisconnected {
|
|
86
|
+
peerId
|
|
87
|
+
sessionId
|
|
88
|
+
timingEvents
|
|
89
|
+
}
|
|
90
|
+
}`,
|
|
91
|
+
'external-peer-attached': (0, graphql_tag_1.default) `subscription OnExternalPeerAttached {
|
|
92
|
+
externalPeerAttached {
|
|
93
|
+
peerId
|
|
94
|
+
sessionId
|
|
95
|
+
timingEvents
|
|
96
|
+
externalConnection {
|
|
97
|
+
sessionId
|
|
98
|
+
localSessionDescription { type, sdp }
|
|
99
|
+
remoteSessionDescription { type, sdp }
|
|
100
|
+
selectedLocalCandidate { address, port, protocol, type }
|
|
101
|
+
selectedRemoteCandidate { address, port, protocol, type }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}`,
|
|
105
|
+
'data-channel-opened': (0, graphql_tag_1.default) `subscription OnDataChannelOpen {
|
|
106
|
+
dataChannelOpened {
|
|
107
|
+
peerId
|
|
108
|
+
sessionId
|
|
109
|
+
channelId
|
|
110
|
+
channelLabel
|
|
111
|
+
channelProtocol
|
|
112
|
+
|
|
113
|
+
eventTimestamp
|
|
114
|
+
timingEvents
|
|
115
|
+
}
|
|
116
|
+
}`,
|
|
117
|
+
'data-channel-message-sent': (0, graphql_tag_1.default) `subscription OnDataChannelMessageSent {
|
|
118
|
+
dataChannelMessageSent {
|
|
119
|
+
peerId
|
|
120
|
+
sessionId
|
|
121
|
+
channelId
|
|
122
|
+
direction
|
|
123
|
+
content
|
|
124
|
+
isBinary
|
|
125
|
+
|
|
126
|
+
eventTimestamp
|
|
127
|
+
timingEvents
|
|
128
|
+
}
|
|
129
|
+
}`,
|
|
130
|
+
'data-channel-message-received': (0, graphql_tag_1.default) `subscription OnDataChannelMessageReceived {
|
|
131
|
+
dataChannelMessageReceived {
|
|
132
|
+
peerId
|
|
133
|
+
sessionId
|
|
134
|
+
channelId
|
|
135
|
+
direction
|
|
136
|
+
content
|
|
137
|
+
isBinary
|
|
138
|
+
|
|
139
|
+
eventTimestamp
|
|
140
|
+
timingEvents
|
|
141
|
+
}
|
|
142
|
+
}`,
|
|
143
|
+
'data-channel-closed': (0, graphql_tag_1.default) `subscription OnDataChannelClose {
|
|
144
|
+
dataChannelClosed {
|
|
145
|
+
peerId
|
|
146
|
+
sessionId
|
|
147
|
+
channelId
|
|
148
|
+
|
|
149
|
+
eventTimestamp
|
|
150
|
+
timingEvents
|
|
151
|
+
}
|
|
152
|
+
}`,
|
|
153
|
+
'media-track-opened': (0, graphql_tag_1.default) `subscription OnDataChannelClose {
|
|
154
|
+
mediaTrackOpened {
|
|
155
|
+
peerId
|
|
156
|
+
sessionId
|
|
157
|
+
trackMid
|
|
158
|
+
trackType
|
|
159
|
+
trackDirection
|
|
160
|
+
|
|
161
|
+
eventTimestamp
|
|
162
|
+
timingEvents
|
|
163
|
+
}
|
|
164
|
+
}`,
|
|
165
|
+
'media-track-stats': (0, graphql_tag_1.default) `subscription OnDataChannelClose {
|
|
166
|
+
mediaTrackStats {
|
|
167
|
+
peerId
|
|
168
|
+
sessionId
|
|
169
|
+
trackMid
|
|
170
|
+
totalBytesSent
|
|
171
|
+
totalBytesReceived
|
|
172
|
+
|
|
173
|
+
eventTimestamp
|
|
174
|
+
timingEvents
|
|
175
|
+
}
|
|
176
|
+
}`,
|
|
177
|
+
'media-track-closed': (0, graphql_tag_1.default) `subscription OnDataChannelClose {
|
|
178
|
+
mediaTrackClosed {
|
|
179
|
+
peerId
|
|
180
|
+
sessionId
|
|
181
|
+
trackMid
|
|
182
|
+
|
|
183
|
+
eventTimestamp
|
|
184
|
+
timingEvents
|
|
185
|
+
}
|
|
186
|
+
}`
|
|
187
|
+
}[event];
|
|
188
|
+
if (!query)
|
|
189
|
+
return; // Unrecognized event, we can't subscribe to this.
|
|
190
|
+
return {
|
|
191
|
+
query,
|
|
192
|
+
transformResponse: (result) => {
|
|
193
|
+
if (result.content)
|
|
194
|
+
result.content = Buffer.from(result.content, 'base64');
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
exports.MockRTCAdminRequestBuilder = MockRTCAdminRequestBuilder;
|
|
201
|
+
//# sourceMappingURL=mockrtc-admin-request-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockrtc-admin-request-builder.js","sourceRoot":"","sources":["../../src/client/mockrtc-admin-request-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import type { PluggableAdmin } from 'mockttp';
|
|
2
|
-
import { MockRTC, MockRTCOptions,
|
|
2
|
+
import { MockRTC, MockRTCEvent, MockRTCOptions, MockRTCRuleDefinition } from "../mockrtc";
|
|
3
|
+
import { MockRTCBase } from '../mockrtc-base';
|
|
4
|
+
import type { MockRTCPeer } from '../mockrtc-peer';
|
|
5
|
+
import { HandlerStepDefinition } from '../handling/handler-step-definitions';
|
|
6
|
+
import { MatcherDefinition } from '../matching/matcher-definitions';
|
|
3
7
|
export declare type MockRTCClientOptions = PluggableAdmin.AdminClientOptions & MockRTCOptions;
|
|
4
|
-
export declare class MockRTCClient implements MockRTC {
|
|
8
|
+
export declare class MockRTCClient extends MockRTCBase implements MockRTC {
|
|
5
9
|
private options;
|
|
6
10
|
private adminClient;
|
|
11
|
+
private requestBuilder;
|
|
7
12
|
constructor(options?: MockRTCClientOptions);
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
getMatchingPeer(): MockRTCPeer;
|
|
14
|
+
buildPeerFromDefinition(handlerSteps: HandlerStepDefinition[]): Promise<MockRTCPeer>;
|
|
15
|
+
addRuleFromDefinition(matchers: MatcherDefinition[], handlerSteps: HandlerStepDefinition[]): Promise<void>;
|
|
16
|
+
setRulesFromDefinitions(rules: Array<MockRTCRuleDefinition>): Promise<void>;
|
|
10
17
|
start(): Promise<void>;
|
|
11
18
|
stop(): Promise<void>;
|
|
19
|
+
on(event: MockRTCEvent, callback: any): Promise<void>;
|
|
12
20
|
}
|
|
@@ -14,41 +14,43 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.MockRTCClient = void 0;
|
|
17
|
-
const graphql_tag_1 = require("graphql-tag");
|
|
18
17
|
// Long-term, it'd be great to use the 'official' export path of mockttp/pluggable-admin, but
|
|
19
18
|
// if we do so, then TypeScript <4.7 doesn't understand it here or downstream, so we get errors.
|
|
20
19
|
// We don't want to use the main-exported version to avoid bundling all of Mockttp in browsers.
|
|
21
20
|
// For now we have to use the direct import. We can update once TS 4.7 is widely used.
|
|
22
21
|
const BrowserPluggableAdmin = require("mockttp/dist/pluggable-admin-api/pluggable-admin.browser");
|
|
22
|
+
const mockrtc_base_1 = require("../mockrtc-base");
|
|
23
23
|
const mockrtc_remote_peer_1 = require("./mockrtc-remote-peer");
|
|
24
|
-
const
|
|
25
|
-
class MockRTCClient {
|
|
24
|
+
const mockrtc_admin_request_builder_1 = require("./mockrtc-admin-request-builder");
|
|
25
|
+
class MockRTCClient extends mockrtc_base_1.MockRTCBase {
|
|
26
26
|
constructor(options = {}) {
|
|
27
|
+
super();
|
|
27
28
|
this.options = options;
|
|
28
|
-
this.
|
|
29
|
+
this.adminClient = new BrowserPluggableAdmin.AdminClient(options);
|
|
30
|
+
this.requestBuilder = new mockrtc_admin_request_builder_1.MockRTCAdminRequestBuilder();
|
|
31
|
+
}
|
|
32
|
+
getMatchingPeer() {
|
|
33
|
+
return new mockrtc_remote_peer_1.MockRTCRemotePeer('matching-peer', this.adminClient);
|
|
34
|
+
}
|
|
35
|
+
buildPeerFromDefinition(handlerSteps) {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
37
|
const { adminStream } = this.adminClient;
|
|
30
|
-
const peerData = yield this.adminClient.sendQuery(
|
|
31
|
-
query: (0, graphql_tag_1.default) `
|
|
32
|
-
mutation CreatePeer($peerData: RTCHandlerData!) {
|
|
33
|
-
createPeer(data: $peerData) {
|
|
34
|
-
peerId
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
`,
|
|
38
|
-
variables: {
|
|
39
|
-
peerData: {
|
|
40
|
-
steps: handlerSteps.map(step => BrowserPluggableAdmin.Serialization.serialize(step, adminStream))
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
transformResponse: ({ createPeer }) => createPeer
|
|
44
|
-
});
|
|
38
|
+
const peerData = yield this.adminClient.sendQuery(this.requestBuilder.buildCreatePeerQuery(handlerSteps, adminStream));
|
|
45
39
|
const { peerId } = peerData;
|
|
46
40
|
return new mockrtc_remote_peer_1.MockRTCRemotePeer(peerId, this.adminClient);
|
|
47
41
|
});
|
|
48
|
-
this.adminClient = new BrowserPluggableAdmin.AdminClient(options);
|
|
49
42
|
}
|
|
50
|
-
|
|
51
|
-
return
|
|
43
|
+
addRuleFromDefinition(matchers, handlerSteps) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const { adminStream } = this.adminClient;
|
|
46
|
+
yield this.adminClient.sendQuery(this.requestBuilder.buildAddRuleQuery(matchers, handlerSteps, adminStream));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
setRulesFromDefinitions(rules) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const { adminStream } = this.adminClient;
|
|
52
|
+
yield this.adminClient.sendQuery(this.requestBuilder.buildSetRulesQuery(rules, adminStream));
|
|
53
|
+
});
|
|
52
54
|
}
|
|
53
55
|
start() {
|
|
54
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -62,6 +64,20 @@ class MockRTCClient {
|
|
|
62
64
|
yield this.adminClient.stop();
|
|
63
65
|
});
|
|
64
66
|
}
|
|
67
|
+
on(event, callback) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
const subscriptionRequest = this.requestBuilder.buildSubscriptionRequest(event);
|
|
70
|
+
if (!subscriptionRequest) {
|
|
71
|
+
// We just return an immediately promise if we don't recognize the event, which will quietly
|
|
72
|
+
// succeed but never call the corresponding callback (the same as the server and most event
|
|
73
|
+
// sources in the same kind of situation). This is what happens when the *client* doesn't
|
|
74
|
+
// recognize the event. Subscribe() below handles the unknown-to-server case.
|
|
75
|
+
console.warn(`Ignoring subscription for event unrecognized by MockRTC client: ${event}`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
return this.adminClient.subscribe(subscriptionRequest, callback);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
65
81
|
}
|
|
66
82
|
exports.MockRTCClient = MockRTCClient;
|
|
67
83
|
//# sourceMappingURL=mockrtc-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockrtc-client.js","sourceRoot":"","sources":["../../src/client/mockrtc-client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"mockrtc-client.js","sourceRoot":"","sources":["../../src/client/mockrtc-client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;AAGH,6FAA6F;AAC7F,gGAAgG;AAChG,+FAA+F;AAC/F,sFAAsF;AACtF,kGAAkG;AAIlG,kDAA8C;AAG9C,+DAA0D;AAE1D,mFAA6E;AAQ7E,MAAa,aAAc,SAAQ,0BAAW;IAK1C,YACY,UAAgC,EAAE;QAE1C,KAAK,EAAE,CAAC;QAFA,YAAO,GAAP,OAAO,CAA2B;QAI1C,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,cAAc,GAAG,IAAI,0DAA0B,EAAE,CAAC;IAC3D,CAAC;IAED,eAAe;QACX,OAAO,IAAI,uCAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpE,CAAC;IAEK,uBAAuB,CAAC,YAAqC;;YAC/D,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAC7C,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,YAAY,EAAE,WAAW,CAAC,CACtE,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YAE5B,OAAO,IAAI,uCAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;KAAA;IAEK,qBAAqB,CACvB,QAA6B,EAC7B,YAAqC;;YAErC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAEzC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAC5B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAC7E,CAAC;QACN,CAAC;KAAA;IAEK,uBAAuB,CAAC,KAAmC;;YAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAEzC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAC5B,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAC7D,CAAC;QACN,CAAC;KAAA;IAEK,KAAK;;YACP,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,OAAO;aACvB,CAAC,CAAC;QACP,CAAC;KAAA;IAEK,IAAI;;YACN,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;KAAA;IAEK,EAAE,CAAC,KAAmB,EAAE,QAAa;;YACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAEhF,IAAI,CAAC,mBAAmB,EAAE;gBACtB,4FAA4F;gBAC5F,2FAA2F;gBAC3F,yFAAyF;gBACzF,6EAA6E;gBAC7E,OAAO,CAAC,IAAI,CAAC,mEAAmE,KAAK,EAAE,CAAC,CAAC;gBACzF,OAAO;aACV;YAED,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;KAAA;CACJ;AAzED,sCAyEC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as PluggableAdmin from 'mockttp/dist/pluggable-admin-api/pluggable-admin.browser';
|
|
3
|
+
import { MockRTCSessionDescription } from '../mockrtc';
|
|
3
4
|
import { MockRTCPeer, MockRTCOfferParams, MockRTCExternalOfferParams, MockRTCExternalAnswerParams, MockRTCAnswerParams, MockRTCSession, OfferOptions, AnswerOptions } from "../mockrtc-peer";
|
|
4
5
|
export declare class MockRTCRemotePeer implements MockRTCPeer {
|
|
5
6
|
readonly peerId: string;
|
|
@@ -7,8 +8,8 @@ export declare class MockRTCRemotePeer implements MockRTCPeer {
|
|
|
7
8
|
constructor(peerId: string, adminClient: PluggableAdmin.AdminClient<{}>);
|
|
8
9
|
createOffer(options?: OfferOptions): Promise<MockRTCOfferParams>;
|
|
9
10
|
createExternalOffer(options?: OfferOptions): Promise<MockRTCExternalOfferParams>;
|
|
10
|
-
answerOffer(offer:
|
|
11
|
-
answerExternalOffer(offer:
|
|
11
|
+
answerOffer(offer: MockRTCSessionDescription, options?: AnswerOptions): Promise<MockRTCAnswerParams>;
|
|
12
|
+
answerExternalOffer(offer: MockRTCSessionDescription, options?: AnswerOptions): Promise<MockRTCExternalAnswerParams>;
|
|
12
13
|
getSession(sessionId: string): MockRTCSession;
|
|
13
14
|
getAllMessages(): Promise<(string | Buffer)[]>;
|
|
14
15
|
getMessagesOnChannel(channelName: string): Promise<Array<string | Buffer>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockrtc-remote-peer.js","sourceRoot":"","sources":["../../src/client/mockrtc-remote-peer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;AAEH,6CAAkC;
|
|
1
|
+
{"version":3,"file":"mockrtc-remote-peer.js","sourceRoot":"","sources":["../../src/client/mockrtc-remote-peer.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,19 +14,19 @@ export declare class MockRTCHandlerBuilder<R> {
|
|
|
14
14
|
*
|
|
15
15
|
* @category Steps
|
|
16
16
|
*/
|
|
17
|
-
sleep(duration: number):
|
|
17
|
+
sleep(duration: number): MockRTCHandlerBuilder<R>;
|
|
18
18
|
/**
|
|
19
19
|
* Wait until the remote client has created at least one DataChannel.
|
|
20
20
|
*
|
|
21
21
|
* @category Steps
|
|
22
22
|
*/
|
|
23
|
-
waitForChannel(channelLabel?: string):
|
|
23
|
+
waitForChannel(channelLabel?: string): MockRTCHandlerBuilder<R>;
|
|
24
24
|
/**
|
|
25
25
|
* Wait until the remote client has created at least one media track
|
|
26
26
|
*
|
|
27
27
|
* @category Steps
|
|
28
28
|
*/
|
|
29
|
-
waitForTrack():
|
|
29
|
+
waitForTrack(): MockRTCHandlerBuilder<R>;
|
|
30
30
|
/**
|
|
31
31
|
* Wait until the remote client next sends a message to us on any DataChannel.
|
|
32
32
|
*
|
|
@@ -35,7 +35,7 @@ export declare class MockRTCHandlerBuilder<R> {
|
|
|
35
35
|
*
|
|
36
36
|
* @category Steps
|
|
37
37
|
*/
|
|
38
|
-
waitForNextMessage():
|
|
38
|
+
waitForNextMessage(): MockRTCHandlerBuilder<R>;
|
|
39
39
|
/**
|
|
40
40
|
* Wait until the remote client next sends media data on a media track.
|
|
41
41
|
*
|
|
@@ -43,16 +43,23 @@ export declare class MockRTCHandlerBuilder<R> {
|
|
|
43
43
|
*
|
|
44
44
|
* @category Steps
|
|
45
45
|
*/
|
|
46
|
-
waitForNextMedia():
|
|
46
|
+
waitForNextMedia(): MockRTCHandlerBuilder<R>;
|
|
47
47
|
/**
|
|
48
48
|
* Wait until the remote client sends a message to us on a specific DataChannel.
|
|
49
49
|
*
|
|
50
50
|
* This looks for new messages, ignoring any messages already consumed by
|
|
51
51
|
* previous steps.
|
|
52
52
|
*
|
|
53
|
-
|
|
53
|
+
* @category Steps
|
|
54
|
+
*/
|
|
55
|
+
waitForNextMessageOnChannel(channelLabel: string): MockRTCHandlerBuilder<R>;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a new data channel with the given name, waiting until it opens
|
|
58
|
+
* before continuing.
|
|
59
|
+
*
|
|
60
|
+
* @category Steps
|
|
54
61
|
*/
|
|
55
|
-
|
|
62
|
+
createDataChannel(channelLabel: string): MockRTCHandlerBuilder<R>;
|
|
56
63
|
/**
|
|
57
64
|
* Send a message or buffer on the connection's data channels.
|
|
58
65
|
*
|
|
@@ -66,8 +73,8 @@ export declare class MockRTCHandlerBuilder<R> {
|
|
|
66
73
|
*
|
|
67
74
|
* @category Steps
|
|
68
75
|
*/
|
|
69
|
-
send(message: string | Buffer):
|
|
70
|
-
send(channel: string | undefined, message: string | Buffer):
|
|
76
|
+
send(message: string | Buffer): MockRTCHandlerBuilder<R>;
|
|
77
|
+
send(channel: string | undefined, message: string | Buffer): MockRTCHandlerBuilder<R>;
|
|
71
78
|
/**
|
|
72
79
|
* Immediately close the connection.
|
|
73
80
|
*
|
|
@@ -72,12 +72,22 @@ class MockRTCHandlerBuilder {
|
|
|
72
72
|
* This looks for new messages, ignoring any messages already consumed by
|
|
73
73
|
* previous steps.
|
|
74
74
|
*
|
|
75
|
-
|
|
75
|
+
* @category Steps
|
|
76
76
|
*/
|
|
77
77
|
waitForNextMessageOnChannel(channelLabel) {
|
|
78
78
|
this.handlerSteps.push(new handler_step_definitions_1.WaitForMessageStepDefinition(channelLabel));
|
|
79
79
|
return this;
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates a new data channel with the given name, waiting until it opens
|
|
83
|
+
* before continuing.
|
|
84
|
+
*
|
|
85
|
+
* @category Steps
|
|
86
|
+
*/
|
|
87
|
+
createDataChannel(channelLabel) {
|
|
88
|
+
this.handlerSteps.push(new handler_step_definitions_1.CreateChannelStepDefinition(channelLabel));
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
81
91
|
send(...args) {
|
|
82
92
|
if (args[1] !== undefined) {
|
|
83
93
|
const [channel, message] = args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-builder.js","sourceRoot":"","sources":["../../src/handling/handler-builder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"handler-builder.js","sourceRoot":"","sources":["../../src/handling/handler-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as PluggableAdmin from 'mockttp/dist/pluggable-admin-api/pluggable-admin.browser';
|
|
3
|
+
import { MockRTCSessionDescription } from '../mockrtc';
|
|
3
4
|
export declare type Serializable = PluggableAdmin.Serialization.Serializable;
|
|
4
5
|
export declare const Serializable: typeof PluggableAdmin.Serialization.Serializable;
|
|
5
6
|
declare type ClientServerChannel = PluggableAdmin.Serialization.ClientServerChannel;
|
|
@@ -7,57 +8,74 @@ export interface HandlerStepDefinition extends Serializable {
|
|
|
7
8
|
readonly type: keyof typeof StepDefinitionLookup;
|
|
8
9
|
}
|
|
9
10
|
export declare class WaitForDurationStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
10
|
-
|
|
11
|
+
readonly durationMs: number;
|
|
11
12
|
readonly type = "wait-for-duration";
|
|
12
13
|
constructor(durationMs: number);
|
|
14
|
+
explain(): string;
|
|
13
15
|
}
|
|
14
16
|
export declare class WaitForChannelStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
15
|
-
|
|
16
|
-
readonly type = "wait-for-channel";
|
|
17
|
+
readonly channelLabel?: string | undefined;
|
|
18
|
+
readonly type = "wait-for-rtc-data-channel";
|
|
17
19
|
constructor(channelLabel?: string | undefined);
|
|
20
|
+
explain(): string;
|
|
18
21
|
}
|
|
19
22
|
export declare class WaitForMessageStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
20
|
-
|
|
21
|
-
readonly type = "wait-for-message";
|
|
23
|
+
readonly channelLabel?: string | undefined;
|
|
24
|
+
readonly type = "wait-for-rtc-message";
|
|
22
25
|
constructor(channelLabel?: string | undefined);
|
|
26
|
+
explain(): string;
|
|
23
27
|
}
|
|
24
28
|
export declare class WaitForTrackStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
25
|
-
readonly type = "wait-for-track";
|
|
29
|
+
readonly type = "wait-for-rtc-track";
|
|
30
|
+
explain(): string;
|
|
26
31
|
}
|
|
27
32
|
export declare class WaitForMediaStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
28
|
-
readonly type = "wait-for-media";
|
|
33
|
+
readonly type = "wait-for-rtc-media";
|
|
34
|
+
explain(): string;
|
|
35
|
+
}
|
|
36
|
+
export declare class CreateChannelStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
37
|
+
readonly channelLabel: string;
|
|
38
|
+
readonly type = "create-rtc-data-channel";
|
|
39
|
+
constructor(channelLabel: string);
|
|
40
|
+
explain(): string;
|
|
29
41
|
}
|
|
30
42
|
export declare class SendStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
readonly type = "send-message";
|
|
43
|
+
readonly channelLabel: string | undefined;
|
|
44
|
+
readonly message: string | Buffer;
|
|
45
|
+
readonly type = "send-rtc-data-message";
|
|
34
46
|
constructor(channelLabel: string | undefined, message: string | Buffer);
|
|
47
|
+
explain(): string;
|
|
35
48
|
}
|
|
36
49
|
export declare class CloseStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
37
|
-
readonly type = "close-connection";
|
|
50
|
+
readonly type = "close-rtc-connection";
|
|
51
|
+
explain(): string;
|
|
38
52
|
}
|
|
39
53
|
export declare class EchoStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
40
|
-
readonly type = "echo-
|
|
54
|
+
readonly type = "echo-rtc";
|
|
55
|
+
explain(): string;
|
|
41
56
|
}
|
|
42
57
|
export declare class PeerProxyStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
43
|
-
readonly type = "peer-proxy";
|
|
44
|
-
protected getAnswer: (offer:
|
|
45
|
-
constructor(connectionTarget: RTCPeerConnection | ((offer:
|
|
58
|
+
readonly type = "rtc-peer-proxy";
|
|
59
|
+
protected getAnswer: (offer: MockRTCSessionDescription) => Promise<RTCSessionDescriptionInit>;
|
|
60
|
+
constructor(connectionTarget: RTCPeerConnection | ((offer: MockRTCSessionDescription) => Promise<RTCSessionDescriptionInit>));
|
|
61
|
+
explain(): string;
|
|
46
62
|
serialize(channel: ClientServerChannel): {};
|
|
47
63
|
}
|
|
48
64
|
export declare class DynamicProxyStepDefinition extends Serializable implements HandlerStepDefinition {
|
|
49
|
-
readonly type = "dynamic-proxy";
|
|
65
|
+
readonly type = "rtc-dynamic-proxy";
|
|
66
|
+
explain(): string;
|
|
50
67
|
}
|
|
51
68
|
export declare const StepDefinitionLookup: {
|
|
52
69
|
'wait-for-duration': typeof WaitForDurationStepDefinition;
|
|
53
|
-
'wait-for-channel': typeof WaitForChannelStepDefinition;
|
|
54
|
-
'wait-for-track': typeof WaitForTrackStepDefinition;
|
|
55
|
-
'wait-for-media': typeof WaitForMediaStepDefinition;
|
|
56
|
-
'wait-for-message': typeof WaitForMessageStepDefinition;
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
70
|
+
'wait-for-rtc-data-channel': typeof WaitForChannelStepDefinition;
|
|
71
|
+
'wait-for-rtc-track': typeof WaitForTrackStepDefinition;
|
|
72
|
+
'wait-for-rtc-media': typeof WaitForMediaStepDefinition;
|
|
73
|
+
'wait-for-rtc-message': typeof WaitForMessageStepDefinition;
|
|
74
|
+
'create-rtc-data-channel': typeof CreateChannelStepDefinition;
|
|
75
|
+
'send-rtc-data-message': typeof SendStepDefinition;
|
|
76
|
+
'close-rtc-connection': typeof CloseStepDefinition;
|
|
77
|
+
'echo-rtc': typeof EchoStepDefinition;
|
|
78
|
+
'rtc-peer-proxy': typeof PeerProxyStepDefinition;
|
|
79
|
+
'rtc-dynamic-proxy': typeof DynamicProxyStepDefinition;
|
|
62
80
|
};
|
|
63
81
|
export {};
|