Spaces:
Sleeping
Sleeping
Download cli/scripts/buildMitm.js from automindy/sdkongwang: direct link, hf CLI and curl.
- Browser
- Download file 2.6 kB
-
https://huggingface.co/spaces/automindy/sdkongwang/resolve/main/cli/scripts/buildMitm.js
- Command line
-
hf download hf://spaces/automindy/sdkongwang/cli/scripts/buildMitm.js
-
curl -L -o buildMitm.js https://huggingface.co/spaces/automindy/sdkongwang/resolve/main/cli/scripts/buildMitm.js
2.6 kB
| const esbuild = require("esbuild"); | |
| const fs = require("fs"); | |
| const path = require("path"); | |
| // โโ Build config โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| const BUILD_CONFIG = { | |
| bundle: true, | |
| minify: true, | |
| cleanPlainFiles: true, | |
| }; | |
| // โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| const cliDir = path.resolve(__dirname, ".."); | |
| const appDir = path.resolve(cliDir, ".."); | |
| const cliAppDir = process.env.NINEROUTER_CLI_APP_DIR || path.join(cliDir, "app"); | |
| const cliMitmDir = path.join(cliAppDir, "src", "mitm"); | |
| // Bundle everything โ no externals. This keeps MITM runtime self-contained so | |
| // it can be copied to DATA_DIR/runtime/ and spawned from there (escapes | |
| // node_modules file locks that block `npm i -g 9router@latest` on Windows). | |
| const EXTERNALS = []; | |
| const ENTRIES = ["server.js"]; | |
| async function buildEntry(entry) { | |
| const mitmSrc = path.join(appDir, "src", "mitm"); | |
| const output = path.join(cliMitmDir, entry); | |
| const buildPlugin = { | |
| name: "build-plugin", | |
| setup(build) { | |
| // Stub .git file scanned by esbuild | |
| build.onResolve({ filter: /\.git/ }, args => ({ path: args.path, namespace: "git-stub" })); | |
| build.onLoad({ filter: /.*/, namespace: "git-stub" }, () => ({ contents: "module.exports={}", loader: "js" })); | |
| }, | |
| }; | |
| const steps = []; | |
| if (BUILD_CONFIG.bundle) { | |
| await esbuild.build({ | |
| entryPoints: [path.join(mitmSrc, entry)], | |
| bundle: true, | |
| minify: BUILD_CONFIG.minify, | |
| platform: "node", | |
| target: "node18", | |
| external: EXTERNALS, | |
| plugins: [buildPlugin], | |
| outfile: output, | |
| }); | |
| steps.push("bundled"); | |
| if (BUILD_CONFIG.minify) steps.push("minified"); | |
| } | |
| console.log(`โ ${steps.join(" + ")} โ ${output}`); | |
| } | |
| async function run() { | |
| const flags = Object.entries(BUILD_CONFIG).filter(([, v]) => v).map(([k]) => k).join(", "); | |
| console.log(`โ๏ธ Config: ${flags}`); | |
| for (const entry of ENTRIES) await buildEntry(entry); | |
| if (BUILD_CONFIG.cleanPlainFiles) { | |
| const keep = new Set(ENTRIES); | |
| for (const name of fs.readdirSync(cliMitmDir)) { | |
| if (!keep.has(name)) fs.rmSync(path.join(cliMitmDir, name), { recursive: true, force: true }); | |
| } | |
| console.log("โ Removed plain MITM files from CLI bundle"); | |
| } | |
| } | |
| run().catch((e) => { console.error(e); process.exit(1); }); | |