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,98 @@
|
|
|
1
|
+
import * as cors from 'cors';
|
|
2
|
+
import { AdminPlugin, PluginConstructorMap, PluginStartParamsMap } from './admin-plugin-types';
|
|
3
|
+
export interface AdminServerOptions<Plugins extends {
|
|
4
|
+
[key: string]: AdminPlugin<any, any>;
|
|
5
|
+
}> {
|
|
6
|
+
/**
|
|
7
|
+
* Should the admin server print extra debug information? This enables admin server debugging
|
|
8
|
+
* only - individual mock session debugging must be enabled separately.
|
|
9
|
+
*/
|
|
10
|
+
debug?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Set CORS options to limit the sites which can send requests to manage this admin server.
|
|
13
|
+
*/
|
|
14
|
+
corsOptions?: cors.CorsOptions & {
|
|
15
|
+
strict?: boolean;
|
|
16
|
+
allowPrivateNetworkAccess?: boolean;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Set a keep alive frequency in milliseconds for the subscription & stream websockets of each
|
|
20
|
+
* session, to ensure they remain connected in long-lived connections, especially in browsers which
|
|
21
|
+
* often close quiet background connections automatically.
|
|
22
|
+
*/
|
|
23
|
+
webSocketKeepAlive?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Override the default parameters for sessions started from this admin server. These values will be
|
|
26
|
+
* used for each setting that is not explicitly specified by the client when creating a mock session.
|
|
27
|
+
*/
|
|
28
|
+
pluginDefaults?: Partial<PluginStartParamsMap<Plugins>>;
|
|
29
|
+
/**
|
|
30
|
+
* Some rule options can't easily be specified in remote clients, since they need to access
|
|
31
|
+
* server-side state or Node APIs directly. To handle this, referenceable parameters can
|
|
32
|
+
* be provided here, and referenced with a `{ [MOCKTTP_PARAM_REF]: <value> }` value in place
|
|
33
|
+
* of the real parameter in the remote client.
|
|
34
|
+
*/
|
|
35
|
+
ruleParameters?: {
|
|
36
|
+
[key: string]: any;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* @internal
|
|
40
|
+
*
|
|
41
|
+
* This API is not yet stable, and is intended for internal use only. It may change in future
|
|
42
|
+
* in minor versions without warning.
|
|
43
|
+
*
|
|
44
|
+
* This defines admin plugin modules: remote-controlled types of mocks that should be attached to this
|
|
45
|
+
* admin server, to allow configuring other mocking services through the same HTTP infrastructure.
|
|
46
|
+
*
|
|
47
|
+
* This can be useful when mocking non-HTTP protocols like WebRTC.
|
|
48
|
+
*/
|
|
49
|
+
adminPlugins?: PluginConstructorMap<Plugins>;
|
|
50
|
+
}
|
|
51
|
+
export declare class AdminServer<Plugins extends {
|
|
52
|
+
[key: string]: AdminPlugin<any, any>;
|
|
53
|
+
}> {
|
|
54
|
+
private debug;
|
|
55
|
+
private requiredOrigin;
|
|
56
|
+
private webSocketKeepAlive;
|
|
57
|
+
private ruleParams;
|
|
58
|
+
private app;
|
|
59
|
+
private server;
|
|
60
|
+
private eventEmitter;
|
|
61
|
+
private adminPlugins;
|
|
62
|
+
private sessions;
|
|
63
|
+
constructor(options?: AdminServerOptions<Plugins>);
|
|
64
|
+
resetAdminServer(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Subscribe to hear when each mock ession is started. The listener is provided the
|
|
67
|
+
* session plugin data, which can be used to log session startup, add side-effects that
|
|
68
|
+
* run elsewhere at startup, or preconfigure every started plugin in addition ways.
|
|
69
|
+
*
|
|
70
|
+
* This is run synchronously when a session is created, after it has fully started
|
|
71
|
+
* but before its been returned to remote clients.
|
|
72
|
+
*/
|
|
73
|
+
on(event: 'mock-session-started', listener: (plugins: Plugins, sessionId: string) => void): void;
|
|
74
|
+
/**
|
|
75
|
+
* Subscribe to hear when a mock session is stopped. The listener is provided with
|
|
76
|
+
* the state of all plugins that are about to be stopped. This can be used to log
|
|
77
|
+
* mock session shutdown, add side-effects that run elsewhere at shutdown, or clean
|
|
78
|
+
* up after sessions in other ways.
|
|
79
|
+
*
|
|
80
|
+
* This is run synchronously immediately before the session is shutdown, whilst all
|
|
81
|
+
* its state is still available, and before remote clients have had any response to
|
|
82
|
+
* their request. This is also run before shutdown when the admin server itself is
|
|
83
|
+
* cleanly shutdown with `adminServer.stop()`.
|
|
84
|
+
*/
|
|
85
|
+
on(event: 'mock-session-stopping', listener: (plugins: Plugins, sessionId: string) => void): void;
|
|
86
|
+
start(listenOptions?: number | {
|
|
87
|
+
port: number;
|
|
88
|
+
host: string;
|
|
89
|
+
}): Promise<void>;
|
|
90
|
+
private startSessionManagementAPI;
|
|
91
|
+
stop(): Promise<void>;
|
|
92
|
+
private static baseSchema;
|
|
93
|
+
private buildBaseResolvers;
|
|
94
|
+
private resetPluginsForSession;
|
|
95
|
+
private enableDebugForSession;
|
|
96
|
+
get ruleParameterKeys(): string[];
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=admin-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-server.d.ts","sourceRoot":"","sources":["../../src/admin/admin-server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAuB7B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI/F,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE;IACxF;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG;QAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,yBAAyB,CAAC,EAAE,OAAO,CAAA;KACtC,CAAC;IAEF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAExD;;;;;OAKG;IACH,cAAc,CAAC,EAAE;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACrB,CAAA;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAA;CAC/C;AAmCD,qBAAa,WAAW,CAAC,OAAO,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE;IAE7E,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,UAAU,CAAiB;IAEnC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO,CAAC,YAAY,CAAgC;IAEpD,OAAO,CAAC,QAAQ,CAQN;gBAEE,OAAO,GAAE,kBAAkB,CAAC,OAAO,CAAM;IA8J/C,gBAAgB;IAOtB;;;;;;;OAOG;IACH,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAEhG;;;;;;;;;;OAUG;IACH,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAK3F,KAAK,CACP,aAAa,GAAE,MAAM,GAAG;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAA;KACa;YA4CnB,yBAAyB;IA4IvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,OAAO,CAAC,MAAM,CAAC,UAAU,CAkBvB;IAEF,OAAO,CAAC,kBAAkB;IAmD1B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,qBAAqB;IAQ7B,IAAI,iBAAiB,aAEpB;CACJ"}
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdminServer = void 0;
|
|
4
|
+
const _ = require("lodash");
|
|
5
|
+
const express = require("express");
|
|
6
|
+
const cors = require("cors");
|
|
7
|
+
const corsGate = require("cors-gate");
|
|
8
|
+
const bodyParser = require("body-parser");
|
|
9
|
+
const Ws = require("ws");
|
|
10
|
+
const uuid_1 = require("uuid");
|
|
11
|
+
const express_1 = require("graphql-http/lib/use/express");
|
|
12
|
+
const graphql_1 = require("graphql");
|
|
13
|
+
const graphql_tag_1 = require("graphql-tag");
|
|
14
|
+
const schema_1 = require("@graphql-tools/schema");
|
|
15
|
+
const subscriptions_transport_ws_1 = require("@httptoolkit/subscriptions-transport-ws");
|
|
16
|
+
const stream_1 = require("stream");
|
|
17
|
+
const DuplexPair = require("native-duplexpair");
|
|
18
|
+
const destroyable_server_1 = require("destroyable-server");
|
|
19
|
+
const error_1 = require("../util/error");
|
|
20
|
+
const promise_1 = require("../util/promise");
|
|
21
|
+
const types_1 = require("../types");
|
|
22
|
+
const graphql_utils_1 = require("./graphql-utils");
|
|
23
|
+
async function strictOriginMatch(origin, expectedOrigin) {
|
|
24
|
+
if (!origin)
|
|
25
|
+
return false;
|
|
26
|
+
if (typeof expectedOrigin === 'string') {
|
|
27
|
+
return expectedOrigin === origin;
|
|
28
|
+
}
|
|
29
|
+
if (_.isRegExp(expectedOrigin)) {
|
|
30
|
+
return !!origin.match(expectedOrigin);
|
|
31
|
+
}
|
|
32
|
+
if (_.isArray(expectedOrigin)) {
|
|
33
|
+
return _.some(expectedOrigin, (exp) => strictOriginMatch(origin, exp));
|
|
34
|
+
}
|
|
35
|
+
if (_.isFunction(expectedOrigin)) {
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
expectedOrigin(origin, (error, result) => {
|
|
38
|
+
if (error)
|
|
39
|
+
reject(error);
|
|
40
|
+
else
|
|
41
|
+
resolve(strictOriginMatch(origin, result));
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// We don't allow boolean or undefined matches
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
class AdminServer {
|
|
49
|
+
constructor(options = {}) {
|
|
50
|
+
this.app = express();
|
|
51
|
+
this.server = null;
|
|
52
|
+
this.eventEmitter = new stream_1.EventEmitter();
|
|
53
|
+
this.sessions = {};
|
|
54
|
+
this.debug = options.debug || false;
|
|
55
|
+
if (this.debug)
|
|
56
|
+
console.log('Admin server started in debug mode');
|
|
57
|
+
this.webSocketKeepAlive = options.webSocketKeepAlive || undefined;
|
|
58
|
+
this.ruleParams = options.ruleParameters || {};
|
|
59
|
+
this.adminPlugins = options.adminPlugins || {};
|
|
60
|
+
if (options.corsOptions?.allowPrivateNetworkAccess) {
|
|
61
|
+
// Allow web pages on non-local URLs (testsite.example.com, not localhost) to
|
|
62
|
+
// send requests to this admin server too. Without this, those requests will
|
|
63
|
+
// fail after rejected preflights in recent Chrome (from ~v102, ish? Unclear).
|
|
64
|
+
// This is combined with the origin restrictions that may be set, so only
|
|
65
|
+
// accepted origins will be allowed to make these requests.
|
|
66
|
+
this.app.use((req, res, next) => {
|
|
67
|
+
if (req.headers["access-control-request-private-network"]) {
|
|
68
|
+
res.setHeader("access-control-allow-private-network", "true");
|
|
69
|
+
}
|
|
70
|
+
next(null);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
this.app.use(cors(options.corsOptions));
|
|
74
|
+
// If you use strict CORS, and set a specific origin, we'll enforce it:
|
|
75
|
+
this.requiredOrigin = !!options.corsOptions &&
|
|
76
|
+
!!options.corsOptions.strict &&
|
|
77
|
+
!!options.corsOptions.origin &&
|
|
78
|
+
typeof options.corsOptions.origin !== 'boolean' &&
|
|
79
|
+
options.corsOptions.origin;
|
|
80
|
+
if (this.requiredOrigin) {
|
|
81
|
+
this.app.use(corsGate({
|
|
82
|
+
strict: true, // MUST send an allowed origin
|
|
83
|
+
allowSafe: false, // Even for HEAD/GET requests (should be none anyway)
|
|
84
|
+
origin: '' // No base origin - we accept *no* same-origin requests
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
this.app.use(bodyParser.json({ limit: '50mb' }));
|
|
88
|
+
const defaultPluginStartParams = options.pluginDefaults ?? {};
|
|
89
|
+
this.app.post('/start', async (req, res) => {
|
|
90
|
+
try {
|
|
91
|
+
const rawConfig = req.body;
|
|
92
|
+
// New clients send: "{ plugins: { http: {...}, webrtc: {...} } }" etc. Old clients just send
|
|
93
|
+
// the HTTP options bare with no wrapper, so we wrap them for backward compat.
|
|
94
|
+
const isPluginAwareClient = ('plugins' in rawConfig);
|
|
95
|
+
const providedPluginStartParams = (!isPluginAwareClient
|
|
96
|
+
? {
|
|
97
|
+
http: {
|
|
98
|
+
options: _.cloneDeep(rawConfig),
|
|
99
|
+
port: (typeof req.query.port === 'string')
|
|
100
|
+
? JSON.parse(req.query.port)
|
|
101
|
+
: undefined
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
: rawConfig.plugins);
|
|
105
|
+
// For each plugin that was specified, we pull default params into their start params.
|
|
106
|
+
const pluginStartParams = _.mapValues((providedPluginStartParams), (params, pluginId) => {
|
|
107
|
+
return _.merge({}, defaultPluginStartParams[pluginId], params);
|
|
108
|
+
});
|
|
109
|
+
if (this.debug)
|
|
110
|
+
console.log('Admin server starting mock session with config', pluginStartParams);
|
|
111
|
+
// Backward compat: do an explicit check for HTTP port conflicts
|
|
112
|
+
const httpPort = pluginStartParams.http?.port;
|
|
113
|
+
if (_.isNumber(httpPort) && this.sessions[httpPort] != null) {
|
|
114
|
+
res.status(409).json({
|
|
115
|
+
error: `Cannot start: mock server is already running on port ${httpPort}`
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const missingPluginId = Object.keys(pluginStartParams).find(pluginId => !(pluginId in this.adminPlugins));
|
|
120
|
+
if (missingPluginId) {
|
|
121
|
+
res.status(400).json({
|
|
122
|
+
error: `Request to mock using unrecognized plugin: ${missingPluginId}`
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const sessionPlugins = _.mapValues(pluginStartParams, (__, pluginId) => {
|
|
127
|
+
const PluginType = this.adminPlugins[pluginId];
|
|
128
|
+
return new PluginType();
|
|
129
|
+
});
|
|
130
|
+
const pluginStartResults = await (0, promise_1.objectAllPromise)(_.mapValues(sessionPlugins, (plugin, pluginId) => plugin.start(pluginStartParams[pluginId])));
|
|
131
|
+
// More backward compat: old clients assume that the port is also the management id.
|
|
132
|
+
const sessionId = isPluginAwareClient
|
|
133
|
+
? (0, uuid_1.v4)()
|
|
134
|
+
: sessionPlugins.http.getMockServer().port.toString();
|
|
135
|
+
await this.startSessionManagementAPI(sessionId, sessionPlugins);
|
|
136
|
+
if (isPluginAwareClient) {
|
|
137
|
+
res.json({
|
|
138
|
+
id: sessionId,
|
|
139
|
+
pluginData: _.mapValues(pluginStartResults, (r) => r ?? {} // Always return _something_, even if the plugin returns null/undefined.
|
|
140
|
+
)
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
res.json({
|
|
145
|
+
id: sessionId,
|
|
146
|
+
...(pluginStartResults['http'])
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
res.status(500).json({ error: `Failed to start mock session: ${((0, error_1.isErrorLike)(e) && e.message) || e}` });
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
this.app.post('/reset', async (req, res) => {
|
|
155
|
+
try {
|
|
156
|
+
await this.resetAdminServer();
|
|
157
|
+
res.json({ success: true });
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
res.status(500).json({
|
|
161
|
+
error: ((0, error_1.isErrorLike)(e) && e.message) || 'Unknown error'
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
// Dynamically route to mock sessions ourselves, so we can easily add/remove
|
|
166
|
+
// sessions as we see fit later on.
|
|
167
|
+
const sessionRequest = (req, res, next) => {
|
|
168
|
+
const sessionId = req.params.id;
|
|
169
|
+
const sessionRouter = this.sessions[sessionId]?.router;
|
|
170
|
+
if (!sessionRouter) {
|
|
171
|
+
res.status(404).send('Unknown mock session');
|
|
172
|
+
console.error(`Request for unknown mock session with id: ${sessionId}`);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
sessionRouter(req, res, next);
|
|
176
|
+
};
|
|
177
|
+
this.app.use('/session/:id/', sessionRequest);
|
|
178
|
+
this.app.use('/server/:id/', sessionRequest); // Old URL for backward compat
|
|
179
|
+
}
|
|
180
|
+
async resetAdminServer() {
|
|
181
|
+
if (this.debug)
|
|
182
|
+
console.log('Resetting admin server');
|
|
183
|
+
await Promise.all(Object.values(this.sessions).map(({ stop }) => stop()));
|
|
184
|
+
}
|
|
185
|
+
on(event, listener) {
|
|
186
|
+
this.eventEmitter.on(event, listener);
|
|
187
|
+
}
|
|
188
|
+
async start(listenOptions = types_1.DEFAULT_ADMIN_SERVER_PORT) {
|
|
189
|
+
if (this.server)
|
|
190
|
+
throw new Error('Admin server already running');
|
|
191
|
+
await new Promise((resolve, reject) => {
|
|
192
|
+
this.server = (0, destroyable_server_1.makeDestroyable)(this.app.listen(listenOptions, resolve));
|
|
193
|
+
this.server.on('error', reject);
|
|
194
|
+
this.server.on('upgrade', async (req, socket, head) => {
|
|
195
|
+
const reqOrigin = req.headers['origin'];
|
|
196
|
+
if (this.requiredOrigin && !await strictOriginMatch(reqOrigin, this.requiredOrigin)) {
|
|
197
|
+
console.warn(`Websocket request from invalid origin: ${req.headers['origin']}`);
|
|
198
|
+
socket.destroy();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const isSubscriptionRequest = req.url.match(/^\/(?:server|session)\/([\w\d\-]+)\/subscription$/);
|
|
202
|
+
const isStreamRequest = req.url.match(/^\/(?:server|session)\/([\w\d\-]+)\/stream$/);
|
|
203
|
+
const isMatch = isSubscriptionRequest || isStreamRequest;
|
|
204
|
+
if (isMatch) {
|
|
205
|
+
const sessionId = isMatch[1];
|
|
206
|
+
let wsServer = isSubscriptionRequest
|
|
207
|
+
? this.sessions[sessionId]?.subscriptionServer.server
|
|
208
|
+
: this.sessions[sessionId]?.streamServer;
|
|
209
|
+
if (wsServer) {
|
|
210
|
+
wsServer.handleUpgrade(req, socket, head, (ws) => {
|
|
211
|
+
wsServer.emit('connection', ws, req);
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
console.warn(`Websocket request for unrecognized mock session: ${sessionId}`);
|
|
216
|
+
socket.destroy();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.warn(`Unrecognized websocket request for ${req.url}`);
|
|
221
|
+
socket.destroy();
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
async startSessionManagementAPI(sessionId, plugins) {
|
|
227
|
+
const mockSessionRouter = express.Router();
|
|
228
|
+
let running = true;
|
|
229
|
+
const stopSession = async () => {
|
|
230
|
+
if (!running)
|
|
231
|
+
return;
|
|
232
|
+
running = false;
|
|
233
|
+
this.eventEmitter.emit('mock-session-stopping', plugins);
|
|
234
|
+
const session = this.sessions[sessionId];
|
|
235
|
+
delete this.sessions[sessionId];
|
|
236
|
+
await Promise.all(Object.values(plugins).map(plugin => plugin.stop()));
|
|
237
|
+
session.subscriptionServer.close();
|
|
238
|
+
// Close with code 1000 (purpose is complete - no more streaming happening)
|
|
239
|
+
session.streamServer.clients.forEach((client) => {
|
|
240
|
+
client.close(1000);
|
|
241
|
+
});
|
|
242
|
+
session.streamServer.close();
|
|
243
|
+
session.streamServer.emit('close');
|
|
244
|
+
};
|
|
245
|
+
mockSessionRouter.post('/stop', async (req, res) => {
|
|
246
|
+
await stopSession();
|
|
247
|
+
res.json({ success: true });
|
|
248
|
+
});
|
|
249
|
+
// A pair of sockets, representing the 2-way connection between the session & WSs.
|
|
250
|
+
// All websocket messages are written to wsSocket, and then read from sessionSocket
|
|
251
|
+
// All session messages are written to sessionSocket, and then read from wsSocket and sent
|
|
252
|
+
const { socket1: wsSocket, socket2: sessionSocket } = new DuplexPair();
|
|
253
|
+
// This receives a lot of listeners! One channel per matcher, handler & completion checker,
|
|
254
|
+
// and each adds listeners for data/error/finish/etc. That's OK, it's not generally a leak,
|
|
255
|
+
// but maybe 100 would be a bit suspicious (unless you have 30+ active rules).
|
|
256
|
+
sessionSocket.setMaxListeners(100);
|
|
257
|
+
if (this.debug) {
|
|
258
|
+
sessionSocket.on('data', (d) => {
|
|
259
|
+
console.log('Streaming data from WS clients:', d.toString());
|
|
260
|
+
});
|
|
261
|
+
wsSocket.on('data', (d) => {
|
|
262
|
+
console.log('Streaming data to WS clients:', d.toString());
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
const streamServer = new Ws.Server({ noServer: true });
|
|
266
|
+
streamServer.on('connection', (ws) => {
|
|
267
|
+
let newClientStream = Ws.createWebSocketStream(ws, {});
|
|
268
|
+
wsSocket.pipe(newClientStream).pipe(wsSocket, { end: false });
|
|
269
|
+
const unpipe = () => {
|
|
270
|
+
wsSocket.unpipe(newClientStream);
|
|
271
|
+
newClientStream.unpipe(wsSocket);
|
|
272
|
+
};
|
|
273
|
+
newClientStream.on('error', unpipe);
|
|
274
|
+
wsSocket.on('end', unpipe);
|
|
275
|
+
});
|
|
276
|
+
streamServer.on('close', () => {
|
|
277
|
+
wsSocket.end();
|
|
278
|
+
sessionSocket.end();
|
|
279
|
+
});
|
|
280
|
+
// Handle errors by logging & stopping this session
|
|
281
|
+
const onStreamError = (e) => {
|
|
282
|
+
if (!running)
|
|
283
|
+
return; // We don't care about connection issues during shutdown
|
|
284
|
+
console.error("Error in admin server stream, shutting down mock session");
|
|
285
|
+
console.error(e);
|
|
286
|
+
stopSession();
|
|
287
|
+
};
|
|
288
|
+
wsSocket.on('error', onStreamError);
|
|
289
|
+
sessionSocket.on('error', onStreamError);
|
|
290
|
+
const schema = (0, schema_1.makeExecutableSchema)({
|
|
291
|
+
typeDefs: [
|
|
292
|
+
AdminServer.baseSchema,
|
|
293
|
+
...Object.values(plugins).map(plugin => plugin.schema)
|
|
294
|
+
],
|
|
295
|
+
resolvers: [
|
|
296
|
+
this.buildBaseResolvers(sessionId),
|
|
297
|
+
...Object.values(plugins).map(plugin => plugin.buildResolvers(sessionSocket, this.ruleParams))
|
|
298
|
+
]
|
|
299
|
+
});
|
|
300
|
+
const subscriptionServer = subscriptions_transport_ws_1.SubscriptionServer.create({
|
|
301
|
+
schema,
|
|
302
|
+
execute: graphql_1.execute,
|
|
303
|
+
subscribe: graphql_1.subscribe,
|
|
304
|
+
keepAlive: this.webSocketKeepAlive
|
|
305
|
+
}, {
|
|
306
|
+
noServer: true
|
|
307
|
+
});
|
|
308
|
+
mockSessionRouter.use((0, express_1.createHandler)({
|
|
309
|
+
schema,
|
|
310
|
+
// Add console logging of all GQL errors:
|
|
311
|
+
formatError: (error) => {
|
|
312
|
+
console.error(error.stack);
|
|
313
|
+
return error;
|
|
314
|
+
}
|
|
315
|
+
}));
|
|
316
|
+
if (this.webSocketKeepAlive) {
|
|
317
|
+
// If we have a keep-alive set, send the client a ping frame every Xms to
|
|
318
|
+
// try and stop closes (especially by browsers) due to inactivity.
|
|
319
|
+
const webSocketKeepAlive = setInterval(() => {
|
|
320
|
+
[
|
|
321
|
+
...streamServer.clients,
|
|
322
|
+
...subscriptionServer.server.clients
|
|
323
|
+
].forEach((client) => {
|
|
324
|
+
if (client.readyState !== Ws.OPEN)
|
|
325
|
+
return;
|
|
326
|
+
client.ping();
|
|
327
|
+
});
|
|
328
|
+
}, this.webSocketKeepAlive);
|
|
329
|
+
// We use the stream server's shutdown as an easy proxy event for full shutdown:
|
|
330
|
+
streamServer.on('close', () => clearInterval(webSocketKeepAlive));
|
|
331
|
+
}
|
|
332
|
+
this.sessions[sessionId] = {
|
|
333
|
+
sessionPlugins: plugins,
|
|
334
|
+
router: mockSessionRouter,
|
|
335
|
+
streamServer,
|
|
336
|
+
subscriptionServer,
|
|
337
|
+
stop: stopSession
|
|
338
|
+
};
|
|
339
|
+
this.eventEmitter.emit('mock-session-started', plugins, sessionId);
|
|
340
|
+
}
|
|
341
|
+
stop() {
|
|
342
|
+
if (!this.server)
|
|
343
|
+
return Promise.resolve();
|
|
344
|
+
return Promise.all([
|
|
345
|
+
this.server.destroy(),
|
|
346
|
+
].concat(Object.values(this.sessions).map((s) => s.stop()))).then(() => {
|
|
347
|
+
this.server = null;
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
buildBaseResolvers(sessionId) {
|
|
351
|
+
return {
|
|
352
|
+
Query: {
|
|
353
|
+
ruleParameterKeys: () => this.ruleParameterKeys
|
|
354
|
+
},
|
|
355
|
+
Mutation: {
|
|
356
|
+
reset: () => this.resetPluginsForSession(sessionId),
|
|
357
|
+
enableDebug: () => this.enableDebugForSession(sessionId)
|
|
358
|
+
},
|
|
359
|
+
Raw: new graphql_1.GraphQLScalarType({
|
|
360
|
+
name: 'Raw',
|
|
361
|
+
description: 'A raw entity, serialized directly (must be JSON-compatible)',
|
|
362
|
+
serialize: (value) => value,
|
|
363
|
+
parseValue: (input) => input,
|
|
364
|
+
parseLiteral: graphql_utils_1.parseAnyAst
|
|
365
|
+
}),
|
|
366
|
+
// Json exists just for API backward compatibility - all new data should be Raw.
|
|
367
|
+
// Converting to JSON is pointless, since bodies all contain JSON anyway.
|
|
368
|
+
Json: new graphql_1.GraphQLScalarType({
|
|
369
|
+
name: 'Json',
|
|
370
|
+
description: 'A JSON entity, serialized as a simple JSON string',
|
|
371
|
+
serialize: (value) => JSON.stringify(value),
|
|
372
|
+
parseValue: (input) => JSON.parse(input),
|
|
373
|
+
parseLiteral: graphql_utils_1.parseAnyAst
|
|
374
|
+
}),
|
|
375
|
+
Void: new graphql_1.GraphQLScalarType({
|
|
376
|
+
name: 'Void',
|
|
377
|
+
description: 'Nothing at all',
|
|
378
|
+
serialize: (value) => null,
|
|
379
|
+
parseValue: (input) => null,
|
|
380
|
+
parseLiteral: () => { throw new Error('Void literals are not supported'); }
|
|
381
|
+
}),
|
|
382
|
+
Buffer: new graphql_1.GraphQLScalarType({
|
|
383
|
+
name: 'Buffer',
|
|
384
|
+
description: 'A buffer',
|
|
385
|
+
serialize: (value) => {
|
|
386
|
+
return value.toString('base64');
|
|
387
|
+
},
|
|
388
|
+
parseValue: (input) => {
|
|
389
|
+
return Buffer.from(input, 'base64');
|
|
390
|
+
},
|
|
391
|
+
parseLiteral: graphql_utils_1.parseAnyAst
|
|
392
|
+
})
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
;
|
|
396
|
+
resetPluginsForSession(sessionId) {
|
|
397
|
+
return Promise.all(Object.values(this.sessions[sessionId].sessionPlugins).map(plugin => plugin.reset?.()));
|
|
398
|
+
}
|
|
399
|
+
enableDebugForSession(sessionId) {
|
|
400
|
+
return Promise.all(Object.values(this.sessions[sessionId].sessionPlugins).map(plugin => plugin.enableDebug?.()));
|
|
401
|
+
}
|
|
402
|
+
get ruleParameterKeys() {
|
|
403
|
+
return Object.keys(this.ruleParams);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
exports.AdminServer = AdminServer;
|
|
407
|
+
AdminServer.baseSchema = (0, graphql_tag_1.default) `
|
|
408
|
+
type Mutation {
|
|
409
|
+
reset: Void
|
|
410
|
+
enableDebug: Void
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
type Query {
|
|
414
|
+
ruleParameterKeys: [String!]!
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
type Subscription {
|
|
418
|
+
_empty_placeholder_: Void # A placeholder so we can define an empty extendable type
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
scalar Void
|
|
422
|
+
scalar Raw
|
|
423
|
+
scalar Json
|
|
424
|
+
scalar Buffer
|
|
425
|
+
`;
|
|
426
|
+
//# sourceMappingURL=admin-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-server.js","sourceRoot":"","sources":["../../src/admin/admin-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-utils.d.ts","sourceRoot":"","sources":["../../src/admin/graphql-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3D,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,GAAG,CAAC,CAKtD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAiB/C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.astToObject = astToObject;
|
|
4
|
+
exports.parseAnyAst = parseAnyAst;
|
|
5
|
+
const _ = require("lodash");
|
|
6
|
+
const graphql_1 = require("graphql");
|
|
7
|
+
function astToObject(ast) {
|
|
8
|
+
return _.zipObject(ast.fields.map((f) => f.name.value), ast.fields.map((f) => parseAnyAst(f.value)));
|
|
9
|
+
}
|
|
10
|
+
function parseAnyAst(ast) {
|
|
11
|
+
switch (ast.kind) {
|
|
12
|
+
case graphql_1.Kind.OBJECT:
|
|
13
|
+
return astToObject(ast);
|
|
14
|
+
case graphql_1.Kind.LIST:
|
|
15
|
+
return ast.values.map(parseAnyAst);
|
|
16
|
+
case graphql_1.Kind.BOOLEAN:
|
|
17
|
+
case graphql_1.Kind.ENUM:
|
|
18
|
+
case graphql_1.Kind.FLOAT:
|
|
19
|
+
case graphql_1.Kind.INT:
|
|
20
|
+
case graphql_1.Kind.STRING:
|
|
21
|
+
return ast.value;
|
|
22
|
+
case graphql_1.Kind.NULL:
|
|
23
|
+
return null;
|
|
24
|
+
case graphql_1.Kind.VARIABLE:
|
|
25
|
+
throw new Error("No idea what parsing a 'variable' means");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=graphql-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-utils.js","sourceRoot":"","sources":["../../src/admin/graphql-utils.ts"],"names":[],"mappings":";;AAGA,kCAKC;AAED,kCAiBC;AA3BD,4BAA4B;AAC5B,qCAA2D;AAE3D,SAAgB,WAAW,CAAI,GAAoB;IAC/C,OAAW,CAAC,CAAC,SAAS,CAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC9C,CAAC;AACN,CAAC;AAED,SAAgB,WAAW,CAAC,GAAc;IACtC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,cAAI,CAAC,MAAM;YACZ,OAAO,WAAW,CAAM,GAAG,CAAC,CAAC;QACjC,KAAK,cAAI,CAAC,IAAI;YACV,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvC,KAAK,cAAI,CAAC,OAAO,CAAC;QAClB,KAAK,cAAI,CAAC,IAAI,CAAC;QACf,KAAK,cAAI,CAAC,KAAK,CAAC;QAChB,KAAK,cAAI,CAAC,GAAG,CAAC;QACd,KAAK,cAAI,CAAC,MAAM;YACZ,OAAO,GAAG,CAAC,KAAK,CAAC;QACrB,KAAK,cAAI,CAAC,IAAI;YACV,OAAO,IAAI,CAAC;QAChB,KAAK,cAAI,CAAC,QAAQ;YACd,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACnE,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Duplex } from "stream";
|
|
2
|
+
import type { IResolvers } from "@graphql-tools/utils";
|
|
3
|
+
import type { MockttpServer } from "../server/mockttp-server";
|
|
4
|
+
export declare function buildAdminServerModel(mockServer: MockttpServer, stream: Duplex, ruleParameters: {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}): IResolvers;
|
|
7
|
+
//# sourceMappingURL=mockttp-admin-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockttp-admin-model.d.ts","sourceRoot":"","sources":["../../src/admin/mockttp-admin-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuC9D,wBAAgB,qBAAqB,CACjC,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GACvC,UAAU,CAsNZ"}
|