mcp-client-gen 0.0.3 → 0.0.4
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/README.md +8 -8
- package/dist/{index.js → cli.js} +16 -13
- package/dist/cli.js.map +16 -0
- package/package.json +20 -4
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
🚀 Generate type-safe TypeScript clients from any MCP (Model Context Protocol) server.
|
|
4
4
|
|
|
5
5
|
```typescript
|
|
6
|
-
import { notion, github, slack } from "./
|
|
6
|
+
import { notion, github, slack } from "./src/mcp-client";
|
|
7
7
|
|
|
8
8
|
// Type-safe client calls with full IntelliSense
|
|
9
9
|
const page = await notion.createPage({
|
|
@@ -72,13 +72,13 @@ npx mcp-client-gen -y # Accept all defaults and proceed
|
|
|
72
72
|
**Direct Mode:**
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
npx mcp-client-gen ./
|
|
75
|
+
npx mcp-client-gen ./src/mcp-client.ts
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
### 3. Use the Generated Client
|
|
79
79
|
|
|
80
80
|
```typescript
|
|
81
|
-
import { notion } from "./
|
|
81
|
+
import { notion } from "./src/mcp-client";
|
|
82
82
|
|
|
83
83
|
// All methods are fully typed based on the MCP server schema
|
|
84
84
|
const page = await notion.fetchPage("page-id");
|
|
@@ -114,7 +114,7 @@ Options:
|
|
|
114
114
|
Examples:
|
|
115
115
|
npx mcp-client-gen # Interactive mode
|
|
116
116
|
npx mcp-client-gen -y # Quick generation with defaults
|
|
117
|
-
npx mcp-client-gen ./
|
|
117
|
+
npx mcp-client-gen ./src/mcp-client.ts # Direct mode with output file
|
|
118
118
|
npx mcp-client-gen --config custom.json ./src/clients.ts
|
|
119
119
|
```
|
|
120
120
|
|
|
@@ -179,10 +179,10 @@ Authentication is configured per MCP server in your `.mcp.json`:
|
|
|
179
179
|
"auth": {
|
|
180
180
|
"type": "oauth",
|
|
181
181
|
"clientId": "your-client-id", // Optional for dynamic registration
|
|
182
|
-
"scopes": ["read", "write"]
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
182
|
+
"scopes": ["read", "write"],
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
186
|
}
|
|
187
187
|
```
|
|
188
188
|
|
package/dist/{index.js → cli.js}
RENAMED
|
@@ -145,10 +145,10 @@ var require_picocolors = __commonJS((exports, module) => {
|
|
|
145
145
|
module.exports.createColors = createColors;
|
|
146
146
|
});
|
|
147
147
|
|
|
148
|
-
//
|
|
149
|
-
import {
|
|
150
|
-
import { readFileSync as readFileSync2, existsSync as existsSync3 } from "node:fs";
|
|
148
|
+
// src/cli.ts
|
|
149
|
+
import { existsSync as existsSync3, readFileSync as readFileSync2 } from "node:fs";
|
|
151
150
|
import { resolve as resolve3 } from "node:path";
|
|
151
|
+
import { parseArgs } from "node:util";
|
|
152
152
|
|
|
153
153
|
// node_modules/@clack/core/dist/index.mjs
|
|
154
154
|
var import_sisteransi = __toESM(require_src(), 1);
|
|
@@ -746,11 +746,11 @@ var Y2 = ({ indicator: t = "dots" } = {}) => {
|
|
|
746
746
|
} };
|
|
747
747
|
};
|
|
748
748
|
|
|
749
|
-
//
|
|
749
|
+
// src/prompts.ts
|
|
750
750
|
import { existsSync as existsSync2 } from "node:fs";
|
|
751
751
|
import { resolve as resolve2 } from "node:path";
|
|
752
752
|
|
|
753
|
-
//
|
|
753
|
+
// src/config.ts
|
|
754
754
|
import { existsSync, readFileSync } from "node:fs";
|
|
755
755
|
import { resolve } from "node:path";
|
|
756
756
|
var MCP_CONFIG_PATHS = [
|
|
@@ -814,7 +814,7 @@ function getMcpServers(paths) {
|
|
|
814
814
|
return servers;
|
|
815
815
|
}
|
|
816
816
|
|
|
817
|
-
//
|
|
817
|
+
// src/prompts.ts
|
|
818
818
|
async function promptForConfigFiles(cwd = process.cwd()) {
|
|
819
819
|
const availableFiles = await findMcpConfigFiles(cwd);
|
|
820
820
|
if (availableFiles.length === 0) {
|
|
@@ -859,7 +859,7 @@ async function promptForServers(configFiles) {
|
|
|
859
859
|
}
|
|
860
860
|
async function promptForOutputFile(cwd = process.cwd()) {
|
|
861
861
|
const srcExists = existsSync2(resolve2(cwd, "src"));
|
|
862
|
-
const defaultPath = srcExists ? "src/
|
|
862
|
+
const defaultPath = srcExists ? "src/mcp-client.ts" : "mcp-client.ts";
|
|
863
863
|
const outputPath = await he({
|
|
864
864
|
message: "Enter output file path:",
|
|
865
865
|
placeholder: defaultPath,
|
|
@@ -891,7 +891,7 @@ async function runInteractiveSetup(cwd = process.cwd(), useDefaults = false) {
|
|
|
891
891
|
throw new Error("No valid MCP servers found in configuration files. Check your .mcp.json configuration.");
|
|
892
892
|
}
|
|
893
893
|
const srcExists = existsSync2(resolve2(cwd, "src"));
|
|
894
|
-
const outputFile = srcExists ? "src/
|
|
894
|
+
const outputFile = srcExists ? "src/mcp-client.ts" : "mcp-client.ts";
|
|
895
895
|
console.log(`\uD83D\uDE80 Using defaults: ${servers.length} server${servers.length !== 1 ? "s" : ""} → ${outputFile}`);
|
|
896
896
|
return {
|
|
897
897
|
configFiles,
|
|
@@ -938,7 +938,7 @@ async function introspectServers(servers) {
|
|
|
938
938
|
return results;
|
|
939
939
|
}
|
|
940
940
|
|
|
941
|
-
//
|
|
941
|
+
// src/cli.ts
|
|
942
942
|
function showHelp() {
|
|
943
943
|
console.log(`
|
|
944
944
|
mcp-client-gen - Generate type-safe MCP client SDK
|
|
@@ -960,8 +960,8 @@ Options:
|
|
|
960
960
|
Examples:
|
|
961
961
|
npx mcp-client-gen # Interactive mode with prompts
|
|
962
962
|
npx mcp-client-gen -y # Quick generation with defaults
|
|
963
|
-
npx mcp-client-gen ./
|
|
964
|
-
npx mcp-client-gen --config custom.mcp.json ./
|
|
963
|
+
npx mcp-client-gen ./src/mcp-client.ts # Specify output file
|
|
964
|
+
npx mcp-client-gen --config custom.mcp.json ./src/mcp.ts
|
|
965
965
|
`);
|
|
966
966
|
}
|
|
967
967
|
function parseArguments() {
|
|
@@ -1031,7 +1031,7 @@ async function generateMCPClientFromConfig(args) {
|
|
|
1031
1031
|
export class ${capitalize(name)}Client {
|
|
1032
1032
|
constructor(private serverUrl: string) {}
|
|
1033
1033
|
|
|
1034
|
-
//
|
|
1034
|
+
// Methods will be generated from introspected schemas
|
|
1035
1035
|
async fetchPage(id: string) {
|
|
1036
1036
|
// Implementation will be generated based on MCP server schema
|
|
1037
1037
|
throw new Error("Not implemented yet");
|
|
@@ -1060,7 +1060,7 @@ async function generateMCPClientFromServers(servers, outputFile) {
|
|
|
1060
1060
|
export class Server${index + 1}Client {
|
|
1061
1061
|
constructor(private serverUrl: string) {}
|
|
1062
1062
|
|
|
1063
|
-
//
|
|
1063
|
+
// Methods will be generated from introspected schemas
|
|
1064
1064
|
async fetchPage(id: string) {
|
|
1065
1065
|
// Implementation will be generated based on MCP server schema
|
|
1066
1066
|
throw new Error("Not implemented yet");
|
|
@@ -1109,3 +1109,6 @@ async function main() {
|
|
|
1109
1109
|
}
|
|
1110
1110
|
}
|
|
1111
1111
|
main();
|
|
1112
|
+
|
|
1113
|
+
//# debugId=C4AC6AA8FC60AED264756E2164756E21
|
|
1114
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/sisteransi/src/index.js", "../node_modules/picocolors/picocolors.js", "../src/cli.ts", "../node_modules/@clack/core/dist/index.mjs", "../node_modules/@clack/prompts/dist/index.mjs", "../src/prompts.ts", "../src/config.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n",
|
|
6
|
+
"let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n",
|
|
7
|
+
"#!/usr/bin/env node\n/* SPDX-FileCopyrightText: 2025-present Kriasoft */\n/* SPDX-License-Identifier: MIT */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { parseArgs } from \"node:util\";\nimport { introspectServers, runInteractiveSetup } from \"./prompts.js\";\nimport type { McpServer } from \"./types.js\";\n\ninterface MCPServerConfig {\n type: string;\n url: string;\n}\n\ninterface MCPConfig {\n mcpServers: Record<string, MCPServerConfig>;\n}\n\ninterface Args {\n output: string;\n config?: string;\n help?: boolean;\n yes?: boolean;\n}\n\nfunction showHelp() {\n console.log(`\nmcp-client-gen - Generate type-safe MCP client SDK\n\nUsage:\n npx mcp-client-gen # Launch interactive mode\n npx mcp-client-gen -y # Accept defaults and proceed\n npx mcp-client-gen <output-file> # Use specific output file\n npx mcp-client-gen --config <config-file> <output-file>\n\nArguments:\n <output-file> Output file path for the generated client\n\nOptions:\n --config <file> Path to MCP configuration file (default: .mcp.json)\n -y, --yes Accept all defaults and skip interactive prompts\n --help Show this help message\n\nExamples:\n npx mcp-client-gen # Interactive mode with prompts\n npx mcp-client-gen -y # Quick generation with defaults\n npx mcp-client-gen ./src/mcp-client.ts # Specify output file\n npx mcp-client-gen --config custom.mcp.json ./src/mcp.ts\n`);\n}\n\n/**\n * Parse CLI arguments to determine execution mode.\n * @returns Args object for processing, null if help was shown\n * @throws Process exits with code 1 on invalid arguments\n */\nfunction parseArguments(): Args | null {\n try {\n const { values, positionals } = parseArgs({\n options: {\n config: { type: \"string\" },\n help: { type: \"boolean\", short: \"h\" },\n yes: { type: \"boolean\", short: \"y\" },\n },\n allowPositionals: true,\n });\n\n if (values.help) {\n showHelp();\n return null;\n }\n\n // Empty positionals trigger interactive mode (prompts) or quick mode (-y)\n if (positionals.length === 0) {\n return {\n output: \"\", // Will be determined later\n config: values.config,\n yes: values.yes || false,\n };\n }\n\n return {\n output: positionals[0]!,\n config: values.config,\n yes: values.yes || false,\n };\n } catch (error) {\n console.error(\"Error parsing arguments:\", (error as Error).message);\n showHelp();\n process.exit(1);\n }\n}\n\n/**\n * Load MCP configuration from JSON file.\n * @param configPath Optional path, defaults to .mcp.json in cwd\n * @throws Process exits with code 1 if file missing or invalid JSON\n */\nfunction loadMCPConfig(configPath?: string): MCPConfig {\n const defaultConfigPath = resolve(process.cwd(), \".mcp.json\");\n const actualConfigPath = configPath\n ? resolve(process.cwd(), configPath)\n : defaultConfigPath;\n\n if (!existsSync(actualConfigPath)) {\n console.error(`Error: Configuration file not found: ${actualConfigPath}`);\n console.error(\n \"Create a .mcp.json file with your MCP server configuration.\",\n );\n process.exit(1);\n }\n\n try {\n const configContent = readFileSync(actualConfigPath, \"utf-8\");\n return JSON.parse(configContent);\n } catch (error) {\n console.error(\n `Error reading configuration file: ${(error as Error).message}`,\n );\n process.exit(1);\n }\n}\n\nasync function generateMCPClientFromConfig(args: Args) {\n const config = loadMCPConfig(args.config);\n const serverNames = Object.keys(config.mcpServers);\n\n console.log(\n `Generating MCP client SDK from ${serverNames.length} servers...`,\n );\n console.log(`Servers: ${serverNames.join(\", \")}`);\n\n // TODO: Replace with real introspection via mcp-client.ts\n console.log(\"⏳ Connecting to MCP servers...\");\n console.log(\"⏳ Fetching server capabilities...\");\n console.log(\"⏳ Generating TypeScript client...\");\n\n // Generate tree-shakable exports - one instance per server\n const clientExports = serverNames\n .map((name) => {\n const server = config.mcpServers[name];\n if (!server) throw new Error(`Server ${name} not found in configuration`);\n return `export const ${name} = new ${capitalize(name)}Client(\"${server.url}\");`;\n })\n .join(\"\\n\");\n\n const clientClasses = serverNames\n .map(\n (name) => `\nexport class ${capitalize(name)}Client {\n constructor(private serverUrl: string) {}\n \n // Methods will be generated from introspected schemas\n async fetchPage(id: string) {\n // Implementation will be generated based on MCP server schema\n throw new Error(\"Not implemented yet\");\n }\n}`,\n )\n .join(\"\\n\");\n\n const clientCode = `// Generated MCP client SDK\n// Generated from: ${Object.entries(config.mcpServers)\n .map(([name, server]) => `${name} (${server?.url || \"unknown\"})`)\n .join(\", \")}\n\n${clientClasses}\n\n${clientExports}\n`;\n\n // TODO: Write via fs.writeFileSync with prettier formatting\n console.log(`✅ Generated client saved to ${args.output}`);\n console.log(\"\\nUsage:\");\n console.log(\n `import { ${serverNames[0]} } from \"${args.output.replace(\".ts\", \".js\")}\";`,\n );\n console.log(`const result = await ${serverNames[0]}.fetchPage(\"123\");`);\n}\n\nasync function generateMCPClientFromServers(\n servers: McpServer[],\n outputFile: string,\n) {\n // Connect and fetch capabilities with visual progress\n const introspectionResults = await introspectServers(servers);\n\n // TODO: Extract meaningful names from server metadata\n const serverNames = servers.map((_, index) => `server${index + 1}`);\n\n const clientExports = servers\n .map(\n (server, index) =>\n `export const server${index + 1} = new Server${index + 1}Client(\"${server.url}\");`,\n )\n .join(\"\\n\");\n\n const clientClasses = servers\n .map(\n (server, index) => `\nexport class Server${index + 1}Client {\n constructor(private serverUrl: string) {}\n \n // Methods will be generated from introspected schemas\n async fetchPage(id: string) {\n // Implementation will be generated based on MCP server schema\n throw new Error(\"Not implemented yet\");\n }\n}`,\n )\n .join(\"\\n\");\n\n const clientCode = `// Generated MCP client SDK\n// Generated from: ${servers.map((s) => `${s.url} (${s.type})`).join(\", \")}\n\n${clientClasses}\n\n${clientExports}\n`;\n\n // TODO: Use codegen.ts to build proper TypeScript AST\n console.log(`\\n✅ Generated client saved to ${outputFile}`);\n console.log(\"\\nUsage:\");\n console.log(\n `import { ${serverNames[0]} } from \"${outputFile.replace(\".ts\", \".js\")}\";`,\n );\n console.log(`const result = await ${serverNames[0]}.fetchPage(\"123\");`);\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/**\n * CLI entry point - determines mode and delegates to appropriate handler.\n * Modes: interactive (no args), quick (-y), direct (output path given)\n */\nasync function main() {\n const args = parseArguments();\n\n // parseArguments returns null only when --help was shown\n if (!args) {\n console.error(\"Error: No arguments provided and help not requested\");\n showHelp();\n process.exit(1);\n }\n\n // Interactive/quick mode: prompts for server selection and output path\n if (!args.output) {\n try {\n const result = await runInteractiveSetup(process.cwd(), args.yes);\n await generateMCPClientFromServers(result.servers, result.outputFile);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n return;\n }\n\n // Direct mode: output path provided, use .mcp.json config\n try {\n await generateMCPClientFromConfig(args);\n } catch (error) {\n console.error(\"Error:\", (error as Error).message);\n process.exit(1);\n }\n}\n\nmain();\n",
|
|
8
|
+
"import{cursor as l,erase as b}from\"sisteransi\";import{stdin as j,stdout as M}from\"node:process\";import*as g from\"node:readline\";import O from\"node:readline\";import{Writable as X}from\"node:stream\";import v from\"picocolors\";function DD({onlyFirst:e=!1}={}){const t=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C))\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(t,e?void 0:\"g\")}const uD=DD();function P(e){if(typeof e!=\"string\")throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);return e.replace(uD,\"\")}function L(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var W={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(F){var s=F.charCodeAt(0),i=F.length==2?F.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,D=s<<10|i,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?\"F\":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?\"H\":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?\"W\":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?\"Na\":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?\"A\":\"N\"},u.characterLength=function(F){var s=this.eastAsianWidth(F);return s==\"F\"||s==\"W\"||s==\"A\"?2:1};function t(F){return F.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g)||[]}u.length=function(F){for(var s=t(F),i=0,D=0;D<s.length;D++)i=i+this.characterLength(s[D]);return i},u.slice=function(F,s,i){textLen=u.length(F),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var D=\"\",C=0,n=t(F),E=0;E<n.length;E++){var a=n[E],o=u.length(a);if(C>=s-(o==2?1:0))if(C+o<=i)D+=a;else break;C+=o}return D}})(W);var tD=W.exports;const eD=L(tD);var FD=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g};const sD=L(FD);function p(e,u={}){if(typeof e!=\"string\"||e.length===0||(u={ambiguousIsNarrow:!0,...u},e=P(e),e.length===0))return 0;e=e.replace(sD(),\" \");const t=u.ambiguousIsNarrow?1:2;let F=0;for(const s of e){const i=s.codePointAt(0);if(i<=31||i>=127&&i<=159||i>=768&&i<=879)continue;switch(eD.eastAsianWidth(s)){case\"F\":case\"W\":F+=2;break;case\"A\":F+=t;break;default:F+=1}}return F}const w=10,N=(e=0)=>u=>`\\x1B[${u+e}m`,I=(e=0)=>u=>`\\x1B[${38+e};5;${u}m`,R=(e=0)=>(u,t,F)=>`\\x1B[${38+e};2;${u};${t};${F}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const iD=Object.keys(r.color),CD=Object.keys(r.bgColor);[...iD,...CD];function rD(){const e=new Map;for(const[u,t]of Object.entries(r)){for(const[F,s]of Object.entries(t))r[F]={open:`\\x1B[${s[0]}m`,close:`\\x1B[${s[1]}m`},t[F]=r[F],e.set(s[0],s[1]);Object.defineProperty(r,u,{value:t,enumerable:!1})}return Object.defineProperty(r,\"codes\",{value:e,enumerable:!1}),r.color.close=\"\\x1B[39m\",r.bgColor.close=\"\\x1B[49m\",r.color.ansi=N(),r.color.ansi256=I(),r.color.ansi16m=R(),r.bgColor.ansi=N(w),r.bgColor.ansi256=I(w),r.bgColor.ansi16m=R(w),Object.defineProperties(r,{rgbToAnsi256:{value:(u,t,F)=>u===t&&t===F?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(t/255*5)+Math.round(F/255*5),enumerable:!1},hexToRgb:{value:u=>{const t=/[a-f\\d]{6}|[a-f\\d]{3}/i.exec(u.toString(16));if(!t)return[0,0,0];let[F]=t;F.length===3&&(F=[...F].map(i=>i+i).join(\"\"));const s=Number.parseInt(F,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let t,F,s;if(u>=232)t=((u-232)*10+8)/255,F=t,s=t;else{u-=16;const C=u%36;t=Math.floor(u/36)/5,F=Math.floor(C/6)/5,s=C%6/5}const i=Math.max(t,F,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(F)<<1|Math.round(t));return i===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,t,F)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,t,F)),enumerable:!1},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:!1}}),r}const ED=rD(),d=new Set([\"\\x1B\",\"\\x9B\"]),oD=39,y=\"\\x07\",V=\"[\",nD=\"]\",G=\"m\",_=`${nD}8;;`,z=e=>`${d.values().next().value}${V}${e}${G}`,K=e=>`${d.values().next().value}${_}${e}${y}`,aD=e=>e.split(\" \").map(u=>p(u)),k=(e,u,t)=>{const F=[...u];let s=!1,i=!1,D=p(P(e[e.length-1]));for(const[C,n]of F.entries()){const E=p(n);if(D+E<=t?e[e.length-1]+=n:(e.push(n),D=0),d.has(n)&&(s=!0,i=F.slice(C+1).join(\"\").startsWith(_)),s){i?n===y&&(s=!1,i=!1):n===G&&(s=!1);continue}D+=E,D===t&&C<F.length-1&&(e.push(\"\"),D=0)}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},hD=e=>{const u=e.split(\" \");let t=u.length;for(;t>0&&!(p(u[t-1])>0);)t--;return t===u.length?e:u.slice(0,t).join(\" \")+u.slice(t).join(\"\")},lD=(e,u,t={})=>{if(t.trim!==!1&&e.trim()===\"\")return\"\";let F=\"\",s,i;const D=aD(e);let C=[\"\"];for(const[E,a]of e.split(\" \").entries()){t.trim!==!1&&(C[C.length-1]=C[C.length-1].trimStart());let o=p(C[C.length-1]);if(E!==0&&(o>=u&&(t.wordWrap===!1||t.trim===!1)&&(C.push(\"\"),o=0),(o>0||t.trim===!1)&&(C[C.length-1]+=\" \",o++)),t.hard&&D[E]>u){const c=u-o,f=1+Math.floor((D[E]-c-1)/u);Math.floor((D[E]-1)/u)<f&&C.push(\"\"),k(C,a,u);continue}if(o+D[E]>u&&o>0&&D[E]>0){if(t.wordWrap===!1&&o<u){k(C,a,u);continue}C.push(\"\")}if(o+D[E]>u&&t.wordWrap===!1){k(C,a,u);continue}C[C.length-1]+=a}t.trim!==!1&&(C=C.map(E=>hD(E)));const n=[...C.join(`\n`)];for(const[E,a]of n.entries()){if(F+=a,d.has(a)){const{groups:c}=new RegExp(`(?:\\\\${V}(?<code>\\\\d+)m|\\\\${_}(?<uri>.*)${y})`).exec(n.slice(E).join(\"\"))||{groups:{}};if(c.code!==void 0){const f=Number.parseFloat(c.code);s=f===oD?void 0:f}else c.uri!==void 0&&(i=c.uri.length===0?void 0:c.uri)}const o=ED.codes.get(Number(s));n[E+1]===`\n`?(i&&(F+=K(\"\")),s&&o&&(F+=z(o))):a===`\n`&&(s&&o&&(F+=z(s)),i&&(F+=K(i)))}return F};function Y(e,u,t){return String(e).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(F=>lD(F,u,t)).join(`\n`)}const xD=[\"up\",\"down\",\"left\",\"right\",\"space\",\"enter\",\"cancel\"],B={actions:new Set(xD),aliases:new Map([[\"k\",\"up\"],[\"j\",\"down\"],[\"h\",\"left\"],[\"l\",\"right\"],[\"\u0003\",\"cancel\"],[\"escape\",\"cancel\"]])};function cD(e){for(const u in e){const t=u;if(!Object.hasOwn(e,t))continue;const F=e[t];switch(t){case\"aliases\":{for(const s in F)Object.hasOwn(F,s)&&(B.aliases.has(s)||B.aliases.set(s,F[s]));break}}}}function $(e,u){if(typeof e==\"string\")return B.aliases.get(e)===u;for(const t of e)if(t!==void 0&&$(t,u))return!0;return!1}function BD(e,u){if(e===u)return;const t=e.split(`\n`),F=u.split(`\n`),s=[];for(let i=0;i<Math.max(t.length,F.length);i++)t[i]!==F[i]&&s.push(i);return s}const AD=globalThis.process.platform.startsWith(\"win\"),S=Symbol(\"clack:cancel\");function pD(e){return e===S}function m(e,u){const t=e;t.isTTY&&t.setRawMode(u)}function fD({input:e=j,output:u=M,overwrite:t=!0,hideCursor:F=!0}={}){const s=g.createInterface({input:e,output:u,prompt:\"\",tabSize:1});g.emitKeypressEvents(e,s),e.isTTY&&e.setRawMode(!0);const i=(D,{name:C,sequence:n})=>{const E=String(D);if($([E,C,n],\"cancel\")){F&&u.write(l.show),process.exit(0);return}if(!t)return;const a=C===\"return\"?0:-1,o=C===\"return\"?-1:0;g.moveCursor(u,a,o,()=>{g.clearLine(u,1,()=>{e.once(\"keypress\",i)})})};return F&&u.write(l.hide),e.once(\"keypress\",i),()=>{e.off(\"keypress\",i),F&&u.write(l.show),e.isTTY&&!AD&&e.setRawMode(!1),s.terminal=!1,s.close()}}var gD=Object.defineProperty,vD=(e,u,t)=>u in e?gD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,h=(e,u,t)=>(vD(e,typeof u!=\"symbol\"?u+\"\":u,t),t);class x{constructor(u,t=!0){h(this,\"input\"),h(this,\"output\"),h(this,\"_abortSignal\"),h(this,\"rl\"),h(this,\"opts\"),h(this,\"_render\"),h(this,\"_track\",!1),h(this,\"_prevFrame\",\"\"),h(this,\"_subscribers\",new Map),h(this,\"_cursor\",0),h(this,\"state\",\"initial\"),h(this,\"error\",\"\"),h(this,\"value\");const{input:F=j,output:s=M,render:i,signal:D,...C}=u;this.opts=C,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=D,this.input=F,this.output=s}unsubscribe(){this._subscribers.clear()}setSubscriber(u,t){const F=this._subscribers.get(u)??[];F.push(t),this._subscribers.set(u,F)}on(u,t){this.setSubscriber(u,{cb:t})}once(u,t){this.setSubscriber(u,{cb:t,once:!0})}emit(u,...t){const F=this._subscribers.get(u)??[],s=[];for(const i of F)i.cb(...t),i.once&&s.push(()=>F.splice(F.indexOf(i),1));for(const i of s)i()}prompt(){return new Promise((u,t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=\"cancel\",this.close(),u(S);this._abortSignal.addEventListener(\"abort\",()=>{this.state=\"cancel\",this.close()},{once:!0})}const F=new X;F._write=(s,i,D)=>{this._track&&(this.value=this.rl?.line.replace(/\\t/g,\"\"),this._cursor=this.rl?.cursor??0,this.emit(\"value\",this.value)),D()},this.input.pipe(F),this.rl=O.createInterface({input:this.input,output:F,tabSize:2,prompt:\"\",escapeCodeTimeout:50,terminal:!0}),O.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(\"keypress\",this.onKeypress),m(this.input,!0),this.output.on(\"resize\",this.render),this.render(),this.once(\"submit\",()=>{this.output.write(l.show),this.output.off(\"resize\",this.render),m(this.input,!1),u(this.value)}),this.once(\"cancel\",()=>{this.output.write(l.show),this.output.off(\"resize\",this.render),m(this.input,!1),u(S)})})}onKeypress(u,t){if(this.state===\"error\"&&(this.state=\"active\"),t?.name&&(!this._track&&B.aliases.has(t.name)&&this.emit(\"cursor\",B.aliases.get(t.name)),B.actions.has(t.name)&&this.emit(\"cursor\",t.name)),u&&(u.toLowerCase()===\"y\"||u.toLowerCase()===\"n\")&&this.emit(\"confirm\",u.toLowerCase()===\"y\"),u===\"\t\"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit(\"value\",this.opts.placeholder))),u&&this.emit(\"key\",u.toLowerCase()),t?.name===\"return\"){if(this.opts.validate){const F=this.opts.validate(this.value);F&&(this.error=F instanceof Error?F.message:F,this.state=\"error\",this.rl?.write(this.value))}this.state!==\"error\"&&(this.state=\"submit\")}$([u,t?.name,t?.sequence],\"cancel\")&&(this.state=\"cancel\"),(this.state===\"submit\"||this.state===\"cancel\")&&this.emit(\"finalize\"),this.render(),(this.state===\"submit\"||this.state===\"cancel\")&&this.close()}close(){this.input.unpipe(),this.input.removeListener(\"keypress\",this.onKeypress),this.output.write(`\n`),m(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const u=Y(this._prevFrame,process.stdout.columns,{hard:!0}).split(`\n`).length-1;this.output.write(l.move(-999,u*-1))}render(){const u=Y(this._render(this)??\"\",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state===\"initial\")this.output.write(l.hide);else{const t=BD(this._prevFrame,u);if(this.restoreCursor(),t&&t?.length===1){const F=t[0];this.output.write(l.move(0,F)),this.output.write(b.lines(1));const s=u.split(`\n`);this.output.write(s[F]),this._prevFrame=u,this.output.write(l.move(0,s.length-F-1));return}if(t&&t?.length>1){const F=t[0];this.output.write(l.move(0,F)),this.output.write(b.down());const s=u.split(`\n`).slice(F);this.output.write(s.join(`\n`)),this._prevFrame=u;return}this.output.write(b.down())}this.output.write(u),this.state===\"initial\"&&(this.state=\"active\"),this._prevFrame=u}}}class dD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on(\"value\",()=>{this.value=this._value}),this.on(\"confirm\",t=>{this.output.write(l.move(0,-1)),this.value=t,this.state=\"submit\",this.close()}),this.on(\"cursor\",()=>{this.value=!this.value})}}var mD=Object.defineProperty,bD=(e,u,t)=>u in e?mD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,Z=(e,u,t)=>(bD(e,typeof u!=\"symbol\"?u+\"\":u,t),t),q=(e,u,t)=>{if(!u.has(e))throw TypeError(\"Cannot \"+t)},T=(e,u,t)=>(q(e,u,\"read from private field\"),t?t.call(e):u.get(e)),wD=(e,u,t)=>{if(u.has(e))throw TypeError(\"Cannot add the same private member more than once\");u instanceof WeakSet?u.add(e):u.set(e,t)},yD=(e,u,t,F)=>(q(e,u,\"write to private field\"),F?F.call(e,t):u.set(e,t),t),A;let _D=class extends x{constructor(u){super(u,!1),Z(this,\"options\"),Z(this,\"cursor\",0),wD(this,A,void 0);const{options:t}=u;yD(this,A,u.selectableGroups!==!1),this.options=Object.entries(t).flatMap(([F,s])=>[{value:F,group:!0,label:F},...s.map(i=>({...i,group:F}))]),this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),T(this,A)?0:1),this.on(\"cursor\",F=>{switch(F){case\"left\":case\"up\":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;const s=this.options[this.cursor]?.group===!0;!T(this,A)&&s&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case\"down\":case\"right\":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;const s=this.options[this.cursor]?.group===!0;!T(this,A)&&s&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case\"space\":this.toggleValue();break}})}getGroupItems(u){return this.options.filter(t=>t.group===u)}isGroupSelected(u){return this.getGroupItems(u).every(t=>this.value.includes(t.value))}toggleValue(){const u=this.options[this.cursor];if(u.group===!0){const t=u.value,F=this.getGroupItems(t);this.isGroupSelected(t)?this.value=this.value.filter(s=>F.findIndex(i=>i.value===s)===-1):this.value=[...this.value,...F.map(s=>s.value)],this.value=Array.from(new Set(this.value))}else{const t=this.value.includes(u.value);this.value=t?this.value.filter(F=>F!==u.value):[...this.value,u.value]}}};A=new WeakMap;var kD=Object.defineProperty,$D=(e,u,t)=>u in e?kD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,H=(e,u,t)=>($D(e,typeof u!=\"symbol\"?u+\"\":u,t),t);let SD=class extends x{constructor(u){super(u,!1),H(this,\"options\"),H(this,\"cursor\",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===u.cursorAt),0),this.on(\"key\",t=>{t===\"a\"&&this.toggleAll()}),this.on(\"cursor\",t=>{switch(t){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case\"space\":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(t=>t.value)}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(t=>t!==this._value):[...this.value,this._value]}};var TD=Object.defineProperty,jD=(e,u,t)=>u in e?TD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,U=(e,u,t)=>(jD(e,typeof u!=\"symbol\"?u+\"\":u,t),t);class MD extends x{constructor({mask:u,...t}){super(t),U(this,\"valueWithCursor\",\"\"),U(this,\"_mask\",\"\\u2022\"),this._mask=u??\"\\u2022\",this.on(\"finalize\",()=>{this.valueWithCursor=this.masked}),this.on(\"value\",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${v.inverse(v.hidden(\"_\"))}`;else{const F=this.masked.slice(0,this.cursor),s=this.masked.slice(this.cursor);this.valueWithCursor=`${F}${v.inverse(s[0])}${s.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}var OD=Object.defineProperty,PD=(e,u,t)=>u in e?OD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,J=(e,u,t)=>(PD(e,typeof u!=\"symbol\"?u+\"\":u,t),t);class LD extends x{constructor(u){super(u,!1),J(this,\"options\"),J(this,\"cursor\",0),this.options=u.options,this.cursor=this.options.findIndex(({value:t})=>t===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(\"cursor\",t=>{switch(t){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}var WD=Object.defineProperty,ND=(e,u,t)=>u in e?WD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,Q=(e,u,t)=>(ND(e,typeof u!=\"symbol\"?u+\"\":u,t),t);class ID extends x{constructor(u){super(u,!1),Q(this,\"options\"),Q(this,\"cursor\",0),this.options=u.options;const t=this.options.map(({value:[F]})=>F?.toLowerCase());this.cursor=Math.max(t.indexOf(u.initialValue),0),this.on(\"key\",F=>{if(!t.includes(F))return;const s=this.options.find(({value:[i]})=>i?.toLowerCase()===F);s&&(this.value=s.value,this.state=\"submit\",this.emit(\"submit\"))})}}class RD extends x{get valueWithCursor(){if(this.state===\"submit\")return this.value;if(this.cursor>=this.value.length)return`${this.value}\\u2588`;const u=this.value.slice(0,this.cursor),[t,...F]=this.value.slice(this.cursor);return`${u}${v.inverse(t)}${F.join(\"\")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on(\"finalize\",()=>{this.value||(this.value=u.defaultValue)})}}export{dD as ConfirmPrompt,_D as GroupMultiSelectPrompt,SD as MultiSelectPrompt,MD as PasswordPrompt,x as Prompt,ID as SelectKeyPrompt,LD as SelectPrompt,RD as TextPrompt,fD as block,pD as isCancel,cD as updateSettings};\n//# sourceMappingURL=index.mjs.map\n",
|
|
9
|
+
"import{stripVTControlCharacters as S}from\"node:util\";import{TextPrompt as Q,PasswordPrompt as X,ConfirmPrompt as Z,SelectPrompt as ee,SelectKeyPrompt as te,MultiSelectPrompt as re,GroupMultiSelectPrompt as se,isCancel as ie,block as ne}from\"@clack/core\";export{isCancel,updateSettings}from\"@clack/core\";import y from\"node:process\";import e from\"picocolors\";import{cursor as oe,erase as ae}from\"sisteransi\";function ce(){return y.platform!==\"win32\"?y.env.TERM!==\"linux\":!!y.env.CI||!!y.env.WT_SESSION||!!y.env.TERMINUS_SUBLIME||y.env.ConEmuTask===\"{cmd::Cmder}\"||y.env.TERM_PROGRAM===\"Terminus-Sublime\"||y.env.TERM_PROGRAM===\"vscode\"||y.env.TERM===\"xterm-256color\"||y.env.TERM===\"alacritty\"||y.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const V=ce(),u=(t,n)=>V?t:n,le=u(\"\\u25C6\",\"*\"),L=u(\"\\u25A0\",\"x\"),W=u(\"\\u25B2\",\"x\"),C=u(\"\\u25C7\",\"o\"),ue=u(\"\\u250C\",\"T\"),o=u(\"\\u2502\",\"|\"),d=u(\"\\u2514\",\"\\u2014\"),k=u(\"\\u25CF\",\">\"),P=u(\"\\u25CB\",\" \"),A=u(\"\\u25FB\",\"[\\u2022]\"),T=u(\"\\u25FC\",\"[+]\"),F=u(\"\\u25FB\",\"[ ]\"),$e=u(\"\\u25AA\",\"\\u2022\"),_=u(\"\\u2500\",\"-\"),me=u(\"\\u256E\",\"+\"),de=u(\"\\u251C\",\"+\"),pe=u(\"\\u256F\",\"+\"),q=u(\"\\u25CF\",\"\\u2022\"),D=u(\"\\u25C6\",\"*\"),U=u(\"\\u25B2\",\"!\"),K=u(\"\\u25A0\",\"x\"),b=t=>{switch(t){case\"initial\":case\"active\":return e.cyan(le);case\"cancel\":return e.red(L);case\"error\":return e.yellow(W);case\"submit\":return e.green(C)}},G=t=>{const{cursor:n,options:r,style:i}=t,s=t.maxItems??Number.POSITIVE_INFINITY,c=Math.max(process.stdout.rows-4,0),a=Math.min(c,Math.max(s,5));let l=0;n>=l+a-3?l=Math.max(Math.min(n-a+3,r.length-a),0):n<l+2&&(l=Math.max(n-2,0));const $=a<r.length&&l>0,g=a<r.length&&l+a<r.length;return r.slice(l,l+a).map((p,v,f)=>{const j=v===0&&$,E=v===f.length-1&&g;return j||E?e.dim(\"...\"):i(p,v+l===n)})},he=t=>new Q({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,render(){const n=`${e.gray(o)}\n${b(this.state)} ${t.message}\n`,r=t.placeholder?e.inverse(t.placeholder[0])+e.dim(t.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),i=this.value?this.valueWithCursor:r;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(o)} ${i}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(o)} ${e.dim(this.value||t.placeholder)}`;case\"cancel\":return`${n}${e.gray(o)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n${e.gray(o)}`:\"\"}`;default:return`${n}${e.cyan(o)} ${i}\n${e.cyan(d)}\n`}}}).prompt(),ge=t=>new X({validate:t.validate,mask:t.mask??$e,render(){const n=`${e.gray(o)}\n${b(this.state)} ${t.message}\n`,r=this.valueWithCursor,i=this.masked;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(o)} ${i}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(o)} ${e.dim(i)}`;case\"cancel\":return`${n}${e.gray(o)} ${e.strikethrough(e.dim(i??\"\"))}${i?`\n${e.gray(o)}`:\"\"}`;default:return`${n}${e.cyan(o)} ${r}\n${e.cyan(d)}\n`}}}).prompt(),ye=t=>{const n=t.active??\"Yes\",r=t.inactive??\"No\";return new Z({active:n,inactive:r,initialValue:t.initialValue??!0,render(){const i=`${e.gray(o)}\n${b(this.state)} ${t.message}\n`,s=this.value?n:r;switch(this.state){case\"submit\":return`${i}${e.gray(o)} ${e.dim(s)}`;case\"cancel\":return`${i}${e.gray(o)} ${e.strikethrough(e.dim(s))}\n${e.gray(o)}`;default:return`${i}${e.cyan(o)} ${this.value?`${e.green(k)} ${n}`:`${e.dim(P)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(P)} ${e.dim(r)}`:`${e.green(k)} ${r}`}\n${e.cyan(d)}\n`}}}).prompt()},ve=t=>{const n=(r,i)=>{const s=r.label??String(r.value);switch(i){case\"selected\":return`${e.dim(s)}`;case\"active\":return`${e.green(k)} ${s} ${r.hint?e.dim(`(${r.hint})`):\"\"}`;case\"cancelled\":return`${e.strikethrough(e.dim(s))}`;default:return`${e.dim(P)} ${e.dim(s)}`}};return new ee({options:t.options,initialValue:t.initialValue,render(){const r=`${e.gray(o)}\n${b(this.state)} ${t.message}\n`;switch(this.state){case\"submit\":return`${r}${e.gray(o)} ${n(this.options[this.cursor],\"selected\")}`;case\"cancel\":return`${r}${e.gray(o)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(o)}`;default:return`${r}${e.cyan(o)} ${G({cursor:this.cursor,options:this.options,maxItems:t.maxItems,style:(i,s)=>n(i,s?\"active\":\"inactive\")}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()},we=t=>{const n=(r,i=\"inactive\")=>{const s=r.label??String(r.value);return i===\"selected\"?`${e.dim(s)}`:i===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:i===\"active\"?`${e.bgCyan(e.gray(` ${r.value} `))} ${s} ${r.hint?e.dim(`(${r.hint})`):\"\"}`:`${e.gray(e.bgWhite(e.inverse(` ${r.value} `)))} ${s} ${r.hint?e.dim(`(${r.hint})`):\"\"}`};return new te({options:t.options,initialValue:t.initialValue,render(){const r=`${e.gray(o)}\n${b(this.state)} ${t.message}\n`;switch(this.state){case\"submit\":return`${r}${e.gray(o)} ${n(this.options.find(i=>i.value===this.value)??t.options[0],\"selected\")}`;case\"cancel\":return`${r}${e.gray(o)} ${n(this.options[0],\"cancelled\")}\n${e.gray(o)}`;default:return`${r}${e.cyan(o)} ${this.options.map((i,s)=>n(i,s===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()},fe=t=>{const n=(r,i)=>{const s=r.label??String(r.value);return i===\"active\"?`${e.cyan(A)} ${s} ${r.hint?e.dim(`(${r.hint})`):\"\"}`:i===\"selected\"?`${e.green(T)} ${e.dim(s)} ${r.hint?e.dim(`(${r.hint})`):\"\"}`:i===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:i===\"active-selected\"?`${e.green(T)} ${s} ${r.hint?e.dim(`(${r.hint})`):\"\"}`:i===\"submitted\"?`${e.dim(s)}`:`${e.dim(F)} ${e.dim(s)}`};return new re({options:t.options,initialValues:t.initialValues,required:t.required??!0,cursorAt:t.cursorAt,validate(r){if(this.required&&r.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){const r=`${e.gray(o)}\n${b(this.state)} ${t.message}\n`,i=(s,c)=>{const a=this.value.includes(s.value);return c&&a?n(s,\"active-selected\"):a?n(s,\"selected\"):n(s,c?\"active\":\"inactive\")};switch(this.state){case\"submit\":return`${r}${e.gray(o)} ${this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case\"cancel\":{const s=this.options.filter(({value:c})=>this.value.includes(c)).map(c=>n(c,\"cancelled\")).join(e.dim(\", \"));return`${r}${e.gray(o)} ${s.trim()?`${s}\n${e.gray(o)}`:\"\"}`}case\"error\":{const s=this.error.split(`\n`).map((c,a)=>a===0?`${e.yellow(d)} ${e.yellow(c)}`:` ${c}`).join(`\n`);return`${r+e.yellow(o)} ${G({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:i}).join(`\n${e.yellow(o)} `)}\n${s}\n`}default:return`${r}${e.cyan(o)} ${G({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:i}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()},be=t=>{const{selectableGroups:n=!0}=t,r=(i,s,c=[])=>{const a=i.label??String(i.value),l=typeof i.group==\"string\",$=l&&(c[c.indexOf(i)+1]??{group:!0}),g=l&&$.group===!0,p=l?n?`${g?d:o} `:\" \":\"\";if(s===\"active\")return`${e.dim(p)}${e.cyan(A)} ${a} ${i.hint?e.dim(`(${i.hint})`):\"\"}`;if(s===\"group-active\")return`${p}${e.cyan(A)} ${e.dim(a)}`;if(s===\"group-active-selected\")return`${p}${e.green(T)} ${e.dim(a)}`;if(s===\"selected\"){const f=l||n?e.green(T):\"\";return`${e.dim(p)}${f} ${e.dim(a)} ${i.hint?e.dim(`(${i.hint})`):\"\"}`}if(s===\"cancelled\")return`${e.strikethrough(e.dim(a))}`;if(s===\"active-selected\")return`${e.dim(p)}${e.green(T)} ${a} ${i.hint?e.dim(`(${i.hint})`):\"\"}`;if(s===\"submitted\")return`${e.dim(a)}`;const v=l||n?e.dim(F):\"\";return`${e.dim(p)}${v} ${e.dim(a)}`};return new se({options:t.options,initialValues:t.initialValues,required:t.required??!0,cursorAt:t.cursorAt,selectableGroups:n,validate(i){if(this.required&&i.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){const i=`${e.gray(o)}\n${b(this.state)} ${t.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(o)} ${this.options.filter(({value:s})=>this.value.includes(s)).map(s=>r(s,\"submitted\")).join(e.dim(\", \"))}`;case\"cancel\":{const s=this.options.filter(({value:c})=>this.value.includes(c)).map(c=>r(c,\"cancelled\")).join(e.dim(\", \"));return`${i}${e.gray(o)} ${s.trim()?`${s}\n${e.gray(o)}`:\"\"}`}case\"error\":{const s=this.error.split(`\n`).map((c,a)=>a===0?`${e.yellow(d)} ${e.yellow(c)}`:` ${c}`).join(`\n`);return`${i}${e.yellow(o)} ${this.options.map((c,a,l)=>{const $=this.value.includes(c.value)||c.group===!0&&this.isGroupSelected(`${c.value}`),g=a===this.cursor;return!g&&typeof c.group==\"string\"&&this.options[this.cursor].value===c.group?r(c,$?\"group-active-selected\":\"group-active\",l):g&&$?r(c,\"active-selected\",l):$?r(c,\"selected\",l):r(c,g?\"active\":\"inactive\",l)}).join(`\n${e.yellow(o)} `)}\n${s}\n`}default:return`${i}${e.cyan(o)} ${this.options.map((s,c,a)=>{const l=this.value.includes(s.value)||s.group===!0&&this.isGroupSelected(`${s.value}`),$=c===this.cursor;return!$&&typeof s.group==\"string\"&&this.options[this.cursor].value===s.group?r(s,l?\"group-active-selected\":\"group-active\",a):$&&l?r(s,\"active-selected\",a):l?r(s,\"selected\",a):r(s,$?\"active\":\"inactive\",a)}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()},Me=(t=\"\",n=\"\")=>{const r=`\n${t}\n`.split(`\n`),i=S(n).length,s=Math.max(r.reduce((a,l)=>{const $=S(l);return $.length>a?$.length:a},0),i)+2,c=r.map(a=>`${e.gray(o)} ${e.dim(a)}${\" \".repeat(s-S(a).length)}${e.gray(o)}`).join(`\n`);process.stdout.write(`${e.gray(o)}\n${e.green(C)} ${e.reset(n)} ${e.gray(_.repeat(Math.max(s-i-1,1))+me)}\n${c}\n${e.gray(de+_.repeat(s+2)+pe)}\n`)},xe=(t=\"\")=>{process.stdout.write(`${e.gray(d)} ${e.red(t)}\n\n`)},Ie=(t=\"\")=>{process.stdout.write(`${e.gray(ue)} ${t}\n`)},Se=(t=\"\")=>{process.stdout.write(`${e.gray(o)}\n${e.gray(d)} ${t}\n\n`)},M={message:(t=\"\",{symbol:n=e.gray(o)}={})=>{const r=[`${e.gray(o)}`];if(t){const[i,...s]=t.split(`\n`);r.push(`${n} ${i}`,...s.map(c=>`${e.gray(o)} ${c}`))}process.stdout.write(`${r.join(`\n`)}\n`)},info:t=>{M.message(t,{symbol:e.blue(q)})},success:t=>{M.message(t,{symbol:e.green(D)})},step:t=>{M.message(t,{symbol:e.green(C)})},warn:t=>{M.message(t,{symbol:e.yellow(U)})},warning:t=>{M.warn(t)},error:t=>{M.message(t,{symbol:e.red(K)})}},J=`${e.gray(o)} `,x={message:async(t,{symbol:n=e.gray(o)}={})=>{process.stdout.write(`${e.gray(o)}\n${n} `);let r=3;for await(let i of t){i=i.replace(/\\n/g,`\n${J}`),i.includes(`\n`)&&(r=3+S(i.slice(i.lastIndexOf(`\n`))).length);const s=S(i).length;r+s<process.stdout.columns?(r+=s,process.stdout.write(i)):(process.stdout.write(`\n${J}${i.trimStart()}`),r=3+S(i.trimStart()).length)}process.stdout.write(`\n`)},info:t=>x.message(t,{symbol:e.blue(q)}),success:t=>x.message(t,{symbol:e.green(D)}),step:t=>x.message(t,{symbol:e.green(C)}),warn:t=>x.message(t,{symbol:e.yellow(U)}),warning:t=>x.warn(t),error:t=>x.message(t,{symbol:e.red(K)})},Y=({indicator:t=\"dots\"}={})=>{const n=V?[\"\\u25D2\",\"\\u25D0\",\"\\u25D3\",\"\\u25D1\"]:[\"\\u2022\",\"o\",\"O\",\"0\"],r=V?80:120,i=process.env.CI===\"true\";let s,c,a=!1,l=\"\",$,g=performance.now();const p=m=>{const h=m>1?\"Something went wrong\":\"Canceled\";a&&N(h,m)},v=()=>p(2),f=()=>p(1),j=()=>{process.on(\"uncaughtExceptionMonitor\",v),process.on(\"unhandledRejection\",v),process.on(\"SIGINT\",f),process.on(\"SIGTERM\",f),process.on(\"exit\",p)},E=()=>{process.removeListener(\"uncaughtExceptionMonitor\",v),process.removeListener(\"unhandledRejection\",v),process.removeListener(\"SIGINT\",f),process.removeListener(\"SIGTERM\",f),process.removeListener(\"exit\",p)},B=()=>{if($===void 0)return;i&&process.stdout.write(`\n`);const m=$.split(`\n`);process.stdout.write(oe.move(-999,m.length-1)),process.stdout.write(ae.down(m.length))},R=m=>m.replace(/\\.+$/,\"\"),O=m=>{const h=(performance.now()-m)/1e3,w=Math.floor(h/60),I=Math.floor(h%60);return w>0?`[${w}m ${I}s]`:`[${I}s]`},H=(m=\"\")=>{a=!0,s=ne(),l=R(m),g=performance.now(),process.stdout.write(`${e.gray(o)}\n`);let h=0,w=0;j(),c=setInterval(()=>{if(i&&l===$)return;B(),$=l;const I=e.magenta(n[h]);if(i)process.stdout.write(`${I} ${l}...`);else if(t===\"timer\")process.stdout.write(`${I} ${l} ${O(g)}`);else{const z=\".\".repeat(Math.floor(w)).slice(0,3);process.stdout.write(`${I} ${l}${z}`)}h=h+1<n.length?h+1:0,w=w<n.length?w+.125:0},r)},N=(m=\"\",h=0)=>{a=!1,clearInterval(c),B();const w=h===0?e.green(C):h===1?e.red(L):e.red(W);l=R(m??l),t===\"timer\"?process.stdout.write(`${w} ${l} ${O(g)}\n`):process.stdout.write(`${w} ${l}\n`),E(),s()};return{start:H,stop:N,message:(m=\"\")=>{l=R(m??l)}}},Ce=async(t,n)=>{const r={},i=Object.keys(t);for(const s of i){const c=t[s],a=await c({results:r})?.catch(l=>{throw l});if(typeof n?.onCancel==\"function\"&&ie(a)){r[s]=\"canceled\",n.onCancel({results:r});continue}r[s]=a}return r},Te=async t=>{for(const n of t){if(n.enabled===!1)continue;const r=Y();r.start(n.title);const i=await n.task(r.message);r.stop(i||n.title)}};export{xe as cancel,ye as confirm,Ce as group,be as groupMultiselect,Ie as intro,M as log,fe as multiselect,Me as note,Se as outro,ge as password,ve as select,we as selectKey,Y as spinner,x as stream,Te as tasks,he as text};\n//# sourceMappingURL=index.mjs.map\n",
|
|
10
|
+
"/* SPDX-FileCopyrightText: 2025-present Kriasoft */\n/* SPDX-License-Identifier: MIT */\n\nimport {\n cancel,\n intro,\n isCancel,\n multiselect,\n outro,\n spinner,\n text,\n} from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { findMcpConfigFiles, getMcpServers } from \"./config.js\";\nimport type { McpServer } from \"./types.js\";\n\nexport interface PromptsResult {\n configFiles: string[];\n servers: McpServer[];\n outputFile: string;\n}\n\n/**\n * Discover and select MCP config files.\n * @returns Selected absolute paths\n * @throws If no configs found\n */\nexport async function promptForConfigFiles(\n cwd: string = process.cwd(),\n): Promise<string[]> {\n const availableFiles = await findMcpConfigFiles(cwd);\n\n if (availableFiles.length === 0) {\n throw new Error(\n \"No MCP configuration files found. Create a .mcp.json file with your MCP server configuration.\",\n );\n }\n\n const configSelection = await multiselect({\n message: \"Select MCP configuration files to use:\",\n options: availableFiles.map((file) => ({\n value: file,\n label: file.replace(cwd + \"/\", \"\"),\n hint: `Found at ${file}`,\n })),\n initialValues: availableFiles, // Select all by default\n required: true,\n });\n\n if (isCancel(configSelection)) {\n cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n return configSelection as string[];\n}\n\n/**\n * Select servers from parsed configs.\n * @param configFiles Paths to parse for servers\n * @returns Deduplicated server list\n */\nexport async function promptForServers(\n configFiles: string[],\n): Promise<McpServer[]> {\n const allServers = getMcpServers(configFiles);\n\n if (allServers.length === 0) {\n throw new Error(\n \"No valid MCP servers found in configuration files. Check your .mcp.json configuration.\",\n );\n }\n\n const serverSelection = await multiselect({\n message: \"Select MCP servers to include:\",\n options: allServers.map((server) => ({\n value: server,\n label: `${server.url}`,\n hint: `Type: ${server.type}`,\n })),\n initialValues: allServers, // Select all by default\n required: true,\n });\n\n if (isCancel(serverSelection)) {\n cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n return serverSelection as McpServer[];\n}\n\n/**\n * Get output path for generated client.\n * @returns Validated TypeScript file path\n */\nexport async function promptForOutputFile(\n cwd: string = process.cwd(),\n): Promise<string> {\n // Smart default: src/ if exists, otherwise root\n const srcExists = existsSync(resolve(cwd, \"src\"));\n const defaultPath = srcExists ? \"src/mcp-client.ts\" : \"mcp-client.ts\";\n\n const outputPath = await text({\n message: \"Enter output file path:\",\n placeholder: defaultPath,\n defaultValue: defaultPath,\n validate: (value) => {\n if (!value || value.trim() === \"\") {\n return \"Output file path is required\";\n }\n if (!value.endsWith(\".ts\")) {\n return \"Output file must have .ts extension\";\n }\n return undefined;\n },\n });\n\n if (isCancel(outputPath)) {\n cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n return outputPath.trim();\n}\n\n/**\n * Interactive wizard or quick mode with defaults.\n * @param useDefaults Skip prompts with -y flag\n * @returns Complete generation config\n */\nexport async function runInteractiveSetup(\n cwd: string = process.cwd(),\n useDefaults: boolean = false,\n): Promise<PromptsResult> {\n if (useDefaults) {\n // Quick mode: all servers, default output path\n const configFiles = await findMcpConfigFiles(cwd);\n if (configFiles.length === 0) {\n throw new Error(\n \"No MCP configuration files found. Create a .mcp.json file with your MCP server configuration.\",\n );\n }\n\n const servers = getMcpServers(configFiles);\n if (servers.length === 0) {\n throw new Error(\n \"No valid MCP servers found in configuration files. Check your .mcp.json configuration.\",\n );\n }\n\n // Auto-detect src/ directory for better project structure\n const srcExists = existsSync(resolve(cwd, \"src\"));\n const outputFile = srcExists ? \"src/mcp-client.ts\" : \"mcp-client.ts\";\n\n console.log(\n `🚀 Using defaults: ${servers.length} server${servers.length !== 1 ? \"s\" : \"\"} → ${outputFile}`,\n );\n\n return {\n configFiles,\n servers,\n outputFile,\n };\n }\n intro(\"🧩 MCP Client Generator\");\n\n try {\n // Step 1: Choose which config files to use\n const configFiles = await promptForConfigFiles(cwd);\n\n // Step 2: Pick servers to generate client for\n const servers = await promptForServers(configFiles);\n\n // Step 3: Destination for generated TypeScript\n const outputFile = await promptForOutputFile(cwd);\n\n outro(\n `🎉 Configuration complete! Generating client for ${servers.length} server${servers.length !== 1 ? \"s\" : \"\"}`,\n );\n\n return {\n configFiles,\n servers,\n outputFile,\n };\n } catch (error) {\n cancel(`Error: ${(error as Error).message}`);\n process.exit(1);\n }\n}\n\n/**\n * Sequential server introspection with progress.\n * @returns Mock results (TODO: wire real McpClientManager)\n */\nexport async function introspectServers(servers: McpServer[]) {\n const s = spinner();\n s.start(\n `Introspecting ${servers.length} MCP server${servers.length !== 1 ? \"s\" : \"\"}...`,\n );\n\n const results = [];\n\n for (const [index, server] of servers.entries()) {\n s.message(\n `[${index + 1}/${servers.length}] Connecting to ${server.url}...`,\n );\n // TODO: McpClientManager.addServer()\n await new Promise((resolve) => setTimeout(resolve, 800));\n\n s.message(\n `[${index + 1}/${servers.length}] Fetching capabilities from ${server.url}...`,\n );\n // TODO: connection.client.listTools/Resources/Prompts()\n await new Promise((resolve) => setTimeout(resolve, 600));\n\n // Mock capabilities for development\n results.push({\n server,\n tools: Math.floor(Math.random() * 10) + 5,\n resources: Math.floor(Math.random() * 5),\n prompts: Math.floor(Math.random() * 3),\n });\n }\n\n const totalTools = results.reduce((sum, r) => sum + r.tools, 0);\n const totalResources = results.reduce((sum, r) => sum + r.resources, 0);\n const totalPrompts = results.reduce((sum, r) => sum + r.prompts, 0);\n\n s.stop(\n `✅ Successfully introspected ${servers.length} server${servers.length !== 1 ? \"s\" : \"\"}: ${totalTools} tools, ${totalResources} resources, ${totalPrompts} prompts`,\n );\n\n return results;\n}\n",
|
|
11
|
+
"/* SPDX-FileCopyrightText: 2025-present Kriasoft */\n/* SPDX-License-Identifier: MIT */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { McpServer } from \"./types.js\";\n\n/**\n * Priority-ordered paths for MCP configuration discovery.\n * .local files override non-local variants for local overrides.\n * @see https://code.visualstudio.com/docs/copilot/chat/mcp-servers\n */\nexport const MCP_CONFIG_PATHS = [\n \".mcp.local.json\",\n \".mcp.json\",\n \".cursor/mcp.local.json\",\n \".cursor/mcp.json\",\n \".vscode/mcp.local.json\",\n \".vscode/mcp.json\",\n];\n\n/**\n * Scan filesystem for MCP config files in priority order.\n * @param cwd Working directory to search from\n * @returns Absolute paths of existing config files\n */\nexport async function findMcpConfigFiles(\n cwd: string = process.cwd(),\n): Promise<string[]> {\n const foundFiles: string[] = [];\n\n for (const configPath of MCP_CONFIG_PATHS) {\n const fullPath = resolve(cwd, configPath);\n if (existsSync(fullPath)) {\n foundFiles.push(fullPath);\n }\n }\n\n return foundFiles;\n}\n\n/**\n * Parse MCP configs and extract unique server definitions.\n * @param paths Config file paths to parse (in priority order)\n * @returns Deduplicated servers (first URL occurrence wins)\n * @invariant Only returns http/sse servers, skips stdio/command servers\n * @supports Claude (.mcp.json), Cursor (.cursor/), VSCode (.vscode/) formats\n */\nexport function getMcpServers(paths: string[]): McpServer[] {\n const servers: McpServer[] = [];\n const seenUrls = new Set<string>();\n\n for (const path of paths) {\n try {\n const content = readFileSync(path, \"utf8\");\n const config = JSON.parse(content);\n\n // Claude/Cursor: mcpServers, VSCode: servers\n const isVSCodeFormat = !!config.servers;\n const serverConfigs = config.mcpServers || config.servers;\n\n if (serverConfigs && typeof serverConfigs === \"object\") {\n for (const [, serverConfig] of Object.entries(serverConfigs)) {\n if (typeof serverConfig === \"object\" && serverConfig !== null) {\n const server = serverConfig as any;\n const trimmedUrl =\n typeof server.url === \"string\" ? server.url.trim() : \"\";\n\n if (trimmedUrl && !seenUrls.has(trimmedUrl)) {\n // Infer type: explicit > format default (http)\n let serverType: \"http\" | \"sse\" | null = null;\n\n if (server.type === \"http\" || server.type === \"sse\") {\n serverType = server.type;\n } else if (server.type === \"stdio\" || server.command) {\n // stdio requires process spawning, not supported\n continue;\n } else if (!server.type) {\n // Missing type defaults to http for URL-based servers\n if (isVSCodeFormat || config.mcpServers) {\n serverType = \"http\";\n }\n }\n\n if (serverType) {\n seenUrls.add(trimmedUrl);\n servers.push({\n type: serverType,\n url: trimmedUrl,\n });\n }\n }\n }\n }\n }\n } catch (error) {\n // Invalid JSON ignored - user may have WIP configs\n continue;\n }\n }\n\n return servers;\n}\n"
|
|
12
|
+
],
|
|
13
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;EAEA,IAAM,MAAM;AAAA,EACZ,IAAM,MAAM,GAAG;AAAA,EACf,IAAM,OAAO;AAAA,EAEb,IAAM,SAAS;AAAA,IACb,EAAE,CAAC,GAAG,GAAG;AAAA,MACP,KAAK;AAAA,QAAG,OAAO,GAAG,MAAM,IAAI;AAAA,MAC5B,OAAO,GAAG,MAAM,IAAI,KAAK,IAAI;AAAA;AAAA,IAE/B,IAAI,CAAC,GAAG,GAAG;AAAA,MACT,IAAI,MAAM;AAAA,MAEV,IAAI,IAAI;AAAA,QAAG,OAAO,GAAG,OAAO;AAAA,MACvB,SAAI,IAAI;AAAA,QAAG,OAAO,GAAG,MAAM;AAAA,MAEhC,IAAI,IAAI;AAAA,QAAG,OAAO,GAAG,OAAO;AAAA,MACvB,SAAI,IAAI;AAAA,QAAG,OAAO,GAAG,MAAM;AAAA,MAEhC,OAAO;AAAA;AAAA,IAET,IAAI,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IAC5B,MAAM,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IAC9B,SAAS,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IACjC,UAAU,CAAC,QAAQ,MAAM,GAAG,MAAM;AAAA,IAClC,UAAU,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IAC/C,UAAU,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IAC/C,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,SAAS,GAAG;AAAA,EACd;AAAA,EAEA,IAAM,SAAS;AAAA,IACb,IAAI,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IACzC,MAAM,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,EAC7C;AAAA,EAEA,IAAM,QAAQ;AAAA,IACZ,QAAQ,GAAG;AAAA,IACX,IAAI,CAAC,QAAQ,MAAM,GAAG,QAAQ,OAAO,KAAK;AAAA,IAC1C,MAAM,CAAC,QAAQ,MAAM,GAAG,OAAO,OAAO,KAAK;AAAA,IAC3C,MAAM,GAAG;AAAA,IACT,SAAS,GAAG;AAAA,IACZ,WAAW,GAAG;AAAA,IACd,KAAK,CAAC,OAAO;AAAA,MACX,IAAI,QAAQ;AAAA,MACZ,SAAS,IAAI,EAAG,IAAI,OAAO;AAAA,QACzB,SAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI;AAAA,MACtD,IAAI;AAAA,QACF,SAAS,OAAO;AAAA,MAClB,OAAO;AAAA;AAAA,EAEX;AAAA,EAEA,OAAO,UAAU,EAAE,QAAQ,QAAQ,OAAO,KAAK;AAAA;;;;ECzD/C,IAAI,IAAI,WAAW,CAAC;AAAA,EAApB,IAAuB,OAAO,EAAE,QAAQ,CAAC;AAAA,EAAzC,IAA4C,MAAM,EAAE,OAAO,CAAC;AAAA,EAC5D,IAAI,uBACC,IAAI,YAAY,KAAK,SAAS,YAAY,SAC3C,IAAI,eAAe,KAAK,SAAS,SAAS,KAAK,EAAE,aAAa,YAAa,EAAE,UAAU,CAAC,GAAG,SAAS,IAAI,SAAS,YAAa,IAAI;AAAA,EAEtI,IAAI,YAAY,CAAC,MAAM,OAAO,UAAU,SACvC,WAAS;AAAA,IACR,IAAI,SAAS,KAAK,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,MAAM;AAAA,IAClE,QAAQ,QAAQ,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAG/F,IAAI,eAAe,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrD,IAAI,SAAS,IAAI,SAAS;AAAA,IAC1B,GAAG;AAAA,MACF,UAAU,OAAO,UAAU,QAAQ,KAAK,IAAI;AAAA,MAC5C,SAAS,QAAQ,MAAM;AAAA,MACvB,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,IACrC,UAAU;AAAA,IACV,OAAO,SAAS,OAAO,UAAU,MAAM;AAAA;AAAA,EAGxC,IAAI,eAAe,CAAC,UAAU,qBAAqB;AAAA,IAClD,IAAI,IAAI,UAAU,YAAY,MAAM;AAAA,IACpC,OAAO;AAAA,MACN,kBAAkB;AAAA,MAClB,OAAO,EAAE,WAAW,SAAS;AAAA,MAC7B,MAAM,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAChD,KAAK,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAC/C,QAAQ,EAAE,WAAW,UAAU;AAAA,MAC/B,WAAW,EAAE,WAAW,UAAU;AAAA,MAClC,SAAS,EAAE,WAAW,UAAU;AAAA,MAChC,QAAQ,EAAE,WAAW,UAAU;AAAA,MAC/B,eAAe,EAAE,WAAW,UAAU;AAAA,MAEtC,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,KAAK,EAAE,YAAY,UAAU;AAAA,MAC7B,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,MAAM,EAAE,YAAY,UAAU;AAAA,MAC9B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,MAAM,EAAE,YAAY,UAAU;AAAA,MAC9B,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,MAAM,EAAE,YAAY,UAAU;AAAA,MAE9B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,OAAO,EAAE,YAAY,UAAU;AAAA,MAC/B,SAAS,EAAE,YAAY,UAAU;AAAA,MACjC,UAAU,EAAE,YAAY,UAAU;AAAA,MAClC,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,WAAW,EAAE,YAAY,UAAU;AAAA,MACnC,QAAQ,EAAE,YAAY,UAAU;AAAA,MAChC,SAAS,EAAE,YAAY,UAAU;AAAA,MAEjC,aAAa,EAAE,YAAY,UAAU;AAAA,MACrC,WAAW,EAAE,YAAY,UAAU;AAAA,MACnC,aAAa,EAAE,YAAY,UAAU;AAAA,MACrC,cAAc,EAAE,YAAY,UAAU;AAAA,MACtC,YAAY,EAAE,YAAY,UAAU;AAAA,MACpC,eAAe,EAAE,YAAY,UAAU;AAAA,MACvC,YAAY,EAAE,YAAY,UAAU;AAAA,MACpC,aAAa,EAAE,YAAY,UAAU;AAAA,MAErC,eAAe,EAAE,aAAa,UAAU;AAAA,MACxC,aAAa,EAAE,aAAa,UAAU;AAAA,MACtC,eAAe,EAAE,aAAa,UAAU;AAAA,MACxC,gBAAgB,EAAE,aAAa,UAAU;AAAA,MACzC,cAAc,EAAE,aAAa,UAAU;AAAA,MACvC,iBAAiB,EAAE,aAAa,UAAU;AAAA,MAC1C,cAAc,EAAE,aAAa,UAAU;AAAA,MACvC,eAAe,EAAE,aAAa,UAAU;AAAA,IACzC;AAAA;AAAA,EAGD,OAAO,UAAU,aAAa;AAAA,EAC9B,OAAO,QAAQ,eAAe;AAAA;;;ACtE9B,uBAAS,6BAAY;AACrB,oBAAS;AACT;;;ACNA;AAAoM;AAArJ,kBAAO,aAAW;AAA+B;AAAgC;AAA6B,qBAAO;AAA0D,SAAS,EAAE,GAAE,WAAU,IAAE,UAAI,CAAC,GAAE;AAAA,EAAC,MAAM,IAAE,CAAC,2JAA0J,0DAA0D,EAAE,KAAK,GAAG;AAAA,EAAE,OAAO,IAAI,OAAO,GAAE,IAAO,YAAE,GAAG;AAAA;AAAE,IAAM,KAAG,GAAG;AAAE,SAAS,CAAC,CAAC,GAAE;AAAA,EAAC,IAAG,OAAO,KAAG;AAAA,IAAS,MAAM,IAAI,UAAU,gCAAgC,OAAO,KAAK;AAAA,EAAE,OAAO,EAAE,QAAQ,IAAG,EAAE;AAAA;AAAE,SAAS,CAAC,CAAC,GAAE;AAAA,EAAC,OAAO,KAAG,EAAE,cAAY,OAAO,UAAU,eAAe,KAAK,GAAE,SAAS,IAAE,EAAE,UAAQ;AAAA;AAAE,IAAI,IAAE,EAAC,SAAQ,CAAC,EAAC;AAAA,CAAG,QAAQ,CAAC,GAAE;AAAA,EAAC,IAAI,IAAE,CAAC;AAAA,EAAE,EAAE,UAAQ,GAAE,EAAE,iBAAe,QAAQ,CAAC,GAAE;AAAA,IAAC,IAAI,IAAE,EAAE,WAAW,CAAC,GAAE,IAAE,EAAE,UAAQ,IAAE,EAAE,WAAW,CAAC,IAAE,GAAE,IAAE;AAAA,IAAE,OAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,UAAQ,KAAG,MAAK,KAAG,MAAK,IAAE,KAAG,KAAG,GAAE,KAAG,QAAO,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,QAAM,MAAI,KAAG,QAAM,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,QAAM,MAAI,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,UAAQ,UAAQ,KAAG,KAAG,SAAO,MAAI,MAAI,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,QAAM,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,OAAK,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,KAAG,Q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",
|
|
14
|
+
"debugId": "C4AC6AA8FC60AED264756E2164756E21",
|
|
15
|
+
"names": []
|
|
16
|
+
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-client-gen",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Interactive CLI tool that generates type-safe TypeScript clients from MCP servers",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"mcp-client-gen": "./dist/
|
|
8
|
+
"mcp-client-gen": "./dist/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist"
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@clack/prompts": "^0.11.0",
|
|
49
|
+
"oauth-callback": "^1.2.0",
|
|
49
50
|
"ts-morph": "^26.0.0"
|
|
50
51
|
},
|
|
51
52
|
"peerDependencies": {
|
|
@@ -53,13 +54,28 @@
|
|
|
53
54
|
"typescript": "^5.9.2"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
|
-
"@modelcontextprotocol/sdk": "^1.17.
|
|
57
|
+
"@modelcontextprotocol/sdk": "^1.17.3",
|
|
57
58
|
"@types/bun": "latest",
|
|
58
59
|
"prettier": "^3.6.2",
|
|
59
60
|
"typescript": "^5.9.2"
|
|
60
61
|
},
|
|
62
|
+
"prettier": {
|
|
63
|
+
"trailingComma": "all",
|
|
64
|
+
"tabWidth": 2,
|
|
65
|
+
"semi": true,
|
|
66
|
+
"singleQuote": false,
|
|
67
|
+
"endOfLine": "lf"
|
|
68
|
+
},
|
|
61
69
|
"scripts": {
|
|
62
|
-
"build": "bun build
|
|
70
|
+
"build": "bun build src/cli.ts --outdir dist --target node --sourcemap",
|
|
71
|
+
"clean": "rm -rf dist",
|
|
72
|
+
"test": "bun test src",
|
|
73
|
+
"test:e2e": "bun test test/e2e",
|
|
74
|
+
"test:all": "bun test",
|
|
75
|
+
"typecheck": "bun tsc -p tsconfig.json --noEmit",
|
|
76
|
+
"format": "bun prettier --write .",
|
|
77
|
+
"format:check": "bun prettier --check .",
|
|
78
|
+
"validate": "bun run format:check && bun run typecheck && bun run test:all",
|
|
63
79
|
"prepublishOnly": "bun run build"
|
|
64
80
|
}
|
|
65
81
|
}
|