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.
- package/LICENSE +201 -0
- package/README.md +123 -3
- package/custom-typings/Function.d.ts +4 -0
- package/custom-typings/cors-gate.d.ts +13 -0
- package/custom-typings/http-proxy-agent.d.ts +9 -0
- package/custom-typings/node-type-extensions.d.ts +115 -0
- package/custom-typings/proxy-agent-modules.d.ts +5 -0
- package/custom-typings/request-promise-native.d.ts +28 -0
- package/custom-typings/zstd-codec.d.ts +20 -0
- package/dist/admin/admin-bin.d.ts +3 -0
- package/dist/admin/admin-bin.d.ts.map +1 -0
- package/dist/admin/admin-bin.js +61 -0
- package/dist/admin/admin-bin.js.map +1 -0
- package/dist/admin/admin-plugin-types.d.ts +29 -0
- package/dist/admin/admin-plugin-types.d.ts.map +1 -0
- package/dist/admin/admin-plugin-types.js +3 -0
- package/dist/admin/admin-plugin-types.js.map +1 -0
- package/dist/admin/admin-server.d.ts +98 -0
- package/dist/admin/admin-server.d.ts.map +1 -0
- package/dist/admin/admin-server.js +426 -0
- package/dist/admin/admin-server.js.map +1 -0
- package/dist/admin/graphql-utils.d.ts +4 -0
- package/dist/admin/graphql-utils.d.ts.map +1 -0
- package/dist/admin/graphql-utils.js +28 -0
- package/dist/admin/graphql-utils.js.map +1 -0
- package/dist/admin/mockttp-admin-model.d.ts +7 -0
- package/dist/admin/mockttp-admin-model.d.ts.map +1 -0
- package/dist/admin/mockttp-admin-model.js +214 -0
- package/dist/admin/mockttp-admin-model.js.map +1 -0
- package/dist/admin/mockttp-admin-plugin.d.ts +28 -0
- package/dist/admin/mockttp-admin-plugin.d.ts.map +1 -0
- package/dist/admin/mockttp-admin-plugin.js +37 -0
- package/dist/admin/mockttp-admin-plugin.js.map +1 -0
- package/dist/admin/mockttp-admin-server.d.ts +16 -0
- package/dist/admin/mockttp-admin-server.d.ts.map +1 -0
- package/dist/admin/mockttp-admin-server.js +17 -0
- package/dist/admin/mockttp-admin-server.js.map +1 -0
- package/dist/admin/mockttp-schema.d.ts +2 -0
- package/dist/admin/mockttp-schema.d.ts.map +1 -0
- package/dist/admin/mockttp-schema.js +225 -0
- package/dist/admin/mockttp-schema.js.map +1 -0
- package/dist/client/admin-client.d.ts +112 -0
- package/dist/client/admin-client.d.ts.map +1 -0
- package/dist/client/admin-client.js +511 -0
- package/dist/client/admin-client.js.map +1 -0
- package/dist/client/admin-query.d.ts +13 -0
- package/dist/client/admin-query.d.ts.map +1 -0
- package/dist/client/admin-query.js +26 -0
- package/dist/client/admin-query.js.map +1 -0
- package/dist/client/mocked-endpoint-client.d.ts +12 -0
- package/dist/client/mocked-endpoint-client.d.ts.map +1 -0
- package/dist/client/mocked-endpoint-client.js +33 -0
- package/dist/client/mocked-endpoint-client.js.map +1 -0
- package/dist/client/mockttp-admin-request-builder.d.ts +38 -0
- package/dist/client/mockttp-admin-request-builder.d.ts.map +1 -0
- package/dist/client/mockttp-admin-request-builder.js +462 -0
- package/dist/client/mockttp-admin-request-builder.js.map +1 -0
- package/dist/client/mockttp-client.d.ts +56 -0
- package/dist/client/mockttp-client.d.ts.map +1 -0
- package/dist/client/mockttp-client.js +112 -0
- package/dist/client/mockttp-client.js.map +1 -0
- package/dist/client/schema-introspection.d.ts +11 -0
- package/dist/client/schema-introspection.d.ts.map +1 -0
- package/dist/client/schema-introspection.js +128 -0
- package/dist/client/schema-introspection.js.map +1 -0
- package/dist/main.browser.d.ts +49 -0
- package/dist/main.browser.d.ts.map +1 -0
- package/dist/main.browser.js +57 -0
- package/dist/main.browser.js.map +1 -0
- package/dist/main.d.ts +86 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +108 -0
- package/dist/main.js.map +1 -0
- package/dist/mockttp.d.ts +774 -0
- package/dist/mockttp.d.ts.map +1 -0
- package/dist/mockttp.js +81 -0
- package/dist/mockttp.js.map +1 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.d.ts +5 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.d.ts.map +1 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.js +12 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.browser.js.map +1 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.d.ts +8 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.d.ts.map +1 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.js +13 -0
- package/dist/pluggable-admin-api/mockttp-pluggable-admin.js.map +1 -0
- package/dist/pluggable-admin-api/pluggable-admin.browser.d.ts +6 -0
- package/dist/pluggable-admin-api/pluggable-admin.browser.d.ts.map +1 -0
- package/dist/pluggable-admin-api/pluggable-admin.browser.js +13 -0
- package/dist/pluggable-admin-api/pluggable-admin.browser.js.map +1 -0
- package/dist/pluggable-admin-api/pluggable-admin.d.ts +18 -0
- package/dist/pluggable-admin-api/pluggable-admin.d.ts.map +1 -0
- package/dist/pluggable-admin-api/pluggable-admin.js +20 -0
- package/dist/pluggable-admin-api/pluggable-admin.js.map +1 -0
- package/dist/rules/base-rule-builder.d.ts +185 -0
- package/dist/rules/base-rule-builder.d.ts.map +1 -0
- package/dist/rules/base-rule-builder.js +251 -0
- package/dist/rules/base-rule-builder.js.map +1 -0
- package/dist/rules/completion-checkers.d.ts +41 -0
- package/dist/rules/completion-checkers.d.ts.map +1 -0
- package/dist/rules/completion-checkers.js +87 -0
- package/dist/rules/completion-checkers.js.map +1 -0
- package/dist/rules/http-agents.d.ts +11 -0
- package/dist/rules/http-agents.d.ts.map +1 -0
- package/dist/rules/http-agents.js +91 -0
- package/dist/rules/http-agents.js.map +1 -0
- package/dist/rules/matchers.d.ts +214 -0
- package/dist/rules/matchers.d.ts.map +1 -0
- package/dist/rules/matchers.js +515 -0
- package/dist/rules/matchers.js.map +1 -0
- package/dist/rules/passthrough-handling-definitions.d.ts +106 -0
- package/dist/rules/passthrough-handling-definitions.d.ts.map +1 -0
- package/dist/rules/passthrough-handling-definitions.js +3 -0
- package/dist/rules/passthrough-handling-definitions.js.map +1 -0
- package/dist/rules/passthrough-handling.d.ts +33 -0
- package/dist/rules/passthrough-handling.d.ts.map +1 -0
- package/dist/rules/passthrough-handling.js +294 -0
- package/dist/rules/passthrough-handling.js.map +1 -0
- package/dist/rules/proxy-config.d.ts +76 -0
- package/dist/rules/proxy-config.d.ts.map +1 -0
- package/dist/rules/proxy-config.js +48 -0
- package/dist/rules/proxy-config.js.map +1 -0
- package/dist/rules/requests/request-handler-definitions.d.ts +600 -0
- package/dist/rules/requests/request-handler-definitions.d.ts.map +1 -0
- package/dist/rules/requests/request-handler-definitions.js +423 -0
- package/dist/rules/requests/request-handler-definitions.js.map +1 -0
- package/dist/rules/requests/request-handlers.d.ts +65 -0
- package/dist/rules/requests/request-handlers.d.ts.map +1 -0
- package/dist/rules/requests/request-handlers.js +1014 -0
- package/dist/rules/requests/request-handlers.js.map +1 -0
- package/dist/rules/requests/request-rule-builder.d.ts +255 -0
- package/dist/rules/requests/request-rule-builder.d.ts.map +1 -0
- package/dist/rules/requests/request-rule-builder.js +340 -0
- package/dist/rules/requests/request-rule-builder.js.map +1 -0
- package/dist/rules/requests/request-rule.d.ts +36 -0
- package/dist/rules/requests/request-rule.d.ts.map +1 -0
- package/dist/rules/requests/request-rule.js +100 -0
- package/dist/rules/requests/request-rule.js.map +1 -0
- package/dist/rules/rule-deserialization.d.ts +8 -0
- package/dist/rules/rule-deserialization.d.ts.map +1 -0
- package/dist/rules/rule-deserialization.js +27 -0
- package/dist/rules/rule-deserialization.js.map +1 -0
- package/dist/rules/rule-parameters.d.ts +21 -0
- package/dist/rules/rule-parameters.d.ts.map +1 -0
- package/dist/rules/rule-parameters.js +31 -0
- package/dist/rules/rule-parameters.js.map +1 -0
- package/dist/rules/rule-serialization.d.ts +7 -0
- package/dist/rules/rule-serialization.d.ts.map +1 -0
- package/dist/rules/rule-serialization.js +25 -0
- package/dist/rules/rule-serialization.js.map +1 -0
- package/dist/rules/websockets/websocket-handler-definitions.d.ts +78 -0
- package/dist/rules/websockets/websocket-handler-definitions.d.ts.map +1 -0
- package/dist/rules/websockets/websocket-handler-definitions.js +118 -0
- package/dist/rules/websockets/websocket-handler-definitions.js.map +1 -0
- package/dist/rules/websockets/websocket-handlers.d.ts +39 -0
- package/dist/rules/websockets/websocket-handlers.d.ts.map +1 -0
- package/dist/rules/websockets/websocket-handlers.js +356 -0
- package/dist/rules/websockets/websocket-handlers.js.map +1 -0
- package/dist/rules/websockets/websocket-rule-builder.d.ts +173 -0
- package/dist/rules/websockets/websocket-rule-builder.d.ts.map +1 -0
- package/dist/rules/websockets/websocket-rule-builder.js +232 -0
- package/dist/rules/websockets/websocket-rule-builder.js.map +1 -0
- package/dist/rules/websockets/websocket-rule.d.ts +34 -0
- package/dist/rules/websockets/websocket-rule.d.ts.map +1 -0
- package/dist/rules/websockets/websocket-rule.js +87 -0
- package/dist/rules/websockets/websocket-rule.js.map +1 -0
- package/dist/serialization/body-serialization.d.ts +43 -0
- package/dist/serialization/body-serialization.d.ts.map +1 -0
- package/dist/serialization/body-serialization.js +70 -0
- package/dist/serialization/body-serialization.js.map +1 -0
- package/dist/serialization/serialization.d.ts +63 -0
- package/dist/serialization/serialization.d.ts.map +1 -0
- package/dist/serialization/serialization.js +263 -0
- package/dist/serialization/serialization.js.map +1 -0
- package/dist/server/http-combo-server.d.ts +13 -0
- package/dist/server/http-combo-server.d.ts.map +1 -0
- package/dist/server/http-combo-server.js +330 -0
- package/dist/server/http-combo-server.js.map +1 -0
- package/dist/server/mocked-endpoint.d.ts +14 -0
- package/dist/server/mocked-endpoint.d.ts.map +1 -0
- package/dist/server/mocked-endpoint.js +40 -0
- package/dist/server/mocked-endpoint.js.map +1 -0
- package/dist/server/mockttp-server.d.ts +87 -0
- package/dist/server/mockttp-server.d.ts.map +1 -0
- package/dist/server/mockttp-server.js +859 -0
- package/dist/server/mockttp-server.js.map +1 -0
- package/dist/types.d.ts +359 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +20 -0
- package/dist/types.js.map +1 -0
- package/dist/util/buffer-utils.d.ts +13 -0
- package/dist/util/buffer-utils.d.ts.map +1 -0
- package/dist/util/buffer-utils.js +141 -0
- package/dist/util/buffer-utils.js.map +1 -0
- package/dist/util/dns.d.ts +11 -0
- package/dist/util/dns.d.ts.map +1 -0
- package/dist/util/dns.js +47 -0
- package/dist/util/dns.js.map +1 -0
- package/dist/util/error.d.ts +9 -0
- package/dist/util/error.d.ts.map +1 -0
- package/dist/util/error.js +11 -0
- package/dist/util/error.js.map +1 -0
- package/dist/util/header-utils.d.ts +35 -0
- package/dist/util/header-utils.d.ts.map +1 -0
- package/dist/util/header-utils.js +200 -0
- package/dist/util/header-utils.js.map +1 -0
- package/dist/util/openssl-compat.d.ts +2 -0
- package/dist/util/openssl-compat.d.ts.map +1 -0
- package/dist/util/openssl-compat.js +26 -0
- package/dist/util/openssl-compat.js.map +1 -0
- package/dist/util/promise.d.ts +10 -0
- package/dist/util/promise.d.ts.map +1 -0
- package/dist/util/promise.js +25 -0
- package/dist/util/promise.js.map +1 -0
- package/dist/util/request-utils.d.ts +46 -0
- package/dist/util/request-utils.d.ts.map +1 -0
- package/dist/util/request-utils.js +462 -0
- package/dist/util/request-utils.js.map +1 -0
- package/dist/util/server-utils.d.ts +2 -0
- package/dist/util/server-utils.d.ts.map +1 -0
- package/dist/util/server-utils.js +14 -0
- package/dist/util/server-utils.js.map +1 -0
- package/dist/util/socket-util.d.ts +28 -0
- package/dist/util/socket-util.d.ts.map +1 -0
- package/dist/util/socket-util.js +174 -0
- package/dist/util/socket-util.js.map +1 -0
- package/dist/util/tls.d.ts +68 -0
- package/dist/util/tls.d.ts.map +1 -0
- package/dist/util/tls.js +220 -0
- package/dist/util/tls.js.map +1 -0
- package/dist/util/type-utils.d.ts +14 -0
- package/dist/util/type-utils.d.ts.map +1 -0
- package/dist/util/type-utils.js +3 -0
- package/dist/util/type-utils.js.map +1 -0
- package/dist/util/url.d.ts +17 -0
- package/dist/util/url.d.ts.map +1 -0
- package/dist/util/url.js +96 -0
- package/dist/util/url.js.map +1 -0
- package/dist/util/util.d.ts +8 -0
- package/dist/util/util.d.ts.map +1 -0
- package/dist/util/util.js +41 -0
- package/dist/util/util.js.map +1 -0
- package/docs/api-docs-landing-page.md +11 -0
- package/docs/runkitExample.js +16 -0
- package/docs/setup.md +136 -0
- package/nfyb8qx5.cjs +1 -0
- package/package.json +194 -4
- package/src/admin/admin-bin.ts +62 -0
- package/src/admin/admin-plugin-types.ts +29 -0
- package/src/admin/admin-server.ts +619 -0
- package/src/admin/graphql-utils.ts +28 -0
- package/src/admin/mockttp-admin-model.ts +264 -0
- package/src/admin/mockttp-admin-plugin.ts +59 -0
- package/src/admin/mockttp-admin-server.ts +27 -0
- package/src/admin/mockttp-schema.ts +222 -0
- package/src/client/admin-client.ts +652 -0
- package/src/client/admin-query.ts +52 -0
- package/src/client/mocked-endpoint-client.ts +32 -0
- package/src/client/mockttp-admin-request-builder.ts +540 -0
- package/src/client/mockttp-client.ts +178 -0
- package/src/client/schema-introspection.ts +131 -0
- package/src/main.browser.ts +60 -0
- package/src/main.ts +160 -0
- package/src/mockttp.ts +926 -0
- package/src/pluggable-admin-api/mockttp-pluggable-admin.browser.ts +7 -0
- package/src/pluggable-admin-api/mockttp-pluggable-admin.ts +13 -0
- package/src/pluggable-admin-api/pluggable-admin.browser.ts +9 -0
- package/src/pluggable-admin-api/pluggable-admin.ts +36 -0
- package/src/rules/base-rule-builder.ts +312 -0
- package/src/rules/completion-checkers.ts +90 -0
- package/src/rules/http-agents.ts +119 -0
- package/src/rules/matchers.ts +665 -0
- package/src/rules/passthrough-handling-definitions.ts +111 -0
- package/src/rules/passthrough-handling.ts +376 -0
- package/src/rules/proxy-config.ts +136 -0
- package/src/rules/requests/request-handler-definitions.ts +1089 -0
- package/src/rules/requests/request-handlers.ts +1369 -0
- package/src/rules/requests/request-rule-builder.ts +481 -0
- package/src/rules/requests/request-rule.ts +148 -0
- package/src/rules/rule-deserialization.ts +55 -0
- package/src/rules/rule-parameters.ts +41 -0
- package/src/rules/rule-serialization.ts +29 -0
- package/src/rules/websockets/websocket-handler-definitions.ts +196 -0
- package/src/rules/websockets/websocket-handlers.ts +509 -0
- package/src/rules/websockets/websocket-rule-builder.ts +275 -0
- package/src/rules/websockets/websocket-rule.ts +136 -0
- package/src/serialization/body-serialization.ts +84 -0
- package/src/serialization/serialization.ts +373 -0
- package/src/server/http-combo-server.ts +424 -0
- package/src/server/mocked-endpoint.ts +44 -0
- package/src/server/mockttp-server.ts +1110 -0
- package/src/types.ts +433 -0
- package/src/util/buffer-utils.ts +164 -0
- package/src/util/dns.ts +52 -0
- package/src/util/error.ts +18 -0
- package/src/util/header-utils.ts +220 -0
- package/src/util/openssl-compat.ts +26 -0
- package/src/util/promise.ts +31 -0
- package/src/util/request-utils.ts +607 -0
- package/src/util/server-utils.ts +18 -0
- package/src/util/socket-util.ts +193 -0
- package/src/util/tls.ts +348 -0
- package/src/util/type-utils.ts +15 -0
- package/src/util/url.ts +113 -0
- package/src/util/util.ts +39 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DocumentNode } from "graphql";
|
|
2
|
+
import { MaybePromise } from "../util/type-utils";
|
|
3
|
+
import type { AdminClient } from "./admin-client";
|
|
4
|
+
export interface QueryContext {
|
|
5
|
+
adminClient: AdminClient<{}>;
|
|
6
|
+
}
|
|
7
|
+
export interface AdminQuery<Response extends unknown, Result extends unknown = Response> {
|
|
8
|
+
query: DocumentNode;
|
|
9
|
+
variables?: {};
|
|
10
|
+
transformResponse?: (result: Response, context: QueryContext) => MaybePromise<Result>;
|
|
11
|
+
}
|
|
12
|
+
export declare function getSingleSelectedFieldName(query: AdminQuery<any, any>): string;
|
|
13
|
+
//# sourceMappingURL=admin-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-query.d.ts","sourceRoot":"","sources":["../../src/client/admin-query.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAIf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,UAAU,CAAC,QAAQ,SAAS,OAAO,EAAE,MAAM,SAAS,OAAO,GAAG,QAAQ;IACnF,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,EAAE,CAAC;IACf,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;CACzF;AAiBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAe9E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSingleSelectedFieldName = getSingleSelectedFieldName;
|
|
4
|
+
function isFieldSelection(selection) {
|
|
5
|
+
return selection.kind === 'Field';
|
|
6
|
+
}
|
|
7
|
+
function getQuerySelectionNode(gqlQuery) {
|
|
8
|
+
const { definitions } = gqlQuery;
|
|
9
|
+
if (definitions.length !== 1 || definitions[0].kind !== 'OperationDefinition') {
|
|
10
|
+
throw new Error("Admin queries must be defined as a single operation definition");
|
|
11
|
+
}
|
|
12
|
+
return definitions[0].selectionSet;
|
|
13
|
+
}
|
|
14
|
+
// Enforces that the query selects only one field (this is relevant for subscriptions),
|
|
15
|
+
// and extracts and returns the name of that field.
|
|
16
|
+
function getSingleSelectedFieldName(query) {
|
|
17
|
+
const selectedFieldNames = getQuerySelectionNode(query.query)
|
|
18
|
+
.selections
|
|
19
|
+
.filter(isFieldSelection)
|
|
20
|
+
.map(selection => selection.name.value);
|
|
21
|
+
if (selectedFieldNames.length !== 1) {
|
|
22
|
+
throw new Error(`This admin query must select only one field, but it selects ${selectedFieldNames.length}: ${selectedFieldNames.join(', ')}`);
|
|
23
|
+
}
|
|
24
|
+
return selectedFieldNames[0];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=admin-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-query.js","sourceRoot":"","sources":["../../src/client/admin-query.ts"],"names":[],"mappings":";;AAoCA,gEAeC;AA9BD,SAAS,gBAAgB,CAAC,SAAwB;IAC9C,OAAO,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC;AACtC,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAsB;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IACjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACvC,CAAC;AAED,uFAAuF;AACvF,mDAAmD;AACnD,SAAgB,0BAA0B,CAAC,KAA2B;IAClE,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;SACxD,UAAU;SACV,MAAM,CAAC,gBAAgB,CAAC;SACxB,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACX,+DACI,kBAAkB,CAAC,MACvB,KAAK,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvC,CAAC;IACN,CAAC;IAED,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MockedEndpointData, MockedEndpoint, CompletedRequest } from "../types";
|
|
2
|
+
export declare class MockedEndpointClient implements MockedEndpoint {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
private explanation;
|
|
5
|
+
private endpointDataGetter;
|
|
6
|
+
constructor(id: string, explanation: string | undefined, endpointDataGetter: () => Promise<MockedEndpointData | null>);
|
|
7
|
+
private getMockedEndpointData;
|
|
8
|
+
getSeenRequests(): Promise<CompletedRequest[]>;
|
|
9
|
+
isPending(): Promise<boolean>;
|
|
10
|
+
toString(): string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=mocked-endpoint-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocked-endpoint-client.d.ts","sourceRoot":"","sources":["../../src/client/mocked-endpoint-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhF,qBAAa,oBAAqB,YAAW,cAAc;aAGnC,EAAE,EAAE,MAAM;IAC1B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,kBAAkB;gBAFV,EAAE,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,kBAAkB,EAAE,MAAM,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAG1D,qBAAqB;IAMtB,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI9C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C,QAAQ;CAOX"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockedEndpointClient = void 0;
|
|
4
|
+
class MockedEndpointClient {
|
|
5
|
+
constructor(id, explanation, endpointDataGetter) {
|
|
6
|
+
this.id = id;
|
|
7
|
+
this.explanation = explanation;
|
|
8
|
+
this.endpointDataGetter = endpointDataGetter;
|
|
9
|
+
}
|
|
10
|
+
async getMockedEndpointData() {
|
|
11
|
+
const mockedEndpointData = await this.endpointDataGetter();
|
|
12
|
+
if (mockedEndpointData === null)
|
|
13
|
+
throw new Error("Can't get seen requests for unknown mocked endpoint");
|
|
14
|
+
else
|
|
15
|
+
return mockedEndpointData;
|
|
16
|
+
}
|
|
17
|
+
async getSeenRequests() {
|
|
18
|
+
return (await this.getMockedEndpointData()).seenRequests;
|
|
19
|
+
}
|
|
20
|
+
async isPending() {
|
|
21
|
+
return (await this.getMockedEndpointData()).isPending;
|
|
22
|
+
}
|
|
23
|
+
toString() {
|
|
24
|
+
if (this.explanation) {
|
|
25
|
+
return "Mocked endpoint: " + this.explanation;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return Object.toString.call(this);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.MockedEndpointClient = MockedEndpointClient;
|
|
33
|
+
//# sourceMappingURL=mocked-endpoint-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocked-endpoint-client.js","sourceRoot":"","sources":["../../src/client/mocked-endpoint-client.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAoB;IAE7B,YACoB,EAAU,EAClB,WAA+B,EAC/B,kBAA4D;QAFpD,OAAE,GAAF,EAAE,CAAQ;QAClB,gBAAW,GAAX,WAAW,CAAoB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAA0C;IACpE,CAAC;IAEG,KAAK,CAAC,qBAAqB;QAC/B,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3D,IAAI,kBAAkB,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;;YACnG,OAAO,kBAAkB,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,eAAe;QACxB,OAAO,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,YAAY,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,SAAS;QAClB,OAAO,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;CACJ;AA7BD,oDA6BC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as stream from 'stream';
|
|
2
|
+
import { MockedEndpoint, MockedEndpointData } from "../types";
|
|
3
|
+
import { AdminQuery } from './admin-query';
|
|
4
|
+
import { SchemaIntrospector } from './schema-introspection';
|
|
5
|
+
import type { RequestRuleData } from "../rules/requests/request-rule";
|
|
6
|
+
import type { WebSocketRuleData } from '../rules/websockets/websocket-rule';
|
|
7
|
+
import { SubscribableEvent } from '../mockttp';
|
|
8
|
+
/**
|
|
9
|
+
* This is part of Mockttp's experimental 'pluggable admin' API. This may change
|
|
10
|
+
* unpredictably, even in minor releases.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export declare class MockttpAdminRequestBuilder {
|
|
15
|
+
private schema;
|
|
16
|
+
constructor(schema: SchemaIntrospector);
|
|
17
|
+
buildAddRequestRulesQuery(rules: Array<RequestRuleData>, reset: boolean, adminStream: stream.Duplex): AdminQuery<{
|
|
18
|
+
endpoints: Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
explanation?: string;
|
|
21
|
+
}>;
|
|
22
|
+
}, MockedEndpoint[]>;
|
|
23
|
+
buildAddWebSocketRulesQuery(rules: Array<WebSocketRuleData>, reset: boolean, adminStream: stream.Duplex): AdminQuery<{
|
|
24
|
+
endpoints: Array<{
|
|
25
|
+
id: string;
|
|
26
|
+
explanation?: string;
|
|
27
|
+
}>;
|
|
28
|
+
}, MockedEndpoint[]>;
|
|
29
|
+
buildMockedEndpointsQuery(): AdminQuery<{
|
|
30
|
+
mockedEndpoints: MockedEndpointData[];
|
|
31
|
+
}, MockedEndpoint[]>;
|
|
32
|
+
buildPendingEndpointsQuery(): AdminQuery<{
|
|
33
|
+
pendingEndpoints: MockedEndpointData[];
|
|
34
|
+
}, MockedEndpoint[]>;
|
|
35
|
+
buildSubscriptionRequest<T>(event: SubscribableEvent): AdminQuery<unknown, T> | undefined;
|
|
36
|
+
private getEndpointDataGetter;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=mockttp-admin-request-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockttp-admin-request-builder.d.ts","sourceRoot":"","sources":["../../src/client/mockttp-admin-request-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAK9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA4D/C;;;;;GAKG;AACH,qBAAa,0BAA0B;IAG/B,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,kBAAkB;IAGtC,yBAAyB,CACrB,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,EAC7B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,CAAC,MAAM,GAC3B,UAAU,CACT;QAAE,SAAS,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,EAC1D,cAAc,EAAE,CACnB;IAoCD,2BAA2B,CACvB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAC/B,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,MAAM,CAAC,MAAM,GAC3B,UAAU,CACT;QAAE,SAAS,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,EAC1D,cAAc,EAAE,CACnB;IAgCD,yBAAyB,IAAI,UAAU,CACnC;QAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA;KAAE,EACzC,cAAc,EAAE,CACnB;IAuBM,0BAA0B,IAAI,UAAU,CAC3C;QAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAA;KAAE,EAC1C,cAAc,EAAE,CACnB;IAuBM,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,SAAS;IAuRhG,OAAO,CAAC,qBAAqB,CAsCxB;CACR"}
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockttpAdminRequestBuilder = void 0;
|
|
4
|
+
const _ = require("lodash");
|
|
5
|
+
const graphql_tag_1 = require("graphql-tag");
|
|
6
|
+
const request_utils_1 = require("../util/request-utils");
|
|
7
|
+
const header_utils_1 = require("../util/header-utils");
|
|
8
|
+
const mocked_endpoint_client_1 = require("./mocked-endpoint-client");
|
|
9
|
+
const rule_serialization_1 = require("../rules/rule-serialization");
|
|
10
|
+
function normalizeHttpMessage(message, event) {
|
|
11
|
+
if (message.timingEvents) {
|
|
12
|
+
// Timing events are serialized as raw JSON
|
|
13
|
+
message.timingEvents = JSON.parse(message.timingEvents);
|
|
14
|
+
}
|
|
15
|
+
else if (event !== 'tls-client-error' && event !== 'client-error') {
|
|
16
|
+
// For backwards compat, all except errors should have timing events if they're missing
|
|
17
|
+
message.timingEvents = {};
|
|
18
|
+
}
|
|
19
|
+
if (message.rawHeaders) {
|
|
20
|
+
message.rawHeaders = JSON.parse(message.rawHeaders);
|
|
21
|
+
// We use raw headers where possible to derive headers, instead of using any pre-derived
|
|
22
|
+
// header data, for maximum accuracy (and to avoid any need to query for both).
|
|
23
|
+
message.headers = (0, header_utils_1.rawHeadersToObject)(message.rawHeaders);
|
|
24
|
+
}
|
|
25
|
+
else if (message.headers) {
|
|
26
|
+
// Backward compat for older servers:
|
|
27
|
+
message.headers = JSON.parse(message.headers);
|
|
28
|
+
message.rawHeaders = (0, header_utils_1.objectHeadersToRaw)(message.headers);
|
|
29
|
+
}
|
|
30
|
+
if (message.rawTrailers) {
|
|
31
|
+
message.rawTrailers = JSON.parse(message.rawTrailers);
|
|
32
|
+
message.trailers = (0, header_utils_1.rawHeadersToObject)(message.rawTrailers);
|
|
33
|
+
}
|
|
34
|
+
else if (message.rawHeaders && message.body) { // HTTP events with bodies should have trailers
|
|
35
|
+
message.rawTrailers = [];
|
|
36
|
+
message.trailers = {};
|
|
37
|
+
}
|
|
38
|
+
if (message.body !== undefined) {
|
|
39
|
+
// Body is serialized as the raw encoded buffer in base64
|
|
40
|
+
message.body = (0, request_utils_1.buildBodyReader)(Buffer.from(message.body, 'base64'), message.headers);
|
|
41
|
+
}
|
|
42
|
+
// For backwards compat, all except errors should have tags if they're missing
|
|
43
|
+
if (!message.tags)
|
|
44
|
+
message.tags = [];
|
|
45
|
+
if (event?.startsWith('tls-')) {
|
|
46
|
+
// TLS passthrough & error events should have raw JSON socket metadata:
|
|
47
|
+
if (message.tlsMetadata) {
|
|
48
|
+
message.tlsMetadata = JSON.parse(message.tlsMetadata);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// For old servers, just use empty metadata:
|
|
52
|
+
message.tlsMetadata = {};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function normalizeWebSocketMessage(message) {
|
|
57
|
+
// Timing events are serialized as raw JSON
|
|
58
|
+
message.timingEvents = JSON.parse(message.timingEvents);
|
|
59
|
+
// Content is serialized as the raw encoded buffer in base64
|
|
60
|
+
message.content = Buffer.from(message.content, 'base64');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* This is part of Mockttp's experimental 'pluggable admin' API. This may change
|
|
64
|
+
* unpredictably, even in minor releases.
|
|
65
|
+
*
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
class MockttpAdminRequestBuilder {
|
|
69
|
+
constructor(schema) {
|
|
70
|
+
this.schema = schema;
|
|
71
|
+
this.getEndpointDataGetter = (adminClient, ruleId) => async () => {
|
|
72
|
+
let result = await adminClient.sendQuery({
|
|
73
|
+
query: (0, graphql_tag_1.default) `
|
|
74
|
+
query GetEndpointData($id: ID!) {
|
|
75
|
+
mockedEndpoint(id: $id) {
|
|
76
|
+
seenRequests {
|
|
77
|
+
id,
|
|
78
|
+
protocol,
|
|
79
|
+
method,
|
|
80
|
+
url,
|
|
81
|
+
path,
|
|
82
|
+
hostname
|
|
83
|
+
|
|
84
|
+
${this.schema.typeHasField('Request', 'rawHeaders')
|
|
85
|
+
? 'rawHeaders'
|
|
86
|
+
: 'headers'}
|
|
87
|
+
|
|
88
|
+
body,
|
|
89
|
+
${this.schema.asOptionalField('Request', 'timingEvents')}
|
|
90
|
+
${this.schema.asOptionalField('Request', 'httpVersion')}
|
|
91
|
+
}
|
|
92
|
+
${this.schema.asOptionalField('MockedEndpoint', 'isPending')}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
`,
|
|
96
|
+
variables: { id: ruleId }
|
|
97
|
+
});
|
|
98
|
+
const mockedEndpoint = result.mockedEndpoint;
|
|
99
|
+
if (!mockedEndpoint)
|
|
100
|
+
return null;
|
|
101
|
+
mockedEndpoint.seenRequests.forEach(req => normalizeHttpMessage(req));
|
|
102
|
+
return mockedEndpoint;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
buildAddRequestRulesQuery(rules, reset, adminStream) {
|
|
106
|
+
const requestName = (reset ? 'Set' : 'Add') + 'Rules';
|
|
107
|
+
const mutationName = (reset ? 'set' : 'add') + 'Rules';
|
|
108
|
+
const serializedRules = rules.map((rule) => {
|
|
109
|
+
const serializedRule = (0, rule_serialization_1.serializeRuleData)(rule, adminStream);
|
|
110
|
+
if (!this.schema.typeHasInputField('MockRule', 'id')) {
|
|
111
|
+
delete serializedRule.id;
|
|
112
|
+
}
|
|
113
|
+
return serializedRule;
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
query: (0, graphql_tag_1.default) `
|
|
117
|
+
mutation ${requestName}($newRules: [MockRule!]!) {
|
|
118
|
+
endpoints: ${mutationName}(input: $newRules) {
|
|
119
|
+
id,
|
|
120
|
+
${this.schema.asOptionalField('MockedEndpoint', 'explanation')}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
`,
|
|
124
|
+
variables: {
|
|
125
|
+
newRules: serializedRules
|
|
126
|
+
},
|
|
127
|
+
transformResponse: (response, { adminClient }) => {
|
|
128
|
+
return response.endpoints.map(({ id, explanation }) => new mocked_endpoint_client_1.MockedEndpointClient(id, explanation, this.getEndpointDataGetter(adminClient, id)));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
buildAddWebSocketRulesQuery(rules, reset, adminStream) {
|
|
133
|
+
// Seperate and simpler than buildAddRequestRulesQuery, because it doesn't have to
|
|
134
|
+
// deal with backward compatibility.
|
|
135
|
+
const requestName = (reset ? 'Set' : 'Add') + 'WebSocketRules';
|
|
136
|
+
const mutationName = (reset ? 'set' : 'add') + 'WebSocketRules';
|
|
137
|
+
const serializedRules = rules.map((rule) => (0, rule_serialization_1.serializeRuleData)(rule, adminStream));
|
|
138
|
+
return {
|
|
139
|
+
query: (0, graphql_tag_1.default) `
|
|
140
|
+
mutation ${requestName}($newRules: [WebSocketMockRule!]!) {
|
|
141
|
+
endpoints: ${mutationName}(input: $newRules) {
|
|
142
|
+
id,
|
|
143
|
+
explanation
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
`,
|
|
147
|
+
variables: {
|
|
148
|
+
newRules: serializedRules
|
|
149
|
+
},
|
|
150
|
+
transformResponse: (response, { adminClient }) => {
|
|
151
|
+
return response.endpoints.map(({ id, explanation }) => new mocked_endpoint_client_1.MockedEndpointClient(id, explanation, this.getEndpointDataGetter(adminClient, id)));
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
;
|
|
156
|
+
buildMockedEndpointsQuery() {
|
|
157
|
+
return {
|
|
158
|
+
query: (0, graphql_tag_1.default) `
|
|
159
|
+
query GetAllEndpointData {
|
|
160
|
+
mockedEndpoints {
|
|
161
|
+
id,
|
|
162
|
+
${this.schema.asOptionalField('MockedEndpoint', 'explanation')}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
`,
|
|
166
|
+
transformResponse: (response, { adminClient }) => {
|
|
167
|
+
const mockedEndpoints = response.mockedEndpoints;
|
|
168
|
+
return mockedEndpoints.map(({ id, explanation }) => new mocked_endpoint_client_1.MockedEndpointClient(id, explanation, this.getEndpointDataGetter(adminClient, id)));
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
buildPendingEndpointsQuery() {
|
|
173
|
+
return {
|
|
174
|
+
query: (0, graphql_tag_1.default) `
|
|
175
|
+
query GetPendingEndpointData {
|
|
176
|
+
pendingEndpoints {
|
|
177
|
+
id,
|
|
178
|
+
explanation
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
`,
|
|
182
|
+
transformResponse: (response, { adminClient }) => {
|
|
183
|
+
const pendingEndpoints = response.pendingEndpoints;
|
|
184
|
+
return pendingEndpoints.map(({ id, explanation }) => new mocked_endpoint_client_1.MockedEndpointClient(id, explanation, this.getEndpointDataGetter(adminClient, id)));
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
buildSubscriptionRequest(event) {
|
|
189
|
+
// Note the asOptionalField checks - these are a quick hack for backward compatibility,
|
|
190
|
+
// introspecting the server schema to avoid requesting fields that don't exist on old servers.
|
|
191
|
+
const query = {
|
|
192
|
+
'request-initiated': (0, graphql_tag_1.default) `subscription OnRequestInitiated {
|
|
193
|
+
requestInitiated {
|
|
194
|
+
id
|
|
195
|
+
protocol
|
|
196
|
+
method
|
|
197
|
+
url
|
|
198
|
+
path
|
|
199
|
+
${this.schema.asOptionalField('InitiatedRequest', 'remoteIpAddress')}
|
|
200
|
+
${this.schema.asOptionalField('InitiatedRequest', 'remotePort')}
|
|
201
|
+
hostname
|
|
202
|
+
|
|
203
|
+
${this.schema.typeHasField('InitiatedRequest', 'rawHeaders')
|
|
204
|
+
? 'rawHeaders'
|
|
205
|
+
: 'headers'}
|
|
206
|
+
timingEvents
|
|
207
|
+
httpVersion
|
|
208
|
+
${this.schema.asOptionalField('InitiatedRequest', 'tags')}
|
|
209
|
+
}
|
|
210
|
+
}`,
|
|
211
|
+
request: (0, graphql_tag_1.default) `subscription OnRequest {
|
|
212
|
+
requestReceived {
|
|
213
|
+
id
|
|
214
|
+
${this.schema.asOptionalField('Request', 'matchedRuleId')}
|
|
215
|
+
protocol
|
|
216
|
+
method
|
|
217
|
+
url
|
|
218
|
+
path
|
|
219
|
+
${this.schema.asOptionalField('Request', 'remoteIpAddress')}
|
|
220
|
+
${this.schema.asOptionalField('Request', 'remotePort')}
|
|
221
|
+
hostname
|
|
222
|
+
|
|
223
|
+
${this.schema.typeHasField('Request', 'rawHeaders')
|
|
224
|
+
? 'rawHeaders'
|
|
225
|
+
: 'headers'}
|
|
226
|
+
|
|
227
|
+
body
|
|
228
|
+
${this.schema.asOptionalField('Request', 'rawTrailers')}
|
|
229
|
+
|
|
230
|
+
${this.schema.asOptionalField('Request', 'timingEvents')}
|
|
231
|
+
${this.schema.asOptionalField('Request', 'httpVersion')}
|
|
232
|
+
${this.schema.asOptionalField('Request', 'tags')}
|
|
233
|
+
}
|
|
234
|
+
}`,
|
|
235
|
+
response: (0, graphql_tag_1.default) `subscription OnResponse {
|
|
236
|
+
responseCompleted {
|
|
237
|
+
id
|
|
238
|
+
statusCode
|
|
239
|
+
statusMessage
|
|
240
|
+
|
|
241
|
+
${this.schema.typeHasField('Response', 'rawHeaders')
|
|
242
|
+
? 'rawHeaders'
|
|
243
|
+
: 'headers'}
|
|
244
|
+
|
|
245
|
+
body
|
|
246
|
+
${this.schema.asOptionalField('Response', 'rawTrailers')}
|
|
247
|
+
|
|
248
|
+
${this.schema.asOptionalField('Response', 'timingEvents')}
|
|
249
|
+
${this.schema.asOptionalField('Response', 'tags')}
|
|
250
|
+
}
|
|
251
|
+
}`,
|
|
252
|
+
'websocket-request': (0, graphql_tag_1.default) `subscription OnWebSocketRequest {
|
|
253
|
+
webSocketRequest {
|
|
254
|
+
id
|
|
255
|
+
matchedRuleId
|
|
256
|
+
protocol
|
|
257
|
+
method
|
|
258
|
+
url
|
|
259
|
+
path
|
|
260
|
+
remoteIpAddress
|
|
261
|
+
remotePort
|
|
262
|
+
hostname
|
|
263
|
+
|
|
264
|
+
rawHeaders
|
|
265
|
+
body
|
|
266
|
+
${this.schema.asOptionalField('Request', 'rawTrailers')}
|
|
267
|
+
|
|
268
|
+
timingEvents
|
|
269
|
+
httpVersion
|
|
270
|
+
tags
|
|
271
|
+
}
|
|
272
|
+
}`,
|
|
273
|
+
'websocket-accepted': (0, graphql_tag_1.default) `subscription OnWebSocketAccepted {
|
|
274
|
+
webSocketAccepted {
|
|
275
|
+
id
|
|
276
|
+
statusCode
|
|
277
|
+
statusMessage
|
|
278
|
+
|
|
279
|
+
rawHeaders
|
|
280
|
+
body
|
|
281
|
+
${this.schema.asOptionalField('Response', 'rawTrailers')}
|
|
282
|
+
|
|
283
|
+
timingEvents
|
|
284
|
+
tags
|
|
285
|
+
}
|
|
286
|
+
}`,
|
|
287
|
+
'websocket-message-received': (0, graphql_tag_1.default) `subscription OnWebSocketMessageReceived {
|
|
288
|
+
webSocketMessageReceived {
|
|
289
|
+
streamId
|
|
290
|
+
direction
|
|
291
|
+
content
|
|
292
|
+
isBinary
|
|
293
|
+
eventTimestamp
|
|
294
|
+
|
|
295
|
+
timingEvents
|
|
296
|
+
tags
|
|
297
|
+
}
|
|
298
|
+
}`,
|
|
299
|
+
'websocket-message-sent': (0, graphql_tag_1.default) `subscription OnWebSocketMessageSent {
|
|
300
|
+
webSocketMessageSent {
|
|
301
|
+
streamId
|
|
302
|
+
direction
|
|
303
|
+
content
|
|
304
|
+
isBinary
|
|
305
|
+
eventTimestamp
|
|
306
|
+
|
|
307
|
+
timingEvents
|
|
308
|
+
tags
|
|
309
|
+
}
|
|
310
|
+
}`,
|
|
311
|
+
'websocket-close': (0, graphql_tag_1.default) `subscription OnWebSocketClose {
|
|
312
|
+
webSocketClose {
|
|
313
|
+
streamId
|
|
314
|
+
|
|
315
|
+
closeCode
|
|
316
|
+
closeReason
|
|
317
|
+
|
|
318
|
+
timingEvents
|
|
319
|
+
tags
|
|
320
|
+
}
|
|
321
|
+
}`,
|
|
322
|
+
abort: (0, graphql_tag_1.default) `subscription OnAbort {
|
|
323
|
+
requestAborted {
|
|
324
|
+
id,
|
|
325
|
+
protocol,
|
|
326
|
+
method,
|
|
327
|
+
url,
|
|
328
|
+
path,
|
|
329
|
+
hostname,
|
|
330
|
+
|
|
331
|
+
${this.schema.typeHasField('Request', 'rawHeaders')
|
|
332
|
+
? 'rawHeaders'
|
|
333
|
+
: 'headers'}
|
|
334
|
+
|
|
335
|
+
${this.schema.asOptionalField('Request', 'timingEvents')}
|
|
336
|
+
${this.schema.asOptionalField('Request', 'tags')}
|
|
337
|
+
${this.schema.asOptionalField('AbortedRequest', 'error')}
|
|
338
|
+
}
|
|
339
|
+
}`,
|
|
340
|
+
'tls-passthrough-opened': (0, graphql_tag_1.default) `subscription OnTlsPassthroughOpened {
|
|
341
|
+
tlsPassthroughOpened {
|
|
342
|
+
id
|
|
343
|
+
upstreamPort
|
|
344
|
+
|
|
345
|
+
hostname
|
|
346
|
+
remoteIpAddress
|
|
347
|
+
remotePort
|
|
348
|
+
tags
|
|
349
|
+
timingEvents
|
|
350
|
+
${this.schema.asOptionalField('TlsPassthroughEvent', 'tlsMetadata')}
|
|
351
|
+
}
|
|
352
|
+
}`,
|
|
353
|
+
'tls-passthrough-closed': (0, graphql_tag_1.default) `subscription OnTlsPassthroughClosed {
|
|
354
|
+
tlsPassthroughClosed {
|
|
355
|
+
id
|
|
356
|
+
upstreamPort
|
|
357
|
+
|
|
358
|
+
hostname
|
|
359
|
+
remoteIpAddress
|
|
360
|
+
remotePort
|
|
361
|
+
tags
|
|
362
|
+
timingEvents
|
|
363
|
+
${this.schema.asOptionalField('TlsPassthroughEvent', 'tlsMetadata')}
|
|
364
|
+
}
|
|
365
|
+
}`,
|
|
366
|
+
'tls-client-error': (0, graphql_tag_1.default) `subscription OnTlsClientError {
|
|
367
|
+
failedTlsRequest {
|
|
368
|
+
failureCause
|
|
369
|
+
hostname
|
|
370
|
+
remoteIpAddress
|
|
371
|
+
${this.schema.asOptionalField(['TlsHandshakeFailure', 'TlsRequest'], 'remotePort')}
|
|
372
|
+
${this.schema.asOptionalField(['TlsHandshakeFailure', 'TlsRequest'], 'tags')}
|
|
373
|
+
${this.schema.asOptionalField(['TlsHandshakeFailure', 'TlsRequest'], 'timingEvents')}
|
|
374
|
+
${this.schema.asOptionalField(['TlsHandshakeFailure', 'TlsRequest'], 'tlsMetadata')}
|
|
375
|
+
}
|
|
376
|
+
}`,
|
|
377
|
+
'client-error': (0, graphql_tag_1.default) `subscription OnClientError {
|
|
378
|
+
failedClientRequest {
|
|
379
|
+
errorCode
|
|
380
|
+
request {
|
|
381
|
+
id
|
|
382
|
+
timingEvents
|
|
383
|
+
tags
|
|
384
|
+
protocol
|
|
385
|
+
httpVersion
|
|
386
|
+
method
|
|
387
|
+
url
|
|
388
|
+
path
|
|
389
|
+
|
|
390
|
+
${this.schema.typeHasField('ClientErrorRequest', 'rawHeaders')
|
|
391
|
+
? 'rawHeaders'
|
|
392
|
+
: 'headers'}
|
|
393
|
+
|
|
394
|
+
${this.schema.asOptionalField('ClientErrorRequest', 'remoteIpAddress')}
|
|
395
|
+
${this.schema.asOptionalField('ClientErrorRequest', 'remotePort')}
|
|
396
|
+
}
|
|
397
|
+
response {
|
|
398
|
+
id
|
|
399
|
+
timingEvents
|
|
400
|
+
tags
|
|
401
|
+
statusCode
|
|
402
|
+
statusMessage
|
|
403
|
+
|
|
404
|
+
${this.schema.typeHasField('Response', 'rawHeaders')
|
|
405
|
+
? 'rawHeaders'
|
|
406
|
+
: 'headers'}
|
|
407
|
+
|
|
408
|
+
body
|
|
409
|
+
${this.schema.asOptionalField('Response', 'rawTrailers')}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}`,
|
|
413
|
+
'rule-event': (0, graphql_tag_1.default) `subscription OnRuleEvent {
|
|
414
|
+
ruleEvent {
|
|
415
|
+
requestId
|
|
416
|
+
ruleId
|
|
417
|
+
eventType
|
|
418
|
+
eventData
|
|
419
|
+
}
|
|
420
|
+
}`
|
|
421
|
+
}[event];
|
|
422
|
+
if (!query)
|
|
423
|
+
return; // Unrecognized event, we can't subscribe to this.
|
|
424
|
+
return {
|
|
425
|
+
query,
|
|
426
|
+
transformResponse: (data) => {
|
|
427
|
+
if (event === 'client-error') {
|
|
428
|
+
data.request = _.mapValues(data.request, (v) =>
|
|
429
|
+
// Normalize missing values to undefined to match the local result
|
|
430
|
+
v === null ? undefined : v);
|
|
431
|
+
normalizeHttpMessage(data.request, event);
|
|
432
|
+
if (data.response) {
|
|
433
|
+
normalizeHttpMessage(data.response, event);
|
|
434
|
+
}
|
|
435
|
+
else {
|
|
436
|
+
data.response = 'aborted';
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
else if (event === 'websocket-message-received' || event === 'websocket-message-sent') {
|
|
440
|
+
normalizeWebSocketMessage(data);
|
|
441
|
+
}
|
|
442
|
+
else if (event === 'abort') {
|
|
443
|
+
normalizeHttpMessage(data, event);
|
|
444
|
+
data.error = data.error ? JSON.parse(data.error) : undefined;
|
|
445
|
+
}
|
|
446
|
+
else if (event === 'rule-event') {
|
|
447
|
+
const { eventData } = data;
|
|
448
|
+
// Events may include raw body data buffers, serialized as base64:
|
|
449
|
+
if (eventData.rawBody !== undefined) {
|
|
450
|
+
eventData.rawBody = Buffer.from(eventData.rawBody, 'base64');
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
normalizeHttpMessage(data, event);
|
|
455
|
+
}
|
|
456
|
+
return data;
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
exports.MockttpAdminRequestBuilder = MockttpAdminRequestBuilder;
|
|
462
|
+
//# sourceMappingURL=mockttp-admin-request-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockttp-admin-request-builder.js","sourceRoot":"","sources":["../../src/client/mockttp-admin-request-builder.ts"],"names":[],"mappings":"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"}
|