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.
Files changed (58) hide show
  1. package/dist/{_shared-Bxa2_kq7.mjs → _shared-BcPXmcjq.mjs} +1 -1
  2. package/dist/adapters/build.d.mts +1 -1
  3. package/dist/adapters/build.mjs +5 -4
  4. package/dist/adapters/cli.d.mts +2 -2
  5. package/dist/adapters/cli.mjs +78 -292
  6. package/dist/adapters/dev.d.mts +83 -0
  7. package/dist/adapters/dev.mjs +2 -0
  8. package/dist/adapters/embedded.d.mts +1 -1
  9. package/dist/adapters/kit.d.mts +1 -1
  10. package/dist/adapters/mcp.d.mts +1 -1
  11. package/dist/adapters/mcp.mjs +2 -2
  12. package/dist/adapters/vite.d.mts +1 -1
  13. package/dist/adapters/vite.mjs +1 -1
  14. package/dist/client/index.d.mts +5 -5
  15. package/dist/client/index.mjs +1 -1
  16. package/dist/{client-CsR1_h3o.mjs → client-C6w_NshP.mjs} +2 -2
  17. package/dist/constants.d.mts +1 -1
  18. package/dist/{context-xQo1FcxX.mjs → context-BsNZMCnr.mjs} +4 -4
  19. package/dist/dev-Djy5hbgs.mjs +324 -0
  20. package/dist/{devtool-CHT-4_OU.d.mts → devtool-CIqONpYU.d.mts} +9 -4
  21. package/dist/helpers/nuxt/runtime/plugin.client.mjs +1 -1
  22. package/dist/host-h3-w3c0t8ZO.mjs +18 -0
  23. package/dist/{index-Cei8vVcd.d.mts → index-BwrLhNmz.d.mts} +1 -1
  24. package/dist/index.d.mts +4 -4
  25. package/dist/index.mjs +11 -2
  26. package/dist/node/index.d.mts +4 -53
  27. package/dist/node/index.mjs +4 -3
  28. package/dist/recipes/open-helpers.d.mts +1 -1
  29. package/dist/recipes/open-helpers.mjs +2 -2
  30. package/dist/rpc/index.d.mts +2 -2
  31. package/dist/rpc/index.mjs +3 -3
  32. package/dist/rpc/transports/ws-client.d.mts +1 -1
  33. package/dist/rpc/transports/ws-client.mjs +1 -1
  34. package/dist/rpc/transports/ws-server.d.mts +1 -1
  35. package/dist/rpc/transports/ws-server.mjs +1 -1
  36. package/dist/{rpc-hbRk8qtt.mjs → rpc-D7LxIh8t.mjs} +1 -1
  37. package/dist/server-CaUeMcAh.d.mts +54 -0
  38. package/dist/{static-dump-DwFfj4U_.mjs → static-dump-cyGfMmRf.mjs} +2 -19
  39. package/dist/types/index.d.mts +3 -3
  40. package/dist/{types-BkyzI9r4.d.mts → types-gWbe-b2R.d.mts} +1 -1
  41. package/dist/utils/events.d.mts +1 -1
  42. package/dist/utils/shared-state.d.mts +1 -1
  43. package/dist/utils/shared-state.mjs +1 -1
  44. package/dist/utils/state.d.mts +1 -1
  45. package/dist/utils/state.mjs +1 -1
  46. package/dist/utils/when.d.mts +1 -1
  47. package/dist/{ws-client-CDGmViwt.d.mts → ws-client-DOYwYluO.d.mts} +1 -1
  48. package/dist/{ws-server-Cu8tmZcF.d.mts → ws-server-DHMeNOY_.d.mts} +1 -1
  49. package/package.json +2 -1
  50. package/dist/src-DIKqQIjp.mjs +0 -85
  51. /package/dist/{define-CW9gLnyG.mjs → define-Bb4zh-Dc.mjs} +0 -0
  52. /package/dist/{immer-DEqg5kOd.mjs → immer-HjMAm3b6.mjs} +0 -0
  53. /package/dist/{main-BJD9t8dk.mjs → main-CuGOfqoX.mjs} +0 -0
  54. /package/dist/{open-BMO2_-wC.mjs → open-JfacLHs0.mjs} +0 -0
  55. /package/dist/{serialization-CWcWE7x7.mjs → serialization-BN2ZQEE9.mjs} +0 -0
  56. /package/dist/{server-DkJ2-s0Y.mjs → server-DrBxa6ZV.mjs} +0 -0
  57. /package/dist/{transports-4bqw6Fqg.mjs → transports-DSV5_5QM.mjs} +0 -0
  58. /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-hbRk8qtt.mjs";
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 { createH3DevToolsHost as n, collectStaticRpcDump as t };
80
+ export { collectStaticRpcDump as t };
@@ -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-CHT-4_OU.mjs";
2
- import { m as RpcFunctionAgentOptions } from "../types-BkyzI9r4.mjs";
3
- import { t as DevToolsNodeRpcSessionMeta } from "../ws-server-Cu8tmZcF.mjs";
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 };
@@ -1,5 +1,5 @@
1
- import { GenericSchema, InferInput } from "valibot";
2
1
  import { BirpcFn, BirpcReturn as BirpcReturn$1 } from "birpc";
2
+ import { GenericSchema, InferInput } from "valibot";
3
3
 
4
4
  //#region src/rpc/utils.d.ts
5
5
  /** Infers TypeScript tuple type from Valibot schema array */
@@ -1,4 +1,4 @@
1
- import { $t as EventsMap, Zt as EventEmitter } from "../devtool-CHT-4_OU.mjs";
1
+ import { $t as EventsMap, Zt as EventEmitter } from "../devtool-CIqONpYU.mjs";
2
2
 
3
3
  //#region src/utils/events.d.ts
4
4
  /**
@@ -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-CHT-4_OU.mjs";
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-DEqg5kOd.mjs";
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) {
@@ -1,4 +1,4 @@
1
- import { O as Objectish, Zt as EventEmitter, k as Patch } from "../devtool-CHT-4_OU.mjs";
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;
@@ -1,5 +1,5 @@
1
1
  import { createEventEmitter } from "./events.mjs";
2
- import { i as produceWithPatches, r as produce, t as applyPatches } from "../immer-DEqg5kOd.mjs";
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;
@@ -1,2 +1,2 @@
1
- import { i as resolveContextValue, n as WhenExpression, r as evaluateWhen, t as WhenContext } from "../when-aBBXAEh5.mjs";
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-BkyzI9r4.mjs";
1
+ import { g as RpcFunctionDefinitionAny } from "./types-gWbe-b2R.mjs";
2
2
  import { ChannelOptions } from "birpc";
3
3
 
4
4
  //#region src/rpc/transports/ws-client.d.ts
@@ -1,4 +1,4 @@
1
- import { g as RpcFunctionDefinitionAny } from "./types-BkyzI9r4.mjs";
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.18",
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",
@@ -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