docs(#298 review): document the browser-safety invariant of the isNodeRuntime guard (F1)
The whole fix's correctness rests on isNodeRuntime being false in the browser (so the interactive live-DOM comment branch still runs), and that is NOT covered by any test (client vitest runs under jsdom->node where isNodeRuntime is true). Document it: Vite substitutes only process.env, not the bare process object, so typeof process is undefined in the client bundle; do not add a process polyfill without revisiting this guard, or comment interactivity dies silently. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -178,6 +178,14 @@ export const Comment = Mark.create<ICommentOptions, ICommentStorage>({
|
||||
// interactive live-DOM branch below is browser-only. This stops server-side
|
||||
// HTML/Markdown export (happy-dom DOMSerializer) from appending a foreign
|
||||
// jsdom node into a happy-dom tree.
|
||||
// Safe in the browser: Vite substitutes only `process.env` (a member
|
||||
// expression), NOT the bare `process` object, so `typeof process` is
|
||||
// "undefined" in the client bundle → isNodeRuntime is false → the interactive
|
||||
// live-DOM branch below still runs and comment marks stay clickable in the
|
||||
// editor. This browser-safety is load-bearing and NOT covered by a test
|
||||
// (client vitest runs under jsdom→node, where isNodeRuntime is true). Do NOT
|
||||
// add a `process` polyfill (e.g. vite-plugin-node-polyfills) without
|
||||
// revisiting this guard, or comment interactivity dies silently.
|
||||
const isNodeRuntime =
|
||||
typeof process !== "undefined" && !!process.versions?.node;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user