mirror of
https://github.com/Heretek-AI/opencode.git
synced 2026-11-10 17:15:48 -10:00
52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
import { defineConfig } from "vite"
|
|
import solid from "vite-plugin-solid"
|
|
import tailwindcss from "@tailwindcss/vite"
|
|
import { fileURLToPath } from "node:url"
|
|
import { execFileSync } from "node:child_process"
|
|
import path from "node:path"
|
|
|
|
export default defineConfig({
|
|
root: fileURLToPath(new URL(".", import.meta.url)),
|
|
publicDir: fileURLToPath(new URL("../../../public", import.meta.url)),
|
|
plugins: [
|
|
solid(),
|
|
tailwindcss(),
|
|
{
|
|
name: "patch-group-counters",
|
|
enforce: "pre",
|
|
load(id) {
|
|
if (!process.env.PATCH_REVISION) return
|
|
const root = fileURLToPath(new URL("../../../../..", import.meta.url))
|
|
const file = path.relative(root, id).replaceAll("\\", "/")
|
|
if (
|
|
![
|
|
"packages/session-ui/src/components/apply-patch-file.ts",
|
|
"packages/session-ui/src/tools/tool-renderer.tsx",
|
|
].includes(file)
|
|
)
|
|
return
|
|
return execFileSync("git", ["show", `${process.env.PATCH_REVISION}:${file}`], { cwd: root, encoding: "utf8" })
|
|
},
|
|
transform(code, id) {
|
|
if (process.env.PATCH_COUNTERS !== "1") return
|
|
const functions = id.replaceAll("\\", "/").endsWith("/apply-patch-file.ts")
|
|
? ["patchFileGroups"]
|
|
: id.replaceAll("\\", "/").endsWith("/session-diff.ts")
|
|
? ["normalize", "completePatchContents"]
|
|
: id.replaceAll("\\", "/").endsWith("/diff/line.js")
|
|
? ["diffLines"]
|
|
: []
|
|
for (const name of functions) {
|
|
const pattern = new RegExp(`(export function ${name}\\([^)]*\\)[^{]*\\{)`)
|
|
if (!pattern.test(code)) throw new Error(`Missing instrumented function ${name} in ${id}`)
|
|
code = code.replace(pattern, `$1 performance.mark("patch-counter:${name}");`)
|
|
}
|
|
return functions.length ? { code, map: null } : undefined
|
|
},
|
|
},
|
|
],
|
|
resolve: { dedupe: ["solid-js", "@solidjs/meta"] },
|
|
worker: { format: "es" },
|
|
build: { outDir: process.env.PATCH_BUILD_DIR, emptyOutDir: true, sourcemap: true },
|
|
})
|