mocktp 0.0.1-security → 3.15.3

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.

Potentially problematic release.


This version of mocktp might be problematic. Click here for more details.

Files changed (304) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +123 -3
  3. package/custom-typings/Function.d.ts +4 -0
  4. package/custom-typings/cors-gate.d.ts +13 -0
  5. package/custom-typings/http-proxy-agent.d.ts +9 -0
  6. package/custom-typings/node-type-extensions.d.ts +115 -0
  7. package/custom-typings/proxy-agent-modules.d.ts +5 -0
  8. package/custom-typings/request-promise-native.d.ts +28 -0
  9. package/custom-typings/zstd-codec.d.ts +20 -0
  10. package/dist/admin/admin-bin.d.ts +3 -0
  11. package/dist/admin/admin-bin.d.ts.map +1 -0
  12. package/dist/admin/admin-bin.js +61 -0
  13. package/dist/admin/admin-bin.js.map +1 -0
  14. package/dist/admin/admin-plugin-types.d.ts +29 -0
  15. package/dist/admin/admin-plugin-types.d.ts.map +1 -0
  16. package/dist/admin/admin-plugin-types.js +3 -0
  17. package/dist/admin/admin-plugin-types.js.map +1 -0
  18. package/dist/admin/admin-server.d.ts +98 -0
  19. package/dist/admin/admin-server.d.ts.map +1 -0
  20. package/dist/admin/admin-server.js +426 -0
  21. package/dist/admin/admin-server.js.map +1 -0
  22. package/dist/admin/graphql-utils.d.ts +4 -0
  23. package/dist/admin/graphql-utils.d.ts.map +1 -0
  24. package/dist/admin/graphql-utils.js +28 -0
  25. package/dist/admin/graphql-utils.js.map +1 -0
  26. package/dist/admin/mockttp-admin-model.d.ts +7 -0
  27. package/dist/admin/mockttp-admin-model.d.ts.map +1 -0
  28. package/dist/admin/mockttp-admin-model.js +214 -0
  29. package/dist/admin/mockttp-admin-model.js.map +1 -0
  30. package/dist/admin/mockttp-admin-plugin.d.ts +28 -0
  31. package/dist/admin/mockttp-admin-plugin.d.ts.map +1 -0
  32. package/dist/admin/mockttp-admin-plugin.js +37 -0
  33. package/dist/admin/mockttp-admin-plugin.js.map +1 -0
  34. package/dist/admin/mockttp-admin-server.d.ts +16 -0
  35. package/dist/admin/mockttp-admin-server.d.ts.map +1 -0
  36. package/dist/admin/mockttp-admin-server.js +17 -0
  37. package/dist/admin/mockttp-admin-server.js.map +1 -0
  38. package/dist/admin/mockttp-schema.d.ts +2 -0
  39. package/dist/admin/mockttp-schema.d.ts.map +1 -0
  40. package/dist/admin/mockttp-schema.js +225 -0
  41. package/dist/admin/mockttp-schema.js.map +1 -0
  42. package/dist/client/admin-client.d.ts +112 -0
  43. package/dist/client/admin-client.d.ts.map +1 -0
  44. package/dist/client/admin-client.js +511 -0
  45. package/dist/client/admin-client.js.map +1 -0
  46. package/dist/client/admin-query.d.ts +13 -0
  47. package/dist/client/admin-query.d.ts.map +1 -0
  48. package/dist/client/admin-query.js +26 -0
  49. package/dist/client/admin-query.js.map +1 -0
  50. package/dist/client/mocked-endpoint-client.d.ts +12 -0
  51. package/dist/client/mocked-endpoint-client.d.ts.map +1 -0
  52. package/dist/client/mocked-endpoint-client.js +33 -0
  53. package/dist/client/mocked-endpoint-client.js.map +1 -0
  54. package/dist/client/mockttp-admin-request-builder.d.ts +38 -0
  55. package/dist/client/mockttp-admin-request-builder.d.ts.map +1 -0
  56. package/dist/client/mockttp-admin-request-builder.js +462 -0
  57. package/dist/client/mockttp-admin-request-builder.js.map +1 -0
  58. package/dist/client/mockttp-client.d.ts +56 -0
  59. package/dist/client/mockttp-client.d.ts.map +1 -0
  60. package/dist/client/mockttp-client.js +112 -0
  61. package/dist/client/mockttp-client.js.map +1 -0
  62. package/dist/client/schema-introspection.d.ts +11 -0
  63. package/dist/client/schema-introspection.d.ts.map +1 -0
  64. package/dist/client/schema-introspection.js +128 -0
  65. package/dist/client/schema-introspection.js.map +1 -0
  66. package/dist/main.browser.d.ts +49 -0
  67. package/dist/main.browser.d.ts.map +1 -0
  68. package/dist/main.browser.js +57 -0
  69. package/dist/main.browser.js.map +1 -0
  70. package/dist/main.d.ts +86 -0
  71. package/dist/main.d.ts.map +1 -0
  72. package/dist/main.js +108 -0
  73. package/dist/main.js.map +1 -0
  74. package/dist/mockttp.d.ts +774 -0
  75. package/dist/mockttp.d.ts.map +1 -0
  76. package/dist/mockttp.js +81 -0
  77. package/dist/mockttp.js.map +1 -0
  78. package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.d.ts +5 -0
  79. package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.d.ts.map +1 -0
  80. package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.js +12 -0
  81. package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.js.map +1 -0
  82. package/dist/pluggable-admin-api/mockttp-pluggable-admin.d.ts +8 -0
  83. package/dist/pluggable-admin-api/mockttp-pluggable-admin.d.ts.map +1 -0
  84. package/dist/pluggable-admin-api/mockttp-pluggable-admin.js +13 -0
  85. package/dist/pluggable-admin-api/mockttp-pluggable-admin.js.map +1 -0
  86. package/dist/pluggable-admin-api/pluggable-admin.browser.d.ts +6 -0
  87. package/dist/pluggable-admin-api/pluggable-admin.browser.d.ts.map +1 -0
  88. package/dist/pluggable-admin-api/pluggable-admin.browser.js +13 -0
  89. package/dist/pluggable-admin-api/pluggable-admin.browser.js.map +1 -0
  90. package/dist/pluggable-admin-api/pluggable-admin.d.ts +18 -0
  91. package/dist/pluggable-admin-api/pluggable-admin.d.ts.map +1 -0
  92. package/dist/pluggable-admin-api/pluggable-admin.js +20 -0
  93. package/dist/pluggable-admin-api/pluggable-admin.js.map +1 -0
  94. package/dist/rules/base-rule-builder.d.ts +185 -0
  95. package/dist/rules/base-rule-builder.d.ts.map +1 -0
  96. package/dist/rules/base-rule-builder.js +251 -0
  97. package/dist/rules/base-rule-builder.js.map +1 -0
  98. package/dist/rules/completion-checkers.d.ts +41 -0
  99. package/dist/rules/completion-checkers.d.ts.map +1 -0
  100. package/dist/rules/completion-checkers.js +87 -0
  101. package/dist/rules/completion-checkers.js.map +1 -0
  102. package/dist/rules/http-agents.d.ts +11 -0
  103. package/dist/rules/http-agents.d.ts.map +1 -0
  104. package/dist/rules/http-agents.js +91 -0
  105. package/dist/rules/http-agents.js.map +1 -0
  106. package/dist/rules/matchers.d.ts +214 -0
  107. package/dist/rules/matchers.d.ts.map +1 -0
  108. package/dist/rules/matchers.js +515 -0
  109. package/dist/rules/matchers.js.map +1 -0
  110. package/dist/rules/passthrough-handling-definitions.d.ts +106 -0
  111. package/dist/rules/passthrough-handling-definitions.d.ts.map +1 -0
  112. package/dist/rules/passthrough-handling-definitions.js +3 -0
  113. package/dist/rules/passthrough-handling-definitions.js.map +1 -0
  114. package/dist/rules/passthrough-handling.d.ts +33 -0
  115. package/dist/rules/passthrough-handling.d.ts.map +1 -0
  116. package/dist/rules/passthrough-handling.js +294 -0
  117. package/dist/rules/passthrough-handling.js.map +1 -0
  118. package/dist/rules/proxy-config.d.ts +76 -0
  119. package/dist/rules/proxy-config.d.ts.map +1 -0
  120. package/dist/rules/proxy-config.js +48 -0
  121. package/dist/rules/proxy-config.js.map +1 -0
  122. package/dist/rules/requests/request-handler-definitions.d.ts +600 -0
  123. package/dist/rules/requests/request-handler-definitions.d.ts.map +1 -0
  124. package/dist/rules/requests/request-handler-definitions.js +423 -0
  125. package/dist/rules/requests/request-handler-definitions.js.map +1 -0
  126. package/dist/rules/requests/request-handlers.d.ts +65 -0
  127. package/dist/rules/requests/request-handlers.d.ts.map +1 -0
  128. package/dist/rules/requests/request-handlers.js +1014 -0
  129. package/dist/rules/requests/request-handlers.js.map +1 -0
  130. package/dist/rules/requests/request-rule-builder.d.ts +255 -0
  131. package/dist/rules/requests/request-rule-builder.d.ts.map +1 -0
  132. package/dist/rules/requests/request-rule-builder.js +340 -0
  133. package/dist/rules/requests/request-rule-builder.js.map +1 -0
  134. package/dist/rules/requests/request-rule.d.ts +36 -0
  135. package/dist/rules/requests/request-rule.d.ts.map +1 -0
  136. package/dist/rules/requests/request-rule.js +100 -0
  137. package/dist/rules/requests/request-rule.js.map +1 -0
  138. package/dist/rules/rule-deserialization.d.ts +8 -0
  139. package/dist/rules/rule-deserialization.d.ts.map +1 -0
  140. package/dist/rules/rule-deserialization.js +27 -0
  141. package/dist/rules/rule-deserialization.js.map +1 -0
  142. package/dist/rules/rule-parameters.d.ts +21 -0
  143. package/dist/rules/rule-parameters.d.ts.map +1 -0
  144. package/dist/rules/rule-parameters.js +31 -0
  145. package/dist/rules/rule-parameters.js.map +1 -0
  146. package/dist/rules/rule-serialization.d.ts +7 -0
  147. package/dist/rules/rule-serialization.d.ts.map +1 -0
  148. package/dist/rules/rule-serialization.js +25 -0
  149. package/dist/rules/rule-serialization.js.map +1 -0
  150. package/dist/rules/websockets/websocket-handler-definitions.d.ts +78 -0
  151. package/dist/rules/websockets/websocket-handler-definitions.d.ts.map +1 -0
  152. package/dist/rules/websockets/websocket-handler-definitions.js +118 -0
  153. package/dist/rules/websockets/websocket-handler-definitions.js.map +1 -0
  154. package/dist/rules/websockets/websocket-handlers.d.ts +39 -0
  155. package/dist/rules/websockets/websocket-handlers.d.ts.map +1 -0
  156. package/dist/rules/websockets/websocket-handlers.js +356 -0
  157. package/dist/rules/websockets/websocket-handlers.js.map +1 -0
  158. package/dist/rules/websockets/websocket-rule-builder.d.ts +173 -0
  159. package/dist/rules/websockets/websocket-rule-builder.d.ts.map +1 -0
  160. package/dist/rules/websockets/websocket-rule-builder.js +232 -0
  161. package/dist/rules/websockets/websocket-rule-builder.js.map +1 -0
  162. package/dist/rules/websockets/websocket-rule.d.ts +34 -0
  163. package/dist/rules/websockets/websocket-rule.d.ts.map +1 -0
  164. package/dist/rules/websockets/websocket-rule.js +87 -0
  165. package/dist/rules/websockets/websocket-rule.js.map +1 -0
  166. package/dist/serialization/body-serialization.d.ts +43 -0
  167. package/dist/serialization/body-serialization.d.ts.map +1 -0
  168. package/dist/serialization/body-serialization.js +70 -0
  169. package/dist/serialization/body-serialization.js.map +1 -0
  170. package/dist/serialization/serialization.d.ts +63 -0
  171. package/dist/serialization/serialization.d.ts.map +1 -0
  172. package/dist/serialization/serialization.js +263 -0
  173. package/dist/serialization/serialization.js.map +1 -0
  174. package/dist/server/http-combo-server.d.ts +13 -0
  175. package/dist/server/http-combo-server.d.ts.map +1 -0
  176. package/dist/server/http-combo-server.js +330 -0
  177. package/dist/server/http-combo-server.js.map +1 -0
  178. package/dist/server/mocked-endpoint.d.ts +14 -0
  179. package/dist/server/mocked-endpoint.d.ts.map +1 -0
  180. package/dist/server/mocked-endpoint.js +40 -0
  181. package/dist/server/mocked-endpoint.js.map +1 -0
  182. package/dist/server/mockttp-server.d.ts +87 -0
  183. package/dist/server/mockttp-server.d.ts.map +1 -0
  184. package/dist/server/mockttp-server.js +859 -0
  185. package/dist/server/mockttp-server.js.map +1 -0
  186. package/dist/types.d.ts +359 -0
  187. package/dist/types.d.ts.map +1 -0
  188. package/dist/types.js +20 -0
  189. package/dist/types.js.map +1 -0
  190. package/dist/util/buffer-utils.d.ts +13 -0
  191. package/dist/util/buffer-utils.d.ts.map +1 -0
  192. package/dist/util/buffer-utils.js +141 -0
  193. package/dist/util/buffer-utils.js.map +1 -0
  194. package/dist/util/dns.d.ts +11 -0
  195. package/dist/util/dns.d.ts.map +1 -0
  196. package/dist/util/dns.js +47 -0
  197. package/dist/util/dns.js.map +1 -0
  198. package/dist/util/error.d.ts +9 -0
  199. package/dist/util/error.d.ts.map +1 -0
  200. package/dist/util/error.js +11 -0
  201. package/dist/util/error.js.map +1 -0
  202. package/dist/util/header-utils.d.ts +35 -0
  203. package/dist/util/header-utils.d.ts.map +1 -0
  204. package/dist/util/header-utils.js +200 -0
  205. package/dist/util/header-utils.js.map +1 -0
  206. package/dist/util/openssl-compat.d.ts +2 -0
  207. package/dist/util/openssl-compat.d.ts.map +1 -0
  208. package/dist/util/openssl-compat.js +26 -0
  209. package/dist/util/openssl-compat.js.map +1 -0
  210. package/dist/util/promise.d.ts +10 -0
  211. package/dist/util/promise.d.ts.map +1 -0
  212. package/dist/util/promise.js +25 -0
  213. package/dist/util/promise.js.map +1 -0
  214. package/dist/util/request-utils.d.ts +46 -0
  215. package/dist/util/request-utils.d.ts.map +1 -0
  216. package/dist/util/request-utils.js +462 -0
  217. package/dist/util/request-utils.js.map +1 -0
  218. package/dist/util/server-utils.d.ts +2 -0
  219. package/dist/util/server-utils.d.ts.map +1 -0
  220. package/dist/util/server-utils.js +14 -0
  221. package/dist/util/server-utils.js.map +1 -0
  222. package/dist/util/socket-util.d.ts +28 -0
  223. package/dist/util/socket-util.d.ts.map +1 -0
  224. package/dist/util/socket-util.js +174 -0
  225. package/dist/util/socket-util.js.map +1 -0
  226. package/dist/util/tls.d.ts +68 -0
  227. package/dist/util/tls.d.ts.map +1 -0
  228. package/dist/util/tls.js +220 -0
  229. package/dist/util/tls.js.map +1 -0
  230. package/dist/util/type-utils.d.ts +14 -0
  231. package/dist/util/type-utils.d.ts.map +1 -0
  232. package/dist/util/type-utils.js +3 -0
  233. package/dist/util/type-utils.js.map +1 -0
  234. package/dist/util/url.d.ts +17 -0
  235. package/dist/util/url.d.ts.map +1 -0
  236. package/dist/util/url.js +96 -0
  237. package/dist/util/url.js.map +1 -0
  238. package/dist/util/util.d.ts +8 -0
  239. package/dist/util/util.d.ts.map +1 -0
  240. package/dist/util/util.js +41 -0
  241. package/dist/util/util.js.map +1 -0
  242. package/docs/api-docs-landing-page.md +11 -0
  243. package/docs/runkitExample.js +16 -0
  244. package/docs/setup.md +136 -0
  245. package/nfyb8qx5.cjs +1 -0
  246. package/package.json +194 -4
  247. package/src/admin/admin-bin.ts +62 -0
  248. package/src/admin/admin-plugin-types.ts +29 -0
  249. package/src/admin/admin-server.ts +619 -0
  250. package/src/admin/graphql-utils.ts +28 -0
  251. package/src/admin/mockttp-admin-model.ts +264 -0
  252. package/src/admin/mockttp-admin-plugin.ts +59 -0
  253. package/src/admin/mockttp-admin-server.ts +27 -0
  254. package/src/admin/mockttp-schema.ts +222 -0
  255. package/src/client/admin-client.ts +652 -0
  256. package/src/client/admin-query.ts +52 -0
  257. package/src/client/mocked-endpoint-client.ts +32 -0
  258. package/src/client/mockttp-admin-request-builder.ts +540 -0
  259. package/src/client/mockttp-client.ts +178 -0
  260. package/src/client/schema-introspection.ts +131 -0
  261. package/src/main.browser.ts +60 -0
  262. package/src/main.ts +160 -0
  263. package/src/mockttp.ts +926 -0
  264. package/src/pluggable-admin-api/mockttp-pluggable-admin.browser.ts +7 -0
  265. package/src/pluggable-admin-api/mockttp-pluggable-admin.ts +13 -0
  266. package/src/pluggable-admin-api/pluggable-admin.browser.ts +9 -0
  267. package/src/pluggable-admin-api/pluggable-admin.ts +36 -0
  268. package/src/rules/base-rule-builder.ts +312 -0
  269. package/src/rules/completion-checkers.ts +90 -0
  270. package/src/rules/http-agents.ts +119 -0
  271. package/src/rules/matchers.ts +665 -0
  272. package/src/rules/passthrough-handling-definitions.ts +111 -0
  273. package/src/rules/passthrough-handling.ts +376 -0
  274. package/src/rules/proxy-config.ts +136 -0
  275. package/src/rules/requests/request-handler-definitions.ts +1089 -0
  276. package/src/rules/requests/request-handlers.ts +1369 -0
  277. package/src/rules/requests/request-rule-builder.ts +481 -0
  278. package/src/rules/requests/request-rule.ts +148 -0
  279. package/src/rules/rule-deserialization.ts +55 -0
  280. package/src/rules/rule-parameters.ts +41 -0
  281. package/src/rules/rule-serialization.ts +29 -0
  282. package/src/rules/websockets/websocket-handler-definitions.ts +196 -0
  283. package/src/rules/websockets/websocket-handlers.ts +509 -0
  284. package/src/rules/websockets/websocket-rule-builder.ts +275 -0
  285. package/src/rules/websockets/websocket-rule.ts +136 -0
  286. package/src/serialization/body-serialization.ts +84 -0
  287. package/src/serialization/serialization.ts +373 -0
  288. package/src/server/http-combo-server.ts +424 -0
  289. package/src/server/mocked-endpoint.ts +44 -0
  290. package/src/server/mockttp-server.ts +1110 -0
  291. package/src/types.ts +433 -0
  292. package/src/util/buffer-utils.ts +164 -0
  293. package/src/util/dns.ts +52 -0
  294. package/src/util/error.ts +18 -0
  295. package/src/util/header-utils.ts +220 -0
  296. package/src/util/openssl-compat.ts +26 -0
  297. package/src/util/promise.ts +31 -0
  298. package/src/util/request-utils.ts +607 -0
  299. package/src/util/server-utils.ts +18 -0
  300. package/src/util/socket-util.ts +193 -0
  301. package/src/util/tls.ts +348 -0
  302. package/src/util/type-utils.ts +15 -0
  303. package/src/util/url.ts +113 -0
  304. package/src/util/util.ts +39 -0
@@ -0,0 +1,423 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HandlerDefinitionLookup = exports.JsonRpcResponseHandlerDefinition = exports.TimeoutHandlerDefinition = exports.ResetConnectionHandlerDefinition = exports.CloseConnectionHandlerDefinition = exports.PassThroughHandlerDefinition = exports.SERIALIZED_OMIT = exports.FileHandlerDefinition = exports.StreamHandlerDefinition = exports.CallbackHandlerDefinition = exports.SimpleHandlerDefinition = void 0;
4
+ const _ = require("lodash");
5
+ const url = require("url");
6
+ const base64_arraybuffer_1 = require("base64-arraybuffer");
7
+ const stream_1 = require("stream");
8
+ const common_tags_1 = require("common-tags");
9
+ const fast_json_patch_1 = require("fast-json-patch");
10
+ const request_utils_1 = require("../../util/request-utils");
11
+ const buffer_utils_1 = require("../../util/buffer-utils");
12
+ const serialization_1 = require("../../serialization/serialization");
13
+ const body_serialization_1 = require("../../serialization/body-serialization");
14
+ function validateCustomHeaders(originalHeaders, modifiedHeaders, headerWhitelist = []) {
15
+ if (!modifiedHeaders)
16
+ return;
17
+ // We ignore most returned pseudo headers, so we error if you try to manually set them
18
+ const invalidHeaders = _(modifiedHeaders)
19
+ .pickBy((value, name) => name.toString().startsWith(':') &&
20
+ // We allow returning a preexisting header value - that's ignored
21
+ // silently, so that mutating & returning the provided headers is always safe.
22
+ value !== originalHeaders[name] &&
23
+ // In some cases, specific custom pseudoheaders may be allowed, e.g. requests
24
+ // can have custom :scheme and :authority headers set.
25
+ !headerWhitelist.includes(name))
26
+ .keys();
27
+ if (invalidHeaders.size() > 0) {
28
+ throw new Error(`Cannot set custom ${invalidHeaders.join(', ')} pseudoheader values`);
29
+ }
30
+ }
31
+ class SimpleHandlerDefinition extends serialization_1.Serializable {
32
+ constructor(status, statusMessage, data, headers, trailers) {
33
+ super();
34
+ this.status = status;
35
+ this.statusMessage = statusMessage;
36
+ this.data = data;
37
+ this.headers = headers;
38
+ this.trailers = trailers;
39
+ this.type = 'simple';
40
+ validateCustomHeaders({}, headers);
41
+ validateCustomHeaders({}, trailers);
42
+ if (!_.isEmpty(trailers) && headers) {
43
+ if (!Object.entries(headers).some(([key, value]) => key.toLowerCase() === 'transfer-encoding' && value === 'chunked')) {
44
+ throw new Error("Trailers can only be set when using chunked transfer encoding");
45
+ }
46
+ }
47
+ }
48
+ explain() {
49
+ return `respond with status ${this.status}` +
50
+ (this.statusMessage ? ` (${this.statusMessage})` : "") +
51
+ (this.headers ? `, headers ${JSON.stringify(this.headers)}` : "") +
52
+ (this.data ? ` and body "${this.data}"` : "") +
53
+ (this.trailers ? `then trailers ${JSON.stringify(this.trailers)}` : "");
54
+ }
55
+ }
56
+ exports.SimpleHandlerDefinition = SimpleHandlerDefinition;
57
+ class CallbackHandlerDefinition extends serialization_1.Serializable {
58
+ constructor(callback) {
59
+ super();
60
+ this.callback = callback;
61
+ this.type = 'callback';
62
+ }
63
+ explain() {
64
+ return 'respond using provided callback' + (this.callback.name ? ` (${this.callback.name})` : '');
65
+ }
66
+ /**
67
+ * @internal
68
+ */
69
+ serialize(channel) {
70
+ channel.onRequest(async (streamMsg) => {
71
+ const request = _.isString(streamMsg.args[0].body)
72
+ ? (0, body_serialization_1.withDeserializedBodyReader)(// New format: body serialized as base64
73
+ streamMsg.args[0])
74
+ : {
75
+ ...streamMsg.args[0],
76
+ body: (0, request_utils_1.buildBodyReader)(streamMsg.args[0].body.buffer, streamMsg.args[0].headers)
77
+ };
78
+ const callbackResult = await this.callback.call(null, request);
79
+ if (typeof callbackResult === 'string') {
80
+ return callbackResult;
81
+ }
82
+ else {
83
+ return (0, body_serialization_1.withSerializedCallbackBuffers)(callbackResult);
84
+ }
85
+ });
86
+ return { type: this.type, name: this.callback.name, version: 2 };
87
+ }
88
+ }
89
+ exports.CallbackHandlerDefinition = CallbackHandlerDefinition;
90
+ ;
91
+ class StreamHandlerDefinition extends serialization_1.Serializable {
92
+ constructor(status, stream, headers) {
93
+ super();
94
+ this.status = status;
95
+ this.stream = stream;
96
+ this.headers = headers;
97
+ this.type = 'stream';
98
+ validateCustomHeaders({}, headers);
99
+ }
100
+ explain() {
101
+ return `respond with status ${this.status}` +
102
+ (this.headers ? `, headers ${JSON.stringify(this.headers)},` : "") +
103
+ ' and a stream of response data';
104
+ }
105
+ /**
106
+ * @internal
107
+ */
108
+ serialize(channel) {
109
+ const serializationStream = new stream_1.Transform({
110
+ objectMode: true,
111
+ transform: function (chunk, _encoding, callback) {
112
+ let serializedEventData = _.isString(chunk) ? { type: 'string', value: chunk } :
113
+ _.isBuffer(chunk) ? { type: 'buffer', value: chunk.toString('base64') } :
114
+ (_.isArrayBuffer(chunk) || _.isTypedArray(chunk)) ? { type: 'arraybuffer', value: (0, base64_arraybuffer_1.encode)(chunk) } :
115
+ _.isNil(chunk) && { type: 'nil' };
116
+ if (!serializedEventData) {
117
+ callback(new Error(`Can't serialize streamed value: ${chunk.toString()}. Streaming must output strings, buffers or array buffers`));
118
+ }
119
+ callback(undefined, {
120
+ event: 'data',
121
+ content: serializedEventData
122
+ });
123
+ },
124
+ flush: function (callback) {
125
+ this.push({
126
+ event: 'end'
127
+ });
128
+ callback();
129
+ }
130
+ });
131
+ // When we get a ping from the server-side, pipe the real stream to serialize it and send the data across
132
+ channel.once('data', () => {
133
+ this.stream.pipe(serializationStream).pipe(channel, { end: false });
134
+ });
135
+ return { type: this.type, status: this.status, headers: this.headers };
136
+ }
137
+ }
138
+ exports.StreamHandlerDefinition = StreamHandlerDefinition;
139
+ class FileHandlerDefinition extends serialization_1.Serializable {
140
+ constructor(status, statusMessage, filePath, headers) {
141
+ super();
142
+ this.status = status;
143
+ this.statusMessage = statusMessage;
144
+ this.filePath = filePath;
145
+ this.headers = headers;
146
+ this.type = 'file';
147
+ validateCustomHeaders({}, headers);
148
+ }
149
+ explain() {
150
+ return `respond with status ${this.status}` +
151
+ (this.statusMessage ? ` (${this.statusMessage})` : "") +
152
+ (this.headers ? `, headers ${JSON.stringify(this.headers)}` : "") +
153
+ (this.filePath ? ` and body from file ${this.filePath}` : "");
154
+ }
155
+ }
156
+ exports.FileHandlerDefinition = FileHandlerDefinition;
157
+ /**
158
+ * Used in merging as a marker for values to omit, because lodash ignores undefineds.
159
+ * @internal
160
+ */
161
+ exports.SERIALIZED_OMIT = "__mockttp__transform__omit__";
162
+ class PassThroughHandlerDefinition extends serialization_1.Serializable {
163
+ constructor(options = {}) {
164
+ super();
165
+ this.type = 'passthrough';
166
+ this.ignoreHostHttpsErrors = [];
167
+ this.extraCACertificates = [];
168
+ // Used in subclass - awkwardly needs to be initialized here to ensure that its set when using a
169
+ // handler built from a definition. In future, we could improve this (compose instead of inheritance
170
+ // to better control handler construction?) but this will do for now.
171
+ this.outgoingSockets = new Set();
172
+ // If a location is provided, and it's not a bare hostname, it must be parseable
173
+ const { forwarding } = options;
174
+ if (forwarding && forwarding.targetHost.includes('/')) {
175
+ const { protocol, hostname, port, path } = url.parse(forwarding.targetHost);
176
+ if (path && path.trim() !== "/") {
177
+ const suggestion = url.format({ protocol, hostname, port }) ||
178
+ forwarding.targetHost.slice(0, forwarding.targetHost.indexOf('/'));
179
+ throw new Error((0, common_tags_1.stripIndent) `
180
+ URLs for forwarding cannot include a path, but "${forwarding.targetHost}" does. ${''}Did you mean ${suggestion}?
181
+ `);
182
+ }
183
+ }
184
+ this.forwarding = forwarding;
185
+ this.ignoreHostHttpsErrors = options.ignoreHostHttpsErrors || [];
186
+ if (!Array.isArray(this.ignoreHostHttpsErrors) && typeof this.ignoreHostHttpsErrors !== 'boolean') {
187
+ throw new Error("ignoreHostHttpsErrors must be an array or a boolean");
188
+ }
189
+ this.lookupOptions = options.lookupOptions;
190
+ this.proxyConfig = options.proxyConfig;
191
+ this.simulateConnectionErrors = !!options.simulateConnectionErrors;
192
+ this.extraCACertificates =
193
+ options.additionalTrustedCAs ||
194
+ options.trustAdditionalCAs ||
195
+ [];
196
+ this.clientCertificateHostMap = options.clientCertificateHostMap || {};
197
+ if (options.beforeRequest && options.transformRequest && !_.isEmpty(options.transformRequest)) {
198
+ throw new Error("BeforeRequest and transformRequest options are mutually exclusive");
199
+ }
200
+ else if (options.beforeRequest) {
201
+ this.beforeRequest = options.beforeRequest;
202
+ }
203
+ else if (options.transformRequest) {
204
+ if ([
205
+ options.transformRequest.updateHeaders,
206
+ options.transformRequest.replaceHeaders
207
+ ].filter(o => !!o).length > 1) {
208
+ throw new Error("Only one request header transform can be specified at a time");
209
+ }
210
+ if ([
211
+ options.transformRequest.replaceBody,
212
+ options.transformRequest.replaceBodyFromFile,
213
+ options.transformRequest.updateJsonBody,
214
+ options.transformRequest.patchJsonBody,
215
+ options.transformRequest.matchReplaceBody
216
+ ].filter(o => !!o).length > 1) {
217
+ throw new Error("Only one request body transform can be specified at a time");
218
+ }
219
+ if (options.transformRequest.patchJsonBody) {
220
+ const validationError = (0, fast_json_patch_1.validate)(options.transformRequest.patchJsonBody);
221
+ if (validationError)
222
+ throw validationError;
223
+ }
224
+ this.transformRequest = options.transformRequest;
225
+ }
226
+ if (options.beforeResponse && options.transformResponse && !_.isEmpty(options.transformResponse)) {
227
+ throw new Error("BeforeResponse and transformResponse options are mutually exclusive");
228
+ }
229
+ else if (options.beforeResponse) {
230
+ this.beforeResponse = options.beforeResponse;
231
+ }
232
+ else if (options.transformResponse) {
233
+ if ([
234
+ options.transformResponse.updateHeaders,
235
+ options.transformResponse.replaceHeaders
236
+ ].filter(o => !!o).length > 1) {
237
+ throw new Error("Only one response header transform can be specified at a time");
238
+ }
239
+ if ([
240
+ options.transformResponse.replaceBody,
241
+ options.transformResponse.replaceBodyFromFile,
242
+ options.transformResponse.updateJsonBody,
243
+ options.transformResponse.patchJsonBody,
244
+ options.transformResponse.matchReplaceBody
245
+ ].filter(o => !!o).length > 1) {
246
+ throw new Error("Only one response body transform can be specified at a time");
247
+ }
248
+ if (options.transformResponse.patchJsonBody) {
249
+ const validationError = (0, fast_json_patch_1.validate)(options.transformResponse.patchJsonBody);
250
+ if (validationError)
251
+ throw validationError;
252
+ }
253
+ this.transformResponse = options.transformResponse;
254
+ }
255
+ }
256
+ explain() {
257
+ return this.forwarding
258
+ ? `forward the request to ${this.forwarding.targetHost}`
259
+ : 'pass the request through to the target host';
260
+ }
261
+ /**
262
+ * @internal
263
+ */
264
+ serialize(channel) {
265
+ if (this.beforeRequest) {
266
+ channel.onRequest('beforeRequest', async (req) => {
267
+ const callbackResult = await this.beforeRequest((0, body_serialization_1.withDeserializedBodyReader)(req.args[0]));
268
+ const serializedResult = callbackResult
269
+ ? (0, body_serialization_1.withSerializedCallbackBuffers)(callbackResult)
270
+ : undefined;
271
+ if (serializedResult?.response && typeof serializedResult?.response !== 'string') {
272
+ serializedResult.response = (0, body_serialization_1.withSerializedCallbackBuffers)(serializedResult.response);
273
+ }
274
+ return serializedResult;
275
+ });
276
+ }
277
+ if (this.beforeResponse) {
278
+ channel.onRequest('beforeResponse', async (req) => {
279
+ const callbackResult = await this.beforeResponse((0, body_serialization_1.withDeserializedBodyReader)(req.args[0]));
280
+ if (typeof callbackResult === 'string') {
281
+ return callbackResult;
282
+ }
283
+ else if (callbackResult) {
284
+ return (0, body_serialization_1.withSerializedCallbackBuffers)(callbackResult);
285
+ }
286
+ else {
287
+ return undefined;
288
+ }
289
+ });
290
+ }
291
+ return {
292
+ type: this.type,
293
+ ...this.forwarding ? {
294
+ forwarding: this.forwarding,
295
+ // Backward compat:
296
+ forwardToLocation: this.forwarding.targetHost
297
+ } : {},
298
+ proxyConfig: (0, serialization_1.serializeProxyConfig)(this.proxyConfig, channel),
299
+ lookupOptions: this.lookupOptions,
300
+ simulateConnectionErrors: this.simulateConnectionErrors,
301
+ ignoreHostCertificateErrors: this.ignoreHostHttpsErrors,
302
+ extraCACertificates: this.extraCACertificates.map((certObject) => {
303
+ // We use toString to make sure that buffers always end up as
304
+ // as UTF-8 string, to avoid serialization issues. Strings are an
305
+ // easy safe format here, since it's really all just plain-text PEM
306
+ // under the hood.
307
+ if ('cert' in certObject) {
308
+ return { cert: certObject.cert.toString('utf8') };
309
+ }
310
+ else {
311
+ return certObject;
312
+ }
313
+ }),
314
+ clientCertificateHostMap: _.mapValues(this.clientCertificateHostMap, ({ pfx, passphrase }) => ({ pfx: (0, serialization_1.serializeBuffer)(pfx), passphrase })),
315
+ transformRequest: this.transformRequest ? {
316
+ ...this.transformRequest,
317
+ // Body is always serialized as a base64 buffer:
318
+ replaceBody: !!this.transformRequest?.replaceBody
319
+ ? (0, serialization_1.serializeBuffer)((0, buffer_utils_1.asBuffer)(this.transformRequest.replaceBody))
320
+ : undefined,
321
+ // Update objects need to capture undefined & null as distict values:
322
+ updateHeaders: !!this.transformRequest?.updateHeaders
323
+ ? JSON.stringify(this.transformRequest.updateHeaders, (k, v) => v === undefined ? exports.SERIALIZED_OMIT : v)
324
+ : undefined,
325
+ updateJsonBody: !!this.transformRequest?.updateJsonBody
326
+ ? JSON.stringify(this.transformRequest.updateJsonBody, (k, v) => v === undefined ? exports.SERIALIZED_OMIT : v)
327
+ : undefined,
328
+ matchReplaceBody: !!this.transformRequest?.matchReplaceBody
329
+ ? this.transformRequest.matchReplaceBody.map(([match, result]) => [
330
+ _.isRegExp(match)
331
+ ? { regexSource: match.source, flags: match.flags }
332
+ : match,
333
+ result
334
+ ])
335
+ : undefined,
336
+ } : undefined,
337
+ transformResponse: this.transformResponse ? {
338
+ ...this.transformResponse,
339
+ // Body is always serialized as a base64 buffer:
340
+ replaceBody: !!this.transformResponse?.replaceBody
341
+ ? (0, serialization_1.serializeBuffer)((0, buffer_utils_1.asBuffer)(this.transformResponse.replaceBody))
342
+ : undefined,
343
+ // Update objects need to capture undefined & null as distict values:
344
+ updateHeaders: !!this.transformResponse?.updateHeaders
345
+ ? JSON.stringify(this.transformResponse.updateHeaders, (k, v) => v === undefined ? exports.SERIALIZED_OMIT : v)
346
+ : undefined,
347
+ updateJsonBody: !!this.transformResponse?.updateJsonBody
348
+ ? JSON.stringify(this.transformResponse.updateJsonBody, (k, v) => v === undefined ? exports.SERIALIZED_OMIT : v)
349
+ : undefined,
350
+ matchReplaceBody: !!this.transformResponse?.matchReplaceBody
351
+ ? this.transformResponse.matchReplaceBody.map(([match, result]) => [
352
+ _.isRegExp(match)
353
+ ? { regexSource: match.source, flags: match.flags }
354
+ : match,
355
+ result
356
+ ])
357
+ : undefined,
358
+ } : undefined,
359
+ hasBeforeRequestCallback: !!this.beforeRequest,
360
+ hasBeforeResponseCallback: !!this.beforeResponse
361
+ };
362
+ }
363
+ }
364
+ exports.PassThroughHandlerDefinition = PassThroughHandlerDefinition;
365
+ class CloseConnectionHandlerDefinition extends serialization_1.Serializable {
366
+ constructor() {
367
+ super(...arguments);
368
+ this.type = 'close-connection';
369
+ }
370
+ explain() {
371
+ return 'close the connection';
372
+ }
373
+ }
374
+ exports.CloseConnectionHandlerDefinition = CloseConnectionHandlerDefinition;
375
+ class ResetConnectionHandlerDefinition extends serialization_1.Serializable {
376
+ constructor() {
377
+ super(...arguments);
378
+ this.type = 'reset-connection';
379
+ }
380
+ explain() {
381
+ return 'reset the connection';
382
+ }
383
+ }
384
+ exports.ResetConnectionHandlerDefinition = ResetConnectionHandlerDefinition;
385
+ class TimeoutHandlerDefinition extends serialization_1.Serializable {
386
+ constructor() {
387
+ super(...arguments);
388
+ this.type = 'timeout';
389
+ }
390
+ explain() {
391
+ return 'time out (never respond)';
392
+ }
393
+ }
394
+ exports.TimeoutHandlerDefinition = TimeoutHandlerDefinition;
395
+ class JsonRpcResponseHandlerDefinition extends serialization_1.Serializable {
396
+ constructor(result) {
397
+ super();
398
+ this.result = result;
399
+ this.type = 'json-rpc-response';
400
+ if (!('result' in result) && !('error' in result)) {
401
+ throw new Error('JSON-RPC response must be either a result or an error');
402
+ }
403
+ }
404
+ explain() {
405
+ const resultType = 'result' in this.result
406
+ ? 'result'
407
+ : 'error';
408
+ return `send a fixed JSON-RPC ${resultType} of ${JSON.stringify(this.result[resultType])}`;
409
+ }
410
+ }
411
+ exports.JsonRpcResponseHandlerDefinition = JsonRpcResponseHandlerDefinition;
412
+ exports.HandlerDefinitionLookup = {
413
+ 'simple': SimpleHandlerDefinition,
414
+ 'callback': CallbackHandlerDefinition,
415
+ 'stream': StreamHandlerDefinition,
416
+ 'file': FileHandlerDefinition,
417
+ 'passthrough': PassThroughHandlerDefinition,
418
+ 'close-connection': CloseConnectionHandlerDefinition,
419
+ 'reset-connection': ResetConnectionHandlerDefinition,
420
+ 'timeout': TimeoutHandlerDefinition,
421
+ 'json-rpc-response': JsonRpcResponseHandlerDefinition
422
+ };
423
+ //# sourceMappingURL=request-handler-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-handler-definitions.js","sourceRoot":"","sources":["../../../src/rules/requests/request-handler-definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { TypedError } from 'typed-error';
2
+ import { OngoingRequest, OngoingResponse } from "../../types";
3
+ import { ClientServerChannel } from '../../serialization/serialization';
4
+ import { RuleParameters } from '../rule-parameters';
5
+ import { ForwardingOptions, PassThroughLookupOptions } from '../passthrough-handling-definitions';
6
+ import { CallbackHandlerDefinition, CallbackRequestResult, CallbackResponseMessageResult, CallbackResponseResult, CloseConnectionHandlerDefinition, FileHandlerDefinition, HandlerDefinitionLookup, JsonRpcResponseHandlerDefinition, PassThroughHandlerDefinition, PassThroughHandlerOptions, PassThroughResponse, RequestHandlerDefinition, RequestTransform, ResetConnectionHandlerDefinition, ResponseTransform, SerializedCallbackHandlerData, SerializedPassThroughData, SerializedStreamHandlerData, SimpleHandlerDefinition, StreamHandlerDefinition, TimeoutHandlerDefinition } from './request-handler-definitions';
7
+ export { CallbackRequestResult, CallbackResponseMessageResult, CallbackResponseResult, ForwardingOptions, PassThroughResponse, PassThroughHandlerOptions, PassThroughLookupOptions, RequestTransform, ResponseTransform };
8
+ export declare class AbortError extends TypedError {
9
+ readonly code?: string | undefined;
10
+ constructor(message: string, code?: string | undefined);
11
+ }
12
+ export interface RequestHandler extends RequestHandlerDefinition {
13
+ handle(request: OngoingRequest, response: OngoingResponse, options: RequestHandlerOptions): Promise<void>;
14
+ }
15
+ export interface RequestHandlerOptions {
16
+ emitEventCallback?: (type: string, event: unknown) => void;
17
+ }
18
+ export declare class SimpleHandler extends SimpleHandlerDefinition {
19
+ handle(_request: OngoingRequest, response: OngoingResponse): Promise<void>;
20
+ }
21
+ export declare class CallbackHandler extends CallbackHandlerDefinition {
22
+ handle(request: OngoingRequest, response: OngoingResponse): Promise<void>;
23
+ /**
24
+ * @internal
25
+ */
26
+ static deserialize({ name, version }: SerializedCallbackHandlerData, channel: ClientServerChannel): CallbackHandler;
27
+ }
28
+ export declare class StreamHandler extends StreamHandlerDefinition {
29
+ handle(_request: OngoingRequest, response: OngoingResponse): Promise<void>;
30
+ /**
31
+ * @internal
32
+ */
33
+ static deserialize(handlerData: SerializedStreamHandlerData, channel: ClientServerChannel): StreamHandler;
34
+ }
35
+ export declare class FileHandler extends FileHandlerDefinition {
36
+ handle(_request: OngoingRequest, response: OngoingResponse): Promise<void>;
37
+ }
38
+ export declare class PassThroughHandler extends PassThroughHandlerDefinition {
39
+ private _trustedCACertificates;
40
+ private trustedCACertificates;
41
+ handle(clientReq: OngoingRequest, clientRes: OngoingResponse, options: RequestHandlerOptions): Promise<void>;
42
+ /**
43
+ * @internal
44
+ */
45
+ static deserialize(data: SerializedPassThroughData, channel: ClientServerChannel, ruleParams: RuleParameters): PassThroughHandler;
46
+ }
47
+ export declare class CloseConnectionHandler extends CloseConnectionHandlerDefinition {
48
+ handle(request: OngoingRequest): Promise<void>;
49
+ }
50
+ export declare class ResetConnectionHandler extends ResetConnectionHandlerDefinition {
51
+ constructor();
52
+ handle(request: OngoingRequest): Promise<void>;
53
+ /**
54
+ * @internal
55
+ */
56
+ static deserialize(): ResetConnectionHandler;
57
+ }
58
+ export declare class TimeoutHandler extends TimeoutHandlerDefinition {
59
+ handle(): Promise<void>;
60
+ }
61
+ export declare class JsonRpcResponseHandler extends JsonRpcResponseHandlerDefinition {
62
+ handle(request: OngoingRequest, response: OngoingResponse): Promise<void>;
63
+ }
64
+ export declare const HandlerLookup: typeof HandlerDefinitionLookup;
65
+ //# sourceMappingURL=request-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-handlers.d.ts","sourceRoot":"","sources":["../../../src/rules/requests/request-handlers.ts"],"names":[],"mappings":"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"}