mockrtc 0.1.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 (136) hide show
  1. package/.github/workflows/ci.yml +29 -0
  2. package/LICENSE +201 -0
  3. package/README.md +290 -0
  4. package/dist/admin-bin.d.ts +2 -0
  5. package/dist/admin-bin.js +67 -0
  6. package/dist/admin-bin.js.map +1 -0
  7. package/dist/client/mockrtc-client.d.ts +12 -0
  8. package/dist/client/mockrtc-client.js +67 -0
  9. package/dist/client/mockrtc-client.js.map +1 -0
  10. package/dist/client/mockrtc-remote-peer.d.ts +15 -0
  11. package/dist/client/mockrtc-remote-peer.js +246 -0
  12. package/dist/client/mockrtc-remote-peer.js.map +1 -0
  13. package/dist/control-channel.d.ts +8 -0
  14. package/dist/control-channel.js +11 -0
  15. package/dist/control-channel.js.map +1 -0
  16. package/dist/handling/handler-builder.d.ts +138 -0
  17. package/dist/handling/handler-builder.js +164 -0
  18. package/dist/handling/handler-builder.js.map +1 -0
  19. package/dist/handling/handler-step-definitions.d.ts +63 -0
  20. package/dist/handling/handler-step-definitions.js +123 -0
  21. package/dist/handling/handler-step-definitions.js.map +1 -0
  22. package/dist/handling/handler-steps.d.ts +48 -0
  23. package/dist/handling/handler-steps.js +218 -0
  24. package/dist/handling/handler-steps.js.map +1 -0
  25. package/dist/main-browser.d.ts +9 -0
  26. package/dist/main-browser.js +26 -0
  27. package/dist/main-browser.js.map +1 -0
  28. package/dist/main.d.ts +58 -0
  29. package/dist/main.js +67 -0
  30. package/dist/main.js.map +1 -0
  31. package/dist/mockrtc-admin-plugin.d.ts +56 -0
  32. package/dist/mockrtc-admin-plugin.js +151 -0
  33. package/dist/mockrtc-admin-plugin.js.map +1 -0
  34. package/dist/mockrtc-admin-server.d.ts +7 -0
  35. package/dist/mockrtc-admin-server.js +18 -0
  36. package/dist/mockrtc-admin-server.js.map +1 -0
  37. package/dist/mockrtc-client.d.ts +12 -0
  38. package/dist/mockrtc-client.js +64 -0
  39. package/dist/mockrtc-client.js.map +1 -0
  40. package/dist/mockrtc-handler-builder.d.ts +15 -0
  41. package/dist/mockrtc-handler-builder.js +24 -0
  42. package/dist/mockrtc-handler-builder.js.map +1 -0
  43. package/dist/mockrtc-peer.d.ts +147 -0
  44. package/dist/mockrtc-peer.js +7 -0
  45. package/dist/mockrtc-peer.js.map +1 -0
  46. package/dist/mockrtc-remote-peer.d.ts +15 -0
  47. package/dist/mockrtc-remote-peer.js +234 -0
  48. package/dist/mockrtc-remote-peer.js.map +1 -0
  49. package/dist/mockrtc-server-peer.d.ts +29 -0
  50. package/dist/mockrtc-server-peer.js +145 -0
  51. package/dist/mockrtc-server-peer.js.map +1 -0
  52. package/dist/mockrtc-server.d.ts +14 -0
  53. package/dist/mockrtc-server.js +53 -0
  54. package/dist/mockrtc-server.js.map +1 -0
  55. package/dist/mockrtc.d.ts +25 -0
  56. package/dist/mockrtc.js +7 -0
  57. package/dist/mockrtc.js.map +1 -0
  58. package/dist/package.json +52 -0
  59. package/dist/server/mockrtc-admin-plugin.d.ts +17 -0
  60. package/dist/server/mockrtc-admin-plugin.js +163 -0
  61. package/dist/server/mockrtc-admin-plugin.js.map +1 -0
  62. package/dist/server/mockrtc-admin-server.d.ts +7 -0
  63. package/dist/server/mockrtc-admin-server.js +18 -0
  64. package/dist/server/mockrtc-admin-server.js.map +1 -0
  65. package/dist/server/mockrtc-server-peer.d.ts +24 -0
  66. package/dist/server/mockrtc-server-peer.js +141 -0
  67. package/dist/server/mockrtc-server-peer.js.map +1 -0
  68. package/dist/server/mockrtc-server.d.ts +14 -0
  69. package/dist/server/mockrtc-server.js +53 -0
  70. package/dist/server/mockrtc-server.js.map +1 -0
  71. package/dist/src/main.d.ts +1 -0
  72. package/dist/src/main.js +24 -0
  73. package/dist/src/main.js.map +1 -0
  74. package/dist/src/mockrtc-peer.d.ts +0 -0
  75. package/dist/src/mockrtc-peer.js +2 -0
  76. package/dist/src/mockrtc-peer.js.map +1 -0
  77. package/dist/src/mockrtc.d.ts +0 -0
  78. package/dist/src/mockrtc.js +65 -0
  79. package/dist/src/mockrtc.js.map +1 -0
  80. package/dist/webrtc/control-channel.d.ts +8 -0
  81. package/dist/webrtc/control-channel.js +11 -0
  82. package/dist/webrtc/control-channel.js.map +1 -0
  83. package/dist/webrtc/datachannel-stream.d.ts +25 -0
  84. package/dist/webrtc/datachannel-stream.js +86 -0
  85. package/dist/webrtc/datachannel-stream.js.map +1 -0
  86. package/dist/webrtc/mediatrack-stream.d.ts +29 -0
  87. package/dist/webrtc/mediatrack-stream.js +109 -0
  88. package/dist/webrtc/mediatrack-stream.js.map +1 -0
  89. package/dist/webrtc/mockrtc-connection.d.ts +14 -0
  90. package/dist/webrtc/mockrtc-connection.js +147 -0
  91. package/dist/webrtc/mockrtc-connection.js.map +1 -0
  92. package/dist/webrtc/peer-connection.d.ts +16 -0
  93. package/dist/webrtc/peer-connection.js +81 -0
  94. package/dist/webrtc/peer-connection.js.map +1 -0
  95. package/dist/webrtc/rtc-connection.d.ts +47 -0
  96. package/dist/webrtc/rtc-connection.js +370 -0
  97. package/dist/webrtc/rtc-connection.js.map +1 -0
  98. package/dist/webrtc-hooks.d.ts +30 -0
  99. package/dist/webrtc-hooks.js +224 -0
  100. package/dist/webrtc-hooks.js.map +1 -0
  101. package/karma.conf.ts +89 -0
  102. package/ngi-eu-footer.png +0 -0
  103. package/package.json +86 -0
  104. package/src/admin-bin.ts +57 -0
  105. package/src/client/mockrtc-client.ts +79 -0
  106. package/src/client/mockrtc-remote-peer.ts +286 -0
  107. package/src/handling/handler-builder.ts +215 -0
  108. package/src/handling/handler-step-definitions.ts +142 -0
  109. package/src/handling/handler-steps.ts +254 -0
  110. package/src/main-browser.ts +44 -0
  111. package/src/main.ts +109 -0
  112. package/src/mockrtc-peer.ts +176 -0
  113. package/src/mockrtc.ts +36 -0
  114. package/src/server/mockrtc-admin-plugin.ts +196 -0
  115. package/src/server/mockrtc-admin-server.ts +17 -0
  116. package/src/server/mockrtc-server-peer.ts +159 -0
  117. package/src/server/mockrtc-server.ts +53 -0
  118. package/src/webrtc/control-channel.ts +13 -0
  119. package/src/webrtc/datachannel-stream.ts +102 -0
  120. package/src/webrtc/mediatrack-stream.ts +135 -0
  121. package/src/webrtc/mockrtc-connection.ts +164 -0
  122. package/src/webrtc/rtc-connection.ts +420 -0
  123. package/src/webrtc-hooks.ts +245 -0
  124. package/test/integration/close-steps.spec.ts +39 -0
  125. package/test/integration/connection-setup.spec.ts +230 -0
  126. package/test/integration/echo-steps.spec.ts +88 -0
  127. package/test/integration/proxy.spec.ts +526 -0
  128. package/test/integration/send-steps.spec.ts +76 -0
  129. package/test/integration/smoke-test.spec.ts +100 -0
  130. package/test/integration/wait-steps.spec.ts +225 -0
  131. package/test/start-test-admin-server.ts +12 -0
  132. package/test/test-setup.ts +136 -0
  133. package/test/tsconfig.json +11 -0
  134. package/tsconfig.json +14 -0
  135. package/typedoc.json +19 -0
  136. package/wallaby.js +41 -0
@@ -0,0 +1,63 @@
1
+ /// <reference types="node" />
2
+ import * as PluggableAdmin from 'mockttp/dist/pluggable-admin-api/pluggable-admin.browser';
3
+ export declare type Serializable = PluggableAdmin.Serialization.Serializable;
4
+ export declare const Serializable: typeof PluggableAdmin.Serialization.Serializable;
5
+ declare type ClientServerChannel = PluggableAdmin.Serialization.ClientServerChannel;
6
+ export interface HandlerStepDefinition extends Serializable {
7
+ readonly type: keyof typeof StepDefinitionLookup;
8
+ }
9
+ export declare class WaitForDurationStepDefinition extends Serializable implements HandlerStepDefinition {
10
+ protected durationMs: number;
11
+ readonly type = "wait-for-duration";
12
+ constructor(durationMs: number);
13
+ }
14
+ export declare class WaitForChannelStepDefinition extends Serializable implements HandlerStepDefinition {
15
+ protected channelLabel?: string | undefined;
16
+ readonly type = "wait-for-channel";
17
+ constructor(channelLabel?: string | undefined);
18
+ }
19
+ export declare class WaitForMessageStepDefinition extends Serializable implements HandlerStepDefinition {
20
+ protected channelLabel?: string | undefined;
21
+ readonly type = "wait-for-message";
22
+ constructor(channelLabel?: string | undefined);
23
+ }
24
+ export declare class WaitForTrackStepDefinition extends Serializable implements HandlerStepDefinition {
25
+ readonly type = "wait-for-track";
26
+ }
27
+ export declare class WaitForMediaStepDefinition extends Serializable implements HandlerStepDefinition {
28
+ readonly type = "wait-for-media";
29
+ }
30
+ export declare class SendStepDefinition extends Serializable implements HandlerStepDefinition {
31
+ protected channelLabel: string | undefined;
32
+ protected message: string | Buffer;
33
+ readonly type = "send-message";
34
+ constructor(channelLabel: string | undefined, message: string | Buffer);
35
+ }
36
+ export declare class CloseStepDefinition extends Serializable implements HandlerStepDefinition {
37
+ readonly type = "close-connection";
38
+ }
39
+ export declare class EchoStepDefinition extends Serializable implements HandlerStepDefinition {
40
+ readonly type = "echo-channels";
41
+ }
42
+ export declare class PeerProxyStepDefinition extends Serializable implements HandlerStepDefinition {
43
+ readonly type = "peer-proxy";
44
+ protected getAnswer: (offer: RTCSessionDescriptionInit) => Promise<RTCSessionDescriptionInit>;
45
+ constructor(connectionTarget: RTCPeerConnection | ((offer: RTCSessionDescriptionInit) => Promise<RTCSessionDescriptionInit>));
46
+ serialize(channel: ClientServerChannel): {};
47
+ }
48
+ export declare class DynamicProxyStepDefinition extends Serializable implements HandlerStepDefinition {
49
+ readonly type = "dynamic-proxy";
50
+ }
51
+ export declare const StepDefinitionLookup: {
52
+ '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
+ 'send-message': typeof SendStepDefinition;
58
+ 'close-connection': typeof CloseStepDefinition;
59
+ 'echo-channels': typeof EchoStepDefinition;
60
+ 'peer-proxy': typeof PeerProxyStepDefinition;
61
+ 'dynamic-proxy': typeof DynamicProxyStepDefinition;
62
+ };
63
+ export {};
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /*
3
+ * SPDX-FileCopyrightText: 2022 Tim Perry <tim@httptoolkit.tech>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.StepDefinitionLookup = exports.DynamicProxyStepDefinition = exports.PeerProxyStepDefinition = exports.EchoStepDefinition = exports.CloseStepDefinition = exports.SendStepDefinition = exports.WaitForMediaStepDefinition = exports.WaitForTrackStepDefinition = exports.WaitForMessageStepDefinition = exports.WaitForChannelStepDefinition = exports.WaitForDurationStepDefinition = exports.Serializable = void 0;
17
+ const PluggableAdmin = require("mockttp/dist/pluggable-admin-api/pluggable-admin.browser");
18
+ exports.Serializable = PluggableAdmin.Serialization.Serializable;
19
+ class WaitForDurationStepDefinition extends exports.Serializable {
20
+ constructor(durationMs) {
21
+ super();
22
+ this.durationMs = durationMs;
23
+ this.type = 'wait-for-duration';
24
+ }
25
+ }
26
+ exports.WaitForDurationStepDefinition = WaitForDurationStepDefinition;
27
+ class WaitForChannelStepDefinition extends exports.Serializable {
28
+ constructor(channelLabel) {
29
+ super();
30
+ this.channelLabel = channelLabel;
31
+ this.type = 'wait-for-channel';
32
+ }
33
+ }
34
+ exports.WaitForChannelStepDefinition = WaitForChannelStepDefinition;
35
+ class WaitForMessageStepDefinition extends exports.Serializable {
36
+ constructor(channelLabel) {
37
+ super();
38
+ this.channelLabel = channelLabel;
39
+ this.type = 'wait-for-message';
40
+ }
41
+ }
42
+ exports.WaitForMessageStepDefinition = WaitForMessageStepDefinition;
43
+ class WaitForTrackStepDefinition extends exports.Serializable {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.type = 'wait-for-track';
47
+ }
48
+ }
49
+ exports.WaitForTrackStepDefinition = WaitForTrackStepDefinition;
50
+ class WaitForMediaStepDefinition extends exports.Serializable {
51
+ constructor() {
52
+ super(...arguments);
53
+ this.type = 'wait-for-media';
54
+ }
55
+ }
56
+ exports.WaitForMediaStepDefinition = WaitForMediaStepDefinition;
57
+ class SendStepDefinition extends exports.Serializable {
58
+ constructor(channelLabel, message) {
59
+ super();
60
+ this.channelLabel = channelLabel;
61
+ this.message = message;
62
+ this.type = 'send-message';
63
+ }
64
+ }
65
+ exports.SendStepDefinition = SendStepDefinition;
66
+ class CloseStepDefinition extends exports.Serializable {
67
+ constructor() {
68
+ super(...arguments);
69
+ this.type = 'close-connection';
70
+ }
71
+ }
72
+ exports.CloseStepDefinition = CloseStepDefinition;
73
+ class EchoStepDefinition extends exports.Serializable {
74
+ constructor() {
75
+ super(...arguments);
76
+ this.type = 'echo-channels';
77
+ }
78
+ }
79
+ exports.EchoStepDefinition = EchoStepDefinition;
80
+ class PeerProxyStepDefinition extends exports.Serializable {
81
+ constructor(connectionTarget) {
82
+ super();
83
+ this.type = 'peer-proxy';
84
+ if (connectionTarget instanceof Function) {
85
+ this.getAnswer = connectionTarget;
86
+ }
87
+ else {
88
+ this.getAnswer = (offer) => __awaiter(this, void 0, void 0, function* () {
89
+ yield connectionTarget.setRemoteDescription(offer);
90
+ const answer = yield connectionTarget.createAnswer();
91
+ yield connectionTarget.setLocalDescription(answer);
92
+ return answer;
93
+ });
94
+ }
95
+ }
96
+ serialize(channel) {
97
+ channel.onRequest((msg) => __awaiter(this, void 0, void 0, function* () {
98
+ return { answer: yield this.getAnswer(msg.offer) };
99
+ }));
100
+ return { type: this.type };
101
+ }
102
+ }
103
+ exports.PeerProxyStepDefinition = PeerProxyStepDefinition;
104
+ class DynamicProxyStepDefinition extends exports.Serializable {
105
+ constructor() {
106
+ super(...arguments);
107
+ this.type = 'dynamic-proxy';
108
+ }
109
+ }
110
+ exports.DynamicProxyStepDefinition = DynamicProxyStepDefinition;
111
+ exports.StepDefinitionLookup = {
112
+ 'wait-for-duration': WaitForDurationStepDefinition,
113
+ 'wait-for-channel': WaitForChannelStepDefinition,
114
+ 'wait-for-track': WaitForTrackStepDefinition,
115
+ 'wait-for-media': WaitForMediaStepDefinition,
116
+ 'wait-for-message': WaitForMessageStepDefinition,
117
+ 'send-message': SendStepDefinition,
118
+ 'close-connection': CloseStepDefinition,
119
+ 'echo-channels': EchoStepDefinition,
120
+ 'peer-proxy': PeerProxyStepDefinition,
121
+ 'dynamic-proxy': DynamicProxyStepDefinition
122
+ };
123
+ //# sourceMappingURL=handler-step-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-step-definitions.js","sourceRoot":"","sources":["../../src/handling/handler-step-definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { PluggableAdmin } from 'mockttp';
2
+ import type { MockRTCConnection } from '../webrtc/mockrtc-connection';
3
+ import { StepDefinitionLookup, CloseStepDefinition, DynamicProxyStepDefinition, EchoStepDefinition, HandlerStepDefinition, PeerProxyStepDefinition, SendStepDefinition, WaitForChannelStepDefinition, WaitForDurationStepDefinition, WaitForMediaStepDefinition, WaitForMessageStepDefinition, WaitForTrackStepDefinition } from './handler-step-definitions';
4
+ declare type ClientServerChannel = PluggableAdmin.Serialization.ClientServerChannel;
5
+ export interface HandlerStep extends HandlerStepDefinition {
6
+ handle(connection: MockRTCConnection): Promise<void>;
7
+ }
8
+ export declare class WaitForDurationStep extends WaitForDurationStepDefinition {
9
+ handle(): Promise<void>;
10
+ }
11
+ export declare class WaitForChannelStep extends WaitForChannelStepDefinition {
12
+ private matchesChannel;
13
+ handle(connection: MockRTCConnection): Promise<void>;
14
+ }
15
+ export declare class WaitForMessageStep extends WaitForMessageStepDefinition {
16
+ private matchesChannel;
17
+ handle(connection: MockRTCConnection): Promise<void>;
18
+ }
19
+ export declare class WaitForTrackStep extends WaitForTrackStepDefinition {
20
+ handle(connection: MockRTCConnection): Promise<void>;
21
+ }
22
+ export declare class WaitForMediaStep extends WaitForMediaStepDefinition {
23
+ handle(connection: MockRTCConnection): Promise<void>;
24
+ }
25
+ export declare class SendStep extends SendStepDefinition {
26
+ private matchesChannel;
27
+ handle({ channels }: MockRTCConnection): Promise<void>;
28
+ }
29
+ export declare class CloseStep extends CloseStepDefinition {
30
+ handle(connection: MockRTCConnection): Promise<void>;
31
+ }
32
+ export declare class EchoStep extends EchoStepDefinition {
33
+ handle(connection: MockRTCConnection): Promise<void>;
34
+ }
35
+ export declare class PeerProxyStep extends PeerProxyStepDefinition {
36
+ private externalConnections;
37
+ handle(connection: MockRTCConnection): Promise<void>;
38
+ serialize(channel: ClientServerChannel): {};
39
+ static deserialize(_data: {}, channel: ClientServerChannel): PeerProxyStep;
40
+ dispose(): void;
41
+ }
42
+ export declare class DynamicProxyStep extends DynamicProxyStepDefinition {
43
+ private externalConnections;
44
+ handle(connection: MockRTCConnection): Promise<void>;
45
+ dispose(): void;
46
+ }
47
+ export declare const StepLookup: typeof StepDefinitionLookup;
48
+ export {};
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ /*
3
+ * SPDX-FileCopyrightText: 2022 Tim Perry <tim@httptoolkit.tech>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
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;
17
+ const rtc_connection_1 = require("../webrtc/rtc-connection");
18
+ const handler_step_definitions_1 = require("./handler-step-definitions");
19
+ class WaitForDurationStep extends handler_step_definitions_1.WaitForDurationStepDefinition {
20
+ handle() {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ return new Promise((resolve) => setTimeout(resolve, this.durationMs));
23
+ });
24
+ }
25
+ }
26
+ exports.WaitForDurationStep = WaitForDurationStep;
27
+ class WaitForChannelStep extends handler_step_definitions_1.WaitForChannelStepDefinition {
28
+ matchesChannel(channel) {
29
+ return this.channelLabel === undefined || this.channelLabel === channel.label;
30
+ }
31
+ handle(connection) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ return new Promise((resolve) => {
34
+ const channelOpened = (channel) => {
35
+ if (this.matchesChannel(channel)) {
36
+ connection.removeListener('remote-channel-open', channelOpened);
37
+ resolve();
38
+ }
39
+ };
40
+ connection.on('remote-channel-open', channelOpened);
41
+ connection.remoteChannels.forEach(channelOpened);
42
+ });
43
+ });
44
+ }
45
+ }
46
+ exports.WaitForChannelStep = WaitForChannelStep;
47
+ class WaitForMessageStep extends handler_step_definitions_1.WaitForMessageStepDefinition {
48
+ matchesChannel(channel) {
49
+ return this.channelLabel === undefined || this.channelLabel === channel.label;
50
+ }
51
+ handle(connection) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ return new Promise((resolve) => {
54
+ const messageReceived = () => {
55
+ connection.removeListener('channel-open', listenForMessage);
56
+ connection.channels.forEach((channel) => {
57
+ channel.removeListener('data', messageReceived);
58
+ channel.pause();
59
+ });
60
+ resolve();
61
+ };
62
+ const listenForMessage = (channel) => {
63
+ if (this.matchesChannel(channel)) {
64
+ channel.once('data', messageReceived);
65
+ }
66
+ };
67
+ connection.on('channel-open', listenForMessage);
68
+ connection.channels.forEach(listenForMessage);
69
+ });
70
+ });
71
+ }
72
+ }
73
+ exports.WaitForMessageStep = WaitForMessageStep;
74
+ class WaitForTrackStep extends handler_step_definitions_1.WaitForTrackStepDefinition {
75
+ handle(connection) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ yield new Promise((resolve) => {
78
+ if (connection.remoteMediaTracks.length)
79
+ resolve();
80
+ else
81
+ connection.once('remote-track-open', () => resolve());
82
+ });
83
+ });
84
+ }
85
+ }
86
+ exports.WaitForTrackStep = WaitForTrackStep;
87
+ class WaitForMediaStep extends handler_step_definitions_1.WaitForMediaStepDefinition {
88
+ handle(connection) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ return new Promise((resolve) => {
91
+ const messageReceived = () => {
92
+ connection.removeListener('track-open', listenForData);
93
+ connection.mediaTracks.forEach((track) => {
94
+ track.removeListener('data', messageReceived);
95
+ track.pause();
96
+ });
97
+ resolve();
98
+ };
99
+ const listenForData = (track) => {
100
+ track.once('data', messageReceived);
101
+ };
102
+ connection.on('track-open', listenForData);
103
+ connection.mediaTracks.forEach(listenForData);
104
+ });
105
+ });
106
+ }
107
+ }
108
+ exports.WaitForMediaStep = WaitForMediaStep;
109
+ class SendStep extends handler_step_definitions_1.SendStepDefinition {
110
+ matchesChannel(channel) {
111
+ return this.channelLabel === undefined || this.channelLabel === channel.label;
112
+ }
113
+ handle({ channels }) {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ yield Promise.all(channels
116
+ .filter((channel) => this.matchesChannel(channel))
117
+ .map((channel) => {
118
+ return new Promise((resolve, reject) => {
119
+ channel.write(this.message, (error) => {
120
+ if (error)
121
+ reject(error);
122
+ else
123
+ resolve();
124
+ });
125
+ });
126
+ }));
127
+ });
128
+ }
129
+ }
130
+ exports.SendStep = SendStep;
131
+ class CloseStep extends handler_step_definitions_1.CloseStepDefinition {
132
+ handle(connection) {
133
+ return __awaiter(this, void 0, void 0, function* () {
134
+ yield connection.close();
135
+ });
136
+ }
137
+ }
138
+ exports.CloseStep = CloseStep;
139
+ class EchoStep extends handler_step_definitions_1.EchoStepDefinition {
140
+ handle(connection) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ const echoContent = (stream) => {
143
+ stream.pipe(stream);
144
+ };
145
+ connection.on('channel-open', echoContent);
146
+ connection.on('track-open', echoContent);
147
+ connection.channels.forEach(echoContent);
148
+ connection.mediaTracks.forEach(echoContent);
149
+ // This step keeps running indefinitely, until the connection closes
150
+ return new Promise((resolve) => connection.on('connection-closed', resolve));
151
+ });
152
+ }
153
+ }
154
+ exports.EchoStep = EchoStep;
155
+ class PeerProxyStep extends handler_step_definitions_1.PeerProxyStepDefinition {
156
+ constructor() {
157
+ super(...arguments);
158
+ this.externalConnections = [];
159
+ }
160
+ handle(connection) {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ const externalConn = new rtc_connection_1.RTCConnection();
163
+ this.externalConnections.push(externalConn);
164
+ // We mirror the internal peer's SDP as an offer to the given connection:
165
+ const externalOffer = yield externalConn.getMirroredLocalOffer(connection.getRemoteDescription().sdp);
166
+ externalConn.setRemoteDescription(yield this.getAnswer(externalOffer));
167
+ connection.proxyTrafficTo(externalConn);
168
+ // This step keeps running indefinitely, until the connection closes
169
+ return new Promise((resolve) => connection.on('connection-closed', resolve));
170
+ });
171
+ }
172
+ serialize(channel) {
173
+ channel.onRequest((msg) => __awaiter(this, void 0, void 0, function* () {
174
+ return { answer: yield this.getAnswer(msg.offer) };
175
+ }));
176
+ return { type: this.type };
177
+ }
178
+ static deserialize(_data, channel) {
179
+ return new PeerProxyStep((offer) => __awaiter(this, void 0, void 0, function* () {
180
+ const response = yield channel.request({ offer });
181
+ return response.answer;
182
+ }));
183
+ }
184
+ dispose() {
185
+ this.externalConnections.forEach(conn => conn.close());
186
+ }
187
+ }
188
+ exports.PeerProxyStep = PeerProxyStep;
189
+ class DynamicProxyStep extends handler_step_definitions_1.DynamicProxyStepDefinition {
190
+ constructor() {
191
+ super(...arguments);
192
+ this.externalConnections = [];
193
+ }
194
+ handle(connection) {
195
+ return __awaiter(this, void 0, void 0, function* () {
196
+ yield connection.proxyTrafficToExternalConnection();
197
+ // This step keeps running indefinitely, until the connection closes
198
+ return new Promise((resolve) => connection.on('connection-closed', resolve));
199
+ });
200
+ }
201
+ dispose() {
202
+ this.externalConnections.forEach(conn => conn.close());
203
+ }
204
+ }
205
+ exports.DynamicProxyStep = DynamicProxyStep;
206
+ exports.StepLookup = {
207
+ '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
+ };
218
+ //# sourceMappingURL=handler-steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-steps.js","sourceRoot":"","sources":["../../src/handling/handler-steps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { MockRTC, MockRTCOptions } from "./mockrtc";
2
+ import { MockRTCClientOptions } from "./client/mockrtc-client";
3
+ export type { MockRTC, MockRTCOptions };
4
+ export type { MockRTCPeer, MockRTCSession, MockRTCOfferParams, MockRTCAnswerParams, MockRTCExternalOfferParams, MockRTCExternalAnswerParams, OfferOptions, AnswerOptions } from './mockrtc-peer';
5
+ export { MOCKRTC_CONTROL_CHANNEL } from './webrtc/control-channel';
6
+ export { hookWebRTCConnection, hookAllWebRTC } from "./webrtc-hooks";
7
+ export declare function getLocal(): MockRTC;
8
+ export declare function getRemote(options?: MockRTCClientOptions): MockRTC;
9
+ export declare function getAdminServer(): never;
@@ -0,0 +1,26 @@
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.getAdminServer = exports.getRemote = exports.getLocal = exports.hookAllWebRTC = exports.hookWebRTCConnection = exports.MOCKRTC_CONTROL_CHANNEL = void 0;
8
+ const mockrtc_client_1 = require("./client/mockrtc-client");
9
+ var control_channel_1 = require("./webrtc/control-channel");
10
+ Object.defineProperty(exports, "MOCKRTC_CONTROL_CHANNEL", { enumerable: true, get: function () { return control_channel_1.MOCKRTC_CONTROL_CHANNEL; } });
11
+ var webrtc_hooks_1 = require("./webrtc-hooks");
12
+ Object.defineProperty(exports, "hookWebRTCConnection", { enumerable: true, get: function () { return webrtc_hooks_1.hookWebRTCConnection; } });
13
+ Object.defineProperty(exports, "hookAllWebRTC", { enumerable: true, get: function () { return webrtc_hooks_1.hookAllWebRTC; } });
14
+ function getLocal() {
15
+ return new mockrtc_client_1.MockRTCClient();
16
+ }
17
+ exports.getLocal = getLocal;
18
+ function getRemote(options = {}) {
19
+ return new mockrtc_client_1.MockRTCClient(options);
20
+ }
21
+ exports.getRemote = getRemote;
22
+ function getAdminServer() {
23
+ throw new Error("Can't use MockRTC.getLocal() in a browser");
24
+ }
25
+ exports.getAdminServer = getAdminServer;
26
+ //# sourceMappingURL=main-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-browser.js","sourceRoot":"","sources":["../src/main-browser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,4DAA8E;AAkB9E,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 ADDED
@@ -0,0 +1,58 @@
1
+ import { MockRTC, MockRTCOptions, MockRTCPeerBuilder } from "./mockrtc";
2
+ import { MockRTCAdminServer } from "./server/mockrtc-admin-server";
3
+ export { MockRTCAdminPlugin } from "./server/mockrtc-admin-plugin";
4
+ import { MockRTCClientOptions } from "./client/mockrtc-client";
5
+ export type { HandlerStepDefinition } from "./handling/handler-step-definitions";
6
+ export type { HandlerStep } from "./handling/handler-steps";
7
+ export type { MockRTCHandlerBuilder } from "./handling/handler-builder";
8
+ export type { MockRTCServerPeer } from "./server/mockrtc-server-peer";
9
+ export type { SessionData } from "./server/mockrtc-admin-plugin";
10
+ export type { RTCConnection } from "./webrtc/rtc-connection";
11
+ export type { MockRTCConnection } from "./webrtc/mockrtc-connection";
12
+ export type { DataChannelStream } from "./webrtc/datachannel-stream";
13
+ export type { MediaTrackStream } from "./webrtc/mediatrack-stream";
14
+ export type { PluggableAdmin } from 'mockttp';
15
+ export type { MockRTC, MockRTCOptions, MockRTCClientOptions, MockRTCPeerBuilder, MockRTCAdminServer };
16
+ export type { MockRTCPeer, MockRTCPeerOptions, MockRTCSession, MockRTCOfferParams, MockRTCAnswerParams, MockRTCExternalOfferParams, MockRTCExternalAnswerParams, OfferOptions, AnswerOptions } from './mockrtc-peer';
17
+ export { MOCKRTC_CONTROL_CHANNEL, type MockRTCControlMessage } from './webrtc/control-channel';
18
+ export { hookWebRTCConnection, hookAllWebRTC } from "./webrtc-hooks";
19
+ /**
20
+ * Get a MockRTC instance on the local machine.
21
+ *
22
+ * In most simple environments, you can call this method directly and immediately
23
+ * get a MockRTC instance and start mocking peers.
24
+ *
25
+ * In node, the mocked peers will run in process and require no further setup.
26
+ *
27
+ * In browsers this is an alias for {@link getRemote}. You'll need to start a MockRTC
28
+ * admin server outside your tests before calling this, which will create and manage
29
+ * your fake peers outside the browser.
30
+ *
31
+ * @category API
32
+ */
33
+ export declare function getLocal(): MockRTC;
34
+ /**
35
+ * Get a MockRTC instance, managed by a MockRTC admin server running elsewhere.
36
+ *
37
+ * This connects to a MockRTC server, and uses that to start
38
+ * and stop mock peers.
39
+ *
40
+ * @category API
41
+ */
42
+ export declare function getRemote(options?: MockRTCClientOptions): MockRTC;
43
+ /**
44
+ * Get a MockRTC admin server, which can be used with a MockRTC remote client to create
45
+ * & manage mock peers either from remote machines or from local environments
46
+ * that lack necessary capabilities, e.g. to use MockRTC from inside a browser.
47
+ *
48
+ * This function exists so you can set up these servers programmatically, but for most
49
+ * usage you can just run your tests via the `mockrtc` binary, which will automatically
50
+ * start and stop an admin server for you:
51
+ *
52
+ * ```
53
+ * mockrtc -c <your test command>
54
+ * ```
55
+ *
56
+ * @category API
57
+ */
58
+ export declare function getAdminServer(): MockRTCAdminServer;
package/dist/main.js ADDED
@@ -0,0 +1,67 @@
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.getAdminServer = exports.getRemote = exports.getLocal = exports.hookAllWebRTC = exports.hookWebRTCConnection = exports.MOCKRTC_CONTROL_CHANNEL = exports.MockRTCAdminPlugin = void 0;
8
+ const mockrtc_server_1 = require("./server/mockrtc-server");
9
+ const mockrtc_admin_server_1 = require("./server/mockrtc-admin-server");
10
+ var mockrtc_admin_plugin_1 = require("./server/mockrtc-admin-plugin");
11
+ Object.defineProperty(exports, "MockRTCAdminPlugin", { enumerable: true, get: function () { return mockrtc_admin_plugin_1.MockRTCAdminPlugin; } });
12
+ const mockrtc_client_1 = require("./client/mockrtc-client");
13
+ var control_channel_1 = require("./webrtc/control-channel");
14
+ Object.defineProperty(exports, "MOCKRTC_CONTROL_CHANNEL", { enumerable: true, get: function () { return control_channel_1.MOCKRTC_CONTROL_CHANNEL; } });
15
+ var webrtc_hooks_1 = require("./webrtc-hooks");
16
+ Object.defineProperty(exports, "hookWebRTCConnection", { enumerable: true, get: function () { return webrtc_hooks_1.hookWebRTCConnection; } });
17
+ Object.defineProperty(exports, "hookAllWebRTC", { enumerable: true, get: function () { return webrtc_hooks_1.hookAllWebRTC; } });
18
+ /**
19
+ * Get a MockRTC instance on the local machine.
20
+ *
21
+ * In most simple environments, you can call this method directly and immediately
22
+ * get a MockRTC instance and start mocking peers.
23
+ *
24
+ * In node, the mocked peers will run in process and require no further setup.
25
+ *
26
+ * In browsers this is an alias for {@link getRemote}. You'll need to start a MockRTC
27
+ * admin server outside your tests before calling this, which will create and manage
28
+ * your fake peers outside the browser.
29
+ *
30
+ * @category API
31
+ */
32
+ function getLocal() {
33
+ return new mockrtc_server_1.MockRTCServer();
34
+ }
35
+ exports.getLocal = getLocal;
36
+ /**
37
+ * Get a MockRTC instance, managed by a MockRTC admin server running elsewhere.
38
+ *
39
+ * This connects to a MockRTC server, and uses that to start
40
+ * and stop mock peers.
41
+ *
42
+ * @category API
43
+ */
44
+ function getRemote(options = {}) {
45
+ return new mockrtc_client_1.MockRTCClient(options);
46
+ }
47
+ exports.getRemote = getRemote;
48
+ /**
49
+ * Get a MockRTC admin server, which can be used with a MockRTC remote client to create
50
+ * & manage mock peers either from remote machines or from local environments
51
+ * that lack necessary capabilities, e.g. to use MockRTC from inside a browser.
52
+ *
53
+ * This function exists so you can set up these servers programmatically, but for most
54
+ * usage you can just run your tests via the `mockrtc` binary, which will automatically
55
+ * start and stop an admin server for you:
56
+ *
57
+ * ```
58
+ * mockrtc -c <your test command>
59
+ * ```
60
+ *
61
+ * @category API
62
+ */
63
+ function getAdminServer() {
64
+ return new mockrtc_admin_server_1.MockRTCAdminServer();
65
+ }
66
+ exports.getAdminServer = getAdminServer;
67
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAQH,4DAAwD;AACxD,wEAAmE;AACnE,sEAAmE;AAA1D,0HAAA,kBAAkB,OAAA;AAE3B,4DAA8E;AAqC9E,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"}