devframe 0.1.18 → 0.1.19
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/{_shared-Bxa2_kq7.mjs → _shared-BcPXmcjq.mjs} +1 -1
- package/dist/adapters/build.d.mts +1 -1
- package/dist/adapters/build.mjs +5 -4
- package/dist/adapters/cli.d.mts +2 -2
- package/dist/adapters/cli.mjs +78 -292
- package/dist/adapters/dev.d.mts +83 -0
- package/dist/adapters/dev.mjs +2 -0
- 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 -5
- package/dist/client/index.mjs +1 -1
- package/dist/{client-CsR1_h3o.mjs → client-C6w_NshP.mjs} +2 -2
- package/dist/constants.d.mts +1 -1
- package/dist/{context-xQo1FcxX.mjs → context-BsNZMCnr.mjs} +4 -4
- package/dist/dev-Djy5hbgs.mjs +324 -0
- package/dist/{devtool-CHT-4_OU.d.mts → devtool-CIqONpYU.d.mts} +9 -4
- package/dist/helpers/nuxt/runtime/plugin.client.mjs +1 -1
- package/dist/host-h3-w3c0t8ZO.mjs +18 -0
- package/dist/{index-Cei8vVcd.d.mts → index-BwrLhNmz.d.mts} +1 -1
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +11 -2
- package/dist/node/index.d.mts +4 -53
- package/dist/node/index.mjs +4 -3
- package/dist/recipes/open-helpers.d.mts +1 -1
- package/dist/recipes/open-helpers.mjs +2 -2
- package/dist/rpc/index.d.mts +2 -2
- package/dist/rpc/index.mjs +3 -3
- package/dist/rpc/transports/ws-client.d.mts +1 -1
- package/dist/rpc/transports/ws-client.mjs +1 -1
- package/dist/rpc/transports/ws-server.d.mts +1 -1
- package/dist/rpc/transports/ws-server.mjs +1 -1
- package/dist/{rpc-hbRk8qtt.mjs → rpc-D7LxIh8t.mjs} +1 -1
- package/dist/server-CaUeMcAh.d.mts +54 -0
- package/dist/{static-dump-DwFfj4U_.mjs → static-dump-cyGfMmRf.mjs} +2 -19
- package/dist/types/index.d.mts +3 -3
- package/dist/{types-BkyzI9r4.d.mts → types-gWbe-b2R.d.mts} +1 -1
- 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 → ws-client-DOYwYluO.d.mts} +1 -1
- package/dist/{ws-server-Cu8tmZcF.d.mts → ws-server-DHMeNOY_.d.mts} +1 -1
- package/package.json +2 -1
- package/dist/src-DIKqQIjp.mjs +0 -85
- /package/dist/{define-CW9gLnyG.mjs → define-Bb4zh-Dc.mjs} +0 -0
- /package/dist/{immer-DEqg5kOd.mjs → immer-HjMAm3b6.mjs} +0 -0
- /package/dist/{main-BJD9t8dk.mjs → main-CuGOfqoX.mjs} +0 -0
- /package/dist/{open-BMO2_-wC.mjs → open-JfacLHs0.mjs} +0 -0
- /package/dist/{serialization-CWcWE7x7.mjs → serialization-BN2ZQEE9.mjs} +0 -0
- /package/dist/{server-DkJ2-s0Y.mjs → server-DrBxa6ZV.mjs} +0 -0
- /package/dist/{transports-4bqw6Fqg.mjs → transports-DSV5_5QM.mjs} +0 -0
- /package/dist/{when-aBBXAEh5.d.mts → when-BAE663Hv.d.mts} +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { H as DevToolsRpcClientFunctions, U as DevToolsRpcServerFunctions, d as DevToolsNodeContext } from "./devtool-CIqONpYU.mjs";
|
|
2
|
+
import { BirpcGroup } from "birpc";
|
|
3
|
+
import { WebSocketServer } from "ws";
|
|
4
|
+
import { App } from "h3";
|
|
5
|
+
|
|
6
|
+
//#region src/node/server.d.ts
|
|
7
|
+
interface StartHttpAndWsOptions {
|
|
8
|
+
context: DevToolsNodeContext;
|
|
9
|
+
host?: string;
|
|
10
|
+
port: number;
|
|
11
|
+
/**
|
|
12
|
+
* Optional h3 app to mount on. When omitted a fresh one is created;
|
|
13
|
+
* when provided, callers can add their own routes (sirv etc.) first.
|
|
14
|
+
*/
|
|
15
|
+
app?: App;
|
|
16
|
+
/**
|
|
17
|
+
* When `false`, the RPC server is started without a trust handshake.
|
|
18
|
+
* Intended for single-user localhost tools where an auth round-trip
|
|
19
|
+
* would only get in the way. The Vite-flavoured auth layer in
|
|
20
|
+
* `@vitejs/devtools` already honors the equivalent
|
|
21
|
+
* `devtools.clientAuth` setting; devframe records the intent here so
|
|
22
|
+
* future auth plumbing can consult it without another API change.
|
|
23
|
+
*
|
|
24
|
+
* Default: `true`.
|
|
25
|
+
*/
|
|
26
|
+
auth?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Called once the WS server is bound so callers can mount static
|
|
29
|
+
* handlers whose origin depends on the resolved port, or print their
|
|
30
|
+
* own startup banner. Devframe does not print one itself.
|
|
31
|
+
*/
|
|
32
|
+
onReady?: (info: {
|
|
33
|
+
origin: string;
|
|
34
|
+
port: number;
|
|
35
|
+
app: App;
|
|
36
|
+
}) => void | Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
interface StartedServer {
|
|
39
|
+
/** Listening origin, e.g. `http://localhost:9999`. */
|
|
40
|
+
origin: string;
|
|
41
|
+
port: number;
|
|
42
|
+
app: App;
|
|
43
|
+
wss: WebSocketServer;
|
|
44
|
+
rpcGroup: BirpcGroup<DevToolsRpcClientFunctions, DevToolsRpcServerFunctions, false>;
|
|
45
|
+
close: () => Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Compose an h3 + WebSocket server for a devtool context. The RPC
|
|
49
|
+
* group is bound to `context.rpc.functions`; the WS endpoint lives on
|
|
50
|
+
* the same port as the HTTP server.
|
|
51
|
+
*/
|
|
52
|
+
declare function startHttpAndWs(options: StartHttpAndWsOptions): Promise<StartedServer>;
|
|
53
|
+
//#endregion
|
|
54
|
+
export { StartedServer as n, startHttpAndWs as r, StartHttpAndWsOptions as t };
|
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
import { n as dumpFunctions, s as getRpcHandler } from "./rpc-
|
|
1
|
+
import { n as dumpFunctions, s as getRpcHandler } from "./rpc-D7LxIh8t.mjs";
|
|
2
2
|
import { DEVTOOLS_RPC_DUMP_DIRNAME } from "./constants.mjs";
|
|
3
|
-
//#region src/node/host-h3.ts
|
|
4
|
-
/**
|
|
5
|
-
* h3-backed {@link DevToolsHost} — used by the standalone CLI adapter.
|
|
6
|
-
* This commit adds the shell; the CLI adapter in commit 5 wires it up
|
|
7
|
-
* with a real h3 app and sirv handler.
|
|
8
|
-
*/
|
|
9
|
-
function createH3DevToolsHost(options) {
|
|
10
|
-
return {
|
|
11
|
-
mountStatic(base, distDir) {
|
|
12
|
-
return options.mount?.(base, distDir);
|
|
13
|
-
},
|
|
14
|
-
resolveOrigin() {
|
|
15
|
-
return options.origin;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
//#endregion
|
|
20
3
|
//#region src/node/static-dump.ts
|
|
21
4
|
function makeDumpKey(name) {
|
|
22
5
|
return encodeURIComponent(name.replaceAll(":", "~"));
|
|
@@ -94,4 +77,4 @@ async function collectStaticRpcDump(definitions, context) {
|
|
|
94
77
|
};
|
|
95
78
|
}
|
|
96
79
|
//#endregion
|
|
97
|
-
export {
|
|
80
|
+
export { collectStaticRpcDump as t };
|
package/dist/types/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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-
|
|
2
|
-
import { m as RpcFunctionAgentOptions } from "../types-
|
|
3
|
-
import { t as DevToolsNodeRpcSessionMeta } from "../ws-server-
|
|
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-CIqONpYU.mjs";
|
|
2
|
+
import { m as RpcFunctionAgentOptions } from "../types-gWbe-b2R.mjs";
|
|
3
|
+
import { t as DevToolsNodeRpcSessionMeta } from "../ws-server-DHMeNOY_.mjs";
|
|
4
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 };
|
package/dist/utils/events.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as ImmutableSet, D as createSharedState, E as SharedStateOptions, S as ImmutableObject, T as SharedStateEvents, b as ImmutableArray, k as Patch, w as SharedState, x as ImmutableMap, y as Immutable } from "../devtool-
|
|
1
|
+
import { C as ImmutableSet, D as createSharedState, E as SharedStateOptions, S as ImmutableObject, T as SharedStateEvents, b as ImmutableArray, k as Patch, w as SharedState, x as ImmutableMap, y as Immutable } from "../devtool-CIqONpYU.mjs";
|
|
2
2
|
export { Immutable, ImmutableArray, ImmutableMap, ImmutableObject, ImmutableSet, SharedState, SharedStateEvents, SharedStateOptions, Patch as SharedStatePatch, createSharedState };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createEventEmitter } from "./events.mjs";
|
|
2
|
-
import { i as produceWithPatches, n as enablePatches, r as produce, t as applyPatches } from "../immer-
|
|
2
|
+
import { i as produceWithPatches, n as enablePatches, r as produce, t as applyPatches } from "../immer-HjMAm3b6.mjs";
|
|
3
3
|
import { nanoid } from "./nanoid.mjs";
|
|
4
4
|
//#region src/utils/shared-state.ts
|
|
5
5
|
function createSharedState(options) {
|
package/dist/utils/state.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { O as Objectish, Zt as EventEmitter, k as Patch } from "../devtool-
|
|
1
|
+
import { O as Objectish, Zt as EventEmitter, k as Patch } from "../devtool-CIqONpYU.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/utils/state.d.ts
|
|
4
4
|
type ImmutablePrimitive = undefined | null | boolean | string | number | Function;
|
package/dist/utils/state.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createEventEmitter } from "./events.mjs";
|
|
2
|
-
import { i as produceWithPatches, r as produce, t as applyPatches } from "../immer-
|
|
2
|
+
import { i as produceWithPatches, r as produce, t as applyPatches } from "../immer-HjMAm3b6.mjs";
|
|
3
3
|
//#region src/utils/state.ts
|
|
4
4
|
function createSharedState(options) {
|
|
5
5
|
const { enablePatches = false } = options;
|
package/dist/utils/when.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as resolveContextValue, n as WhenExpression, r as evaluateWhen, t as WhenContext } from "../when-
|
|
1
|
+
import { i as resolveContextValue, n as WhenExpression, r as evaluateWhen, t as WhenContext } from "../when-BAE663Hv.mjs";
|
|
2
2
|
export { WhenContext, WhenExpression, evaluateWhen, resolveContextValue };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as RpcFunctionDefinitionAny } from "./types-
|
|
1
|
+
import { g as RpcFunctionDefinitionAny } from "./types-gWbe-b2R.mjs";
|
|
2
2
|
import { BirpcGroup, ChannelOptions } from "birpc";
|
|
3
3
|
import { ServerOptions } from "node:https";
|
|
4
4
|
import { WebSocket, WebSocketServer } from "ws";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devframe",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.19",
|
|
5
5
|
"description": "Framework for building generic DevTools",
|
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
".": "./dist/index.mjs",
|
|
23
23
|
"./adapters/build": "./dist/adapters/build.mjs",
|
|
24
24
|
"./adapters/cli": "./dist/adapters/cli.mjs",
|
|
25
|
+
"./adapters/dev": "./dist/adapters/dev.mjs",
|
|
25
26
|
"./adapters/embedded": "./dist/adapters/embedded.mjs",
|
|
26
27
|
"./adapters/kit": "./dist/adapters/kit.mjs",
|
|
27
28
|
"./adapters/mcp": "./dist/adapters/mcp.mjs",
|
package/dist/src-DIKqQIjp.mjs
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { t as createDefineWrapperWithContext } from "./define-CW9gLnyG.mjs";
|
|
2
|
-
import { safeParse } from "valibot";
|
|
3
|
-
//#region src/adapters/flags.ts
|
|
4
|
-
/**
|
|
5
|
-
* Identity helper that preserves the literal schema-map type — use this
|
|
6
|
-
* so `InferCliFlags<typeof myFlags>` resolves to the right object shape.
|
|
7
|
-
*
|
|
8
|
-
* ```ts
|
|
9
|
-
* const appFlags = defineCliFlags({
|
|
10
|
-
* depth: v.pipe(v.number(), v.integer()),
|
|
11
|
-
* config: v.optional(v.string()),
|
|
12
|
-
* })
|
|
13
|
-
*
|
|
14
|
-
* defineDevtool({
|
|
15
|
-
* cli: { flags: appFlags },
|
|
16
|
-
* setup(ctx, info) {
|
|
17
|
-
* const flags = info.flags as InferCliFlags<typeof appFlags>
|
|
18
|
-
* flags.depth // number
|
|
19
|
-
* flags.config // string | undefined
|
|
20
|
-
* },
|
|
21
|
-
* })
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
function defineCliFlags(flags) {
|
|
25
|
-
return flags;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Best-effort probe of a valibot schema to decide whether the
|
|
29
|
-
* corresponding CAC option takes a value. Unwraps `optional` / `nullable`
|
|
30
|
-
* / `nullish` / `default` / `pipe` wrappers then matches on the inner
|
|
31
|
-
* type's kind.
|
|
32
|
-
*/
|
|
33
|
-
function getSchemaKind(schema) {
|
|
34
|
-
let current = schema;
|
|
35
|
-
while (current) {
|
|
36
|
-
const kind = current.type;
|
|
37
|
-
if (kind === "optional" || kind === "nullable" || kind === "nullish" || kind === "undefined") {
|
|
38
|
-
current = current.wrapped ?? current.inner;
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (kind === "pipe" && Array.isArray(current.pipe) && current.pipe.length > 0) {
|
|
42
|
-
current = current.pipe[0];
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
return kind;
|
|
46
|
-
}
|
|
47
|
-
return "unknown";
|
|
48
|
-
}
|
|
49
|
-
/** Whether the CAC option for this schema should be a boolean flag. */
|
|
50
|
-
function isBooleanFlag(schema) {
|
|
51
|
-
return getSchemaKind(schema) === "boolean";
|
|
52
|
-
}
|
|
53
|
-
/** Validate and coerce the raw cac-parsed bag against a {@link CliFlagsSchema}. */
|
|
54
|
-
function parseCliFlags(schema, raw) {
|
|
55
|
-
const flags = {};
|
|
56
|
-
const issues = [];
|
|
57
|
-
for (const [key, fieldSchema] of Object.entries(schema)) {
|
|
58
|
-
const result = safeParse(fieldSchema, raw[key]);
|
|
59
|
-
if (result.success) flags[key] = result.output;
|
|
60
|
-
else issues.push(`--${toKebab(key)}: ${result.issues.map((i) => i.message).join(", ")}`);
|
|
61
|
-
}
|
|
62
|
-
for (const [key, value] of Object.entries(raw)) if (!(key in schema) && !(key in flags)) flags[key] = value;
|
|
63
|
-
return issues.length ? {
|
|
64
|
-
flags,
|
|
65
|
-
issues
|
|
66
|
-
} : { flags };
|
|
67
|
-
}
|
|
68
|
-
function toKebab(camel) {
|
|
69
|
-
return camel.replaceAll(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
|
|
70
|
-
}
|
|
71
|
-
/** Kebab-case a schema key for CAC option registration. */
|
|
72
|
-
function flagKeyToOption(camel) {
|
|
73
|
-
return toKebab(camel);
|
|
74
|
-
}
|
|
75
|
-
//#endregion
|
|
76
|
-
//#region src/define.ts
|
|
77
|
-
const defineRpcFunction = createDefineWrapperWithContext();
|
|
78
|
-
function defineCommand(command) {
|
|
79
|
-
return command;
|
|
80
|
-
}
|
|
81
|
-
function defineJsonRenderSpec(spec) {
|
|
82
|
-
return spec;
|
|
83
|
-
}
|
|
84
|
-
//#endregion
|
|
85
|
-
export { flagKeyToOption as a, defineCliFlags as i, defineJsonRenderSpec as n, isBooleanFlag as o, defineRpcFunction as r, parseCliFlags as s, defineCommand as t };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|