devframe 0.1.16 → 0.1.18
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.
- package/dist/adapters/build.d.mts +1 -1
- package/dist/adapters/build.mjs +13 -6
- package/dist/adapters/cli.d.mts +1 -1
- package/dist/adapters/cli.mjs +6 -6
- package/dist/adapters/embedded.d.mts +1 -1
- package/dist/adapters/kit.d.mts +1 -1
- package/dist/adapters/mcp.d.mts +1 -1
- package/dist/adapters/mcp.mjs +2 -2
- package/dist/adapters/vite.d.mts +1 -1
- package/dist/adapters/vite.mjs +1 -1
- package/dist/client/index.d.mts +5 -4
- package/dist/client/index.mjs +1 -1
- package/dist/{client-4WrEozlH.mjs → client-CsR1_h3o.mjs} +14 -6
- package/dist/constants.d.mts +1 -1
- package/dist/{context-BrePWeyd.mjs → context-xQo1FcxX.mjs} +107 -56
- package/dist/{devtool-OJ3QW0ns.d.mts → devtool-CHT-4_OU.d.mts} +156 -48
- package/dist/helpers/nuxt/runtime/plugin.client.mjs +1 -1
- package/dist/index-Cei8vVcd.d.mts +140 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +1 -1
- package/dist/node/index.d.mts +38 -10
- package/dist/node/index.mjs +4 -4
- package/dist/recipes/open-helpers.d.mts +5 -1
- package/dist/recipes/open-helpers.mjs +2 -2
- package/dist/rpc/index.d.mts +3 -2
- package/dist/rpc/index.mjs +4 -3
- package/dist/rpc/transports/ws-client.d.mts +1 -1
- package/dist/rpc/transports/ws-client.mjs +19 -4
- package/dist/rpc/transports/ws-server.d.mts +1 -1
- package/dist/rpc/transports/ws-server.mjs +19 -4
- package/dist/{rpc-9FNa3Inb.mjs → rpc-hbRk8qtt.mjs} +15 -33
- package/dist/serialization-CWcWE7x7.mjs +112 -0
- package/dist/{src-BoIqXRc9.mjs → src-DIKqQIjp.mjs} +1 -1
- package/dist/{static-dump-CQUC1aIW.mjs → static-dump-DwFfj4U_.mjs} +21 -6
- package/dist/types/index.d.mts +4 -4
- package/dist/{index-DvKDO5H8.d.mts → types-BkyzI9r4.d.mts} +35 -95
- package/dist/utils/events.d.mts +1 -1
- package/dist/utils/shared-state.d.mts +1 -1
- package/dist/utils/shared-state.mjs +1 -1
- package/dist/utils/state.d.mts +1 -1
- package/dist/utils/state.mjs +1 -1
- package/dist/utils/when.d.mts +1 -1
- package/dist/ws-client-CDGmViwt.d.mts +26 -0
- package/dist/{ws-server--IuUAaGi.d.mts → ws-server-Cu8tmZcF.d.mts} +12 -0
- package/package.json +1 -1
- package/dist/ws-client-CklfxUHE.d.mts +0 -17
- /package/dist/{_shared-CU6dE-VX.mjs → _shared-Bxa2_kq7.mjs} +0 -0
- /package/dist/{define-Bb4zh-Dc.mjs → define-CW9gLnyG.mjs} +0 -0
- /package/dist/{immer-HjMAm3b6.mjs → immer-DEqg5kOd.mjs} +0 -0
- /package/dist/{main-DpINGndA.mjs → main-BJD9t8dk.mjs} +0 -0
- /package/dist/{open-BtOOEldu.mjs → open-BMO2_-wC.mjs} +0 -0
- /package/dist/{server-DrBxa6ZV.mjs → server-DkJ2-s0Y.mjs} +0 -0
- /package/dist/{transports-BPUzHhI2.mjs → transports-4bqw6Fqg.mjs} +0 -0
- /package/dist/{when-CGLewRtm.d.mts → when-aBBXAEh5.d.mts} +0 -0
package/dist/node/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as import_dist } from "../human-id-CHS0s28X.mjs";
|
|
2
|
-
import { a as RpcFunctionsHost, c as getInternalContext, d as
|
|
3
|
-
import { n as createH3DevToolsHost, t as collectStaticRpcDump } from "../static-dump-
|
|
4
|
-
import { t as startHttpAndWs } from "../server-
|
|
2
|
+
import { _ as revokeAuthToken, a as RpcFunctionsHost, c as getInternalContext, d as DevToolsDiagnosticsHost, f as DevToolsCommandsHost, g as revokeActiveConnectionsForToken, h as ContextUtils, i as DevToolsMessagesHost, l as internalContextMap, n as DevToolsViewHost, o as createRpcSharedStateServerHost, p as DevToolsAgentHost, r as DevToolsTerminalHost, s as DevToolsDockHost, t as createHostContext, u as createStorage } from "../context-xQo1FcxX.mjs";
|
|
3
|
+
import { n as createH3DevToolsHost, t as collectStaticRpcDump } from "../static-dump-DwFfj4U_.mjs";
|
|
4
|
+
import { t as startHttpAndWs } from "../server-DkJ2-s0Y.mjs";
|
|
5
5
|
import { isIP } from "node:net";
|
|
6
6
|
//#region src/node/auth-state.ts
|
|
7
7
|
let pendingAuth = null;
|
|
@@ -66,4 +66,4 @@ function normalizeHttpServerUrl(host, port) {
|
|
|
66
66
|
return `http://${host === "127.0.0.1" ? "localhost" : isIP(host) === 6 ? `[${host}]` : host}:${port}`;
|
|
67
67
|
}
|
|
68
68
|
//#endregion
|
|
69
|
-
export { ContextUtils, DevToolsAgentHost, DevToolsCommandsHost, DevToolsDockHost,
|
|
69
|
+
export { ContextUtils, DevToolsAgentHost, DevToolsCommandsHost, DevToolsDiagnosticsHost, DevToolsDockHost, DevToolsMessagesHost, DevToolsTerminalHost, DevToolsViewHost, RpcFunctionsHost, abortPendingAuth, collectStaticRpcDump, consumeTempAuthToken, createH3DevToolsHost, createHostContext, createRpcSharedStateServerHost, createStorage, getInternalContext, getPendingAuth, getTempAuthToken, internalContextMap, isObject, normalizeHttpServerUrl, refreshTempAuthToken, revokeActiveConnectionsForToken, revokeAuthToken, setPendingAuth, startHttpAndWs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as RpcFunctionSetupResult, m as RpcFunctionAgentOptions, s as RpcDump, w as Thenable } from "../types-BkyzI9r4.mjs";
|
|
2
2
|
import * as v from "valibot";
|
|
3
3
|
|
|
4
4
|
//#region src/recipes/open-helpers.d.ts
|
|
@@ -29,6 +29,7 @@ declare const openInEditor: {
|
|
|
29
29
|
cacheable?: boolean;
|
|
30
30
|
args: readonly [v.StringSchema<undefined>];
|
|
31
31
|
returns: v.VoidSchema<undefined>;
|
|
32
|
+
jsonSerializable?: boolean;
|
|
32
33
|
agent?: RpcFunctionAgentOptions;
|
|
33
34
|
setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
|
|
34
35
|
handler?: ((args_0: string) => void) | undefined;
|
|
@@ -55,6 +56,7 @@ declare const openInFinder: {
|
|
|
55
56
|
cacheable?: boolean;
|
|
56
57
|
args: readonly [v.StringSchema<undefined>];
|
|
57
58
|
returns: v.VoidSchema<undefined>;
|
|
59
|
+
jsonSerializable?: boolean;
|
|
58
60
|
agent?: RpcFunctionAgentOptions;
|
|
59
61
|
setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
|
|
60
62
|
handler?: ((args_0: string) => void) | undefined;
|
|
@@ -79,6 +81,7 @@ declare const openHelpers: readonly [{
|
|
|
79
81
|
cacheable?: boolean;
|
|
80
82
|
args: readonly [v.StringSchema<undefined>];
|
|
81
83
|
returns: v.VoidSchema<undefined>;
|
|
84
|
+
jsonSerializable?: boolean;
|
|
82
85
|
agent?: RpcFunctionAgentOptions;
|
|
83
86
|
setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
|
|
84
87
|
handler?: ((args_0: string) => void) | undefined;
|
|
@@ -92,6 +95,7 @@ declare const openHelpers: readonly [{
|
|
|
92
95
|
cacheable?: boolean;
|
|
93
96
|
args: readonly [v.StringSchema<undefined>];
|
|
94
97
|
returns: v.VoidSchema<undefined>;
|
|
98
|
+
jsonSerializable?: boolean;
|
|
95
99
|
agent?: RpcFunctionAgentOptions;
|
|
96
100
|
setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
|
|
97
101
|
handler?: ((args_0: string) => void) | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as defineRpcFunction } from "../define-
|
|
1
|
+
import { n as defineRpcFunction } from "../define-CW9gLnyG.mjs";
|
|
2
2
|
import * as v from "valibot";
|
|
3
3
|
//#region src/recipes/open-helpers.ts
|
|
4
4
|
/**
|
|
@@ -50,7 +50,7 @@ const openInFinder = defineRpcFunction({
|
|
|
50
50
|
args: [v.string()],
|
|
51
51
|
returns: v.void(),
|
|
52
52
|
async handler(path) {
|
|
53
|
-
const { default: open } = await import("../open-
|
|
53
|
+
const { default: open } = await import("../open-BMO2_-wC.mjs");
|
|
54
54
|
await open(path);
|
|
55
55
|
}
|
|
56
56
|
});
|
package/dist/rpc/index.d.mts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { _ as RpcCacheManager, a as structuredCloneDeserialize, c as structuredCloneStringify, d as createClientFromDump, f as dumpFunctions, g as RpcFunctionsCollectorBase, h as defineRpcFunction, i as strictJsonStringify, l as getRpcHandler, m as createDefineWrapperWithContext, n as validateDefinitions, o as structuredCloneParse, p as getDefinitionsWithDumps, r as STRUCTURED_CLONE_PREFIX, s as structuredCloneSerialize, t as validateDefinition, u as getRpcResolvedSetupResult, v as RpcCacheOptions } from "../index-Cei8vVcd.mjs";
|
|
2
|
+
import { C as RpcReturnSchema, S as RpcFunctionsCollector, _ as RpcFunctionDefinitionAnyWithContext, a as RpcDefinitionsFilter, b as RpcFunctionSetupResult, c as RpcDumpClientOptions, d as RpcDumpGetter, f as RpcDumpRecord, g as RpcFunctionDefinitionAny, h as RpcFunctionDefinition, i as RpcArgsSchema, l as RpcDumpCollectionOptions, m as RpcFunctionAgentOptions, n as BirpcReturn, o as RpcDefinitionsToFunctions, p as RpcDumpStore, r as EntriesToObject, s as RpcDump, t as BirpcFn, u as RpcDumpDefinition, v as RpcFunctionDefinitionBase, w as Thenable, x as RpcFunctionType, y as RpcFunctionDefinitionToFunction } from "../types-BkyzI9r4.mjs";
|
|
3
|
+
export { BirpcFn, BirpcReturn, EntriesToObject, RpcArgsSchema, RpcCacheManager, RpcCacheOptions, RpcDefinitionsFilter, RpcDefinitionsToFunctions, RpcDump, RpcDumpClientOptions, RpcDumpCollectionOptions, RpcDumpDefinition, RpcDumpGetter, RpcDumpRecord, RpcDumpStore, RpcFunctionAgentOptions, RpcFunctionDefinition, RpcFunctionDefinitionAny, RpcFunctionDefinitionAnyWithContext, RpcFunctionDefinitionBase, RpcFunctionDefinitionToFunction, RpcFunctionSetupResult, RpcFunctionType, RpcFunctionsCollector, RpcFunctionsCollectorBase, RpcReturnSchema, STRUCTURED_CLONE_PREFIX, Thenable, createClientFromDump, createDefineWrapperWithContext, defineRpcFunction, dumpFunctions, getDefinitionsWithDumps, getRpcHandler, getRpcResolvedSetupResult, strictJsonStringify, structuredCloneDeserialize, structuredCloneParse, structuredCloneSerialize, structuredCloneStringify, validateDefinition, validateDefinitions };
|
package/dist/rpc/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { a as validateDefinitions, c as getRpcResolvedSetupResult, i as validateDefinition, l as RpcCacheManager, n as dumpFunctions, o as RpcFunctionsCollectorBase, r as getDefinitionsWithDumps, s as getRpcHandler, t as createClientFromDump } from "../rpc-
|
|
2
|
-
import { n as
|
|
3
|
-
|
|
1
|
+
import { a as validateDefinitions, c as getRpcResolvedSetupResult, i as validateDefinition, l as RpcCacheManager, n as dumpFunctions, o as RpcFunctionsCollectorBase, r as getDefinitionsWithDumps, s as getRpcHandler, t as createClientFromDump } from "../rpc-hbRk8qtt.mjs";
|
|
2
|
+
import { a as structuredCloneSerialize, i as structuredCloneParse, n as strictJsonStringify, o as structuredCloneStringify, r as structuredCloneDeserialize, t as STRUCTURED_CLONE_PREFIX } from "../serialization-CWcWE7x7.mjs";
|
|
3
|
+
import { n as defineRpcFunction, t as createDefineWrapperWithContext } from "../define-CW9gLnyG.mjs";
|
|
4
|
+
export { RpcCacheManager, RpcFunctionsCollectorBase, STRUCTURED_CLONE_PREFIX, createClientFromDump, createDefineWrapperWithContext, defineRpcFunction, dumpFunctions, getDefinitionsWithDumps, getRpcHandler, getRpcResolvedSetupResult, strictJsonStringify, structuredCloneDeserialize, structuredCloneParse, structuredCloneSerialize, structuredCloneStringify, validateDefinition, validateDefinitions };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createWsRpcChannel, t as WsRpcChannelOptions } from "../../ws-client-
|
|
1
|
+
import { n as createWsRpcChannel, t as WsRpcChannelOptions } from "../../ws-client-CDGmViwt.mjs";
|
|
2
2
|
export { WsRpcChannelOptions, createWsRpcChannel };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as structuredCloneParse, n as strictJsonStringify, o as structuredCloneStringify } from "../../serialization-CWcWE7x7.mjs";
|
|
2
2
|
//#region src/rpc/transports/ws-client.ts
|
|
3
3
|
function NOOP() {}
|
|
4
|
+
const EMPTY_DEFS = /* @__PURE__ */ new Map();
|
|
4
5
|
/**
|
|
5
6
|
* Build a birpc `ChannelOptions` object backed by a browser `WebSocket`.
|
|
6
7
|
* Pass the result straight to `createRpcClient`'s `channel` option.
|
|
@@ -9,7 +10,7 @@ function createWsRpcChannel(options) {
|
|
|
9
10
|
let url = options.url;
|
|
10
11
|
if (options.authToken) url = `${url}?vite_devtools_auth_token=${encodeURIComponent(options.authToken)}`;
|
|
11
12
|
const ws = new WebSocket(url);
|
|
12
|
-
const { onConnected = NOOP, onError = NOOP, onDisconnected = NOOP } = options;
|
|
13
|
+
const { onConnected = NOOP, onError = NOOP, onDisconnected = NOOP, definitions = EMPTY_DEFS } = options;
|
|
13
14
|
ws.addEventListener("open", (e) => {
|
|
14
15
|
onConnected(e);
|
|
15
16
|
});
|
|
@@ -19,6 +20,7 @@ function createWsRpcChannel(options) {
|
|
|
19
20
|
ws.addEventListener("close", (e) => {
|
|
20
21
|
onDisconnected(e);
|
|
21
22
|
});
|
|
23
|
+
const pendingRequestMethods = /* @__PURE__ */ new Map();
|
|
22
24
|
return {
|
|
23
25
|
on: (handler) => {
|
|
24
26
|
ws.addEventListener("message", (e) => {
|
|
@@ -35,8 +37,21 @@ function createWsRpcChannel(options) {
|
|
|
35
37
|
ws.addEventListener("open", handler);
|
|
36
38
|
}
|
|
37
39
|
},
|
|
38
|
-
serialize:
|
|
39
|
-
|
|
40
|
+
serialize: (msg) => {
|
|
41
|
+
let method;
|
|
42
|
+
if (msg.t === "q") method = msg.m;
|
|
43
|
+
else {
|
|
44
|
+
method = pendingRequestMethods.get(msg.i);
|
|
45
|
+
pendingRequestMethods.delete(msg.i);
|
|
46
|
+
}
|
|
47
|
+
if (!!method && definitions.get(method)?.jsonSerializable === true) return strictJsonStringify(msg, method ?? "");
|
|
48
|
+
return `s:${structuredCloneStringify(msg)}`;
|
|
49
|
+
},
|
|
50
|
+
deserialize: (raw) => {
|
|
51
|
+
const msg = raw.startsWith("s:") ? structuredCloneParse(raw.slice(2)) : JSON.parse(raw);
|
|
52
|
+
if (msg.t === "q" && msg.i && msg.m) pendingRequestMethods.set(msg.i, msg.m);
|
|
53
|
+
return msg;
|
|
54
|
+
}
|
|
40
55
|
};
|
|
41
56
|
}
|
|
42
57
|
//#endregion
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as WsRpcTransportOptions, r as attachWsRpcTransport, t as DevToolsNodeRpcSessionMeta } from "../../ws-server
|
|
1
|
+
import { n as WsRpcTransportOptions, r as attachWsRpcTransport, t as DevToolsNodeRpcSessionMeta } from "../../ws-server-Cu8tmZcF.mjs";
|
|
2
2
|
export { DevToolsNodeRpcSessionMeta, WsRpcTransportOptions, attachWsRpcTransport };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as structuredCloneParse, n as strictJsonStringify, o as structuredCloneStringify } from "../../serialization-CWcWE7x7.mjs";
|
|
2
2
|
import { createServer } from "node:https";
|
|
3
3
|
import { WebSocketServer } from "ws";
|
|
4
4
|
//#region src/rpc/transports/ws-server.ts
|
|
5
5
|
let sessionId = 0;
|
|
6
|
+
const EMPTY_DEFS = /* @__PURE__ */ new Map();
|
|
6
7
|
function NOOP() {}
|
|
7
8
|
/**
|
|
8
9
|
* Attach a WebSocket transport to an existing RPC group. Either pass an
|
|
@@ -10,7 +11,7 @@ function NOOP() {}
|
|
|
10
11
|
* `port` / `host` / `https`.
|
|
11
12
|
*/
|
|
12
13
|
function attachWsRpcTransport(rpcGroup, options = {}) {
|
|
13
|
-
const { wss: externalWss, port, host = "localhost", https, onConnected = NOOP, onDisconnected = NOOP,
|
|
14
|
+
const { wss: externalWss, port, host = "localhost", https, onConnected = NOOP, onDisconnected = NOOP, definitions = EMPTY_DEFS, serialize: serializeOverride, deserialize: deserializeOverride } = options;
|
|
14
15
|
let wss;
|
|
15
16
|
if (externalWss) wss = externalWss;
|
|
16
17
|
else if (https) {
|
|
@@ -27,6 +28,7 @@ function attachWsRpcTransport(rpcGroup, options = {}) {
|
|
|
27
28
|
ws,
|
|
28
29
|
subscribedStates: /* @__PURE__ */ new Set()
|
|
29
30
|
};
|
|
31
|
+
const pendingRequestMethods = /* @__PURE__ */ new Map();
|
|
30
32
|
const channel = {
|
|
31
33
|
post: (data) => {
|
|
32
34
|
ws.send(data);
|
|
@@ -36,8 +38,21 @@ function attachWsRpcTransport(rpcGroup, options = {}) {
|
|
|
36
38
|
fn(data.toString());
|
|
37
39
|
});
|
|
38
40
|
},
|
|
39
|
-
serialize
|
|
40
|
-
|
|
41
|
+
serialize: serializeOverride ?? ((msg) => {
|
|
42
|
+
let method;
|
|
43
|
+
if (msg.t === "q") method = msg.m;
|
|
44
|
+
else {
|
|
45
|
+
method = pendingRequestMethods.get(msg.i);
|
|
46
|
+
pendingRequestMethods.delete(msg.i);
|
|
47
|
+
}
|
|
48
|
+
if (!!method && definitions.get(method)?.jsonSerializable === true) return strictJsonStringify(msg, method ?? "");
|
|
49
|
+
return `s:${structuredCloneStringify(msg)}`;
|
|
50
|
+
}),
|
|
51
|
+
deserialize: deserializeOverride ?? ((raw) => {
|
|
52
|
+
const msg = raw.startsWith("s:") ? structuredCloneParse(raw.slice(2)) : JSON.parse(raw);
|
|
53
|
+
if (msg.t === "q" && msg.i && msg.m) pendingRequestMethods.set(msg.i, msg.m);
|
|
54
|
+
return msg;
|
|
55
|
+
}),
|
|
41
56
|
meta
|
|
42
57
|
};
|
|
43
58
|
rpcGroup.updateChannels((channels) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { c as logger } from "./serialization-CWcWE7x7.mjs";
|
|
1
2
|
import { hash } from "ohash";
|
|
2
|
-
import { consoleReporter, createLogger, defineDiagnostics, plainFormatter } from "logs-sdk";
|
|
3
3
|
//#region src/rpc/cache.ts
|
|
4
4
|
/**
|
|
5
5
|
* @experimental API is expected to change.
|
|
@@ -35,29 +35,6 @@ var RpcCacheManager = class {
|
|
|
35
35
|
else this.cacheMap.clear();
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
const logger = createLogger({
|
|
39
|
-
diagnostics: [defineDiagnostics({
|
|
40
|
-
docsBase: "https://devtools.vite.dev/errors",
|
|
41
|
-
codes: {
|
|
42
|
-
DTK0001: {
|
|
43
|
-
message: (p) => `RPC function "${p.name}" is already registered`,
|
|
44
|
-
hint: "Use the `force` parameter to overwrite an existing registration."
|
|
45
|
-
},
|
|
46
|
-
DTK0002: { message: (p) => `RPC function "${p.name}" is not registered. Use register() to add new functions.` },
|
|
47
|
-
DTK0003: { message: (p) => `RPC function "${p.name}" is not registered` },
|
|
48
|
-
DTK0004: { message: (p) => `Either handler or setup function must be provided for RPC function "${p.name}"` },
|
|
49
|
-
DTK0005: { message: (p) => `Function "${p.name}" not found in dump store` },
|
|
50
|
-
DTK0006: { message: (p) => `No dump match for "${p.name}" with args: ${p.args}` },
|
|
51
|
-
DTK0007: { message: (p) => `Function "${p.name}" with type "${p.type}" cannot have dump configuration. Only "static" and "query" types support dumps.` },
|
|
52
|
-
DTK0008: {
|
|
53
|
-
message: (p) => `Function "${p.name}" with type "${p.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,
|
|
54
|
-
hint: "Remove `snapshot: true`, or change the function type to `query`."
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
})],
|
|
58
|
-
formatter: plainFormatter,
|
|
59
|
-
reporters: consoleReporter
|
|
60
|
-
});
|
|
61
38
|
//#endregion
|
|
62
39
|
//#region src/rpc/handler.ts
|
|
63
40
|
async function getRpcResolvedSetupResult(definition, context) {
|
|
@@ -73,7 +50,7 @@ async function getRpcResolvedSetupResult(definition, context) {
|
|
|
73
50
|
async function getRpcHandler(definition, context) {
|
|
74
51
|
if (definition.handler) return definition.handler;
|
|
75
52
|
const result = await getRpcResolvedSetupResult(definition, context);
|
|
76
|
-
if (!result.handler) throw logger.
|
|
53
|
+
if (!result.handler) throw logger.DF0024({ name: definition.name }).throw();
|
|
77
54
|
return result.handler;
|
|
78
55
|
}
|
|
79
56
|
//#endregion
|
|
@@ -108,12 +85,14 @@ var RpcFunctionsCollectorBase = class {
|
|
|
108
85
|
});
|
|
109
86
|
}
|
|
110
87
|
register(fn, force = false) {
|
|
111
|
-
if (this.definitions.has(fn.name) && !force) throw logger.
|
|
88
|
+
if (this.definitions.has(fn.name) && !force) throw logger.DF0021({ name: fn.name }).throw();
|
|
89
|
+
assertAgentJsonSerializable(fn);
|
|
112
90
|
this.definitions.set(fn.name, fn);
|
|
113
91
|
this._onChanged.forEach((cb) => cb(fn.name));
|
|
114
92
|
}
|
|
115
93
|
update(fn, force = false) {
|
|
116
|
-
if (!this.definitions.has(fn.name) && !force) throw logger.
|
|
94
|
+
if (!this.definitions.has(fn.name) && !force) throw logger.DF0022({ name: fn.name }).throw();
|
|
95
|
+
assertAgentJsonSerializable(fn);
|
|
117
96
|
this.definitions.set(fn.name, fn);
|
|
118
97
|
this._onChanged.forEach((cb) => cb(fn.name));
|
|
119
98
|
}
|
|
@@ -129,7 +108,7 @@ var RpcFunctionsCollectorBase = class {
|
|
|
129
108
|
}
|
|
130
109
|
getSchema(name) {
|
|
131
110
|
const definition = this.definitions.get(name);
|
|
132
|
-
if (!definition) throw logger.
|
|
111
|
+
if (!definition) throw logger.DF0023({ name: String(name) }).throw();
|
|
133
112
|
return {
|
|
134
113
|
args: definition.args,
|
|
135
114
|
returns: definition.returns
|
|
@@ -145,6 +124,9 @@ var RpcFunctionsCollectorBase = class {
|
|
|
145
124
|
return Array.from(this.definitions.keys());
|
|
146
125
|
}
|
|
147
126
|
};
|
|
127
|
+
function assertAgentJsonSerializable(fn) {
|
|
128
|
+
if (fn.agent && fn.jsonSerializable !== true) throw logger.DF0019({ name: fn.name }).throw();
|
|
129
|
+
}
|
|
148
130
|
//#endregion
|
|
149
131
|
//#region ../../../node_modules/.pnpm/yocto-queue@1.2.2/node_modules/yocto-queue/index.js
|
|
150
132
|
var Node = class {
|
|
@@ -283,11 +265,11 @@ function validateConcurrency(concurrency) {
|
|
|
283
265
|
function validateDefinitions(definitions) {
|
|
284
266
|
for (const definition of definitions) {
|
|
285
267
|
const type = definition.type || "query";
|
|
286
|
-
if ((type === "action" || type === "event") && definition.dump) throw logger.
|
|
268
|
+
if ((type === "action" || type === "event") && definition.dump) throw logger.DF0027({
|
|
287
269
|
name: definition.name,
|
|
288
270
|
type
|
|
289
271
|
}).throw();
|
|
290
|
-
if (definition.snapshot && type !== "query") throw logger.
|
|
272
|
+
if (definition.snapshot && type !== "query") throw logger.DF0028({
|
|
291
273
|
name: definition.name,
|
|
292
274
|
type
|
|
293
275
|
}).throw();
|
|
@@ -332,7 +314,7 @@ async function dumpFunctions(definitions, context, options = {}) {
|
|
|
332
314
|
if (definition.type === "event" || definition.type === "action") return;
|
|
333
315
|
const setupResult = definition.setup ? await Promise.resolve(definition.setup(context)) : {};
|
|
334
316
|
const handler = setupResult.handler || definition.handler;
|
|
335
|
-
if (!handler) throw logger.
|
|
317
|
+
if (!handler) throw logger.DF0024({ name: definition.name }).throw();
|
|
336
318
|
let dump = setupResult.dump ?? definition.dump;
|
|
337
319
|
if (!dump && definition.type === "static") dump = { inputs: [[]] };
|
|
338
320
|
if (!dump && definition.snapshot) dump = async (_ctx, h) => {
|
|
@@ -420,7 +402,7 @@ function createClientFromDump(store, options = {}) {
|
|
|
420
402
|
const { onMiss } = options;
|
|
421
403
|
return new Proxy({}, {
|
|
422
404
|
get(_, functionName) {
|
|
423
|
-
if (!(functionName in store.definitions)) throw logger.
|
|
405
|
+
if (!(functionName in store.definitions)) throw logger.DF0025({ name: functionName }).throw();
|
|
424
406
|
return async (...args) => {
|
|
425
407
|
const recordKey = getDumpRecordKey(functionName, args);
|
|
426
408
|
const recordOrGetter = store.records[recordKey];
|
|
@@ -442,7 +424,7 @@ function createClientFromDump(store, options = {}) {
|
|
|
442
424
|
if (fallbackRecord && typeof fallbackRecord.output === "function") return await fallbackRecord.output();
|
|
443
425
|
if (fallbackRecord) return fallbackRecord.output;
|
|
444
426
|
}
|
|
445
|
-
throw logger.
|
|
427
|
+
throw logger.DF0026({
|
|
446
428
|
name: functionName,
|
|
447
429
|
args: JSON.stringify(args)
|
|
448
430
|
}).throw();
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { consoleReporter, createLogger, defineDiagnostics, plainFormatter } from "logs-sdk";
|
|
2
|
+
import { deserialize as structuredCloneDeserialize, parse as structuredCloneParse, serialize as structuredCloneSerialize, stringify as structuredCloneStringify } from "structured-clone-es";
|
|
3
|
+
//#region src/rpc/diagnostics.ts
|
|
4
|
+
const diagnostics = defineDiagnostics({
|
|
5
|
+
docsBase: "https://devtools.vite.dev/devframe/errors",
|
|
6
|
+
codes: {
|
|
7
|
+
DF0019: {
|
|
8
|
+
message: (p) => `RPC function "${p.name}" has \`agent\` set but \`jsonSerializable\` is not \`true\` — MCP requires JSON-serializable data.`,
|
|
9
|
+
hint: "Set `jsonSerializable: true` if the payload is JSON-safe, or remove `agent` to keep it RPC-only."
|
|
10
|
+
},
|
|
11
|
+
DF0020: {
|
|
12
|
+
message: (p) => `RPC function "${p.name}" declares \`jsonSerializable: true\` but the value at "${p.path}" is a ${p.type}.`,
|
|
13
|
+
hint: "Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."
|
|
14
|
+
},
|
|
15
|
+
DF0021: {
|
|
16
|
+
message: (p) => `RPC function "${p.name}" is already registered`,
|
|
17
|
+
hint: "Use the `force` parameter to overwrite an existing registration."
|
|
18
|
+
},
|
|
19
|
+
DF0022: { message: (p) => `RPC function "${p.name}" is not registered. Use register() to add new functions.` },
|
|
20
|
+
DF0023: { message: (p) => `RPC function "${p.name}" is not registered` },
|
|
21
|
+
DF0024: { message: (p) => `Either handler or setup function must be provided for RPC function "${p.name}"` },
|
|
22
|
+
DF0025: { message: (p) => `Function "${p.name}" not found in dump store` },
|
|
23
|
+
DF0026: { message: (p) => `No dump match for "${p.name}" with args: ${p.args}` },
|
|
24
|
+
DF0027: { message: (p) => `Function "${p.name}" with type "${p.type}" cannot have dump configuration. Only "static" and "query" types support dumps.` },
|
|
25
|
+
DF0028: {
|
|
26
|
+
message: (p) => `Function "${p.name}" with type "${p.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,
|
|
27
|
+
hint: "Remove `snapshot: true`, or change the function type to `query`."
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
const logger = createLogger({
|
|
32
|
+
diagnostics: [diagnostics],
|
|
33
|
+
formatter: plainFormatter,
|
|
34
|
+
reporters: consoleReporter
|
|
35
|
+
});
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/rpc/serialization.ts
|
|
38
|
+
/**
|
|
39
|
+
* Wire format used by the WS RPC transport.
|
|
40
|
+
*
|
|
41
|
+
* - **JSON (default, unprefixed):** payload is plain JSON text. Used when
|
|
42
|
+
* the dispatched method is declared `jsonSerializable: true`. Encoded
|
|
43
|
+
* via {@link strictJsonStringify} (rejects non-JSON values), decoded
|
|
44
|
+
* via `JSON.parse`.
|
|
45
|
+
* - **Structured-clone (`s:` prefix):** payload is `s:` followed by
|
|
46
|
+
* `structured-clone-es` text. Used when the method is declared
|
|
47
|
+
* `jsonSerializable: false` (or omitted, the default). Round-trips
|
|
48
|
+
* `Map`, `Set`, `Date`, `BigInt`, cycles, and class instances.
|
|
49
|
+
*
|
|
50
|
+
* birpc envelopes always start with `{`, so a leading byte that is not
|
|
51
|
+
* `s` is unambiguously JSON. Each direction independently chooses its
|
|
52
|
+
* encoding from local definitions — request and response are not
|
|
53
|
+
* coupled by a mirror rule.
|
|
54
|
+
*/
|
|
55
|
+
const STRUCTURED_CLONE_PREFIX = "s:";
|
|
56
|
+
/**
|
|
57
|
+
* `JSON.stringify` with a single-pass strict replacer.
|
|
58
|
+
*
|
|
59
|
+
* Throws `DF0020` synchronously when the value contains a type JSON
|
|
60
|
+
* cannot round-trip losslessly: `Map`, `Set`, `Date`, `BigInt`, class
|
|
61
|
+
* instances, or `undefined` inside an array (silently becomes `null`).
|
|
62
|
+
*
|
|
63
|
+
* Native pass-throughs (no extra work needed):
|
|
64
|
+
* - circular references — `JSON.stringify` raises `TypeError`.
|
|
65
|
+
* - `BigInt` at top level — caught here for a friendlier error path.
|
|
66
|
+
*
|
|
67
|
+
* Lenient cases (allowed without throwing):
|
|
68
|
+
* - `undefined` as an object property — legitimate optional field;
|
|
69
|
+
* JSON.stringify just omits it.
|
|
70
|
+
* - `undefined` at the root — legitimate "action returned nothing".
|
|
71
|
+
* - `Symbol` / `Function` values — semantically "drop me" in JSON.
|
|
72
|
+
*
|
|
73
|
+
* `fnName` is used only for the diagnostic message — pass the RPC
|
|
74
|
+
* function name when calling from a wire serializer / dump writer so
|
|
75
|
+
* the error points at the offending function.
|
|
76
|
+
*/
|
|
77
|
+
function strictJsonStringify(value, fnName = "") {
|
|
78
|
+
return JSON.stringify(value, function strictReplacer(key, val) {
|
|
79
|
+
const holder = this;
|
|
80
|
+
const original = holder != null ? holder[key] : val;
|
|
81
|
+
if (original === void 0) {
|
|
82
|
+
if (Array.isArray(holder)) throw nonJsonAt(fnName, "undefined", holder, key);
|
|
83
|
+
return val;
|
|
84
|
+
}
|
|
85
|
+
if (original === null) return val;
|
|
86
|
+
if (typeof original === "bigint") throw nonJsonAt(fnName, "BigInt", holder, key);
|
|
87
|
+
if (typeof original === "object") {
|
|
88
|
+
if (original instanceof Map) throw nonJsonAt(fnName, "Map", holder, key);
|
|
89
|
+
if (original instanceof Set) throw nonJsonAt(fnName, "Set", holder, key);
|
|
90
|
+
if (original instanceof Date) throw nonJsonAt(fnName, "Date", holder, key);
|
|
91
|
+
if (Array.isArray(original)) return val;
|
|
92
|
+
const proto = Object.getPrototypeOf(original);
|
|
93
|
+
if (proto !== null && proto !== Object.prototype) throw nonJsonAt(fnName, original.constructor?.name ?? "class instance", holder, key);
|
|
94
|
+
}
|
|
95
|
+
return val;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function nonJsonAt(fnName, type, parent, key) {
|
|
99
|
+
const path = formatPath(parent, key);
|
|
100
|
+
return logger.DF0020({
|
|
101
|
+
name: fnName || "<anonymous>",
|
|
102
|
+
type,
|
|
103
|
+
path
|
|
104
|
+
}).throw();
|
|
105
|
+
}
|
|
106
|
+
function formatPath(parent, key) {
|
|
107
|
+
if (Array.isArray(parent)) return `[${key}]`;
|
|
108
|
+
if (key === "") return "<root>";
|
|
109
|
+
return key;
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
export { structuredCloneSerialize as a, logger as c, structuredCloneParse as i, strictJsonStringify as n, structuredCloneStringify as o, structuredCloneDeserialize as r, diagnostics as s, STRUCTURED_CLONE_PREFIX as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as dumpFunctions, s as getRpcHandler } from "./rpc-
|
|
1
|
+
import { n as dumpFunctions, s as getRpcHandler } from "./rpc-hbRk8qtt.mjs";
|
|
2
2
|
import { DEVTOOLS_RPC_DUMP_DIRNAME } from "./constants.mjs";
|
|
3
3
|
//#region src/node/host-h3.ts
|
|
4
4
|
/**
|
|
@@ -38,13 +38,19 @@ async function collectStaticRpcDump(definitions, context) {
|
|
|
38
38
|
const files = {};
|
|
39
39
|
for (const definition of definitions) {
|
|
40
40
|
const type = definition.type ?? "query";
|
|
41
|
+
const serialization = definition.jsonSerializable === true ? "json" : "structured-clone";
|
|
41
42
|
if (type === "static") {
|
|
42
43
|
const handler = await getRpcHandler(definition, context);
|
|
43
44
|
const path = makeStaticPath(definition.name);
|
|
44
|
-
files[path] = {
|
|
45
|
+
files[path] = {
|
|
46
|
+
serialization,
|
|
47
|
+
fnName: definition.name,
|
|
48
|
+
data: { output: await Promise.resolve(handler()) }
|
|
49
|
+
};
|
|
45
50
|
manifest[definition.name] = {
|
|
46
51
|
type: "static",
|
|
47
|
-
path
|
|
52
|
+
path,
|
|
53
|
+
serialization
|
|
48
54
|
};
|
|
49
55
|
continue;
|
|
50
56
|
}
|
|
@@ -53,7 +59,8 @@ async function collectStaticRpcDump(definitions, context) {
|
|
|
53
59
|
if (!(definition.name in store.definitions)) continue;
|
|
54
60
|
const queryEntry = {
|
|
55
61
|
type: "query",
|
|
56
|
-
records: {}
|
|
62
|
+
records: {},
|
|
63
|
+
serialization
|
|
57
64
|
};
|
|
58
65
|
const prefix = `${definition.name}---`;
|
|
59
66
|
for (const [recordKey, recordOrGetter] of Object.entries(store.records)) {
|
|
@@ -62,11 +69,19 @@ async function collectStaticRpcDump(definitions, context) {
|
|
|
62
69
|
const record = await resolveRecord(recordOrGetter);
|
|
63
70
|
if (key === "fallback") {
|
|
64
71
|
const path = makeQueryFallbackPath(definition.name);
|
|
65
|
-
files[path] =
|
|
72
|
+
files[path] = {
|
|
73
|
+
serialization,
|
|
74
|
+
fnName: definition.name,
|
|
75
|
+
data: record
|
|
76
|
+
};
|
|
66
77
|
queryEntry.fallback = path;
|
|
67
78
|
} else {
|
|
68
79
|
const path = makeQueryRecordPath(definition.name, key);
|
|
69
|
-
files[path] =
|
|
80
|
+
files[path] = {
|
|
81
|
+
serialization,
|
|
82
|
+
fnName: definition.name,
|
|
83
|
+
data: record
|
|
84
|
+
};
|
|
70
85
|
queryEntry.records[key] = path;
|
|
71
86
|
}
|
|
72
87
|
}
|
package/dist/types/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as DevToolsLogsHost, A as DevToolsViewHost, At as
|
|
2
|
-
import {
|
|
3
|
-
import { t as DevToolsNodeRpcSessionMeta } from "../ws-server
|
|
4
|
-
export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, ClientScriptEntry, ConnectionMeta, DevToolsAgentHost, DevToolsAgentHostEvents, DevToolsCapabilities, DevToolsChildProcessExecuteOptions, DevToolsChildProcessTerminalSession, DevToolsClientCommand, DevToolsCommandBase, DevToolsCommandEntry, DevToolsCommandHandle, DevToolsCommandKeybinding, DevToolsCommandShortcutOverrides, DevToolsCommandsHost, DevToolsCommandsHostEvents, DevToolsDockEntriesGrouped, DevToolsDockEntry, DevToolsDockEntryBase, DevToolsDockEntryCategory, DevToolsDockEntryIcon, DevToolsDockHost, DevToolsDockUserEntry, DevToolsDocksUserSettings, DevToolsHost, DevToolsLogElementPosition, DevToolsLogEntry, DevToolsLogEntryFrom, DevToolsLogEntryInput, DevToolsLogFilePosition, DevToolsLogHandle, DevToolsLogLevel, DevToolsLogsClient, DevToolsLogsHost, DevToolsNodeContext, DevToolsNodeRpcSession, DevToolsNodeRpcSessionMeta, DevToolsNodeUtils, DevToolsRpcClientFunctions, DevToolsRpcServerFunctions, DevToolsRpcSharedStates, DevToolsServerCommandEntry, DevToolsServerCommandInput, DevToolsTerminalHost, DevToolsTerminalSession, DevToolsTerminalSessionBase, DevToolsTerminalSessionStreamChunkEvent, DevToolsTerminalStatus, DevToolsViewAction, DevToolsViewBuiltin, DevToolsViewCustomRender, DevToolsViewHost, DevToolsViewIframe, DevToolsViewJsonRender, DevToolsViewLauncher, DevToolsViewLauncherStatus, DevtoolBrowserContext, DevtoolCliOptions, DevtoolDefinition, DevtoolDeploymentKind, DevtoolRuntime, DevtoolSetupInfo, DevtoolSpaOptions, EntriesToObject, EventEmitter, EventUnsubscribe, EventsMap, JsonRenderElement, JsonRenderSpec, JsonRenderer, PartialWithoutId, RemoteConnectionInfo, RemoteDockOptions, RpcBroadcastOptions, RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, Thenable, defineDevtool };
|
|
1
|
+
import { $ as DevToolsLogsHost, $t as EventsMap, A as DevToolsViewHost, At as DevToolsDiagnosticsHost, B as DevToolsTerminalStatus, Bt as DevToolsServerCommandEntry, Ct as DevToolsViewLauncher, Dt as JsonRenderer, Et as JsonRenderSpec, F as DevToolsChildProcessTerminalSession, Ft as DevToolsCommandHandle, G as DevToolsLogElementPosition, Gt as AgentResourceContent, H as DevToolsRpcClientFunctions, Ht as AgentHandle, I as DevToolsTerminalHost, It as DevToolsCommandKeybinding, J as DevToolsLogEntryInput, Jt as AgentToolInput, K as DevToolsLogEntry, Kt as AgentResourceInput, L as DevToolsTerminalSession, Lt as DevToolsCommandShortcutOverrides, M as PartialWithoutId, Mt as DevToolsClientCommand, N as Thenable, Nt as DevToolsCommandBase, Ot as RemoteDockOptions, P as DevToolsChildProcessExecuteOptions, Pt as DevToolsCommandEntry, Q as DevToolsLogsClient, Qt as EventUnsubscribe, R as DevToolsTerminalSessionBase, Rt as DevToolsCommandsHost, St as DevToolsViewJsonRender, Tt as JsonRenderElement, U as DevToolsRpcServerFunctions, Ut as AgentManifest, V as DevToolsDocksUserSettings, Vt as DevToolsServerCommandInput, W as DevToolsRpcSharedStates, Wt as AgentResource, X as DevToolsLogHandle, Xt as DevToolsAgentHostEvents, Y as DevToolsLogFilePosition, Yt as DevToolsAgentHost, Z as DevToolsLogLevel, Zt as EventEmitter, _ as RpcSharedStateGetOptions, _t as DevToolsDockUserEntry, a as DevtoolRuntime, at as DevToolsMessageHandle, bt as DevToolsViewCustomRender, c as defineDevtool, ct as DevToolsMessagesHost, d as DevToolsNodeContext, dt as DevToolsDockEntriesGrouped, et as DevToolsMessageElementPosition, f as DevToolsNodeUtils, ft as DevToolsDockEntry, g as RpcFunctionsHost, gt as DevToolsDockHost, h as RpcBroadcastOptions, ht as DevToolsDockEntryIcon, i as DevtoolDeploymentKind, it as DevToolsMessageFilePosition, j as EntriesToObject, jt as DevToolsDiagnosticsLogger, kt as DevToolsDiagnosticsDefinition, l as ConnectionMeta, lt as DevToolsHost, m as DevToolsNodeRpcSession, mt as DevToolsDockEntryCategory, n as DevtoolCliOptions, nt as DevToolsMessageEntryFrom, o as DevtoolSetupInfo, ot as DevToolsMessageLevel, p as RemoteConnectionInfo, pt as DevToolsDockEntryBase, q as DevToolsLogEntryFrom, qt as AgentTool, r as DevtoolDefinition, rt as DevToolsMessageEntryInput, s as DevtoolSpaOptions, st as DevToolsMessagesClient, t as DevtoolBrowserContext, tt as DevToolsMessageEntry, u as DevToolsCapabilities, ut as ClientScriptEntry, v as RpcSharedStateHost, vt as DevToolsViewAction, wt as DevToolsViewLauncherStatus, xt as DevToolsViewIframe, yt as DevToolsViewBuiltin, z as DevToolsTerminalSessionStreamChunkEvent, zt as DevToolsCommandsHostEvents } from "../devtool-CHT-4_OU.mjs";
|
|
2
|
+
import { m as RpcFunctionAgentOptions } from "../types-BkyzI9r4.mjs";
|
|
3
|
+
import { t as DevToolsNodeRpcSessionMeta } from "../ws-server-Cu8tmZcF.mjs";
|
|
4
|
+
export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, ClientScriptEntry, ConnectionMeta, DevToolsAgentHost, DevToolsAgentHostEvents, DevToolsCapabilities, DevToolsChildProcessExecuteOptions, DevToolsChildProcessTerminalSession, DevToolsClientCommand, DevToolsCommandBase, DevToolsCommandEntry, DevToolsCommandHandle, DevToolsCommandKeybinding, DevToolsCommandShortcutOverrides, DevToolsCommandsHost, DevToolsCommandsHostEvents, DevToolsDiagnosticsDefinition, DevToolsDiagnosticsHost, DevToolsDiagnosticsLogger, DevToolsDockEntriesGrouped, DevToolsDockEntry, DevToolsDockEntryBase, DevToolsDockEntryCategory, DevToolsDockEntryIcon, DevToolsDockHost, DevToolsDockUserEntry, DevToolsDocksUserSettings, DevToolsHost, DevToolsLogElementPosition, DevToolsLogEntry, DevToolsLogEntryFrom, DevToolsLogEntryInput, DevToolsLogFilePosition, DevToolsLogHandle, DevToolsLogLevel, DevToolsLogsClient, DevToolsLogsHost, DevToolsMessageElementPosition, DevToolsMessageEntry, DevToolsMessageEntryFrom, DevToolsMessageEntryInput, DevToolsMessageFilePosition, DevToolsMessageHandle, DevToolsMessageLevel, DevToolsMessagesClient, DevToolsMessagesHost, DevToolsNodeContext, DevToolsNodeRpcSession, DevToolsNodeRpcSessionMeta, DevToolsNodeUtils, DevToolsRpcClientFunctions, DevToolsRpcServerFunctions, DevToolsRpcSharedStates, DevToolsServerCommandEntry, DevToolsServerCommandInput, DevToolsTerminalHost, DevToolsTerminalSession, DevToolsTerminalSessionBase, DevToolsTerminalSessionStreamChunkEvent, DevToolsTerminalStatus, DevToolsViewAction, DevToolsViewBuiltin, DevToolsViewCustomRender, DevToolsViewHost, DevToolsViewIframe, DevToolsViewJsonRender, DevToolsViewLauncher, DevToolsViewLauncherStatus, DevtoolBrowserContext, DevtoolCliOptions, DevtoolDefinition, DevtoolDeploymentKind, DevtoolRuntime, DevtoolSetupInfo, DevtoolSpaOptions, EntriesToObject, EventEmitter, EventUnsubscribe, EventsMap, JsonRenderElement, JsonRenderSpec, JsonRenderer, PartialWithoutId, RemoteConnectionInfo, RemoteDockOptions, RpcBroadcastOptions, RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, Thenable, defineDevtool };
|