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,163 @@
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.MockRTCAdminPlugin = void 0;
17
+ const graphql_tag_1 = require("graphql-tag");
18
+ const mockttp_1 = require("mockttp");
19
+ const handler_steps_1 = require("../handling/handler-steps");
20
+ const mockrtc_server_1 = require("./mockrtc-server");
21
+ const { deserialize } = mockttp_1.PluggableAdmin.Serialization;
22
+ class MockRTCAdminPlugin {
23
+ constructor() {
24
+ this.schema = (0, graphql_tag_1.gql) `
25
+ extend type Mutation {
26
+ createPeer(data: RTCHandlerData!): MockedPeer!
27
+
28
+ createOffer(peerId: ID!, sessionId: ID, options: Raw): Session!
29
+ createExternalOffer(peerId: ID!, options: Raw): Session!
30
+ completeOffer(peerId: ID!, sessionId: ID!, answer: SessionDescriptionInput!): Void
31
+
32
+ answerOffer(peerId: ID!, sessionId: ID, offer: SessionDescriptionInput!, options: Raw): Session!
33
+ answerExternalOffer(peerId: ID!, offer: SessionDescriptionInput!, options: Raw): Session!
34
+ }
35
+
36
+ input RTCHandlerData {
37
+ steps: [Raw!]!
38
+ }
39
+
40
+ type MockedPeer {
41
+ peerId: ID!
42
+ }
43
+
44
+ input SessionDescriptionInput {
45
+ type: String!
46
+ sdp: String!
47
+ }
48
+
49
+ type SessionDescriptionResult {
50
+ type: String!
51
+ sdp: String!
52
+ }
53
+
54
+ type Session {
55
+ id: ID!
56
+ description: SessionDescriptionResult
57
+ }
58
+
59
+ extend type Query {
60
+ getSeenMessages(peerId: ID!, channelName: String): [Raw!]
61
+ }
62
+
63
+ scalar HandlerStep
64
+ `;
65
+ }
66
+ start(options) {
67
+ this.mockRTCServer = new mockrtc_server_1.MockRTCServer(options);
68
+ return this.mockRTCServer.start();
69
+ }
70
+ reset() { }
71
+ stop() {
72
+ return this.mockRTCServer.stop();
73
+ }
74
+ buildResolvers(adminStream, ruleParams) {
75
+ return {
76
+ Mutation: {
77
+ createPeer: (__, { data: { steps } }) => {
78
+ return this.mockRTCServer.buildPeerFromData(steps.map((stepData) => deserialize(stepData, adminStream, ruleParams, handler_steps_1.StepLookup)));
79
+ },
80
+ createOffer: (__, { peerId, sessionId, options }) => __awaiter(this, void 0, void 0, function* () {
81
+ const peer = this.mockRTCServer.getPeer(peerId);
82
+ if (!peer)
83
+ throw new Error("Id matches no active peer");
84
+ if (sessionId) {
85
+ const session = peer.getSession(sessionId);
86
+ return {
87
+ id: sessionId,
88
+ description: yield session.createOffer(options)
89
+ };
90
+ }
91
+ else {
92
+ const offerParams = yield peer.createOffer(options);
93
+ return {
94
+ id: offerParams.session.sessionId,
95
+ description: offerParams.offer
96
+ };
97
+ }
98
+ }),
99
+ createExternalOffer: (__, { peerId, options }) => __awaiter(this, void 0, void 0, function* () {
100
+ const peer = this.mockRTCServer.getPeer(peerId);
101
+ if (!peer)
102
+ throw new Error("Id matches no active peer");
103
+ const offerParams = yield peer.createExternalOffer(options);
104
+ return {
105
+ id: offerParams.id,
106
+ description: offerParams.offer
107
+ };
108
+ }),
109
+ completeOffer: (__, { peerId, sessionId, answer }) => __awaiter(this, void 0, void 0, function* () {
110
+ const session = this.mockRTCServer.getPeer(peerId).getSession(sessionId);
111
+ yield session.completeOffer(answer);
112
+ }),
113
+ answerOffer: (__, { peerId, sessionId, offer, options }) => __awaiter(this, void 0, void 0, function* () {
114
+ const peer = this.mockRTCServer.getPeer(peerId);
115
+ if (!peer)
116
+ throw new Error("Id matches no active peer");
117
+ if (sessionId) {
118
+ const session = peer.getSession(sessionId);
119
+ const answer = yield session.answerOffer(offer, options);
120
+ return { id: sessionId, description: answer };
121
+ }
122
+ else {
123
+ const answerParams = yield peer.answerOffer(offer, options);
124
+ return {
125
+ id: answerParams.session.sessionId,
126
+ description: answerParams.answer
127
+ };
128
+ }
129
+ }),
130
+ answerExternalOffer: (__, { peerId, offer, options }) => __awaiter(this, void 0, void 0, function* () {
131
+ const peer = this.mockRTCServer.getPeer(peerId);
132
+ if (!peer)
133
+ throw new Error("Id matches no active peer");
134
+ const answerParams = yield peer.answerExternalOffer(offer, options);
135
+ return {
136
+ id: answerParams.id,
137
+ description: answerParams.answer
138
+ };
139
+ })
140
+ },
141
+ Query: {
142
+ getSeenMessages: (__, { peerId, channelName }) => __awaiter(this, void 0, void 0, function* () {
143
+ const peer = this.mockRTCServer.getPeer(peerId);
144
+ if (!peer)
145
+ throw new Error("Id matches no active peer");
146
+ const messages = yield (channelName != undefined
147
+ ? peer.getMessagesOnChannel(channelName)
148
+ : peer.getAllMessages());
149
+ return messages.map((message) => {
150
+ if (Buffer.isBuffer(message)) {
151
+ return { type: 'buffer', value: message.toString('base64') };
152
+ }
153
+ else {
154
+ return message;
155
+ }
156
+ });
157
+ })
158
+ }
159
+ };
160
+ }
161
+ }
162
+ exports.MockRTCAdminPlugin = MockRTCAdminPlugin;
163
+ //# sourceMappingURL=mockrtc-admin-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockrtc-admin-plugin.js","sourceRoot":"","sources":["../../src/server/mockrtc-admin-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { PluggableAdmin } from 'mockttp';
2
+ import { MockRTCAdminPlugin } from './mockrtc-admin-plugin';
3
+ export declare class MockRTCAdminServer extends PluggableAdmin.AdminServer<{
4
+ webrtc: MockRTCAdminPlugin;
5
+ }> {
6
+ constructor();
7
+ }
@@ -0,0 +1,18 @@
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.MockRTCAdminServer = void 0;
8
+ const mockttp_1 = require("mockttp");
9
+ const mockrtc_admin_plugin_1 = require("./mockrtc-admin-plugin");
10
+ class MockRTCAdminServer extends mockttp_1.PluggableAdmin.AdminServer {
11
+ constructor() {
12
+ super({
13
+ adminPlugins: { webrtc: mockrtc_admin_plugin_1.MockRTCAdminPlugin }
14
+ });
15
+ }
16
+ }
17
+ exports.MockRTCAdminServer = MockRTCAdminServer;
18
+ //# sourceMappingURL=mockrtc-admin-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockrtc-admin-server.js","sourceRoot":"","sources":["../../src/server/mockrtc-admin-server.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qCAAyC;AACzC,iEAA4D;AAE5D,MAAa,kBAAmB,SAAQ,wBAAc,CAAC,WAA2C;IAE9F;QACI,KAAK,CAAC;YACF,YAAY,EAAE,EAAE,MAAM,EAAE,yCAAkB,EAAE;SAC/C,CAAC,CAAC;IACP,CAAC;CAEJ;AARD,gDAQC"}
@@ -0,0 +1,24 @@
1
+ /// <reference types="node" />
2
+ import { MockRTCPeer, MockRTCPeerOptions, MockRTCSession, MockRTCAnswerParams, MockRTCOfferParams, MockRTCExternalAnswerParams, MockRTCExternalOfferParams, OfferOptions, AnswerOptions } from "../mockrtc-peer";
3
+ import { HandlerStep } from '../handling/handler-steps';
4
+ export declare class MockRTCServerPeer implements MockRTCPeer {
5
+ private handlerSteps;
6
+ private options;
7
+ readonly peerId: string;
8
+ private readonly connections;
9
+ private readonly unassignedExternalConnections;
10
+ constructor(handlerSteps: HandlerStep[], options?: MockRTCPeerOptions);
11
+ private trackConnection;
12
+ private getExternalConnection;
13
+ createExternalOffer(options?: OfferOptions): Promise<MockRTCExternalOfferParams>;
14
+ answerExternalOffer(offer: RTCSessionDescriptionInit, options?: AnswerOptions): Promise<MockRTCExternalAnswerParams>;
15
+ private createConnection;
16
+ createOffer(options?: OfferOptions): Promise<MockRTCOfferParams>;
17
+ answerOffer(offer: RTCSessionDescriptionInit, options?: AnswerOptions): Promise<MockRTCAnswerParams>;
18
+ getSession(id: string): MockRTCSession;
19
+ private handleConnection;
20
+ close(): Promise<void>;
21
+ private messages;
22
+ getAllMessages(): Promise<(string | Buffer)[]>;
23
+ getMessagesOnChannel(channelName: string): Promise<(string | Buffer)[]>;
24
+ }
@@ -0,0 +1,141 @@
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.MockRTCServerPeer = void 0;
17
+ const crypto_1 = require("crypto");
18
+ const rtc_connection_1 = require("../webrtc/rtc-connection");
19
+ const mockrtc_connection_1 = require("../webrtc/mockrtc-connection");
20
+ class MockRTCServerPeer {
21
+ constructor(handlerSteps, options = {}) {
22
+ this.handlerSteps = handlerSteps;
23
+ this.options = options;
24
+ this.peerId = (0, crypto_1.randomUUID)();
25
+ // A list of all currently open connections managed by this peer
26
+ this.connections = {};
27
+ // A subset of the connections: external connections with no assigned internal connection
28
+ this.unassignedExternalConnections = {};
29
+ this.getExternalConnection = (id) => {
30
+ const externalConn = this.unassignedExternalConnections[id];
31
+ if (!externalConn)
32
+ throw new Error(`Attempted to connect unknown external conn ${id}`);
33
+ delete this.unassignedExternalConnections[id];
34
+ return externalConn;
35
+ };
36
+ this.messages = {};
37
+ }
38
+ trackConnection(conn) {
39
+ this.connections[conn.id] = conn;
40
+ conn.once('connection-closed', () => {
41
+ delete this.connections[conn.id];
42
+ });
43
+ }
44
+ createExternalOffer(options = {}) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const externalConn = new rtc_connection_1.RTCConnection();
47
+ this.unassignedExternalConnections[externalConn.id] = externalConn;
48
+ this.trackConnection(externalConn);
49
+ return {
50
+ id: externalConn.id,
51
+ offer: yield externalConn.sessionApi.createOffer(options),
52
+ session: externalConn.sessionApi,
53
+ setAnswer: (answer) => __awaiter(this, void 0, void 0, function* () {
54
+ externalConn.sessionApi.completeOffer(answer);
55
+ })
56
+ };
57
+ });
58
+ }
59
+ answerExternalOffer(offer, options) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ const externalConn = new rtc_connection_1.RTCConnection();
62
+ this.unassignedExternalConnections[externalConn.id] = externalConn;
63
+ this.trackConnection(externalConn);
64
+ return {
65
+ id: externalConn.id,
66
+ answer: yield externalConn.sessionApi.answerOffer(offer, options),
67
+ session: externalConn.sessionApi
68
+ };
69
+ });
70
+ }
71
+ createConnection() {
72
+ const conn = new mockrtc_connection_1.MockRTCConnection(this.getExternalConnection);
73
+ this.trackConnection(conn);
74
+ this.handleConnection(conn).catch((error) => {
75
+ console.error("Error handling WebRTC connection:", error);
76
+ conn.close().catch(() => { });
77
+ });
78
+ if (this.options.recordMessages) {
79
+ conn.on('channel-open', (channel) => {
80
+ var _a;
81
+ var _b;
82
+ const channelLabel = channel.label;
83
+ const messageLog = ((_a = (_b = this.messages)[channelLabel]) !== null && _a !== void 0 ? _a : (_b[channelLabel] = []));
84
+ channel.on('data', d => {
85
+ messageLog.push(d);
86
+ });
87
+ });
88
+ }
89
+ return conn;
90
+ }
91
+ createOffer(options = {}) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ const conn = this.createConnection();
94
+ return {
95
+ offer: yield conn.sessionApi.createOffer(options),
96
+ session: conn.sessionApi,
97
+ setAnswer: (answer) => __awaiter(this, void 0, void 0, function* () {
98
+ conn.sessionApi.completeOffer(answer);
99
+ })
100
+ };
101
+ });
102
+ }
103
+ answerOffer(offer, options = {}) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ const conn = this.createConnection();
106
+ return {
107
+ answer: yield conn.sessionApi.answerOffer(offer, options),
108
+ session: conn.sessionApi
109
+ };
110
+ });
111
+ }
112
+ getSession(id) {
113
+ return this.connections[id].sessionApi;
114
+ }
115
+ handleConnection(conn) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ yield conn.waitUntilConnected();
118
+ for (const step of this.handlerSteps) {
119
+ yield step.handle(conn);
120
+ }
121
+ yield conn.close();
122
+ });
123
+ }
124
+ close() {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ yield Promise.all(Object.values(this.connections).map(c => c.close()));
127
+ });
128
+ }
129
+ getAllMessages() {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ return Object.values(this.messages).flat();
132
+ });
133
+ }
134
+ getMessagesOnChannel(channelName) {
135
+ return __awaiter(this, void 0, void 0, function* () {
136
+ return this.messages[channelName].flat();
137
+ });
138
+ }
139
+ }
140
+ exports.MockRTCServerPeer = MockRTCServerPeer;
141
+ //# sourceMappingURL=mockrtc-server-peer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockrtc-server-peer.js","sourceRoot":"","sources":["../../src/server/mockrtc-server-peer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { MockRTC, MockRTCOptions, MockRTCPeerBuilder } from "../mockrtc";
2
+ import { MockRTCServerPeer } from "./mockrtc-server-peer";
3
+ import { HandlerStepDefinition } from "../handling/handler-step-definitions";
4
+ export declare class MockRTCServer implements MockRTC {
5
+ private options;
6
+ constructor(options?: MockRTCOptions);
7
+ start(): Promise<void>;
8
+ stop(): Promise<void>;
9
+ buildPeer(): MockRTCPeerBuilder;
10
+ buildPeerFromData: (handlerStepDefinitions: HandlerStepDefinition[]) => Promise<MockRTCServerPeer>;
11
+ private _activePeers;
12
+ get activePeers(): Readonly<MockRTCServerPeer[]>;
13
+ getPeer(id: string): MockRTCServerPeer;
14
+ }
@@ -0,0 +1,53 @@
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.MockRTCServer = void 0;
17
+ const mockrtc_server_peer_1 = require("./mockrtc-server-peer");
18
+ const handler_builder_1 = require("../handling/handler-builder");
19
+ const handler_steps_1 = require("../handling/handler-steps");
20
+ class MockRTCServer {
21
+ constructor(options = {}) {
22
+ this.options = options;
23
+ this.buildPeerFromData = (handlerStepDefinitions) => __awaiter(this, void 0, void 0, function* () {
24
+ const handlerSteps = handlerStepDefinitions.map((definition) => {
25
+ return Object.assign(Object.create(handler_steps_1.StepLookup[definition.type].prototype), definition);
26
+ });
27
+ const peer = new mockrtc_server_peer_1.MockRTCServerPeer(handlerSteps, this.options);
28
+ this._activePeers[peer.peerId] = peer;
29
+ return peer;
30
+ });
31
+ this._activePeers = {};
32
+ }
33
+ start() {
34
+ return __awaiter(this, void 0, void 0, function* () { });
35
+ }
36
+ stop() {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ yield Promise.all(this.activePeers.map(peer => peer.close()));
39
+ this._activePeers = {};
40
+ });
41
+ }
42
+ buildPeer() {
43
+ return new handler_builder_1.MockRTCHandlerBuilder(this.buildPeerFromData);
44
+ }
45
+ get activePeers() {
46
+ return Object.values(this._activePeers);
47
+ }
48
+ getPeer(id) {
49
+ return this._activePeers[id];
50
+ }
51
+ }
52
+ exports.MockRTCServer = MockRTCServer;
53
+ //# sourceMappingURL=mockrtc-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockrtc-server.js","sourceRoot":"","sources":["../../src/server/mockrtc-server.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;AAGH,+DAA0D;AAC1D,iEAAoE;AAEpE,6DAAuD;AAEvD,MAAa,aAAa;IAEtB,YACY,UAA0B,EAAE;QAA5B,YAAO,GAAP,OAAO,CAAqB;QAiBxC,sBAAiB,GAAG,CAAO,sBAA+C,EAA8B,EAAE;YACtG,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC3D,OAAO,MAAM,CAAC,MAAM,CAChB,MAAM,CAAC,MAAM,CAAC,0BAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EACpD,UAAU,CACb,CAAC;YACN,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,uCAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACtC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAA;QAEO,iBAAY,GAAwC,EAAE,CAAC;IA5B5D,CAAC;IAEE,KAAK;8DAAmB,CAAC;KAAA;IACzB,IAAI;;YACN,MAAM,OAAO,CAAC,GAAG,CACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACxB,IAAI,CAAC,KAAK,EAAE,CACf,CACJ,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAC3B,CAAC;KAAA;IAED,SAAS;QACL,OAAO,IAAI,uCAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC7D,CAAC;IAeD,IAAI,WAAW;QACX,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,EAAU;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;CAEJ;AAzCD,sCAyCC"}
@@ -0,0 +1 @@
1
+ export declare function mock(): Promise<boolean>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.mock = void 0;
13
+ // import * as Mockttp from 'mockttp';
14
+ const packageJson = require("../package.json");
15
+ function mock() {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ // const server = Mockttp.getLocal();
18
+ // await server.start();]
19
+ console.log(packageJson.name);
20
+ return true;
21
+ });
22
+ }
23
+ exports.mock = mock;
24
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAsC;AACtC,+CAA+C;AAE/C,SAAsB,IAAI;;QACtB,qCAAqC;QACrC,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAA;IACf,CAAC;CAAA;AALD,oBAKC"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=mockrtc-peer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockrtc-peer.js","sourceRoot":"","sources":["../../src/mockrtc-peer.ts"],"names":[],"mappings":""}
File without changes
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ // export interface MockRTC {
3
+ // /**
4
+ // * Start creating a mock WebRTC peer. This method returns a builder, who
5
+ // * must be configured with the mock peer's settings. Once configured the
6
+ // * peer can be created by calling any `.thenX()` method to define the
7
+ // * peer's behaviour.
8
+ // */
9
+ // buildPeer(): MockRTCPeerBuilder;
10
+ // /**
11
+ // * Start defining a WebRTC mock rule. This method returns a builder, who
12
+ // * must be configured with the rule's settings, to define which peers
13
+ // * it matches and what it does next. Once configured, the rule can be
14
+ // * created by calling any `.thenX()` method.
15
+ // */
16
+ // forAnyConnection(): MockRTCRuleBuilder
17
+ // forConnectionsTo(peerCandidate: RTCIceCandidateInit): MockRTCRuleBuilder;
18
+ // forConnectionsTo(peerAddress: string): MockRTCRuleBuilder;
19
+ // /**
20
+ // * Get the connection parameters to make a direct connection to the MockRTC
21
+ // * server, rather than connecting to a specific mock peer. When connecting
22
+ // * like this, the connection will be matched against defined rules to decide
23
+ // * how it should be handled.
24
+ // *
25
+ // * In some cases (to match real destination addresses and/or proxy traffic)
26
+ // * the server will need metadata from the client. To provide this, the client
27
+ // * should create a "tech.httptoolkit.webrtc.control" data channel and post
28
+ // * the metadata before creating any other channels or media tracks.
29
+ // */
30
+ // getDirectConnectionParameters(offer: RTCSessionDescriptionInit): Promise<MockRTCConnectionParams>;
31
+ // }
32
+ // export interface MockRTCConnectionParams {
33
+ // iceCandidate: RTCIceCandidateInit;
34
+ // sessionDescription: RTCSessionDescriptionInit;
35
+ // }
36
+ // /**
37
+ // * The builder logic for composing RTC handling behaviour for both mock peers and rules,
38
+ // * by internally queuing defined actions until a `.thenX()` method is called to compile
39
+ // * the actions into either a peer or a rule (handled by an abstract method).
40
+ // */
41
+ // export abstract class MockRTCHandlingBuilder<R> {
42
+ // abstract build(): R;
43
+ // waitForMessage(): this;
44
+ // thenReply(): R;
45
+ // }
46
+ // /**
47
+ // * Used to build mock peers, which respond to all connections in a configurable way.
48
+ // */
49
+ // export class MockRTCPeerBuilder extends MockRTCHandlingBuilder<MockRTCPeer> {
50
+ // build() {
51
+ // return new MockRTCPeer();
52
+ // }
53
+ // }
54
+ // /**
55
+ // * Used to build mock rules which match incoming connections and then respond to
56
+ // * them, in a configurable way.
57
+ // */
58
+ // export class MockRTCRuleBuilder extends MockRTCHandlingBuilder<MockRTCRule> {
59
+ // // TODO: Eventually add logic to match certain peers here, and/or completion checking
60
+ // }
61
+ // export class MockRTCPeer {
62
+ // getPeerConnectionParams(offer: RTCSessionDescriptionInit): Promise<MockRTCConnectionParams> {
63
+ // }
64
+ // }
65
+ //# sourceMappingURL=mockrtc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockrtc.js","sourceRoot":"","sources":["../../src/mockrtc.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAE7B,UAAU;AACV,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,2BAA2B;AAC3B,UAAU;AACV,uCAAuC;AAEvC,UAAU;AACV,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,mDAAmD;AACnD,UAAU;AACV,6CAA6C;AAE7C,gFAAgF;AAChF,iEAAiE;AAEjE,UAAU;AACV,kFAAkF;AAClF,iFAAiF;AACjF,mFAAmF;AACnF,mCAAmC;AACnC,SAAS;AACT,kFAAkF;AAClF,oFAAoF;AACpF,iFAAiF;AACjF,0EAA0E;AAC1E,UAAU;AACV,yGAAyG;AAEzG,IAAI;AAEJ,6CAA6C;AAC7C,yCAAyC;AACzC,qDAAqD;AACrD,IAAI;AAEJ,MAAM;AACN,2FAA2F;AAC3F,0FAA0F;AAC1F,+EAA+E;AAC/E,MAAM;AACN,oDAAoD;AAEpD,2BAA2B;AAE3B,8BAA8B;AAC9B,sBAAsB;AAEtB,IAAI;AAEJ,MAAM;AACN,uFAAuF;AACvF,MAAM;AACN,gFAAgF;AAEhF,gBAAgB;AAChB,oCAAoC;AACpC,QAAQ;AAER,IAAI;AAEJ,MAAM;AACN,mFAAmF;AACnF,kCAAkC;AAClC,MAAM;AACN,gFAAgF;AAEhF,4FAA4F;AAE5F,IAAI;AAEJ,6BAA6B;AAE7B,oGAAoG;AACpG,QAAQ;AAER,IAAI"}
@@ -0,0 +1,8 @@
1
+ export declare const MOCKRTC_CONTROL_CHANNEL = "mockrtc.control-channel";
2
+ export declare type MockRTCControlMessage = {
3
+ type: 'error';
4
+ error: string;
5
+ } | {
6
+ type: 'attach-external';
7
+ id: string;
8
+ };
@@ -0,0 +1,11 @@
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.MOCKRTC_CONTROL_CHANNEL = void 0;
8
+ // The WebRTC control channel name & protocol used when communicating metadata to about client
9
+ // configuration, e.g. the external connection to bridge to.
10
+ exports.MOCKRTC_CONTROL_CHANNEL = "mockrtc.control-channel";
11
+ //# sourceMappingURL=control-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control-channel.js","sourceRoot":"","sources":["../../src/webrtc/control-channel.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,8FAA8F;AAC9F,4DAA4D;AAC/C,QAAA,uBAAuB,GAAG,yBAAyB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /// <reference types="node" />
2
+ import * as stream from 'stream';
3
+ import * as NodeDataChannel from 'node-datachannel';
4
+ /**
5
+ * Turns a node-datachannel DataChannel into a real Node.js stream, complete with
6
+ * buffering, backpressure (up to a point - if the buffer fills up, messages are dropped),
7
+ * and support for piping data elsewhere.
8
+ *
9
+ * Read & written data may be either UTF-8 strings or Buffers - this difference exists at
10
+ * the protocol level, and is preserved here throughout.
11
+ */
12
+ export declare class DataChannelStream extends stream.Duplex {
13
+ private rawChannel;
14
+ constructor(rawChannel: NodeDataChannel.DataChannel, streamOptions?: {
15
+ readableHighWaterMark?: number | undefined;
16
+ writableHighWaterMark?: number | undefined;
17
+ allowHalfOpen?: boolean;
18
+ });
19
+ private _readActive;
20
+ _read(): void;
21
+ _write(chunk: string | Buffer | unknown, encoding: string, callback: (error: Error | null) => void): void;
22
+ _final(callback: (error: Error | null) => void): void;
23
+ _destroy(maybeErr: Error | null, callback: (error: Error | null) => void): void;
24
+ get label(): string;
25
+ }