// @ts-nocheck import { createRequire } from "node:module"; import { join, dirname } from "path"; import { cpSync, writeFileSync, rmSync, existsSync } from "fs"; import { fileURLToPath } from "url"; import ts from "@rollup/plugin-typescript"; import node from "@rollup/plugin-node-resolve"; import cjs from "@rollup/plugin-commonjs"; import json from "@rollup/plugin-json"; const __dirname = dirname(fileURLToPath(import.meta.url)); const require = createRequire(import.meta.url); const esbuild_binary_path = require.resolve("esbuild-wasm"); const vite_client = require.resolve("vite/dist/client/client.mjs"); const hmr = require.resolve("svelte-hmr"); const output_svelte_dir = "../../gradio/templates/frontend/assets/svelte"; const onwarn = (warning, warn) => { if (warning.plugin === "typescript") return; if (warning.code === "CIRCULAR_DEPENDENCY") return; if (warning.code === "EVAL") return; warn(warning); }; const RE_SVELTE_IMPORT = /import\s+([\w*{},\s]+)\s+from\s+['"](svelte|svelte\/internal)['"]/g; const dirname_def = ` import { dirname } from 'path'; import { fileURLToPath } from 'url'; const __dirname = dirname(fileURLToPath(import.meta.url)); `; function inject_dirname() { return { name: "inject __dirname", transform(code, id) { if (id.includes("svelte-hmr/index.js")) { return `${dirname_def}\n${code}`; } } }; } function resolve_imports() { return { name: "resolve-imports", resolveId(id) { const pkgs = [ "sugarss", "stylus", "sass", "pug", "coffeescript", "lightningcss" ]; if (pkgs.includes(id)) { return join(__dirname, "src", "placeholder.ts"); } if (id === "svelte/compiler") return "../compiler.js"; }, transform(code) { const new_code = code.replace(RE_SVELTE_IMPORT, (str, $1, $2) => { const identifier = $1.trim().startsWith("* as") ? $1.replace("* as", "").trim() : $1.trim(); return `const ${identifier.replace( " as ", ": " )} = window.__gradio__svelte__internal;`; }); return { code: new_code, map: null }; } }; } export function copy_files() { return { name: "copy_files", writeBundle() { cpSync(join(vite_client, ".."), "../../gradio/node/dist/client", { recursive: true }); cpSync(join(hmr, "../runtime"), "../../gradio/node/dev/files/runtime", { recursive: true }); cpSync( join(esbuild_binary_path, "..", "..", ".."), "../../gradio/node/dev/node_modules", { recursive: true } ); cpSync("./src/examine.py", "../../gradio/node/examine.py"); writeFileSync( "../../gradio/node/package.json", `{"type": "module", "version": "0.0.0"}`, { encoding: "utf-8" } ); } }; } const plugins = [node({ preferBuiltins: true }), json(), cjs(), ts()]; export default [ { input: "src/index.ts", output: { dir: "../../gradio/node/dev/files", format: "esm", minifyInternalExports: false }, onwarn, plugins: [ { resolveId(id, importer) { if (id === "esbuild") { return "esbuild-wasm"; } } }, ...plugins, { name: "clean_dir", buildStart() { if (existsSync("../../gradio/node")) { rmSync("../../gradio/node", { recursive: true }); } } }, resolve_imports(), inject_dirname(), copy_files() ], external: ["fsevents", "esbuild-wasm", "../compiler.js"] }, { input: "src/svelte-submodules.ts", output: { file: join(output_svelte_dir, "svelte-submodules.js"), format: "esm" }, onwarn, plugins }, { input: "src/svelte-internal.ts", output: { file: join(output_svelte_dir, "svelte.js"), format: "esm" }, onwarn, plugins }, { input: "src/compiler.ts", output: { file: "../../gradio/node/dev/compiler.js", format: "esm" }, onwarn, plugins: [ ...plugins, json({ include: ["**/node_modules/**", "node_modules/**"] }), { resolveId(id) { if (id === "css-tree") { return require.resolve( "./node_modules/css-tree/dist/csstree.esm.js" ); } } } ] } ];