diff options
| author | Adam <[email protected]> | 2026-02-18 11:02:41 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-02-18 11:48:25 -0600 |
| commit | ef14f64f9ee10ee7945a547bde4b13d6dcf2f0bd (patch) | |
| tree | 56e755687a04ded0c7c6469ad96836331e88dd94 /packages/app/src/utils | |
| parent | 3f60a6c2a46dab1622ee4f4c99e4dfad876f3a3c (diff) | |
| download | opencode-ef14f64f9ee10ee7945a547bde4b13d6dcf2f0bd.tar.gz opencode-ef14f64f9ee10ee7945a547bde4b13d6dcf2f0bd.zip | |
chore: cleanup
Diffstat (limited to 'packages/app/src/utils')
| -rw-r--r-- | packages/app/src/utils/perf.ts | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/packages/app/src/utils/perf.ts b/packages/app/src/utils/perf.ts deleted file mode 100644 index 105d02a82..000000000 --- a/packages/app/src/utils/perf.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { uuid } from "@/utils/uuid" - -type Nav = { - id: string - dir?: string - from?: string - to: string - trigger?: string - start: number - marks: Record<string, number> - logged: boolean - timer?: ReturnType<typeof setTimeout> -} - -const dev = import.meta.env.DEV - -const key = (dir: string | undefined, to: string) => `${dir ?? ""}:${to}` - -const now = () => performance.now() - -const navs = new Map<string, Nav>() -const pending = new Map<string, string>() -const active = new Map<string, string>() - -const required = [ - "session:params", - "session:data-ready", - "session:first-turn-mounted", - "storage:prompt-ready", - "storage:terminal-ready", - "storage:file-view-ready", -] - -function flush(id: string, reason: "complete" | "timeout") { - if (!dev) return - const nav = navs.get(id) - if (!nav) return - if (nav.logged) return - - nav.logged = true - if (nav.timer) clearTimeout(nav.timer) - - const baseName = nav.marks["navigate:start"] !== undefined ? "navigate:start" : "session:params" - const base = nav.marks[baseName] ?? nav.start - - const ms = Object.fromEntries( - Object.entries(nav.marks) - .slice() - .sort(([a], [b]) => a.localeCompare(b)) - .map(([name, t]) => [name, Math.round((t - base) * 100) / 100]), - ) - - console.log( - "perf.session-nav " + - JSON.stringify({ - type: "perf.session-nav.v0", - id: nav.id, - dir: nav.dir, - from: nav.from, - to: nav.to, - trigger: nav.trigger, - base: baseName, - reason, - ms, - }), - ) - - navs.delete(id) -} - -function maybeFlush(id: string) { - if (!dev) return - const nav = navs.get(id) - if (!nav) return - if (nav.logged) return - if (!required.every((name) => nav.marks[name] !== undefined)) return - flush(id, "complete") -} - -function ensure(id: string, data: Omit<Nav, "marks" | "logged" | "timer">) { - const existing = navs.get(id) - if (existing) return existing - - const nav: Nav = { - ...data, - marks: {}, - logged: false, - } - nav.timer = setTimeout(() => flush(id, "timeout"), 5000) - navs.set(id, nav) - return nav -} - -export function navStart(input: { dir?: string; from?: string; to: string; trigger?: string }) { - if (!dev) return - - const id = uuid() - const start = now() - const nav = ensure(id, { ...input, id, start }) - nav.marks["navigate:start"] = start - - pending.set(key(input.dir, input.to), id) - return id -} - -export function navParams(input: { dir?: string; from?: string; to: string }) { - if (!dev) return - - const k = key(input.dir, input.to) - const pendingId = pending.get(k) - if (pendingId) pending.delete(k) - const id = pendingId ?? uuid() - - const start = now() - const nav = ensure(id, { ...input, id, start, trigger: pendingId ? "key" : "route" }) - nav.marks["session:params"] = start - - active.set(k, id) - maybeFlush(id) - return id -} - -export function navMark(input: { dir?: string; to: string; name: string }) { - if (!dev) return - - const id = active.get(key(input.dir, input.to)) - if (!id) return - - const nav = navs.get(id) - if (!nav) return - if (nav.marks[input.name] !== undefined) return - - nav.marks[input.name] = now() - maybeFlush(id) -} |
