Files
electerm--electerm/build/vite/diagnostics-channel-stub.js
T
2026-07-13 12:46:20 +08:00

56 lines
1.3 KiB
JavaScript

// Browser-safe stub for Node's `node:diagnostics_channel` module.
//
// Why this exists:
// @xterm/addon-ligatures (beta line) bundles lru-cache@11, which imports
// `channel`/`tracingChannel` from `node:diagnostics_channel` and calls them at
// module-load time (for optional metrics). In the Electron renderer / Vite dev
// server this is a browser context: Vite stubs Node builtins with a
// `browser-external` shim that throws on use, so `channel()` is undefined and
// the addon crashes on import.
//
// lru-cache only publishes metrics when `hasSubscribers` is true, which never
// happens here (we never subscribe). So all of these can be silent no-ops.
function makeChannel () {
return {
publish () {},
subscribe () {
return () => {}
},
unsubscribe () {},
bindStore (store) {
return store
},
unbindStore () {},
hasSubscribers: false
}
}
export function channel () {
return makeChannel()
}
export function tracingChannel () {
const ch = makeChannel()
return {
start: ch,
end: ch,
asyncStart: ch,
asyncEnd: ch,
error: ch,
trace (fn) {
return fn()
}
}
}
export function hasSubscribers () {
return false
}
export default {
channel,
tracingChannel,
hasSubscribers
}