@hol-org/hashnet-mcp 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/up.js +20 -9
- package/dist/cli/up.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/up.js
CHANGED
|
@@ -26,15 +26,15 @@ var logInfo = (...messages) => preferStderr ? console.error(...messages) : conso
|
|
|
26
26
|
var logWarn = (...messages) => preferStderr ? console.error(...messages) : console.warn(...messages);
|
|
27
27
|
try {
|
|
28
28
|
ensureNodeVersion();
|
|
29
|
-
const packageManager = detectPackageManager();
|
|
29
|
+
const packageManager = detectPackageManager(preferStderr);
|
|
30
30
|
ensurePnpmConfig();
|
|
31
|
-
installDependencies(packageManager);
|
|
31
|
+
installDependencies(packageManager, preferStderr);
|
|
32
32
|
ensureEnvFile();
|
|
33
33
|
if (installOnly) {
|
|
34
34
|
logInfo("Dependencies installed. Skipping server launch (--install-only set).");
|
|
35
35
|
process.exit(0);
|
|
36
36
|
}
|
|
37
|
-
runServer(packageManager, transport);
|
|
37
|
+
runServer(packageManager, transport, preferStderr);
|
|
38
38
|
} catch (error) {
|
|
39
39
|
console.error(error instanceof Error ? error.message : error);
|
|
40
40
|
process.exit(1);
|
|
@@ -74,12 +74,17 @@ function ensureNodeVersion() {
|
|
|
74
74
|
throw new Error(`Node.js 18+ is required (detected ${process.versions.node}).`);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
function detectPackageManager() {
|
|
77
|
+
function detectPackageManager(preferStderr2) {
|
|
78
78
|
if (commandExists("pnpm")) {
|
|
79
79
|
return "pnpm";
|
|
80
80
|
}
|
|
81
81
|
logWarn("pnpm not detected. Attempting to enable via corepack...");
|
|
82
|
-
const enabled = spawnSync("corepack", ["enable", "pnpm"], {
|
|
82
|
+
const enabled = spawnSync("corepack", ["enable", "pnpm"], {
|
|
83
|
+
stdio: preferStderr2 ? ["ignore", "pipe", "inherit"] : "inherit"
|
|
84
|
+
});
|
|
85
|
+
if (preferStderr2 && enabled.stdout?.length) {
|
|
86
|
+
process.stderr.write(enabled.stdout);
|
|
87
|
+
}
|
|
83
88
|
if (enabled.status === 0 && commandExists("pnpm")) {
|
|
84
89
|
return "pnpm";
|
|
85
90
|
}
|
|
@@ -94,7 +99,7 @@ function commandExists(bin) {
|
|
|
94
99
|
return false;
|
|
95
100
|
}
|
|
96
101
|
}
|
|
97
|
-
function installDependencies(pm) {
|
|
102
|
+
function installDependencies(pm, preferStderr2) {
|
|
98
103
|
logInfo(`Installing dependencies with ${pm}...`);
|
|
99
104
|
const baseEnv = {
|
|
100
105
|
...process.env,
|
|
@@ -103,9 +108,12 @@ function installDependencies(pm) {
|
|
|
103
108
|
const npmArgs = ["install", "--legacy-peer-deps"];
|
|
104
109
|
const installResult = spawnSync(pm, pm === "pnpm" ? ["install"] : npmArgs, {
|
|
105
110
|
cwd: projectRoot,
|
|
106
|
-
stdio: "inherit",
|
|
111
|
+
stdio: preferStderr2 ? ["ignore", "pipe", "inherit"] : "inherit",
|
|
107
112
|
env: baseEnv
|
|
108
113
|
});
|
|
114
|
+
if (preferStderr2 && installResult.stdout?.length) {
|
|
115
|
+
process.stderr.write(installResult.stdout);
|
|
116
|
+
}
|
|
109
117
|
if (installResult.status !== 0) {
|
|
110
118
|
throw new Error(`${pm} install failed.`);
|
|
111
119
|
}
|
|
@@ -134,7 +142,7 @@ function ensureEnvFile() {
|
|
|
134
142
|
logInfo("Created .env from .env.example. Remember to fill in your credentials.");
|
|
135
143
|
}
|
|
136
144
|
}
|
|
137
|
-
function runServer(pm, transport2) {
|
|
145
|
+
function runServer(pm, transport2, preferStderr2) {
|
|
138
146
|
if (!["stdio", "sse"].includes(transport2)) {
|
|
139
147
|
throw new Error(`Unsupported transport "${transport2}". Use stdio or sse.`);
|
|
140
148
|
}
|
|
@@ -144,9 +152,12 @@ function runServer(pm, transport2) {
|
|
|
144
152
|
logInfo("dist/index.js not found. Building project before start...");
|
|
145
153
|
const buildResult = spawnSync(pm, ["run", "build"], {
|
|
146
154
|
cwd: projectRoot,
|
|
147
|
-
stdio: "inherit",
|
|
155
|
+
stdio: preferStderr2 ? ["ignore", "pipe", "inherit"] : "inherit",
|
|
148
156
|
env
|
|
149
157
|
});
|
|
158
|
+
if (preferStderr2 && buildResult.stdout?.length) {
|
|
159
|
+
process.stderr.write(buildResult.stdout);
|
|
160
|
+
}
|
|
150
161
|
if (buildResult.status !== 0) {
|
|
151
162
|
throw new Error(`${pm} run build exited with code ${buildResult.status}`);
|
|
152
163
|
}
|
package/dist/cli/up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/up.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport { copyFileSync, existsSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst dirname = path.dirname(fileURLToPath(import.meta.url));\nconst projectRoot = path.resolve(dirname, '../..');\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nif (!command || command === '--help' || command === '-h') {\n printHelp();\n process.exit(0);\n}\n\nif (command !== 'up') {\n console.error(`Unknown command: ${command}`);\n printHelp();\n process.exit(1);\n}\n\nconst flags = parseFlags(args.slice(1));\nconst transport = (flags.transport ?? 'stdio').toLowerCase();\nconst installOnly = Boolean(flags['install-only']);\nconst preferStderr = transport === 'stdio';\nconst logInfo = (...messages: any[]) => (preferStderr ? console.error(...messages) : console.log(...messages));\nconst logWarn = (...messages: any[]) => (preferStderr ? console.error(...messages) : console.warn(...messages));\n\ntry {\n ensureNodeVersion();\n const packageManager = detectPackageManager();\n ensurePnpmConfig();\n installDependencies(packageManager);\n ensureEnvFile();\n\n if (installOnly) {\n logInfo('Dependencies installed. Skipping server launch (--install-only set).');\n process.exit(0);\n }\n\n runServer(packageManager, transport);\n} catch (error) {\n console.error(error instanceof Error ? error.message : error);\n process.exit(1);\n}\n\nfunction printHelp() {\n console.log(`Usage: npx @hol-org/hashnet-mcp up [options]\\n\\nOptions:\\n --transport <stdio|sse> Choose the transport to start (default: stdio)\\n --install-only Install deps and sync .env, then exit\\n -h, --help Show this help message`);\n}\n\nfunction parseFlags(values: string[]) {\n const cloned = [...values];\n return cloned.reduce<Record<string, any>>((acc, entry, index) => {\n if (entry.startsWith('--')) {\n const [key, inlineValue] = entry.split('=');\n const normalized = key.replace(/^--/, '');\n if (inlineValue !== undefined) {\n acc[normalized] = inlineValue;\n } else {\n const next = cloned[index + 1];\n if (next && !next.startsWith('--')) {\n acc[normalized] = next;\n cloned.splice(index + 1, 1);\n } else {\n acc[normalized] = true;\n }\n }\n }\n return acc;\n }, {});\n}\n\nfunction ensureNodeVersion() {\n const major = Number(process.versions.node.split('.')[0]);\n if (Number.isNaN(major) || major < 18) {\n throw new Error(`Node.js 18+ is required (detected ${process.versions.node}).`);\n }\n}\n\nfunction detectPackageManager(): 'pnpm' | 'npm' {\n if (commandExists('pnpm')) {\n return 'pnpm';\n }\n\n logWarn('pnpm not detected. Attempting to enable via corepack...');\n const enabled = spawnSync('corepack', ['enable', 'pnpm'], { stdio: 'inherit' });\n if (enabled.status === 0 && commandExists('pnpm')) {\n return 'pnpm';\n }\n\n logWarn('Falling back to npm. Install pnpm globally for faster installs.');\n return 'npm';\n}\n\nfunction commandExists(bin: string) {\n try {\n const result = spawnSync(bin, ['--version'], { stdio: 'ignore' });\n return result.status === 0;\n } catch {\n return false;\n }\n}\n\nfunction installDependencies(pm: 'pnpm' | 'npm') {\n logInfo(`Installing dependencies with ${pm}...`);\n const baseEnv = {\n ...process.env,\n NODE_OPTIONS: process.env.NODE_OPTIONS ?? '--max-old-space-size=8192',\n };\n\n const npmArgs = ['install', '--legacy-peer-deps'];\n\n const installResult = spawnSync(pm, pm === 'pnpm' ? ['install'] : npmArgs, {\n cwd: projectRoot,\n stdio: 'inherit',\n env: baseEnv,\n });\n if (installResult.status !== 0) {\n throw new Error(`${pm} install failed.`);\n }\n}\n\nfunction ensurePnpmConfig() {\n const npmrcPath = path.join(projectRoot, '.npmrc');\n if (existsSync(npmrcPath)) {\n return;\n }\n\n const content = [\n 'node-linker=isolated',\n 'shamefully-hoist=false',\n 'strict-peer-dependencies=false',\n 'auto-install-peers=false',\n 'resolution-mode=lowest-direct',\n 'node-options=--max-old-space-size=8192',\n 'child-concurrency=4',\n ].join('\\n');\n\n writeFileSync(npmrcPath, content);\n}\n\nfunction ensureEnvFile() {\n const envPath = path.join(projectRoot, '.env');\n const examplePath = path.join(projectRoot, '.env.example');\n if (!existsSync(envPath) && existsSync(examplePath)) {\n copyFileSync(examplePath, envPath);\n logInfo('Created .env from .env.example. Remember to fill in your credentials.');\n }\n}\n\nfunction runServer(pm: 'pnpm' | 'npm', transport: string) {\n if (!['stdio', 'sse'].includes(transport)) {\n throw new Error(`Unsupported transport \"${transport}\". Use stdio or sse.`);\n }\n const distEntry = path.join(projectRoot, 'dist', 'index.js');\n const env = { ...process.env, MCP_TRANSPORT: transport };\n\n if (!existsSync(distEntry)) {\n logInfo('dist/index.js not found. Building project before start...');\n const buildResult = spawnSync(pm, ['run', 'build'], {\n cwd: projectRoot,\n stdio: 'inherit',\n env,\n });\n if (buildResult.status !== 0) {\n throw new Error(`${pm} run build exited with code ${buildResult.status}`);\n }\n }\n\n logInfo(`Starting ${transport} transport via ${pm} run start...`);\n const child = spawnSync(pm, ['run', 'start'], {\n cwd: projectRoot,\n stdio: 'inherit',\n env,\n });\n if (child.status !== 0) {\n throw new Error(`${pm} run start exited with code ${child.status}`);\n }\n}\n"],"mappings":"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","names":["transport"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/up.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport { copyFileSync, existsSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst dirname = path.dirname(fileURLToPath(import.meta.url));\nconst projectRoot = path.resolve(dirname, '../..');\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nif (!command || command === '--help' || command === '-h') {\n printHelp();\n process.exit(0);\n}\n\nif (command !== 'up') {\n console.error(`Unknown command: ${command}`);\n printHelp();\n process.exit(1);\n}\n\nconst flags = parseFlags(args.slice(1));\nconst transport = (flags.transport ?? 'stdio').toLowerCase();\nconst installOnly = Boolean(flags['install-only']);\nconst preferStderr = transport === 'stdio';\nconst logInfo = (...messages: any[]) => (preferStderr ? console.error(...messages) : console.log(...messages));\nconst logWarn = (...messages: any[]) => (preferStderr ? console.error(...messages) : console.warn(...messages));\n\ntry {\n ensureNodeVersion();\n const packageManager = detectPackageManager(preferStderr);\n ensurePnpmConfig();\n installDependencies(packageManager, preferStderr);\n ensureEnvFile();\n\n if (installOnly) {\n logInfo('Dependencies installed. Skipping server launch (--install-only set).');\n process.exit(0);\n }\n\n runServer(packageManager, transport, preferStderr);\n} catch (error) {\n console.error(error instanceof Error ? error.message : error);\n process.exit(1);\n}\n\nfunction printHelp() {\n console.log(`Usage: npx @hol-org/hashnet-mcp up [options]\\n\\nOptions:\\n --transport <stdio|sse> Choose the transport to start (default: stdio)\\n --install-only Install deps and sync .env, then exit\\n -h, --help Show this help message`);\n}\n\nfunction parseFlags(values: string[]) {\n const cloned = [...values];\n return cloned.reduce<Record<string, any>>((acc, entry, index) => {\n if (entry.startsWith('--')) {\n const [key, inlineValue] = entry.split('=');\n const normalized = key.replace(/^--/, '');\n if (inlineValue !== undefined) {\n acc[normalized] = inlineValue;\n } else {\n const next = cloned[index + 1];\n if (next && !next.startsWith('--')) {\n acc[normalized] = next;\n cloned.splice(index + 1, 1);\n } else {\n acc[normalized] = true;\n }\n }\n }\n return acc;\n }, {});\n}\n\nfunction ensureNodeVersion() {\n const major = Number(process.versions.node.split('.')[0]);\n if (Number.isNaN(major) || major < 18) {\n throw new Error(`Node.js 18+ is required (detected ${process.versions.node}).`);\n }\n}\n\nfunction detectPackageManager(preferStderr: boolean): 'pnpm' | 'npm' {\n if (commandExists('pnpm')) {\n return 'pnpm';\n }\n\n logWarn('pnpm not detected. Attempting to enable via corepack...');\n const enabled = spawnSync('corepack', ['enable', 'pnpm'], {\n stdio: preferStderr ? ['ignore', 'pipe', 'inherit'] : 'inherit',\n });\n if (preferStderr && enabled.stdout?.length) {\n process.stderr.write(enabled.stdout);\n }\n if (enabled.status === 0 && commandExists('pnpm')) {\n return 'pnpm';\n }\n\n logWarn('Falling back to npm. Install pnpm globally for faster installs.');\n return 'npm';\n}\n\nfunction commandExists(bin: string) {\n try {\n const result = spawnSync(bin, ['--version'], { stdio: 'ignore' });\n return result.status === 0;\n } catch {\n return false;\n }\n}\n\nfunction installDependencies(pm: 'pnpm' | 'npm', preferStderr: boolean) {\n logInfo(`Installing dependencies with ${pm}...`);\n const baseEnv = {\n ...process.env,\n NODE_OPTIONS: process.env.NODE_OPTIONS ?? '--max-old-space-size=8192',\n };\n\n const npmArgs = ['install', '--legacy-peer-deps'];\n\n const installResult = spawnSync(pm, pm === 'pnpm' ? ['install'] : npmArgs, {\n cwd: projectRoot,\n stdio: preferStderr ? ['ignore', 'pipe', 'inherit'] : 'inherit',\n env: baseEnv,\n });\n if (preferStderr && installResult.stdout?.length) {\n process.stderr.write(installResult.stdout);\n }\n if (installResult.status !== 0) {\n throw new Error(`${pm} install failed.`);\n }\n}\n\nfunction ensurePnpmConfig() {\n const npmrcPath = path.join(projectRoot, '.npmrc');\n if (existsSync(npmrcPath)) {\n return;\n }\n\n const content = [\n 'node-linker=isolated',\n 'shamefully-hoist=false',\n 'strict-peer-dependencies=false',\n 'auto-install-peers=false',\n 'resolution-mode=lowest-direct',\n 'node-options=--max-old-space-size=8192',\n 'child-concurrency=4',\n ].join('\\n');\n\n writeFileSync(npmrcPath, content);\n}\n\nfunction ensureEnvFile() {\n const envPath = path.join(projectRoot, '.env');\n const examplePath = path.join(projectRoot, '.env.example');\n if (!existsSync(envPath) && existsSync(examplePath)) {\n copyFileSync(examplePath, envPath);\n logInfo('Created .env from .env.example. Remember to fill in your credentials.');\n }\n}\n\nfunction runServer(pm: 'pnpm' | 'npm', transport: string, preferStderr: boolean) {\n if (!['stdio', 'sse'].includes(transport)) {\n throw new Error(`Unsupported transport \"${transport}\". Use stdio or sse.`);\n }\n const distEntry = path.join(projectRoot, 'dist', 'index.js');\n const env = { ...process.env, MCP_TRANSPORT: transport };\n\n if (!existsSync(distEntry)) {\n logInfo('dist/index.js not found. Building project before start...');\n const buildResult = spawnSync(pm, ['run', 'build'], {\n cwd: projectRoot,\n stdio: preferStderr ? ['ignore', 'pipe', 'inherit'] : 'inherit',\n env,\n });\n if (preferStderr && buildResult.stdout?.length) {\n process.stderr.write(buildResult.stdout);\n }\n if (buildResult.status !== 0) {\n throw new Error(`${pm} run build exited with code ${buildResult.status}`);\n }\n }\n\n logInfo(`Starting ${transport} transport via ${pm} run start...`);\n const child = spawnSync(pm, ['run', 'start'], {\n cwd: projectRoot,\n stdio: 'inherit',\n env,\n });\n if (child.status !== 0) {\n throw new Error(`${pm} run start exited with code ${child.status}`);\n }\n}\n"],"mappings":"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","names":["preferStderr","transport"]}
|