@vobs/devtools 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../reactivity/src/debug.ts","../../reactivity/src/owner.ts","../../reactivity/src/signal.ts","../../reactivity/src/scheduler.ts","../../runtime/src/debug.ts","../../runtime/src/hmr.ts","../../runtime/src/error.ts","../../vobs/src/app.ts","../../http/src/debug.ts","../src/index.ts"],"names":["effect","updates","trackDependency","released","stop"],"mappings":"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","file":"index.js","sourcesContent":["import type { Effect } from './effect'\nimport type { Owner } from './owner'\nimport type { Dependency, ReadableSignal, Subscriber } from './signal'\n\nexport interface ReactivityDebugHooks {\n ownerCreated?(owner: Owner): void\n ownerNamed?(owner: Owner, name: string): void\n ownerDisposed?(owner: Owner): void\n signalCreated?(signal: ReadableSignal<unknown>, owner: Owner | null): void\n signalNamed?(signal: ReadableSignal<unknown>, name: string): void\n signalRead?(signal: ReadableSignal<unknown>, subscriber: Subscriber): void\n signalChanged?(signal: ReadableSignal<unknown>, previousValue: unknown, nextValue: unknown): void\n signalDisposed?(signal: ReadableSignal<unknown>): void\n dependencyTracked?(dependency: Dependency, subscriber: Subscriber): void\n dependencyUntracked?(dependency: Dependency, subscriber: Subscriber): void\n effectCreated?(effect: Effect, owner: Owner | null): void\n effectInvalidated?(effect: Effect): void\n effectRunStart?(effect: Effect): void\n effectRunEnd?(effect: Effect, error?: unknown, handled?: boolean): void\n effectDisposed?(effect: Effect): void\n memoCreated?(signal: ReadableSignal<unknown>, subscriber: Subscriber, owner: Owner | null): void\n memoInvalidated?(signal: ReadableSignal<unknown>): void\n flushStart?(): void\n flushEnd?(): void\n}\n\nlet activeDebugHooks: ReactivityDebugHooks | null = null\nconst signalNames = new WeakMap<object, string>()\n\nexport function setDebugHooks(hooks: ReactivityDebugHooks | null): ReactivityDebugHooks | null {\n const previous = activeDebugHooks\n activeDebugHooks = hooks\n return previous\n}\n\nexport function getDebugHooks(): ReactivityDebugHooks | null {\n return activeDebugHooks\n}\n\n/** 热路径守卫:无 hooks 时跳过 invokeDebug 调用,避免 rest 参数数组分配。 */\nexport function hasDebugHooks(): boolean {\n return activeDebugHooks !== null\n}\n\nexport function setSignalDebugName(signal: ReadableSignal<unknown>, name: string): void {\n signalNames.set(signal, name)\n invokeDebug('signalNamed', signal, name)\n}\n\nexport function getSignalDebugName(signal: ReadableSignal<unknown>): string | undefined {\n return signalNames.get(signal)\n}\n\nexport function invokeDebug<K extends keyof ReactivityDebugHooks>(\n name: K,\n ...args: Parameters<NonNullable<ReactivityDebugHooks[K]>>\n): void {\n const callback = activeDebugHooks?.[name] as ((...values: unknown[]) => void) | undefined\n if (!callback) return\n try {\n callback(...args)\n } catch {\n // Debug tooling must never change application behavior.\n }\n}\n","import { invokeDebug, hasDebugHooks } from './debug'\n\nexport interface Owner {\n readonly id: string\n readonly parent: Owner | null\n readonly children: readonly Owner[]\n readonly depth: number\n readonly disposed: boolean\n run<T>(fn: () => T): T\n addCleanup(cleanup: () => void): void\n onDispose(cleanup: () => void): void\n onError(handler: (error: unknown) => void): () => void\n handleError(error: unknown): boolean\n dispose(): void\n}\n\nlet currentOwner: Owner | null = null\nlet nextOwnerId = 1\nconst ownerNames = new WeakMap<Owner, string>()\n\nexport function createOwner(): Owner {\n const parent = currentOwner\n let disposed = parent?.disposed ?? false\n const children: Owner[] = []\n const cleanups: Array<() => void> = []\n const errorHandlers = new Set<(error: unknown) => void>()\n\n const owner: Owner = {\n id: `owner-${nextOwnerId++}`,\n parent,\n children,\n depth: (parent?.depth ?? -1) + 1,\n\n get disposed(): boolean {\n return disposed\n },\n\n run<T>(fn: () => T): T {\n if (disposed) throw new Error('Vobs: 已销毁的 Owner 不能继续运行')\n const previous = currentOwner\n currentOwner = owner\n try {\n return fn()\n } finally {\n currentOwner = previous\n }\n },\n\n addCleanup(cleanup: () => void): void {\n if (disposed) {\n cleanup()\n return\n }\n cleanups.push(cleanup)\n },\n\n onDispose(cleanup: () => void): void {\n owner.addCleanup(cleanup)\n },\n\n onError(handler: (error: unknown) => void): () => void {\n errorHandlers.add(handler)\n const remove = () => errorHandlers.delete(handler)\n owner.addCleanup(remove)\n return remove\n },\n\n handleError(error: unknown): boolean {\n for (const handler of [...errorHandlers].reverse()) {\n try {\n handler(error)\n return true\n } catch (handlerError) {\n return parent?.handleError(handlerError) ?? false\n }\n }\n return parent?.handleError(error) ?? false\n },\n\n dispose(): void {\n if (disposed) return\n disposed = true\n for (const child of [...children]) child.dispose()\n children.length = 0\n\n let firstError: unknown\n for (let index = cleanups.length - 1; index >= 0; index--) {\n try {\n cleanups[index]()\n } catch (error) {\n firstError ??= error\n }\n }\n cleanups.length = 0\n\n if (parent) {\n const index = parent.children.indexOf(owner)\n if (index >= 0) (parent.children as Owner[]).splice(index, 1)\n }\n if (hasDebugHooks()) invokeDebug('ownerDisposed', owner)\n if (firstError) throw firstError\n }\n }\n\n if (parent && !parent.disposed) (parent.children as Owner[]).push(owner)\n if (hasDebugHooks()) invokeDebug('ownerCreated', owner)\n return owner\n}\n\nexport function setOwnerDebugName(owner: Owner, name: string): void {\n ownerNames.set(owner, name)\n if (hasDebugHooks()) invokeDebug('ownerNamed', owner, name)\n}\n\nexport function getOwnerDebugName(owner: Owner): string | undefined {\n return ownerNames.get(owner)\n}\n\nexport function getCurrentOwner(): Owner | null {\n return currentOwner\n}\n\n/** Re-enter an Owner for an explicitly captured asynchronous continuation. */\nexport function runWithOwner<T>(owner: Owner, fn: () => T): T {\n return owner.run(fn)\n}\n\nexport function onDispose(cleanup: () => void): void {\n const owner = getCurrentOwner()\n if (!owner) throw new Error('Vobs: onDispose 必须在 Owner 作用域内调用')\n owner.onDispose(cleanup)\n}\n","import { getCurrentOwner } from './owner'\nimport { invokeDebug, hasDebugHooks, setSignalDebugName } from './debug'\n\nexport interface Dependency {\n unsubscribe(subscriber: Subscriber): void\n}\n\nexport interface Subscriber {\n readonly dependencies: Set<Dependency>\n readonly disposed: boolean\n notify(): void\n}\n\n/** 只读信号:派生值(memo)与只读上下文的最小契约,只能订阅与读取。 */\nexport interface ReadableSignal<T> extends Dependency {\n readonly value: T\n dispose(): void\n}\n\n/** 可写信号:state() 的返回类型。`set` 与 `.value =` 赋值语义完全一致。 */\nexport interface Signal<T> extends ReadableSignal<T> {\n value: T\n set(next: T): void\n}\n\nlet currentSubscriber: Subscriber | null = null\n\nexport function getCurrentSubscriber(): Subscriber | null {\n return currentSubscriber\n}\n\nexport function setCurrentSubscriber(subscriber: Subscriber | null): void {\n currentSubscriber = subscriber\n}\n\nexport function untrack<T>(fn: () => T): T {\n const previous = currentSubscriber\n currentSubscriber = null\n try {\n return fn()\n } finally {\n currentSubscriber = previous\n }\n}\n\nexport function trackDependency(dependency: Dependency): void {\n if (!currentSubscriber || currentSubscriber.disposed) return\n const added = !currentSubscriber.dependencies.has(dependency)\n currentSubscriber.dependencies.add(dependency)\n if (added && hasDebugHooks()) invokeDebug('dependencyTracked', dependency, currentSubscriber)\n}\n\n/**\n * Create a reactive state signal.\n *\n * State uses identity (`Object.is`) change detection. Objects and arrays are\n * intentionally shallow: mutating a nested property in place does not notify\n * subscribers; assign a new object/array to `value` to publish the change.\n *\n * The optional debug name is metadata for inspection tools only. It does not\n * affect subscriptions, scheduling, serialization, or the signal contract.\n */\nexport function state<T>(initialValue: T, debugName?: string): Signal<T> {\n let value = initialValue\n let disposed = false\n const subscribers = new Set<Subscriber>()\n\n const signalInstance: Signal<T> = {\n get value(): T {\n const subscriber = getCurrentSubscriber()\n if (subscriber && !subscriber.disposed) {\n subscribers.add(subscriber)\n if (hasDebugHooks()) invokeDebug('signalRead', signalInstance as Signal<unknown>, subscriber)\n trackDependency(signalInstance)\n }\n return value\n },\n\n set value(nextValue: T) {\n if (disposed || Object.is(value, nextValue)) return\n const previousValue = value\n value = nextValue\n if (hasDebugHooks()) invokeDebug('signalChanged', signalInstance as Signal<unknown>, previousValue, nextValue)\n for (const subscriber of [...subscribers]) subscriber.notify()\n },\n\n unsubscribe(subscriber: Subscriber): void {\n subscribers.delete(subscriber)\n },\n\n // 与 `.value =` 赋值同一条路径:判等短路、debug hook、notify 全部一致。\n // 以闭包实现,可安全地作为回调直接传递(无 this 绑定问题)。\n set(next: T): void {\n signalInstance.value = next\n },\n\n dispose(): void {\n if (disposed) return\n disposed = true\n subscribers.clear()\n if (hasDebugHooks()) invokeDebug('signalDisposed', signalInstance as Signal<unknown>)\n }\n }\n\n const owner = getCurrentOwner()\n owner?.addCleanup(signalInstance.dispose)\n if (hasDebugHooks()) invokeDebug('signalCreated', signalInstance as Signal<unknown>, owner)\n if (debugName?.trim()) setSignalDebugName(signalInstance as Signal<unknown>, debugName.trim())\n return signalInstance\n}\n","import type { Effect } from './effect'\nimport { hasDebugHooks, invokeDebug } from './debug'\n\nexport class Scheduler {\n private readonly dirtyEffects = new Set<Effect>()\n private readonly lowPriorityEffects = new Set<Effect>()\n // flush 不可重入(flushing 标志保证),缓冲数组可在轮次间安全复用,避免每轮分配。\n private readonly normalBuffer: Effect[] = []\n private readonly lowBuffer: Effect[] = []\n private flushing = false\n private scheduled = false\n private batchDepth = 0\n\n schedule(effect: Effect): void {\n if (effect.disposed) return\n this.dirtyEffects.add(effect)\n this.lowPriorityEffects.delete(effect)\n this.ensureScheduled()\n }\n\n /** Queue an effect behind normal updates while preserving deterministic order. */\n scheduleLow(effect: Effect): void {\n if (effect.disposed) return\n if (!this.dirtyEffects.has(effect)) this.lowPriorityEffects.add(effect)\n this.ensureScheduled()\n }\n\n private ensureScheduled(): void {\n if (this.batchDepth === 0 && !this.flushing && !this.scheduled) {\n this.scheduled = true\n queueMicrotask(() => {\n this.scheduled = false\n this.flush()\n })\n }\n }\n\n remove(effect: Effect): void {\n this.dirtyEffects.delete(effect)\n this.lowPriorityEffects.delete(effect)\n }\n\n batch<T>(fn: () => T): T {\n this.batchDepth++\n try {\n return fn()\n } finally {\n this.batchDepth--\n if (this.batchDepth === 0) this.flush()\n }\n }\n\n flush(): void {\n if (this.flushing || this.batchDepth > 0) return\n this.flushing = true\n const debugEnabled = hasDebugHooks()\n if (debugEnabled) invokeDebug('flushStart')\n let rounds = 0\n let firstError: unknown\n let hasError = false\n try {\n while (this.dirtyEffects.size > 0 || this.lowPriorityEffects.size > 0) {\n if (++rounds > 100) {\n this.dirtyEffects.clear()\n this.lowPriorityEffects.clear()\n throw new Error('Vobs: 响应式更新超过 100 轮,可能存在循环依赖')\n }\n\n // normal 先、low 后,两组分别排序:与旧的合并排序语义一致\n // (旧比较器里 low 优先级本就高于 depth),但消除了比较器内的 Set 查找。\n this.collectRunnable(this.dirtyEffects, this.normalBuffer)\n this.collectRunnable(this.lowPriorityEffects, this.lowBuffer)\n sortEffects(this.normalBuffer)\n sortEffects(this.lowBuffer)\n for (const effect of this.normalBuffer) {\n try {\n effect.run()\n } catch (error) {\n // Isolate one failed effect from the rest of the flush. Re-throw\n // the first error after all runnable effects have had a chance.\n if (!hasError) {\n firstError = error\n hasError = true\n }\n }\n }\n for (const effect of this.lowBuffer) {\n try {\n effect.run()\n } catch (error) {\n if (!hasError) {\n firstError = error\n hasError = true\n }\n }\n }\n this.normalBuffer.length = 0\n this.lowBuffer.length = 0\n }\n } finally {\n this.normalBuffer.length = 0\n this.lowBuffer.length = 0\n this.flushing = false\n if (debugEnabled) invokeDebug('flushEnd')\n }\n if (hasError) throw firstError\n }\n\n /** 收集未 disposed 的 effect 并清空源集合;run() 期间新调度的 effect 留给下一轮。 */\n private collectRunnable(source: Set<Effect>, target: Effect[]): void {\n for (const effect of source) {\n if (!effect.disposed) target.push(effect)\n }\n source.clear()\n }\n}\n\n/** depth 深的先跑(子 effect 先于父),同深度按创建顺序。 */\nfunction sortEffects(effects: Effect[]): void {\n if (effects.length > 1) {\n effects.sort((a, b) => b.depth - a.depth || a.order - b.order)\n }\n}\n\nexport const scheduler = new Scheduler()\n\nexport function batch<T>(fn: () => T): T {\n return scheduler.batch(fn)\n}\n\n/** Schedule a low-priority effect explicitly. */\nexport function scheduleLow(effect: Effect): void {\n effect.scheduleLow()\n}\n","import type { Owner } from '@vobs/reactivity'\n\nexport type RuntimeDebugEnvironment = 'client' | 'server'\n\n/**\n * Lightweight context copied onto debug events created synchronously inside a\n * Router loader, Effect or SSR render. It is intentionally optional so the\n * runtime remains useful without DevTools.\n */\nexport interface RuntimeDebugContext {\n readonly environment?: RuntimeDebugEnvironment\n readonly sessionId?: string\n readonly route?: string\n readonly navigationId?: number\n readonly dataRequestId?: number\n readonly updateId?: string\n readonly effectId?: string\n readonly source?: string\n}\n\nexport interface RuntimeHydrationMismatch {\n readonly kind: 'missing-node' | 'extra-node' | 'position' | 'content'\n readonly expected: string\n readonly actual: string\n readonly path: string\n readonly message: string\n}\n\nexport type RuntimeDomMutationOperation = 'text' | 'property' | 'attribute' | 'insert' | 'remove'\n\nexport interface RuntimeDomMutation {\n readonly operation: RuntimeDomMutationOperation\n readonly target: string\n readonly parent?: string\n readonly key?: string\n readonly previousValue?: unknown\n readonly nextValue?: unknown\n}\n\nexport interface RuntimeErrorEvent {\n readonly error: unknown\n readonly owner: Owner\n readonly phase: 'event' | 'boundary'\n readonly handled: boolean\n readonly recovery: 'propagated' | 'handled' | 'fallback' | 'retrying' | 'recovered'\n}\n\nexport interface RuntimeDebugHooks {\n domMutation?(mutation: RuntimeDomMutation): void\n error?(event: RuntimeErrorEvent): void\n hydrationMismatch?(event: RuntimeHydrationMismatch): void\n}\n\nlet activeRuntimeDebugHooks: RuntimeDebugHooks | null = null\nlet activeRuntimeDebugContext: RuntimeDebugContext | null = null\n\nexport function setRuntimeDebugHooks(hooks: RuntimeDebugHooks | null): RuntimeDebugHooks | null {\n const previous = activeRuntimeDebugHooks\n activeRuntimeDebugHooks = hooks\n return previous\n}\n\nexport function getRuntimeDebugHooks(): RuntimeDebugHooks | null {\n return activeRuntimeDebugHooks\n}\n\nexport function getRuntimeDebugContext(): RuntimeDebugContext | null {\n return activeRuntimeDebugContext\n}\n\n/** Run a synchronous operation with trace context, preserving async renders. */\nexport function runWithRuntimeDebugContext<T>(context: RuntimeDebugContext, task: () => T): T {\n const previous = activeRuntimeDebugContext\n const next = { ...previous, ...context }\n activeRuntimeDebugContext = next\n let result: T\n try {\n result = task()\n } catch (error) {\n activeRuntimeDebugContext = previous\n throw error\n }\n if (isPromiseLike(result)) {\n return Promise.resolve(result).finally(() => {\n if (activeRuntimeDebugContext === next) activeRuntimeDebugContext = previous\n }) as T\n }\n activeRuntimeDebugContext = previous\n return result\n}\n\n/** Keep a context active across callback boundaries such as Effect execution. */\nexport function pushRuntimeDebugContext(context: RuntimeDebugContext): () => void {\n const previous = activeRuntimeDebugContext\n activeRuntimeDebugContext = { ...previous, ...context }\n let restored = false\n return () => {\n if (restored) return\n restored = true\n activeRuntimeDebugContext = previous\n }\n}\n\nexport function invokeRuntimeDebug<K extends keyof RuntimeDebugHooks>(\n name: K,\n ...args: Parameters<NonNullable<RuntimeDebugHooks[K]>>\n): void {\n const callback = activeRuntimeDebugHooks?.[name] as ((...values: unknown[]) => void) | undefined\n if (!callback) return\n try {\n callback(...args)\n } catch {\n // Debug tooling must never change runtime behavior.\n }\n}\n\nexport function readDebugValue(read: () => unknown): unknown {\n try {\n return read()\n } catch {\n return '[Uninspectable]'\n }\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return Boolean(value) && (typeof value === 'object' || typeof value === 'function')\n && typeof (value as { then?: unknown }).then === 'function'\n}\n\nexport function describeDebugNode(node: unknown): string {\n if (!node || typeof node !== 'object') return 'node'\n const value = node as {\n readonly nodeName?: unknown\n readonly tagName?: unknown\n readonly id?: unknown\n readonly className?: unknown\n }\n const name = typeof value.tagName === 'string'\n ? value.tagName.toLowerCase()\n : typeof value.nodeName === 'string' ? value.nodeName.toLowerCase() : 'node'\n const id = typeof value.id === 'string' && value.id ? `#${value.id}` : ''\n const className = typeof value.className === 'string' && value.className\n ? `.${value.className.trim().split(/\\s+/).filter(Boolean).join('.')}`\n : ''\n return `${name}${id}${className}`\n}\n","import type { VobsNode } from './fragment'\n\nexport type HmrComponent<Props extends object = Record<string, unknown>> =\n (props: Props) => VobsNode\n\nexport interface HmrStateStore {\n get<T>(key: string, initial: T | (() => T)): T\n set<T>(key: string, value: T): void\n has(key: string): boolean\n delete(key: string): void\n clear(): void\n}\n\nexport interface HmrInstance {\n node: VobsNode\n parent: Node | null\n refresh(): void\n}\n\ninterface HmrModuleState {\n readonly components: Map<string, HmrComponent>\n readonly state: Map<string, unknown>\n readonly instances: Set<HmrInstance>\n}\n\ninterface HmrGlobal {\n modules: Map<string, HmrModuleState>\n}\n\nconst globalTarget = globalThis as typeof globalThis & { __VOBS_HMR__?: HmrGlobal }\nconst hmrGlobal = globalTarget.__VOBS_HMR__ ?? { modules: new Map<string, HmrModuleState>() }\nglobalTarget.__VOBS_HMR__ = hmrGlobal\n\nexport function resolveComponent<Props extends object>(\n component: HmrComponent<Props>,\n moduleId: string,\n exportName: string\n): HmrComponent<Props> {\n const module = getModule(moduleId)\n const existing = module.components.get(exportName)\n if (existing) return existing as HmrComponent<Props>\n\n const proxy = ((props: Props) => {\n const current = (proxy as HmrComponent<Props> & { current: HmrComponent<Props> }).current\n return current(props)\n }) as HmrComponent<Props> & { current: HmrComponent<Props> }\n proxy.current = component\n Object.defineProperties(proxy, {\n displayName: { configurable: true, value: component.name || exportName },\n hmrKey: { configurable: false, value: `${moduleId}:${exportName}` }\n })\n module.components.set(exportName, proxy as HmrComponent)\n return proxy\n}\n\nexport function updateHmrModule(_moduleId: string, nextModule: Record<string, unknown>): void {\n const modules = [...hmrGlobal.modules.values()]\n for (const module of modules) {\n let changed = false\n for (const [name, proxy] of module.components) {\n const next = nextModule[name]\n if (typeof next !== 'function') continue\n const hmrProxy = proxy as HmrComponent & { current: HmrComponent; displayName?: string }\n hmrProxy.current = next as HmrComponent\n Object.defineProperty(hmrProxy, 'displayName', { configurable: true, value: next.name || name })\n changed = true\n }\n if (!changed) continue\n for (const instance of module.instances) {\n try {\n instance.refresh()\n } catch {\n // HMR failures remain application errors on the next normal render.\n }\n }\n }\n}\n\nexport function disposeHmrModule(_moduleId: string): void {\n // State and component proxies intentionally survive module disposal.\n}\n\nexport function createHmrStateStore(moduleId: string): HmrStateStore {\n const state = getModule(moduleId).state\n return {\n get<T>(key: string, initial: T | (() => T)): T {\n if (!state.has(key)) state.set(key, typeof initial === 'function' ? (initial as () => T)() : initial)\n return state.get(key) as T\n },\n set<T>(key: string, value: T): void {\n state.set(key, value)\n },\n has: key => state.has(key),\n delete: key => { state.delete(key) },\n clear: () => { state.clear() }\n }\n}\n\nexport function registerHmrInstance(moduleId: string, instance: HmrInstance): () => void {\n const instances = getModule(moduleId).instances\n instances.add(instance)\n return () => instances.delete(instance)\n}\n\nexport function markHmrInstanceMounted(node: VobsNode, parent: Node): void {\n const instance = hmrInstances.get(node as object)\n if (instance) instance.parent = parent\n}\n\nfunction getModule(moduleId: string): HmrModuleState {\n let module = hmrGlobal.modules.get(moduleId)\n if (!module) {\n module = { components: new Map(), state: new Map(), instances: new Set() }\n hmrGlobal.modules.set(moduleId, module)\n }\n return module\n}\n\nconst hmrInstances = new WeakMap<object, HmrInstance>()\n\nexport function associateHmrInstance(node: VobsNode, instance: HmrInstance): void {\n hmrInstances.set(node as object, instance)\n}\n","/** Shared error protocol used by the runtime, compiler and DevTools. */\nexport type VobsErrorSeverity = 'error' | 'warning' | 'info'\nexport type VobsErrorLayer =\n | 'compiler'\n | 'runtime'\n | 'constraint'\n | 'permission'\n | 'ssr'\n | 'http'\n | 'resource'\n\nexport interface VobsErrorLocation {\n readonly file: string\n readonly line: number\n readonly column: number\n}\n\nexport interface VobsErrorOptions {\n readonly code: string\n readonly message: string\n readonly severity?: VobsErrorSeverity\n readonly layer?: VobsErrorLayer\n readonly cause?: unknown\n readonly fix?: string\n readonly location?: VobsErrorLocation\n readonly trace?: readonly string[]\n readonly example?: string\n readonly docs?: string\n readonly codeFrame?: string\n}\n\nexport interface VobsErrorDefaults {\n readonly code?: string\n readonly severity?: VobsErrorSeverity\n readonly layer?: VobsErrorLayer\n readonly fix?: string\n}\n\n/** A framework error with stable machine-readable metadata. */\nexport class VobsError extends Error {\n readonly code: string\n readonly severity: VobsErrorSeverity\n readonly layer: VobsErrorLayer\n readonly cause?: unknown\n readonly fix?: string\n readonly location?: VobsErrorLocation\n readonly trace?: readonly string[]\n readonly example?: string\n readonly docs?: string\n readonly codeFrame?: string\n\n constructor(options: VobsErrorOptions) {\n super(options.message)\n this.name = 'VobsError'\n this.code = options.code\n this.severity = options.severity ?? 'error'\n this.layer = options.layer ?? 'runtime'\n this.cause = options.cause\n this.fix = options.fix\n this.location = options.location\n this.trace = options.trace\n this.example = options.example\n this.docs = options.docs\n this.codeFrame = options.codeFrame\n }\n}\n\nexport function createVobsError(options: VobsErrorOptions): VobsError {\n return new VobsError(options)\n}\n\nexport function isVobsError(value: unknown): value is VobsError {\n return value instanceof VobsError\n || Boolean(value && typeof value === 'object'\n && typeof (value as { code?: unknown }).code === 'string'\n && typeof (value as { message?: unknown }).message === 'string'\n && typeof (value as { layer?: unknown }).layer === 'string')\n}\n\n/** Convert thrown strings and third-party errors without losing their message. */\nexport function normalizeVobsError(value: unknown, defaults: VobsErrorDefaults = {}): VobsError {\n if (value instanceof VobsError) return value\n if (value instanceof Error) {\n // Preserve the original Error identity so boundaries and DevTools can\n // correlate event/effect phases without creating duplicate diagnostics.\n const metadata = value as Error & {\n readonly vobsCode?: unknown\n readonly vobsHint?: unknown\n readonly vobsSource?: unknown\n }\n const code = defaults.code ?? (typeof metadata.vobsCode === 'string' ? metadata.vobsCode : undefined)\n if (code) defineErrorMetadata(value, 'code', code)\n defineErrorMetadata(value, 'severity', defaults.severity ?? 'error')\n defineErrorMetadata(value, 'layer', defaults.layer ?? 'runtime')\n const fix = defaults.fix ?? (typeof metadata.vobsHint === 'string' ? metadata.vobsHint : undefined)\n if (fix) defineErrorMetadata(value, 'fix', fix)\n const source = metadata.vobsSource\n if (source && typeof source === 'object'\n && typeof (source as { file?: unknown }).file === 'string'\n && typeof (source as { line?: unknown }).line === 'number'\n && typeof (source as { column?: unknown }).column === 'number') {\n defineErrorMetadata(value, 'location', source)\n }\n return value as VobsError\n }\n if (isVobsError(value)) {\n const candidate = value as VobsErrorOptions & { severity?: VobsErrorSeverity; layer?: VobsErrorLayer }\n return new VobsError({\n code: candidate.code,\n message: candidate.message,\n severity: candidate.severity ?? defaults.severity,\n layer: candidate.layer ?? defaults.layer,\n cause: candidate.cause,\n fix: candidate.fix ?? defaults.fix,\n location: candidate.location,\n trace: candidate.trace,\n example: candidate.example,\n docs: candidate.docs,\n codeFrame: candidate.codeFrame\n })\n }\n const message = String(value)\n return new VobsError({\n code: defaults.code ?? 'VOBS_UNKNOWN',\n message,\n severity: defaults.severity ?? 'error',\n layer: defaults.layer ?? 'runtime',\n cause: undefined,\n fix: defaults.fix\n })\n}\n\nfunction defineErrorMetadata(target: Error, key: string, value: unknown): void {\n if (key in target) return\n try {\n Object.defineProperty(target, key, { configurable: true, enumerable: false, value, writable: true })\n } catch {\n // Frozen third-party errors still retain their original message and stack.\n }\n}\n\nexport interface FormatVobsErrorOptions {\n readonly environment?: 'development' | 'production'\n readonly includeStack?: boolean\n}\n\n/** Format a concise, actionable message for terminals and dev overlays. */\nexport function formatVobsError(\n value: unknown,\n options: FormatVobsErrorOptions = {}\n): string {\n const error = normalizeVobsError(value)\n const code = error.code || 'VOBS_UNKNOWN'\n const severity = error.severity || 'error'\n if (options.environment === 'production') return `[Vobs ${code}] ${error.message}`\n\n const lines = [`[Vobs ${capitalize(severity)}] ${error.message}`, `Code: ${code}`]\n if (error.location) lines.push(`Location: ${error.location.file}:${error.location.line}:${error.location.column}`)\n if (error.codeFrame) lines.push('', error.codeFrame)\n if (error.cause !== undefined) lines.push(`Cause: ${formatCause(error.cause)}`)\n if (error.trace?.length) lines.push('', `Trace: ${error.trace.join(' → ')}`)\n if (error.fix) lines.push('', `Fix: ${error.fix}`)\n if (error.example) lines.push('', `Example:\\n${error.example}`)\n if (error.docs) lines.push(`Docs: ${error.docs}`)\n if (options.includeStack && error.stack) lines.push('', error.stack)\n return lines.join('\\n')\n}\n\nfunction formatCause(value: unknown): string {\n return value instanceof Error ? `${value.name}: ${value.message}` : String(value)\n}\n\nfunction capitalize(value: string): string {\n return value.slice(0, 1).toUpperCase() + value.slice(1)\n}\n","import { createOwner, scheduler, setOwnerDebugName, type Owner } from '@vobs/reactivity'\nimport { createDOMRenderer } from '@vobs/dom'\nimport { insertBefore as insertRuntimeNode, setRenderer, type VobsFragment, type VobsRenderer } from '@vobs/runtime'\nimport { injectFromOwner, provideToOwner } from './context'\n\nexport type InjectionKey<T> = symbol & {\n readonly __vobsType?: T\n}\n\nexport interface ProvideOptions {\n override?: boolean\n}\n\nexport interface VobsPlugin {\n name: string\n version?: string\n requires?: readonly VobsPlugin[]\n optional?: readonly VobsPlugin[]\n install?: (ctx: VobsContext) => void | (() => void)\n}\n\nexport interface VobsContext {\n readonly app: VobsApp\n provide<T>(key: InjectionKey<T>, value: T, options?: ProvideOptions): void\n inject<T>(key: InjectionKey<T>): T | undefined\n injectRequired<T>(key: InjectionKey<T>, description?: string): T\n onDestroy(cleanup: () => void): void\n onError(handler: (error: unknown) => void): () => void\n}\n\nexport interface VobsConfig<\n NodeType = Node,\n TextNode extends NodeType = NodeType,\n ElementNode extends NodeType = NodeType,\n CommentNode extends NodeType = NodeType\n> {\n render: () => NodeType | VobsFragment | Node | null | undefined\n renderer?: VobsRenderer<NodeType, TextNode, ElementNode, CommentNode>\n plugins?: VobsPlugin[]\n /** Optional application-level error observer. Observers are isolated from the app. */\n onError?: (error: unknown) => void\n}\n\nexport interface VobsApp<NodeType = Node> {\n readonly mounted: boolean\n readonly destroyed: boolean\n use(plugin: VobsPlugin): VobsApp<NodeType>\n mount(target: string | NodeType): void\n hydrate(target: string | NodeType): void\n update(): void\n destroy(): void\n}\n\nexport function createInjectionKey<T>(description: string): InjectionKey<T> {\n return Symbol(description) as InjectionKey<T>\n}\n\nexport function createVobs(\n config: VobsConfig<Node, Text, Element, Comment>\n): VobsApp<Node>\nexport function createVobs<\n NodeType = Node,\n TextNode extends NodeType = NodeType,\n ElementNode extends NodeType = NodeType,\n CommentNode extends NodeType = NodeType\n>(\n config: VobsConfig<NodeType, TextNode, ElementNode, CommentNode> & {\n renderer: VobsRenderer<NodeType, TextNode, ElementNode, CommentNode>\n }\n): VobsApp<NodeType>\nexport function createVobs(\n config: VobsConfig<any, any, any, any>\n): VobsApp<any> {\n if (!config.render) throw new Error('createVobs: render 不能为空')\n\n const renderer = config.renderer ?? createDOMRenderer()\n const rootOwner: Owner = createOwner()\n setOwnerDebugName(rootOwner, 'App')\n const cleanups: Array<() => void> = []\n const errorHandlers = new Set<(error: unknown) => void>()\n const installed = new Set<string>()\n const installing = new Set<string>()\n let mounted = false\n let destroyed = false\n let container: any = null\n let app!: VobsApp<any>\n\n if (config.onError) {\n errorHandlers.add(config.onError)\n cleanups.push(() => errorHandlers.delete(config.onError!))\n }\n\n const context: VobsContext = {\n get app(): VobsApp<any> {\n return app\n },\n\n provide<T>(key: InjectionKey<T>, value: T, options: ProvideOptions = {}): void {\n provideToOwner(rootOwner, key, value, options)\n },\n\n inject<T>(key: InjectionKey<T>): T | undefined {\n return injectFromOwner(rootOwner, key)\n },\n\n injectRequired<T>(key: InjectionKey<T>, description?: string): T {\n const value = injectFromOwner(rootOwner, key)\n if (value === undefined) {\n throw new Error(`Vobs: 找不到必需注入项${description ? ` ${description}` : ''}`)\n }\n return value\n },\n\n onDestroy(cleanup: () => void): void {\n cleanups.push(cleanup)\n },\n\n onError(handler: (error: unknown) => void): () => void {\n errorHandlers.add(handler)\n const remove = () => errorHandlers.delete(handler)\n cleanups.push(remove)\n return remove\n }\n }\n\n function notifyError(error: unknown): void {\n for (const handler of [...errorHandlers]) {\n try {\n handler(error)\n } catch {\n // 错误处理器不能覆盖触发它的原始错误。\n }\n }\n }\n\n function installPlugin(plugin: VobsPlugin): void {\n if (installed.has(plugin.name)) return\n if (installing.has(plugin.name)) {\n throw new Error(`Vobs: 插件依赖存在循环:${plugin.name}`)\n }\n\n installing.add(plugin.name)\n try {\n for (const dependency of plugin.requires ?? []) installPlugin(dependency)\n const cleanup = plugin.install?.(context)\n if (cleanup) cleanups.push(cleanup)\n installed.add(plugin.name)\n } finally {\n installing.delete(plugin.name)\n }\n }\n\n function cleanup(clearContainer = true): unknown {\n let firstError: unknown\n for (let index = cleanups.length - 1; index >= 0; index--) {\n try {\n cleanups[index]()\n } catch (error) {\n firstError ??= error\n }\n }\n cleanups.length = 0\n\n try {\n rootOwner.dispose()\n } catch (error) {\n firstError ??= error\n }\n\n if (container && clearContainer) {\n try {\n renderer.clear(container)\n } catch (error) {\n firstError ??= error\n }\n }\n return firstError\n }\n\n function start(target: string | any, hydrating: boolean): void {\n if (destroyed) throw new Error('Vobs: 已销毁的应用不能挂载')\n if (mounted) return\n\n container = typeof target === 'string' ? document.querySelector(target) : target\n if (!container) throw new Error(`mount: 目标不存在: ${target}`)\n if (hydrating && !renderer.beginHydration) {\n throw new Error('Vobs: 当前渲染器不支持 Hydration')\n }\n\n setRenderer(renderer)\n try {\n if (hydrating) renderer.beginHydration?.()\n const rootNode = rootOwner.run(config.render)\n if (!hydrating) renderer.clear(container)\n if (rootNode) insertRuntimeNode(container, rootNode as any, null)\n if (hydrating) renderer.completeHydration?.()\n mounted = true\n } catch (error) {\n notifyError(error)\n const cleanupError = cleanup(!hydrating)\n destroyed = true\n throw cleanupError ?? error\n }\n }\n\n app = {\n get mounted(): boolean {\n return mounted\n },\n\n get destroyed(): boolean {\n return destroyed\n },\n\n use(plugin: VobsPlugin): VobsApp<any> {\n if (destroyed) throw new Error('Vobs: 已销毁的应用不能安装插件')\n installPlugin(plugin)\n return app\n },\n\n mount(target: string | any): void {\n start(target, false)\n },\n\n hydrate(target: string | any): void {\n start(target, true)\n },\n\n update(): void {\n if (destroyed) throw new Error('Vobs: 已销毁的应用不能更新')\n try {\n scheduler.flush()\n } catch (error) {\n notifyError(error)\n throw error\n }\n },\n\n destroy(): void {\n if (destroyed) return\n try {\n const cleanupError = cleanup()\n if (cleanupError) {\n notifyError(cleanupError)\n throw cleanupError\n }\n } finally {\n mounted = false\n destroyed = true\n }\n }\n }\n\n try {\n for (const plugin of config.plugins ?? []) app.use(plugin)\n } catch (error) {\n notifyError(error)\n cleanup()\n destroyed = true\n throw error\n }\n\n return app\n}\n","import type { HTTPMethod, HTTPHeaders } from './index'\nimport type { RuntimeDebugContext } from '@vobs/runtime'\n\nexport type HTTPDebugStatus = 'loading' | 'retrying' | 'success' | 'error' | 'cancelled'\n\nexport type HTTPDebugCacheStatus = 'hit' | 'miss' | 'revalidated'\n\nexport interface HTTPDebugContext extends RuntimeDebugContext {\n readonly cacheStatus?: HTTPDebugCacheStatus\n /** Marks a request created from the DevTools request tester. */\n readonly test?: boolean\n}\n\nexport interface HTTPDebugRequest {\n readonly id: number\n readonly phase: 'start' | 'retry' | 'end'\n readonly status: HTTPDebugStatus\n readonly url: string\n readonly method: HTTPMethod\n readonly headers: HTTPHeaders\n readonly requestBody?: unknown\n readonly startedAt: number\n readonly endedAt?: number\n readonly duration?: number\n readonly attempt: number\n readonly retries: number\n readonly responseStatus?: number\n readonly responseBody?: unknown\n readonly error?: { readonly name: string; readonly message: string }\n readonly context?: HTTPDebugContext\n}\n\nexport interface HTTPDebugHooks {\n request?(event: HTTPDebugRequest): void\n}\n\nlet activeHTTPDebugHooks: HTTPDebugHooks | null = null\nconst httpDebugListeners = new Set<NonNullable<HTTPDebugHooks['request']>>()\n\nexport function setHTTPDebugHooks(hooks: HTTPDebugHooks | null): HTTPDebugHooks | null {\n const previous = activeHTTPDebugHooks\n activeHTTPDebugHooks = hooks\n return previous\n}\n\nexport function getHTTPDebugHooks(): HTTPDebugHooks | null {\n return activeHTTPDebugHooks\n}\n\nexport function subscribeHTTPDebug(listener: NonNullable<HTTPDebugHooks['request']>): () => void {\n httpDebugListeners.add(listener)\n return () => httpDebugListeners.delete(listener)\n}\n\nexport function emitHTTPDebug(event: HTTPDebugRequest): void {\n try {\n activeHTTPDebugHooks?.request?.(event)\n } catch {\n // Debug tooling must never change request behavior.\n }\n for (const listener of [...httpDebugListeners]) {\n try { listener(event) } catch { /* Debug tooling must never change request behavior. */ }\n }\n}\n","import {\n getDebugHooks,\n getOwnerDebugName,\n getSignalDebugName,\n setDebugHooks,\n untrack,\n type Dependency,\n type Effect,\n type Owner,\n type ReactivityDebugHooks,\n type ReadableSignal,\n type Signal,\n type Subscriber\n} from '@vobs/reactivity'\nimport {\n getRuntimeDebugHooks,\n getRuntimeDebugContext,\n setRuntimeDebugHooks,\n type RuntimeDebugHooks,\n type RuntimeDomMutation,\n type RuntimeErrorEvent,\n type RuntimeHydrationMismatch\n} from '@vobs/runtime'\nimport { normalizeVobsError } from '@vobs/runtime'\nimport type { VobsContext, VobsPlugin } from '@vobs/vobs'\nimport {\n getHTTPDebugHooks,\n setHTTPDebugHooks,\n type HTTPDebugRequest\n} from '@vobs/http'\n\nexport type DependencyEdgeType =\n | 'state-to-effect'\n | 'state-to-memo'\n | 'memo-to-effect'\n | 'memo-to-memo'\n\nexport interface ComponentDebugNode {\n readonly id: string\n readonly name: string\n readonly ownerId: string\n readonly signals: readonly string[]\n readonly effects: readonly string[]\n readonly recentUpdates: readonly string[]\n readonly domUpdates: number\n readonly children: readonly ComponentDebugNode[]\n readonly mounted: boolean\n}\n\nexport interface SignalDebugInfo {\n readonly id: string\n readonly name: string\n readonly value: unknown\n readonly component: string\n readonly subscribers: number\n readonly createdAt: number\n readonly kind?: 'state' | 'memo'\n}\n\nexport interface DebugErrorInfo {\n readonly name: string\n readonly message: string\n readonly stack?: string\n readonly phase?: string\n readonly source?: string\n readonly code?: string\n readonly hint?: string\n readonly cause?: string\n readonly fix?: string\n readonly location?: { readonly file: string; readonly line: number; readonly column: number }\n readonly hydration?: RuntimeHydrationMismatch\n}\n\nexport interface EffectDebugInfo {\n readonly id: string\n readonly name: string\n readonly component: string\n readonly dependencies: readonly string[]\n readonly status: 'idle' | 'dirty' | 'running' | 'success' | 'error'\n readonly executionCount: number\n readonly lastExecutionTime: number\n readonly lastRunStatus?: 'success' | 'error' | 'cancelled'\n readonly lastDuration?: number\n readonly lastUpdateId?: string\n readonly lastError?: DebugErrorInfo\n readonly lastDomUpdates?: number\n}\n\nexport interface DependencyEdge {\n readonly from: string\n readonly to: string\n readonly type: DependencyEdgeType\n}\n\nexport interface EffectExecutionInfo {\n readonly effectId: string\n readonly component: string\n readonly duration: number\n readonly domUpdates: number\n readonly status?: 'success' | 'error' | 'cancelled'\n readonly error?: DebugErrorInfo\n}\n\nexport interface DomUpdateInfo {\n readonly operation: 'text' | 'property' | 'attribute' | 'insert' | 'remove'\n readonly target: string\n readonly parent?: string\n readonly key?: string\n readonly previousValue?: unknown\n readonly nextValue?: unknown\n readonly effectId?: string\n readonly route?: string\n readonly navigationId?: number\n readonly requestId?: number\n}\n\nexport interface UpdateTrace {\n readonly id: string\n readonly signalId: string\n readonly signalName: string\n readonly previousValue: unknown\n readonly nextValue: unknown\n readonly timestamp: number\n readonly effects: readonly EffectExecutionInfo[]\n readonly affectedSignals: readonly string[]\n readonly affectedEffects: readonly string[]\n readonly domUpdates: readonly DomUpdateInfo[]\n readonly status: 'completed' | 'error' | 'cancelled'\n readonly error?: DebugErrorInfo\n readonly duration: number\n readonly route?: string\n readonly navigationId?: number\n readonly requestIds?: readonly number[]\n}\n\nexport type LifecycleEventType =\n | 'owner-created' | 'owner-named' | 'owner-disposed'\n | 'signal-created' | 'signal-named' | 'signal-changed' | 'signal-disposed'\n | 'memo-created' | 'memo-invalidated'\n | 'effect-created' | 'effect-invalidated' | 'effect-run-start' | 'effect-run' | 'effect-disposed'\n\nexport interface LifecycleEvent {\n readonly id: string\n readonly type: LifecycleEventType\n readonly timestamp: number\n readonly targetId: string\n readonly name?: string\n readonly ownerId?: string\n readonly status?: 'success' | 'error' | 'cancelled'\n}\n\nexport interface NetworkRequestTrace {\n readonly id: number\n readonly url: string\n readonly method: string\n readonly status: 'loading' | 'retrying' | 'success' | 'error' | 'cancelled'\n readonly headers: Readonly<Record<string, string>>\n readonly requestBody?: unknown\n readonly startedAt: number\n readonly endedAt?: number\n readonly duration?: number\n readonly attempt: number\n readonly retries: number\n readonly responseStatus?: number\n readonly responseBody?: unknown\n readonly error?: { readonly name: string; readonly message: string }\n readonly source?: 'http' | 'router' | 'ssr'\n readonly test?: boolean\n readonly route?: string\n readonly navigationId?: number\n readonly dataRequestId?: number\n readonly environment?: 'client' | 'server'\n}\n\nexport type DevToolsErrorPhase = 'effect' | 'network' | 'global' | 'unhandledrejection' | 'route' | 'hydration' | 'render' | 'boundary' | 'application' | 'event'\nexport type DevToolsErrorOrigin = 'framework' | 'usage' | 'application' | 'unknown'\nexport type DevToolsErrorRecovery = 'propagated' | 'handled' | 'fallback' | 'retrying' | 'recovered'\n\nexport interface DevToolsErrorContext {\n readonly updateId?: string\n readonly effectId?: string\n readonly requestId?: number\n readonly navigationId?: number\n readonly route?: string\n readonly source?: string\n readonly ownerId?: string\n readonly component?: string\n readonly origin?: DevToolsErrorOrigin\n readonly code?: string\n readonly hint?: string\n readonly handled?: boolean\n readonly recovery?: DevToolsErrorRecovery\n}\n\nexport interface DevToolsErrorTrace extends DebugErrorInfo {\n readonly id: number\n readonly phase: DevToolsErrorPhase\n readonly firstOccurredAt: number\n readonly lastOccurredAt: number\n readonly count: number\n readonly phases: readonly DevToolsErrorPhase[]\n readonly origin: DevToolsErrorOrigin\n readonly handled: boolean\n readonly recovery: DevToolsErrorRecovery\n readonly updateId?: string\n readonly effectId?: string\n readonly requestId?: number\n readonly navigationId?: number\n readonly route?: string\n readonly ownerId?: string\n readonly component?: string\n}\n\nexport interface DevToolsCollectionState {\n readonly paused: boolean\n}\n\nexport interface DevToolsPrivacyOptions {\n /** Additional case-insensitive header names or fragments to omit. */\n readonly redactedHeaders?: readonly string[]\n /** Object keys whose values are replaced in captured/exported values. */\n readonly redactedFields?: readonly string[]\n /** Replace DOM values in diagnostics with the configured replacement. */\n readonly redactDomValues?: boolean\n readonly replacement?: string\n}\n\nexport interface DevToolsPerformanceEntry {\n readonly kind: 'update' | 'effect' | 'request'\n readonly id: string | number\n readonly label: string\n readonly duration: number\n readonly timestamp: number\n readonly status: string\n}\n\nexport interface DevToolsInspector {\n readonly label?: string\n inspect(value: unknown): unknown\n}\n\nexport interface DevToolsTimeline {\n readonly label?: string\n readonly getEvents?: () => readonly DevToolsTimelineEvent[]\n}\n\nexport interface DevToolsTimelineEvent {\n readonly id: string\n readonly timestamp: number\n readonly title: string\n readonly data?: unknown\n}\n\nexport interface DevToolsMetric {\n readonly label?: string\n read(): number | string\n}\n\nexport interface DevToolsExtensionSnapshot {\n readonly inspectors: readonly string[]\n readonly timelines: readonly string[]\n readonly timelineEvents: Readonly<Record<string, readonly DevToolsTimelineEvent[]>>\n readonly metrics: Readonly<Record<string, number | string>>\n}\n\nexport interface DevToolsDiagnosticSnapshot {\n readonly version: 1\n readonly exportedAt: number\n readonly updates: readonly UpdateTrace[]\n readonly lifecycle: readonly LifecycleEvent[]\n readonly network: readonly NetworkRequestTrace[]\n readonly errors: readonly DevToolsErrorTrace[]\n readonly performance: PerformanceMetrics\n readonly memory: MemorySnapshot\n readonly extensions: DevToolsExtensionSnapshot\n}\n\nexport interface DevToolsSSRRequestSnapshot {\n readonly version: 1\n readonly environment: 'server'\n readonly requests: readonly HTTPDebugRequest[]\n}\n\nexport type DevToolsSelection =\n | { readonly type: 'component'; readonly id: string }\n | { readonly type: 'signal'; readonly id: string }\n | { readonly type: 'effect'; readonly id: string }\n | { readonly type: 'update'; readonly id: string }\n | { readonly type: 'request'; readonly id: number }\n | { readonly type: 'error'; readonly id: number }\n\nexport const DEVTOOLS_REACTIVITY_EVENTS = [\n 'owner-created', 'owner-named', 'owner-disposed',\n 'signal-created', 'signal-named', 'signal-update', 'signal-disposed',\n 'effect-created', 'effect-invalidated', 'effect-run-start', 'effect-run', 'effect-disposed',\n 'memo-created', 'memo-update', 'update'\n] as const\n\nexport const DEVTOOLS_EVENTS = [...DEVTOOLS_REACTIVITY_EVENTS, 'lifecycle', 'dom-update', 'network-request', 'router', 'error', 'collection', 'collection-cleared', 'extension'] as const\n\nexport interface PerformanceMetrics {\n readonly updateCount: number\n readonly averageUpdateDuration: number\n readonly slowUpdateCount: number\n readonly effectExecutionCount: number\n readonly slowEffectCount: number\n readonly slowRequestCount: number\n readonly maxUpdateDuration: number\n readonly maxEffectDuration: number\n readonly maxRequestDuration: number\n}\n\nexport interface MemorySnapshot {\n readonly signalCount: number\n readonly effectCount: number\n readonly ownerCount: number\n readonly dependencyEdgeCount: number\n readonly leakedOwners: number\n}\n\nexport interface DevToolsTarget {\n __VOBS_DEVTOOLS__?: DevToolsAPI\n addEventListener?: (type: string, listener: (...args: any[]) => void) => void\n removeEventListener?: (type: string, listener: (...args: any[]) => void) => void\n}\n\nexport interface DevToolsOptions {\n readonly expose?: boolean\n readonly target?: DevToolsTarget\n readonly maxUpdates?: number\n readonly slowUpdateThreshold?: number\n readonly privacy?: DevToolsPrivacyOptions\n /** Explicit opt-in for state-changing debug actions. Disabled by default. */\n readonly allowMutations?: boolean\n /** Optional Router-like source for associating navigation/data events. */\n readonly router?: DevToolsRouterSource\n}\n\nexport interface DevToolsRouterSource {\n readonly devtools: {\n subscribe(event: string, callback: (payload: unknown) => void): () => void\n }\n}\n\nexport interface DevToolsAPI {\n getComponentTree(): readonly ComponentDebugNode[]\n getComponent(ownerId: string): ComponentDebugNode | null\n getSignals(): readonly SignalDebugInfo[]\n getSignal(signalId: string): SignalDebugInfo | null\n canMutate(): boolean\n setSignalValue(signalId: string, value: unknown): boolean\n getDependencies(signalId: string): readonly DependencyEdge[]\n getDependents(subscriberId: string): readonly DependencyEdge[]\n getEffects(): readonly EffectDebugInfo[]\n getUpdates(): readonly UpdateTrace[]\n getLifecycleEvents(): readonly LifecycleEvent[]\n getNetworkRequests(): readonly NetworkRequestTrace[]\n importSSRRequests(snapshot: unknown): void\n getRouterContext(): DevToolsRouterContext | null\n attachRouter(router: DevToolsRouterSource): () => void\n getErrors(): readonly DevToolsErrorTrace[]\n getPerformanceEntries(): readonly DevToolsPerformanceEntry[]\n getCollectionState(): DevToolsCollectionState\n setCollectionPaused(paused: boolean): void\n clearUpdates(): void\n clearNetworkRequests(): void\n clearErrors(): void\n clearLifecycleEvents(): void\n reportError(phase: DevToolsErrorPhase, error: unknown, context?: DevToolsErrorContext): void\n getPerformanceMetrics(): PerformanceMetrics\n takeMemorySnapshot(): MemorySnapshot\n exportDiagnostics(): DevToolsDiagnosticSnapshot\n importDiagnostics(snapshot: unknown): void\n registerInspector(id: string, inspector: DevToolsInspector): () => void\n registerTimeline(id: string, timeline?: DevToolsTimeline): () => void\n registerMetric(id: string, metric: DevToolsMetric): () => void\n getExtensionSnapshot(): DevToolsExtensionSnapshot\n inspectExtension(id: string, value: unknown): unknown\n onUpdate(callback: (trace: UpdateTrace) => void): () => void\n subscribe(event: string, callback: (...args: any[]) => void): () => void\n dispose(): void\n}\n\nexport interface DevToolsRouterContext {\n readonly route?: string\n readonly navigationId?: number\n readonly navigationStatus?: string\n readonly dataRequests: readonly {\n readonly id: number\n readonly kind: string\n readonly key: string\n readonly route?: string\n readonly status: string\n readonly startedAt?: number\n readonly endedAt?: number\n readonly duration?: number\n readonly navigationId?: number\n readonly trigger?: string\n readonly result?: unknown\n readonly error?: string\n readonly environment?: 'client' | 'server'\n }[]\n}\n\nexport interface DevToolsWireRequest {\n readonly source: 'vobs-devtools'\n readonly type: 'request'\n readonly id: string\n readonly method: string\n readonly args?: readonly unknown[]\n}\n\nexport interface DevToolsWireResponse {\n readonly source: 'vobs-devtools'\n readonly type: 'response'\n readonly id: string\n readonly ok: boolean\n readonly result?: unknown\n readonly error?: string\n}\n\nexport interface DevToolsWireEvent {\n readonly source: 'vobs-devtools'\n readonly type: 'event'\n readonly event: string\n readonly payload: unknown\n}\n\nexport interface DevToolsMessageTarget {\n addEventListener(type: string, listener: (event: DevToolsMessageEvent) => void): void\n removeEventListener(type: string, listener: (event: DevToolsMessageEvent) => void): void\n postMessage(message: unknown, targetOrigin: string): void\n}\n\nexport interface DevToolsMessageEvent {\n readonly data?: unknown\n readonly source?: unknown\n}\n\nexport interface DevToolsBridgeOptions {\n readonly target?: DevToolsMessageTarget\n readonly api?: DevToolsAPI | null\n}\n\nexport interface DevToolsPluginOptions extends DevToolsOptions {\n readonly enabled?: boolean\n}\n\ninterface OwnerRecord {\n readonly owner: Owner\n readonly id: string\n readonly parentId: string | null\n name: string\n disposed: boolean\n}\n\ninterface SignalRecord {\n readonly signal: ReadableSignal<unknown>\n readonly id: string\n readonly ownerId: string | null\n readonly createdAt: number\n name: string\n explicitName: boolean\n kind: 'state' | 'memo'\n disposed: boolean\n}\n\ninterface EffectRecord {\n readonly effect: Effect\n readonly id: string\n readonly ownerId: string | null\n status: 'idle' | 'dirty' | 'running' | 'success' | 'error'\n executionCount: number\n lastExecutionTime: number\n lastRunStatus: 'success' | 'error' | 'cancelled' | undefined\n lastDuration: number\n lastUpdateId: string | undefined\n lastError: DebugErrorInfo | undefined\n lastDomUpdates: number\n runningSince: number | null\n disposed: boolean\n}\n\ninterface PendingUpdate {\n readonly id: string\n readonly signal: SignalRecord\n readonly timestamp: number\n previousValue: unknown\n nextValue: unknown\n readonly affectedSignals: Set<string>\n readonly effectIds: Set<string>\n readonly executions: Map<string, EffectExecutionInfo>\n readonly domUpdates: DomUpdateInfo[]\n status: 'completed' | 'error' | 'cancelled'\n error: DebugErrorInfo | undefined\n context: {\n readonly route?: string\n readonly navigationId?: number\n readonly requestIds: Set<number>\n }\n}\n\nlet activeDevTools: DevToolsAPI | null = null\n\nexport function createDevTools(options: DevToolsOptions = {}): DevToolsAPI {\n activeDevTools?.dispose()\n\n const owners = new Map<string, OwnerRecord>()\n const ownerIds = new WeakMap<object, string>()\n const signals = new Map<string, SignalRecord>()\n const signalIds = new WeakMap<object, string>()\n const effects = new Map<string, EffectRecord>()\n const effectIds = new WeakMap<object, string>()\n const memoSignalIds = new WeakMap<object, string>()\n const edges = new Map<string, DependencyEdge>()\n const listeners = new Map<string, Set<(...args: any[]) => void>>()\n const updates: UpdateTrace[] = []\n const lifecycleEvents: LifecycleEvent[] = []\n const networkRequests = new Map<number, NetworkRequestTrace>()\n const errors = new Map<string, DevToolsErrorTrace>()\n const inspectors = new Map<string, DevToolsInspector>()\n const timelines = new Map<string, DevToolsTimeline>()\n const metrics = new Map<string, DevToolsMetric>()\n let routerContext: DevToolsRouterContext | null = null\n const routerStops = new Map<DevToolsRouterSource, { readonly stop: () => void; refs: number }>()\n let nextErrorId = 1\n let collectionPaused = false\n const pendingUpdates: PendingUpdate[] = []\n const updateDurations: number[] = []\n const maxUpdates = Math.max(1, Math.floor(options.maxUpdates ?? 100))\n const slowUpdateThreshold = Math.max(0, options.slowUpdateThreshold ?? 16)\n let nextId = 1\n let updateCount = 0\n let effectExecutionCount = 0\n let disposed = false\n let pendingFlushScheduled = false\n let activeEffectId: string | null = null\n const privacy = normalizePrivacyOptions(options.privacy)\n const allowMutations = options.allowMutations === true\n\n function now(): number {\n return typeof performance === 'undefined' ? Date.now() : performance.now()\n }\n\n function emit(event: string, ...args: any[]): void {\n if (collectionPaused && event !== 'collection' && event !== 'collection-cleared') return\n const callbacks = [\n ...(listeners.get(event) ?? []),\n ...(listeners.get('*') ?? [])\n ]\n for (const callback of callbacks) {\n try {\n callback(...args)\n } catch {\n // A DevTools listener must never affect the application.\n }\n }\n }\n\n function safeExtensionCall<T>(read: () => T, fallback: T): T {\n try { return read() } catch { return fallback }\n }\n\n function getExtensionSnapshot(): DevToolsExtensionSnapshot {\n const extensionMetrics: Record<string, number | string> = {}\n const extensionTimelineEvents: Record<string, readonly DevToolsTimelineEvent[]> = {}\n for (const [id, timeline] of timelines) {\n const events = safeExtensionCall(() => timeline.getEvents?.() ?? [], [])\n extensionTimelineEvents[id] = events.map(event => ({\n ...event,\n data: serializeForDevTools(event.data, new Set<object>(), 0, privacy)\n })).slice(-maxUpdates)\n }\n for (const [id, metric] of metrics) {\n const value = safeExtensionCall(() => metric.read(), 0)\n extensionMetrics[id] = typeof value === 'number' || typeof value === 'string' ? value : 0\n }\n return {\n inspectors: [...inspectors.keys()],\n timelines: [...timelines.keys()],\n timelineEvents: extensionTimelineEvents,\n metrics: extensionMetrics\n }\n }\n\n function recordLifecycle(\n type: LifecycleEventType,\n targetId: string,\n name?: string,\n ownerId?: string,\n status?: LifecycleEvent['status']\n ): void {\n if (disposed || collectionPaused || isInternalOwnerId(targetId) || (ownerId !== undefined && isInternalOwnerId(ownerId))) return\n const event: LifecycleEvent = {\n id: `lifecycle-${nextId++}`,\n type,\n timestamp: now(),\n targetId,\n name,\n ownerId,\n status\n }\n lifecycleEvents.push(event)\n while (lifecycleEvents.length > maxUpdates) lifecycleEvents.shift()\n emit('lifecycle', event)\n }\n\n function reportError(\n phase: DevToolsErrorPhase,\n error: unknown,\n context: DevToolsErrorContext = {}\n ): void {\n if (collectionPaused) return\n const debugError = toDebugError(error, phase)\n const metadata = classifyError(phase, error, context)\n const code = context.code ?? debugError.code ?? metadata.code\n const hint = context.hint ?? debugError.hint ?? metadata.hint\n const origin = context.origin ?? metadata.origin\n const ownerId = context.ownerId ?? readErrorProperty(error, 'vobsOwnerId')\n const component = context.component ?? readErrorProperty(error, 'vobsComponent')\n const source = context.source ?? debugError.source ?? readErrorProperty(error, 'vobsSource')\n const activeRoute = context.route ?? getRuntimeDebugContext()?.route ?? routerContext?.route\n const activeNavigationId = context.navigationId ?? getRuntimeDebugContext()?.navigationId ?? routerContext?.navigationId\n // The same exception can pass through effect -> boundary -> application\n // handlers. Keep one diagnostic and accumulate its phases instead of\n // presenting the propagation chain as duplicate errors.\n const key = diagnosticErrorKey({ origin, code, name: debugError.name, message: debugError.message, source, component })\n const previous = errors.get(key)\n const nowValue = Date.now()\n const trace: DevToolsErrorTrace = previous\n ? {\n ...previous,\n ...context,\n phase,\n phases: previous.phases.includes(phase) ? previous.phases : [...previous.phases, phase],\n lastOccurredAt: nowValue,\n count: previous.count + 1,\n code,\n hint,\n origin,\n handled: context.handled ?? previous.handled,\n recovery: mergeRecovery(previous.recovery, context.recovery),\n ownerId: ownerId ?? previous.ownerId,\n component: component ?? previous.component,\n source: source ?? previous.source,\n updateId: context.updateId ?? previous.updateId,\n effectId: context.effectId ?? previous.effectId,\n requestId: context.requestId ?? previous.requestId,\n route: activeRoute ?? previous.route,\n navigationId: activeNavigationId ?? previous.navigationId\n }\n : {\n ...debugError,\n ...context,\n source,\n code,\n hint,\n id: nextErrorId++,\n phase,\n phases: [phase],\n origin,\n handled: context.handled ?? false,\n recovery: context.recovery ?? 'propagated',\n firstOccurredAt: nowValue,\n lastOccurredAt: nowValue,\n count: 1,\n ownerId,\n component,\n route: activeRoute,\n navigationId: activeNavigationId\n }\n errors.set(key, trace)\n while (errors.size > maxUpdates) {\n const oldest = errors.keys().next().value\n if (typeof oldest !== 'string') break\n errors.delete(oldest)\n }\n emit('error', trace)\n }\n\n function ensureOwner(owner: Owner): OwnerRecord {\n const existingId = ownerIds.get(owner)\n if (existingId) {\n const existing = owners.get(existingId)\n if (existing) return existing\n }\n\n const record: OwnerRecord = {\n owner,\n id: owner.id,\n parentId: owner.parent?.id ?? null,\n name: getOwnerDebugName(owner) ?? (owner.parent ? 'Owner' : 'App'),\n disposed: owner.disposed\n }\n ownerIds.set(owner, record.id)\n owners.set(record.id, record)\n return record\n }\n\n function isInternalOwnerId(ownerId: string | null | undefined): boolean {\n const visited = new Set<string>()\n let current = ownerId === undefined ? null : ownerId\n while (current && !visited.has(current)) {\n visited.add(current)\n const record = owners.get(current)\n if (!record) return false\n if (debugComponentName(record.name).startsWith('DevTools')) return true\n current = record.parentId\n }\n return false\n }\n\n function isInternalSignal(record: SignalRecord): boolean {\n return isInternalOwnerId(record.ownerId)\n }\n\n function isNoisyViewportSignal(record: SignalRecord): boolean {\n return record.explicitName\n && (record.name === 'layout.viewport.width' || record.name === 'layout.viewport.height')\n }\n\n function hasMeaningfulDomUpdate(updates: readonly DomUpdateInfo[]): boolean {\n return updates.some(update => update.operation === 'insert'\n || update.operation === 'remove'\n || !Object.is(update.previousValue, update.nextValue))\n }\n\n function isInternalEffect(record: EffectRecord): boolean {\n return isInternalOwnerId(record.ownerId)\n }\n\n function errorComponentForOwner(ownerId: string | undefined): string | undefined {\n if (!ownerId) return undefined\n const record = owners.get(ownerId)\n if (!record) return undefined\n if (record.name !== 'Owner' && record.name !== 'dynamic') return record.name\n return errorComponentForOwner(record.parentId ?? undefined)\n }\n\n function ensureSignal(signal: ReadableSignal<unknown>, owner: Owner | null = null): SignalRecord {\n const existingId = signalIds.get(signal)\n if (existingId) {\n const existing = signals.get(existingId)\n if (existing) return existing\n }\n\n const id = `signal-${nextId++}`\n const explicitName = getSignalDebugName(signal)\n const ownerName = owner ? getOwnerDebugName(owner) : undefined\n const record: SignalRecord = {\n signal,\n id,\n ownerId: owner ? ensureOwner(owner).id : null,\n createdAt: Date.now(),\n name: explicitName ?? (ownerName ? `${ownerName} state` : 'runtime state'),\n explicitName: explicitName !== undefined,\n kind: 'state',\n disposed: false\n }\n signalIds.set(signal, id)\n signals.set(id, record)\n return record\n }\n\n function ensureEffect(effect: Effect, owner: Owner | null = null): EffectRecord {\n const existingId = effectIds.get(effect)\n if (existingId) {\n const existing = effects.get(existingId)\n if (existing) return existing\n }\n\n const id = `effect-${nextId++}`\n const record: EffectRecord = {\n effect,\n id,\n ownerId: owner ? ensureOwner(owner).id : null,\n status: 'dirty',\n executionCount: 0,\n lastExecutionTime: 0,\n lastRunStatus: undefined,\n lastDuration: 0,\n lastUpdateId: undefined,\n lastError: undefined,\n lastDomUpdates: 0,\n runningSince: null,\n disposed: effect.disposed\n }\n effectIds.set(effect, id)\n effects.set(id, record)\n return record\n }\n\n function ensureDependencySignal(dependency: Dependency): SignalRecord | null {\n const existingId = signalIds.get(dependency as object)\n if (existingId) return signals.get(existingId) ?? null\n if (!('value' in (dependency as object))) return null\n return ensureSignal(dependency as ReadableSignal<unknown>)\n }\n\n function edgeKey(from: string, to: string): string {\n return `${from}->${to}`\n }\n\n function trackDependency(dependency: Dependency, subscriber: Subscriber): void {\n const source = ensureDependencySignal(dependency)\n if (!source) return\n\n const memoId = memoSignalIds.get(subscriber as object)\n const effectId = effectIds.get(subscriber as object)\n const targetId = memoId ?? effectId\n if (!targetId) return\n\n const type: DependencyEdgeType = memoId\n ? source.kind === 'memo' ? 'memo-to-memo' : 'state-to-memo'\n : source.kind === 'memo' ? 'memo-to-effect' : 'state-to-effect'\n edges.set(edgeKey(source.id, targetId), {\n from: source.id,\n to: targetId,\n type\n })\n }\n\n function collectEffectIds(signalId: string): Set<string> {\n const effectsForSignal = new Set<string>()\n const visited = new Set<string>()\n const visit = (sourceId: string): void => {\n if (visited.has(sourceId)) return\n visited.add(sourceId)\n for (const edge of edges.values()) {\n if (edge.from !== sourceId) continue\n if (effects.has(edge.to)) {\n const effect = effects.get(edge.to)\n if (effect && !isInternalEffect(effect)) effectsForSignal.add(edge.to)\n }\n else visit(edge.to)\n }\n }\n visit(signalId)\n return effectsForSignal\n }\n\n function collectAffectedSignals(signalId: string): Set<string> {\n const affected = new Set<string>()\n const visited = new Set<string>()\n const visit = (sourceId: string): void => {\n if (visited.has(sourceId)) return\n visited.add(sourceId)\n if (signals.has(sourceId)) affected.add(sourceId)\n for (const edge of edges.values()) {\n if (edge.from === sourceId && signals.has(edge.to)) visit(edge.to)\n }\n }\n visit(signalId)\n return affected\n }\n\n function untrackDependency(dependency: Dependency, subscriber: Subscriber): void {\n const source = ensureDependencySignal(dependency)\n if (!source) return\n const targetId = memoSignalIds.get(subscriber as object) ?? effectIds.get(subscriber as object)\n if (targetId) edges.delete(edgeKey(source.id, targetId))\n }\n\n function signalInfo(record: SignalRecord, readValue = true): SignalDebugInfo {\n return {\n id: record.id,\n name: record.name,\n value: readValue ? serializeForDevTools(readSignal(record.signal), new Set<object>(), 0, privacy) : undefined,\n component: record.ownerId ? owners.get(record.ownerId)?.name ?? 'unknown' : 'unknown',\n subscribers: [...edges.values()].filter(edge => edge.from === record.id).length,\n createdAt: record.createdAt,\n kind: record.kind\n }\n }\n\n function readSignal(signal: ReadableSignal<unknown>): unknown {\n try {\n return untrack(() => signal.value)\n } catch (error) {\n return { type: 'thrown', message: toErrorMessage(error) }\n }\n }\n\n function effectInfo(record: EffectRecord): EffectDebugInfo {\n const component = record.ownerId ? owners.get(record.ownerId)?.name ?? 'unknown' : 'runtime'\n return {\n id: record.id,\n name: `${debugComponentName(component)} effect`,\n component,\n dependencies: [...edges.values()]\n .filter(edge => edge.to === record.id)\n .map(edge => edge.from),\n status: record.status,\n executionCount: record.executionCount,\n lastExecutionTime: record.lastExecutionTime,\n lastRunStatus: record.lastRunStatus,\n lastDuration: record.lastDuration,\n lastUpdateId: record.lastUpdateId,\n lastError: record.lastError,\n lastDomUpdates: record.lastDomUpdates\n }\n }\n\n function removeEdgesFor(ids: ReadonlySet<string>): void {\n for (const [key, edge] of edges) {\n if (ids.has(edge.from) || ids.has(edge.to)) edges.delete(key)\n }\n }\n\n function cleanupSignalRecord(record: SignalRecord): void {\n if (signals.get(record.id) !== record) return\n removeEdgesFor(new Set([record.id]))\n signals.delete(record.id)\n }\n\n function cleanupEffectRecord(record: EffectRecord): void {\n if (effects.get(record.id) !== record) return\n removeEdgesFor(new Set([record.id]))\n effects.delete(record.id)\n }\n\n function cleanupOwnerRecord(record: OwnerRecord): void {\n if (owners.get(record.id) !== record) return\n const removedIds = new Set<string>([record.id])\n for (const [id, signal] of signals) {\n if (signal.ownerId === record.id) {\n removedIds.add(id)\n signals.delete(id)\n }\n }\n for (const [id, effect] of effects) {\n if (effect.ownerId === record.id) {\n removedIds.add(id)\n effects.delete(id)\n }\n }\n removeEdgesFor(removedIds)\n owners.delete(record.id)\n }\n\n function debugComponentName(value: string): string {\n const separator = value.indexOf(' (')\n return separator > 0 ? value.slice(0, separator) : value\n }\n\n function buildComponentNode(record: OwnerRecord, activeIds: ReadonlySet<string>): ComponentDebugNode {\n const componentEffects = [...effects.values()]\n .filter(effect => !effect.disposed && effect.ownerId === record.id)\n const componentEffectIds = new Set(componentEffects.map(effect => effect.id))\n const componentUpdates = updates.filter(update => update.effects.some(effect => componentEffectIds.has(effect.effectId)))\n return {\n id: record.id,\n name: record.name,\n ownerId: record.id,\n signals: [...signals.values()]\n .filter(signal => !signal.disposed && signal.ownerId === record.id)\n .map(signal => signal.id),\n effects: componentEffects.map(effect => effect.id),\n recentUpdates: componentUpdates.slice(-10).map(update => update.id),\n domUpdates: componentUpdates.reduce((count, update) => count + update.domUpdates.length, 0),\n children: [...owners.values()]\n .filter(child => !child.disposed && child.parentId === record.id && activeIds.has(child.id))\n .map(child => buildComponentNode(child, activeIds)),\n mounted: !record.disposed\n }\n }\n\n function recordUpdate(pending: PendingUpdate): void {\n if (disposed || collectionPaused || isInternalSignal(pending.signal)) return\n if (isNoisyViewportSignal(pending.signal) && !hasMeaningfulDomUpdate(pending.domUpdates)) return\n const duration = Math.max(0, now() - pending.timestamp)\n const trace: UpdateTrace = {\n id: pending.id,\n signalId: pending.signal.id,\n signalName: pending.signal.name,\n previousValue: serializeForDevTools(pending.previousValue, new Set<object>(), 0, privacy),\n nextValue: serializeForDevTools(pending.nextValue, new Set<object>(), 0, privacy),\n timestamp: pending.timestamp,\n effects: [...pending.executions.values()],\n affectedSignals: [...pending.affectedSignals],\n affectedEffects: [...pending.effectIds],\n domUpdates: pending.domUpdates.slice(),\n status: pending.status,\n error: pending.error,\n duration,\n route: pending.context.route,\n navigationId: pending.context.navigationId,\n requestIds: [...pending.context.requestIds]\n }\n updates.push(trace)\n while (updates.length > maxUpdates) updates.shift()\n updateDurations.push(duration)\n while (updateDurations.length > maxUpdates) updateDurations.shift()\n updateCount++\n emit('update', trace)\n }\n\n function onFlushEnd(): void {\n const current = pendingUpdates.splice(0)\n for (const pending of current) recordUpdate(pending)\n }\n\n function schedulePendingFlush(): void {\n if (pendingFlushScheduled) return\n pendingFlushScheduled = true\n queueMicrotask(() => {\n if (disposed) {\n pendingUpdates.length = 0\n return\n }\n pendingFlushScheduled = false\n for (let index = pendingUpdates.length - 1; index >= 0; index--) {\n const pending = pendingUpdates[index]\n if (!pending || pending.effectIds.size > 0) continue\n pendingUpdates.splice(index, 1)\n recordUpdate(pending)\n }\n })\n }\n\n const hooks: ReactivityDebugHooks = {\n ownerCreated(owner) {\n const record = ensureOwner(owner)\n recordLifecycle('owner-created', record.id, record.name, record.parentId ?? undefined)\n emit('owner-created', record)\n },\n\n ownerNamed(owner, name) {\n const record = ensureOwner(owner)\n record.name = name\n if (isInternalOwnerId(record.id)) return\n for (const signal of signals.values()) {\n if (signal.ownerId === record.id && !signal.explicitName) signal.name = `${name} state`\n }\n recordLifecycle('owner-named', record.id, name, record.parentId ?? undefined)\n emit('owner-named', record)\n },\n\n ownerDisposed(owner) {\n const record = ensureOwner(owner)\n record.disposed = true\n const internal = isInternalOwnerId(record.id)\n if (!internal) {\n recordLifecycle('owner-disposed', record.id, record.name, record.parentId ?? undefined)\n emit('owner-disposed', record)\n }\n cleanupOwnerRecord(record)\n },\n\n signalCreated(signal, owner) {\n const record = ensureSignal(signal, owner)\n if (isInternalSignal(record)) return\n recordLifecycle('signal-created', record.id, record.name, record.ownerId ?? undefined)\n emit('signal-created', signalInfo(record, false))\n },\n\n signalNamed(signal, name) {\n const record = ensureSignal(signal)\n record.name = name\n record.explicitName = true\n if (isInternalSignal(record)) return\n recordLifecycle('signal-named', record.id, name, record.ownerId ?? undefined)\n emit('signal-named', signalInfo(record))\n },\n\n signalRead(signal, subscriber) {\n ensureSignal(signal)\n emit('signal-read', signal, subscriber)\n },\n\n signalChanged(signal, previousValue, nextValue) {\n const record = ensureSignal(signal)\n if (isInternalSignal(record)) return\n let pending = pendingUpdates.find(item => item.signal.signal === signal)\n if (pending) {\n pending.nextValue = nextValue\n const context = getRuntimeDebugContext()\n if (context?.route) pending.context = { ...pending.context, route: context.route }\n if (context?.navigationId !== undefined) pending.context = { ...pending.context, navigationId: context.navigationId }\n if (context?.dataRequestId !== undefined) pending.context.requestIds.add(context.dataRequestId)\n } else {\n pending = {\n id: `update-${nextId++}`,\n signal: record,\n timestamp: now(),\n previousValue,\n nextValue,\n affectedSignals: collectAffectedSignals(record.id),\n effectIds: collectEffectIds(record.id),\n executions: new Map(),\n domUpdates: [],\n status: 'completed',\n error: undefined,\n context: {\n route: getRuntimeDebugContext()?.route,\n navigationId: getRuntimeDebugContext()?.navigationId,\n requestIds: new Set(\n getRuntimeDebugContext()?.dataRequestId === undefined\n ? []\n : [getRuntimeDebugContext()!.dataRequestId!]\n )\n }\n }\n pendingUpdates.push(pending)\n }\n emit('signal-update', {\n ...signalInfo(record),\n previousValue: serializeForDevTools(previousValue, new Set<object>(), 0, privacy),\n nextValue: serializeForDevTools(nextValue, new Set<object>(), 0, privacy),\n updateId: pending.id\n })\n recordLifecycle('signal-changed', record.id, record.name, record.ownerId ?? undefined)\n if (pending.effectIds.size === 0) schedulePendingFlush()\n },\n\n signalDisposed(signal) {\n const record = ensureSignal(signal)\n record.disposed = true\n const internal = isInternalSignal(record)\n if (!internal) {\n recordLifecycle('signal-disposed', record.id, record.name, record.ownerId ?? undefined)\n emit('signal-disposed', record)\n }\n cleanupSignalRecord(record)\n },\n\n dependencyTracked(dependency, subscriber) {\n trackDependency(dependency, subscriber)\n },\n\n dependencyUntracked(dependency, subscriber) {\n untrackDependency(dependency, subscriber)\n },\n\n effectCreated(effect, owner) {\n const record = ensureEffect(effect, owner)\n if (isInternalEffect(record)) return\n recordLifecycle('effect-created', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-created', effectInfo(record))\n },\n\n effectInvalidated(effect) {\n const record = ensureEffect(effect)\n if (isInternalEffect(record)) return\n record.status = 'dirty'\n recordLifecycle('effect-invalidated', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-invalidated', effectInfo(record))\n },\n\n effectRunStart(effect) {\n const record = ensureEffect(effect)\n if (isInternalEffect(record)) return\n record.status = 'running'\n record.runningSince = now()\n activeEffectId = record.id\n recordLifecycle('effect-run-start', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-run-start', effectInfo(record))\n },\n\n effectRunEnd(effect, error, handled = false) {\n const record = ensureEffect(effect)\n if (isInternalEffect(record)) return\n const end = now()\n const duration = record.runningSince === null ? 0 : Math.max(0, end - record.runningSince)\n const runStatus = error === undefined ? 'success' : 'error'\n const debugError = error === undefined ? undefined : toDebugError(error, 'effect')\n record.status = runStatus\n record.runningSince = null\n record.executionCount++\n record.lastExecutionTime = end\n record.lastRunStatus = runStatus\n record.lastDuration = duration\n record.lastError = debugError\n effectExecutionCount++\n const execution: EffectExecutionInfo = {\n effectId: record.id,\n component: record.ownerId ? owners.get(record.ownerId)?.name ?? 'unknown' : 'unknown',\n duration,\n domUpdates: 0,\n status: runStatus,\n error: debugError\n }\n for (const pending of pendingUpdates) {\n if (!pending.effectIds.has(record.id)) continue\n const domUpdates = pending.domUpdates.filter(update => update.effectId === record.id).length\n const completedExecution = { ...execution, domUpdates }\n pending.executions.set(record.id, completedExecution)\n if (error !== undefined) {\n pending.status = 'error'\n pending.error = debugError\n }\n record.lastUpdateId = pending.id\n record.lastDomUpdates = domUpdates\n }\n activeEffectId = null\n if (error !== undefined) {\n const update = [...pendingUpdates].reverse().find(item => item.effectIds.has(record.id))\n const errorOwnerId = readErrorProperty(error, 'vobsOwnerId')\n const errorComponent = readErrorProperty(error, 'vobsComponent')\n reportError('effect', error, {\n effectId: record.id,\n updateId: update?.id,\n ownerId: errorOwnerId ?? record.ownerId ?? undefined,\n component: errorComponent ?? errorComponentForOwner(record.ownerId ?? undefined),\n handled,\n recovery: handled ? 'handled' : 'propagated'\n })\n }\n recordLifecycle('effect-run', record.id, effectInfo(record).name, record.ownerId ?? undefined, runStatus)\n emit('effect-run', execution)\n },\n\n effectDisposed(effect) {\n const record = ensureEffect(effect)\n const internal = isInternalEffect(record)\n record.disposed = true\n record.status = 'idle'\n if (!internal) {\n recordLifecycle('effect-disposed', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-disposed', record)\n }\n cleanupEffectRecord(record)\n },\n\n memoCreated(signal, subscriber, owner) {\n const record = ensureSignal(signal, owner)\n record.kind = 'memo'\n memoSignalIds.set(subscriber as object, record.id)\n if (isInternalSignal(record)) return\n recordLifecycle('memo-created', record.id, record.name, record.ownerId ?? undefined)\n emit('memo-created', signalInfo(record))\n },\n\n memoInvalidated(signal) {\n const record = ensureSignal(signal)\n if (isInternalSignal(record)) return\n recordLifecycle('memo-invalidated', record.id, record.name, record.ownerId ?? undefined)\n emit('memo-update', signalInfo(record))\n },\n\n flushEnd: onFlushEnd\n }\n\n const runtimeHooks: RuntimeDebugHooks = {\n domMutation(mutation: RuntimeDomMutation): void {\n if (!activeEffectId) return\n const effect = effects.get(activeEffectId)\n if (!effect || isInternalEffect(effect)) return\n const safeMutation: DomUpdateInfo = {\n ...mutation,\n previousValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.previousValue, new Set<object>(), 0, privacy),\n nextValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.nextValue, new Set<object>(), 0, privacy),\n effectId: activeEffectId,\n route: getRuntimeDebugContext()?.route,\n navigationId: getRuntimeDebugContext()?.navigationId,\n requestId: getRuntimeDebugContext()?.dataRequestId\n }\n for (const pending of pendingUpdates) {\n if (pending.effectIds.has(activeEffectId)) {\n pending.domUpdates.push(safeMutation)\n if (safeMutation.route) pending.context = { ...pending.context, route: safeMutation.route }\n if (safeMutation.navigationId !== undefined) pending.context = { ...pending.context, navigationId: safeMutation.navigationId }\n if (safeMutation.requestId !== undefined) pending.context.requestIds.add(safeMutation.requestId)\n }\n }\n emit('dom-update', safeMutation)\n },\n\n hydrationMismatch(event: RuntimeHydrationMismatch): void {\n reportError('hydration', Object.assign(new Error(event.message), {\n name: 'HydrationMismatchError',\n vobsCode: 'VOBS_HYDRATION_MISMATCH',\n vobsHydration: event\n }), {\n route: getRuntimeDebugContext()?.route,\n navigationId: getRuntimeDebugContext()?.navigationId\n })\n },\n\n error(event: RuntimeErrorEvent): void {\n const owner = ensureOwner(event.owner)\n const errorOwnerId = readErrorProperty(event.error, 'vobsOwnerId')\n const errorComponent = readErrorProperty(event.error, 'vobsComponent')\n reportError(event.phase === 'boundary' ? 'boundary' : 'event', event.error, {\n ownerId: errorOwnerId ?? owner.id,\n component: errorComponent ?? errorComponentForOwner(owner.id ?? undefined) ?? owner.name,\n handled: event.handled,\n recovery: event.recovery,\n })\n }\n }\n\n const httpHooks = {\n request(event: HTTPDebugRequest): void {\n if (collectionPaused) return\n const previous = networkRequests.get(event.id)\n const trace: NetworkRequestTrace = {\n id: event.id,\n url: event.url,\n method: event.method,\n status: event.status,\n headers: redactHeaders(event.headers, privacy),\n requestBody: serializeForDevTools(event.requestBody, new Set<object>(), 0, privacy),\n startedAt: previous?.startedAt ?? event.startedAt,\n endedAt: event.endedAt,\n duration: event.duration,\n attempt: Math.max(event.attempt, previous?.attempt ?? 0),\n retries: Math.max(event.retries, previous?.retries ?? 0),\n responseStatus: event.responseStatus,\n responseBody: serializeForDevTools(event.responseBody, new Set<object>(), 0, privacy),\n error: event.error,\n source: event.context?.environment === 'server' ? 'ssr' : 'http',\n test: event.context?.test,\n route: event.context?.route,\n navigationId: event.context?.navigationId,\n dataRequestId: event.context?.dataRequestId,\n environment: event.context?.environment\n }\n for (const pending of pendingUpdates) {\n if (event.context?.dataRequestId !== undefined && pending.context.requestIds.has(event.context.dataRequestId)) pending.context.requestIds.add(event.id)\n if (activeEffectId !== null && pending.effectIds.has(activeEffectId)) pending.context.requestIds.add(event.id)\n }\n networkRequests.set(event.id, trace)\n while (networkRequests.size > maxUpdates) {\n const oldest = networkRequests.keys().next().value\n if (typeof oldest !== 'number') break\n networkRequests.delete(oldest)\n }\n emit('network-request', trace)\n if (event.error) reportError('network', new Error(event.error.message), {\n requestId: event.id,\n route: event.context?.route,\n navigationId: event.context?.navigationId\n })\n }\n }\n\n function importSSRRequests(snapshot: unknown): void {\n if (disposed) return\n const events = parseSSRRequestSnapshot(snapshot)\n const ids = new Map<number, number>()\n for (const event of events) {\n const importedId = ids.get(event.id) ?? -(event.id + 1)\n ids.set(event.id, importedId)\n const trace: NetworkRequestTrace = {\n id: importedId,\n url: event.url,\n method: event.method,\n status: event.status,\n headers: redactHeaders(event.headers, privacy),\n requestBody: serializeForDevTools(event.requestBody, new Set<object>(), 0, privacy),\n startedAt: event.startedAt,\n endedAt: event.endedAt,\n duration: event.duration,\n attempt: event.attempt,\n retries: event.retries,\n responseStatus: event.responseStatus,\n responseBody: serializeForDevTools(event.responseBody, new Set<object>(), 0, privacy),\n error: event.error,\n source: 'ssr',\n test: event.context?.test,\n route: event.context?.route,\n navigationId: event.context?.navigationId,\n dataRequestId: event.context?.dataRequestId,\n environment: 'server'\n }\n networkRequests.set(importedId, trace)\n }\n while (networkRequests.size > maxUpdates) {\n const oldest = networkRequests.keys().next().value\n if (typeof oldest !== 'number') break\n networkRequests.delete(oldest)\n }\n emit('network-request', { source: 'ssr', imported: events.length })\n }\n\n const previousHooks = getDebugHooks()\n const previousRuntimeHooks = getRuntimeDebugHooks()\n const previousHTTPHooks = getHTTPDebugHooks()\n setDebugHooks(hooks)\n setRuntimeDebugHooks(runtimeHooks)\n setHTTPDebugHooks(httpHooks)\n\n const target = options.target ?? defaultTarget()\n const shouldExpose = options.expose ?? Boolean(target)\n const previousGlobal = target?.__VOBS_DEVTOOLS__\n let api!: DevToolsAPI\n const onGlobalError = (event: { readonly error?: unknown; readonly message?: unknown; readonly filename?: unknown; readonly lineno?: unknown; readonly colno?: unknown }): void => {\n const source = typeof event.filename === 'string' && event.filename\n ? `${event.filename}:${typeof event.lineno === 'number' ? event.lineno : 0}:${typeof event.colno === 'number' ? event.colno : 0}`\n : undefined\n reportError('global', event.error ?? event.message ?? 'Unknown global error', { source })\n }\n const onUnhandledRejection = (event: { readonly reason?: unknown }): void => {\n reportError('unhandledrejection', event.reason ?? 'Unhandled promise rejection')\n }\n target?.addEventListener?.('error', onGlobalError)\n target?.addEventListener?.('unhandledrejection', onUnhandledRejection)\n\n function subscribe(event: string, callback: (...args: any[]) => void): () => void {\n if (disposed) return () => undefined\n const callbacks = listeners.get(event) ?? new Set<(...args: any[]) => void>()\n callbacks.add(callback)\n listeners.set(event, callbacks)\n return () => {\n callbacks.delete(callback)\n if (callbacks.size === 0 && listeners.get(event) === callbacks) listeners.delete(event)\n }\n }\n\n function attachRouter(router: DevToolsRouterSource): () => void {\n const existing = routerStops.get(router)\n if (existing) {\n existing.refs++\n let released = false\n return () => {\n if (released) return\n released = true\n existing.refs--\n if (existing.refs === 0) existing.stop()\n }\n }\n const source = router.devtools as DevToolsRouterSource['devtools'] & {\n getCurrentRoute?: () => { readonly fullPath?: unknown }\n getNavigationState?: () => { readonly traceId?: unknown; readonly status?: unknown }\n getDataRequests?: () => readonly DevToolsRouterContext['dataRequests'][number][]\n }\n const initialRoute = source.getCurrentRoute?.()\n const initialState = source.getNavigationState?.()\n routerContext = {\n route: typeof initialRoute?.fullPath === 'string' ? initialRoute.fullPath : routerContext?.route,\n navigationId: typeof initialState?.traceId === 'number' ? initialState.traceId : routerContext?.navigationId,\n navigationStatus: typeof initialState?.status === 'string' ? initialState.status : routerContext?.navigationStatus,\n dataRequests: source.getDataRequests?.() ?? routerContext?.dataRequests ?? []\n }\n const stops = [\n router.devtools.subscribe('navigation:start', payload => {\n const value = payload as { readonly to?: unknown; readonly traceId?: unknown; readonly status?: unknown }\n routerContext = {\n route: typeof value.to === 'string' ? value.to : routerContext?.route,\n navigationId: typeof value.traceId === 'number' ? value.traceId : routerContext?.navigationId,\n navigationStatus: typeof value.status === 'string' ? value.status : undefined,\n dataRequests: routerContext?.dataRequests ?? []\n }\n emit('router', { type: 'navigation:start', payload })\n }),\n router.devtools.subscribe('navigation:end', payload => {\n const value = payload as { readonly to?: unknown; readonly id?: unknown; readonly status?: unknown }\n routerContext = {\n route: typeof value.to === 'string' ? value.to : routerContext?.route,\n navigationId: typeof value.id === 'number' ? value.id : routerContext?.navigationId,\n navigationStatus: typeof value.status === 'string' ? value.status : undefined,\n dataRequests: routerContext?.dataRequests ?? []\n }\n emit('router', { type: 'navigation:end', payload })\n }),\n router.devtools.subscribe('data-request', payload => {\n const request = payload as DevToolsRouterContext['dataRequests'][number]\n const requests = [...(routerContext?.dataRequests ?? [])]\n const existingIndex = requests.findIndex(item => item.id === request.id)\n if (existingIndex >= 0) requests[existingIndex] = request\n else requests.push(request)\n requests.splice(0, Math.max(0, requests.length - maxUpdates))\n routerContext = { ...routerContext, dataRequests: requests }\n emit('router', { type: 'data-request', payload })\n }),\n router.devtools.subscribe('route:update', payload => {\n const value = payload as { readonly fullPath?: unknown }\n if (typeof value.fullPath === 'string') routerContext = { ...routerContext, route: value.fullPath, dataRequests: routerContext?.dataRequests ?? [] }\n emit('router', { type: 'route:update', payload })\n }),\n router.devtools.subscribe('error', payload => {\n const value = payload as { readonly route?: unknown; readonly requestId?: unknown; readonly navigationId?: unknown; readonly message?: unknown; readonly stack?: unknown; readonly phase?: unknown }\n reportError('route', Object.assign(new Error(typeof value.message === 'string' ? value.message : 'Router error'), {\n stack: value.stack\n }), {\n route: typeof value.route === 'string' ? value.route : routerContext?.route,\n requestId: typeof value.requestId === 'number' ? value.requestId : undefined,\n navigationId: typeof value.navigationId === 'number' ? value.navigationId : undefined\n })\n emit('router', { type: 'error', payload })\n })\n ]\n const stop = () => {\n const current = routerStops.get(router)\n if (!current || current.stop !== stop) return\n for (const stop of stops) stop()\n routerStops.delete(router)\n }\n routerStops.set(router, { stop, refs: 1 })\n let released = false\n return () => {\n if (released) return\n released = true\n const current = routerStops.get(router)\n if (!current) return\n current.refs--\n if (current.refs === 0) current.stop()\n }\n }\n\n api = {\n getComponentTree(): readonly ComponentDebugNode[] {\n const active = [...owners.values()].filter(owner => !owner.disposed && !isInternalOwnerId(owner.id))\n const activeIds = new Set(active.map(owner => owner.id))\n return active\n .filter(owner => owner.parentId === null || !activeIds.has(owner.parentId))\n .map(owner => buildComponentNode(owner, activeIds))\n },\n\n getComponent(ownerId: string): ComponentDebugNode | null {\n const active = [...owners.values()].filter(owner => !owner.disposed && !isInternalOwnerId(owner.id))\n const activeIds = new Set(active.map(owner => owner.id))\n const find = (records: readonly OwnerRecord[]): ComponentDebugNode | null => {\n for (const record of records) {\n if (!activeIds.has(record.id)) continue\n if (record.id === ownerId) return buildComponentNode(record, activeIds)\n const child = find(active.filter(candidate => candidate.parentId === record.id))\n if (child) return child\n }\n return null\n }\n return find(active.filter(owner => owner.parentId === null || !activeIds.has(owner.parentId)))\n },\n\n getSignals(): readonly SignalDebugInfo[] {\n return [...signals.values()]\n .filter(signal => !signal.disposed && !isInternalSignal(signal))\n .map(signal => signalInfo(signal))\n },\n\n getSignal(signalId: string): SignalDebugInfo | null {\n const record = signals.get(signalId)\n return record && !record.disposed && !isInternalSignal(record) ? signalInfo(record) : null\n },\n\n canMutate(): boolean {\n return allowMutations && !disposed\n },\n\n setSignalValue(signalId: string, value: unknown): boolean {\n if (!allowMutations || disposed) return false\n const record = signals.get(signalId)\n // 只有 state 创建的信号可写;memo 派生值拒绝。\n if (!record || record.disposed || record.kind !== 'state') return false\n try {\n ;(record.signal as Signal<unknown>).value = value\n return true\n } catch (error) {\n reportError('render', error)\n return false\n }\n },\n\n getDependencies(signalId: string): readonly DependencyEdge[] {\n return [...edges.values()].filter(edge => edge.from === signalId)\n },\n\n getDependents(subscriberId: string): readonly DependencyEdge[] {\n return [...edges.values()].filter(edge => edge.to === subscriberId)\n },\n\n getEffects(): readonly EffectDebugInfo[] {\n return [...effects.values()]\n .filter(effect => !effect.disposed && !isInternalEffect(effect))\n .map(effectInfo)\n },\n\n getUpdates(): readonly UpdateTrace[] {\n return updates.slice()\n },\n\n getLifecycleEvents(): readonly LifecycleEvent[] {\n return lifecycleEvents.slice()\n },\n\n getNetworkRequests(): readonly NetworkRequestTrace[] {\n return [...networkRequests.values()]\n },\n\n importSSRRequests,\n\n getRouterContext(): DevToolsRouterContext | null {\n return routerContext ? { ...routerContext, dataRequests: [...routerContext.dataRequests] } : null\n },\n\n attachRouter,\n\n getErrors(): readonly DevToolsErrorTrace[] {\n return [...errors.values()]\n },\n\n getPerformanceEntries(): readonly DevToolsPerformanceEntry[] {\n const entries: DevToolsPerformanceEntry[] = []\n for (const update of updates) {\n entries.push({\n kind: 'update',\n id: update.id,\n label: update.signalName,\n duration: update.duration,\n timestamp: update.timestamp,\n status: update.status\n })\n }\n for (const effect of effects.values()) {\n if (effect.disposed || isInternalEffect(effect) || effect.lastDuration <= 0) continue\n entries.push({\n kind: 'effect',\n id: effect.id,\n label: effectInfo(effect).name,\n duration: effect.lastDuration,\n timestamp: effect.lastExecutionTime,\n status: effect.lastRunStatus ?? effect.status\n })\n }\n for (const request of networkRequests.values()) {\n if (request.duration === undefined) continue\n entries.push({\n kind: 'request',\n id: request.id,\n label: `${request.method} ${request.url}`,\n duration: request.duration,\n timestamp: request.startedAt,\n status: request.status\n })\n }\n return entries.sort((left, right) => right.duration - left.duration)\n },\n\n reportError,\n\n getCollectionState(): DevToolsCollectionState {\n return { paused: collectionPaused }\n },\n\n setCollectionPaused(paused: boolean): void {\n collectionPaused = paused\n if (paused) pendingUpdates.length = 0\n emit('collection', { paused })\n },\n\n clearUpdates(): void {\n pendingUpdates.length = 0\n updates.length = 0\n updateDurations.length = 0\n updateCount = 0\n emit('collection-cleared', 'updates')\n },\n\n clearNetworkRequests(): void {\n networkRequests.clear()\n emit('collection-cleared', 'network')\n },\n\n clearErrors(): void {\n errors.clear()\n emit('collection-cleared', 'errors')\n },\n\n clearLifecycleEvents(): void {\n lifecycleEvents.length = 0\n emit('collection-cleared', 'lifecycle')\n },\n\n getPerformanceMetrics(): PerformanceMetrics {\n const total = updateDurations.reduce((sum, duration) => sum + duration, 0)\n const effectDurations = [...effects.values()]\n .filter(effect => !effect.disposed)\n .map(effect => effect.lastDuration)\n .filter(duration => duration > 0)\n const requestDurations = [...networkRequests.values()]\n .map(request => request.duration ?? 0)\n .filter(duration => duration > 0)\n return {\n updateCount,\n averageUpdateDuration: updateDurations.length === 0 ? 0 : total / updateDurations.length,\n slowUpdateCount: updateDurations.filter(duration => duration > slowUpdateThreshold).length,\n effectExecutionCount,\n slowEffectCount: effectDurations.filter(duration => duration > slowUpdateThreshold).length,\n slowRequestCount: requestDurations.filter(duration => duration > slowUpdateThreshold).length,\n maxUpdateDuration: updateDurations.length === 0 ? 0 : Math.max(...updateDurations),\n maxEffectDuration: effectDurations.length === 0 ? 0 : Math.max(...effectDurations),\n maxRequestDuration: requestDurations.length === 0 ? 0 : Math.max(...requestDurations)\n }\n },\n\n takeMemorySnapshot(): MemorySnapshot {\n return {\n signalCount: [...signals.values()].filter(signal => !signal.disposed && !isInternalSignal(signal)).length,\n effectCount: [...effects.values()].filter(effect => !effect.disposed && !isInternalEffect(effect)).length,\n ownerCount: [...owners.values()].filter(owner => !owner.disposed && !isInternalOwnerId(owner.id)).length,\n dependencyEdgeCount: edges.size,\n leakedOwners: [...owners.values()].filter(owner => owner.disposed).length\n }\n },\n\n exportDiagnostics(): DevToolsDiagnosticSnapshot {\n return {\n version: 1,\n exportedAt: Date.now(),\n updates: api.getUpdates(),\n lifecycle: api.getLifecycleEvents(),\n network: api.getNetworkRequests(),\n errors: api.getErrors(),\n performance: api.getPerformanceMetrics(),\n memory: api.takeMemorySnapshot(),\n extensions: getExtensionSnapshot()\n }\n },\n\n importDiagnostics(snapshot: unknown): void {\n const imported = parseDiagnosticSnapshot(snapshot)\n updates.splice(0, updates.length, ...imported.updates.slice(-maxUpdates).map(update => sanitizeImportedUpdate(update, privacy)))\n lifecycleEvents.splice(0, lifecycleEvents.length, ...imported.lifecycle.slice(-maxUpdates))\n networkRequests.clear()\n for (const request of imported.network.slice(-maxUpdates)) networkRequests.set(request.id, sanitizeImportedRequest(request, privacy))\n errors.clear()\n for (const error of imported.errors.slice(-maxUpdates)) {\n const normalized = sanitizeImportedError(error)\n errors.set(diagnosticErrorKey(normalized), normalized)\n }\n updateDurations.splice(0, updateDurations.length, ...updates.map(update => update.duration))\n updateCount = imported.performance.updateCount\n effectExecutionCount = imported.performance.effectExecutionCount\n emit('collection', { imported: true })\n },\n\n registerInspector(id: string, inspector: DevToolsInspector): () => void {\n if (disposed || !id) return () => undefined\n inspectors.set(id, inspector)\n emit('extension', { type: 'inspector', id })\n return () => {\n if (inspectors.get(id) === inspector) inspectors.delete(id)\n }\n },\n\n registerTimeline(id: string, timeline: DevToolsTimeline = {}): () => void {\n if (disposed || !id) return () => undefined\n timelines.set(id, timeline)\n emit('extension', { type: 'timeline', id })\n return () => {\n if (timelines.get(id) === timeline) timelines.delete(id)\n }\n },\n\n registerMetric(id: string, metric: DevToolsMetric): () => void {\n if (disposed || !id) return () => undefined\n metrics.set(id, metric)\n emit('extension', { type: 'metric', id })\n return () => {\n if (metrics.get(id) === metric) metrics.delete(id)\n }\n },\n\n getExtensionSnapshot,\n\n inspectExtension(id: string, value: unknown): unknown {\n const inspector = inspectors.get(id)\n if (!inspector) return undefined\n return safeExtensionCall(\n () => serializeForDevTools(inspector.inspect(value), new Set<object>(), 0, privacy),\n undefined\n )\n },\n\n onUpdate(callback: (trace: UpdateTrace) => void): () => void {\n return subscribe('update', callback)\n },\n\n subscribe,\n\n dispose(): void {\n if (disposed) return\n disposed = true\n if (getDebugHooks() === hooks) setDebugHooks(previousHooks)\n if (getRuntimeDebugHooks() === runtimeHooks) setRuntimeDebugHooks(previousRuntimeHooks)\n if (getHTTPDebugHooks() === httpHooks) setHTTPDebugHooks(previousHTTPHooks)\n if (activeDevTools === api) activeDevTools = null\n if (target && target.__VOBS_DEVTOOLS__ === api) {\n if (previousGlobal) target.__VOBS_DEVTOOLS__ = previousGlobal\n else delete target.__VOBS_DEVTOOLS__\n }\n target?.removeEventListener?.('error', onGlobalError)\n target?.removeEventListener?.('unhandledrejection', onUnhandledRejection)\n listeners.clear()\n for (const { stop } of [...routerStops.values()]) stop()\n routerStops.clear()\n routerContext = null\n pendingUpdates.length = 0\n pendingFlushScheduled = false\n activeEffectId = null\n inspectors.clear()\n timelines.clear()\n metrics.clear()\n }\n }\n\n if (shouldExpose && target) target.__VOBS_DEVTOOLS__ = api\n activeDevTools = api\n if (options.router) attachRouter(options.router)\n return api\n}\n\nexport function enableDevTools(options: DevToolsOptions = {}): DevToolsAPI {\n return createDevTools(options)\n}\n\nexport function disableDevTools(): void {\n activeDevTools?.dispose()\n}\n\nexport function getDevTools(): DevToolsAPI | null {\n return activeDevTools\n}\n\n/** Connects a browser panel through a small postMessage protocol. */\nexport function connectDevTools(options: DevToolsBridgeOptions = {}): () => void {\n const target = options.target ?? defaultMessageTarget()\n const api = options.api ?? activeDevTools\n if (!target || !api) return () => undefined\n\n const send = (message: DevToolsWireResponse | DevToolsWireEvent): void => {\n try {\n target.postMessage(message, '*')\n } catch {\n // A panel disappearing during navigation must not affect the application.\n }\n }\n const unsubscribes = DEVTOOLS_EVENTS.map(event => api.subscribe(event, (...args: unknown[]) => {\n send({\n source: 'vobs-devtools',\n type: 'event',\n event,\n payload: args.length === 1 ? args[0] : args\n })\n }))\n const onMessage = (event: DevToolsMessageEvent): void => {\n const request = parseRequest(event.data)\n if (!request) return\n try {\n send({\n source: 'vobs-devtools',\n type: 'response',\n id: request.id,\n ok: true,\n result: invokeRequest(api, request)\n })\n } catch (error) {\n send({\n source: 'vobs-devtools',\n type: 'response',\n id: request.id,\n ok: false,\n error: toErrorMessage(error)\n })\n }\n }\n target.addEventListener('message', onMessage)\n\n return () => {\n target.removeEventListener('message', onMessage)\n for (const unsubscribe of unsubscribes) unsubscribe()\n }\n}\n\nexport function devtoolsPlugin(options: DevToolsPluginOptions = {}): VobsPlugin {\n return {\n name: '@vobs/devtools',\n version: '0.1.0',\n install(context: VobsContext) {\n if (options.enabled === false) return\n const devtools = createDevTools(options)\n const removeErrorObserver = context.onError(error => {\n const phase: DevToolsErrorPhase = readErrorProperty(error, 'vobsCode') === 'VOBS_HYDRATION_MISMATCH'\n || Boolean(readErrorProperty(error, 'vobsHydration'))\n ? 'hydration'\n : 'application'\n devtools.reportError(phase, error, {\n handled: false,\n recovery: 'propagated'\n })\n })\n return () => {\n removeErrorObserver()\n devtools.dispose()\n }\n }\n }\n}\n\nfunction defaultTarget(): DevToolsTarget | undefined {\n return typeof window === 'undefined' ? undefined : window\n}\n\nfunction defaultMessageTarget(): DevToolsMessageTarget | undefined {\n return typeof window === 'undefined' ? undefined : window as unknown as DevToolsMessageTarget\n}\n\nfunction parseRequest(value: unknown): DevToolsWireRequest | null {\n if (!value || typeof value !== 'object') return null\n const request = value as Partial<DevToolsWireRequest>\n if (request.source !== 'vobs-devtools' || request.type !== 'request') return null\n if (typeof request.id !== 'string' || typeof request.method !== 'string') return null\n return request as DevToolsWireRequest\n}\n\nfunction invokeRequest(api: DevToolsAPI, request: DevToolsWireRequest): unknown {\n const args = request.args ?? []\n switch (request.method) {\n case 'getComponentTree': return api.getComponentTree()\n case 'getComponent': return api.getComponent(String(args[0] ?? ''))\n case 'getSignals': return api.getSignals()\n case 'getSignal': return api.getSignal(String(args[0] ?? ''))\n case 'canMutate': return api.canMutate()\n case 'setSignalValue': return api.setSignalValue(String(args[0] ?? ''), args[1])\n case 'getDependencies': return api.getDependencies(String(args[0] ?? ''))\n case 'getDependents': return api.getDependents(String(args[0] ?? ''))\n case 'getEffects': return api.getEffects()\n case 'getUpdates': return api.getUpdates()\n case 'getLifecycleEvents': return api.getLifecycleEvents()\n case 'getNetworkRequests': return api.getNetworkRequests()\n case 'importSSRRequests': api.importSSRRequests(args[0]); return undefined\n case 'getRouterContext': return api.getRouterContext()\n case 'getErrors': return api.getErrors()\n case 'getPerformanceEntries': return api.getPerformanceEntries()\n case 'getCollectionState': return api.getCollectionState()\n case 'setCollectionPaused': api.setCollectionPaused(Boolean(args[0])); return undefined\n case 'clearUpdates': api.clearUpdates(); return undefined\n case 'clearNetworkRequests': api.clearNetworkRequests(); return undefined\n case 'clearErrors': api.clearErrors(); return undefined\n case 'clearLifecycleEvents': api.clearLifecycleEvents(); return undefined\n case 'getPerformanceMetrics': return api.getPerformanceMetrics()\n case 'takeMemorySnapshot': return api.takeMemorySnapshot()\n case 'exportDiagnostics': return api.exportDiagnostics()\n case 'importDiagnostics': api.importDiagnostics(args[0]); return undefined\n case 'getExtensionSnapshot': return api.getExtensionSnapshot()\n case 'inspectExtension': return api.inspectExtension(String(args[0] ?? ''), args[1])\n default: throw new Error(`Vobs DevTools: 未知请求 ${request.method}`)\n }\n}\n\nfunction toErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nfunction toDebugError(error: unknown, phase?: string): DebugErrorInfo {\n const normalized = normalizeVobsError(error)\n const value = error as {\n name?: unknown\n message?: unknown\n stack?: unknown\n vobsSource?: { file?: unknown; line?: unknown; column?: unknown }\n vobsCode?: unknown\n code?: unknown\n vobsHint?: unknown\n vobsHydration?: RuntimeHydrationMismatch\n } | null\n const source = value?.vobsSource ?? normalized.location\n return {\n name: typeof value?.name === 'string' ? value.name : normalized.name,\n message: typeof value?.message === 'string' ? value.message : normalized.message,\n stack: typeof value?.stack === 'string' ? value.stack : normalized.stack,\n phase,\n source: source && typeof source.file === 'string'\n ? `${source.file}:${source.line ?? 0}:${source.column ?? 0}`\n : undefined,\n location: source && typeof source.file === 'string' && typeof source.line === 'number' && typeof source.column === 'number'\n ? { file: source.file, line: source.line, column: source.column }\n : undefined,\n code: typeof value?.vobsCode === 'string'\n ? value.vobsCode\n : typeof value?.code === 'string' ? value.code : undefined,\n hint: typeof value?.vobsHint === 'string' ? value.vobsHint : undefined,\n cause: normalized.cause instanceof Error ? `${normalized.cause.name}: ${normalized.cause.message}` : normalized.cause === undefined ? undefined : String(normalized.cause),\n fix: normalized.fix,\n hydration: value?.vobsHydration && typeof value.vobsHydration === 'object' ? value.vobsHydration : undefined\n }\n}\n\ninterface ErrorClassification {\n readonly origin: DevToolsErrorOrigin\n readonly code?: string\n readonly hint?: string\n}\n\nconst FRAMEWORK_ERROR_RULES: readonly { pattern: RegExp; origin: DevToolsErrorOrigin; code: string; hint: string }[] = [\n { pattern: /响应式更新超过\\s*100\\s*轮/, origin: 'framework', code: 'VOBS_REACTIVITY_LOOP', hint: '检查 Effect 是否在执行时持续写入它依赖的 Signal。' },\n { pattern: /Fragment: (?:不能跨父节点移动|Fragment 不属于指定父节点|找不到结束锚点)/, origin: 'framework', code: 'VOBS_FRAGMENT_INVARIANT', hint: '检查 Fragment 的父节点和插入/删除顺序,通常表示运行时树结构已不一致。' },\n { pattern: /当前渲染器不支持 Hydration/, origin: 'usage', code: 'VOBS_HYDRATION_UNSUPPORTED', hint: '请使用支持 Hydration 的 Renderer,或改用 app.mount()。' },\n { pattern: /(?:HydrationMismatchError|Vobs hydration:|服务端 DOM 与客户端渲染结构不一致|节点位置与客户端渲染结果不一致)/, origin: 'framework', code: 'VOBS_HYDRATION_MISMATCH', hint: '检查服务端和客户端是否生成了相同的节点结构与初始状态。' },\n { pattern: /渲染器未初始化/, origin: 'usage', code: 'VOBS_RENDERER_NOT_INITIALIZED', hint: '请在应用 mount 或 hydrate 后调用 Runtime DOM API。' },\n { pattern: /节点不属于指定父节点/, origin: 'framework', code: 'VOBS_DOM_PARENT_MISMATCH', hint: '检查节点是否被重复移动、删除,或被错误的 Renderer 实例管理。' }\n]\n\nfunction classifyError(phase: DevToolsErrorPhase, error: unknown, context: DevToolsErrorContext): ErrorClassification {\n const message = toErrorMessage(error)\n const explicitCode = context.code\n ?? readErrorProperty(error, 'vobsCode')\n ?? readErrorProperty(error, 'code')\n ?? extractErrorCode(message)\n const frameworkRule = FRAMEWORK_ERROR_RULES.find(rule => rule.pattern.test(message))\n if (frameworkRule) return { origin: context.origin ?? frameworkRule.origin, code: explicitCode ?? frameworkRule.code, hint: context.hint ?? frameworkRule.hint }\n if (context.origin) return { origin: context.origin, code: explicitCode, hint: context.hint }\n if ((explicitCode && isUsageErrorCode(explicitCode))\n || (/^Vobs(?:\\s|:)|^VOBS_/.test(message) && /必须|不能为空|找不到|缺少|不存在|无效|不能直接|重复|未配置|已销毁/.test(message))) {\n return { origin: 'usage', code: explicitCode, hint: context.hint ?? '检查调用参数、Owner 作用域和相关插件是否已安装。' }\n }\n if (phase === 'global') return { origin: 'unknown', code: explicitCode, hint: context.hint }\n return { origin: 'application', code: explicitCode, hint: context.hint }\n}\n\nfunction isUsageErrorCode(code: string): boolean {\n return /^(?:INVALID_|.*_(?:CONTEXT_MISSING|CONTEXT_DISPOSED|OPTIONS|MISSING|UNAVAILABLE))/.test(code)\n}\n\nfunction extractErrorCode(message: string): string | undefined {\n return message.match(/\\b[A-Z][A-Z0-9_]{2,}_[A-Z0-9_]+\\b/)?.[0]\n}\n\nfunction readErrorProperty(error: unknown, key: string): string | undefined {\n if (!error || (typeof error !== 'object' && typeof error !== 'function')) return undefined\n const value = (error as Record<string, unknown>)[key]\n return typeof value === 'string' ? value : undefined\n}\n\nfunction mergeRecovery(previous: DevToolsErrorRecovery, next: DevToolsErrorRecovery | undefined): DevToolsErrorRecovery {\n if (!next) return previous\n if (next === 'retrying') return next\n if (next === 'recovered') return next\n if (next === 'fallback') return next\n if (previous === 'fallback') return previous\n return next\n}\n\nfunction diagnosticErrorKey(error: Pick<DevToolsErrorTrace, 'origin' | 'code' | 'name' | 'message' | 'source' | 'component'>): string {\n return [error.origin, error.code ?? error.name, error.message, error.source ?? '', error.component ?? ''].join(':')\n}\n\nfunction sanitizeImportedError(error: DevToolsErrorTrace): DevToolsErrorTrace {\n const phase = error.phase ?? 'global'\n return {\n ...error,\n phase,\n phases: Array.isArray(error.phases) && error.phases.length > 0 ? error.phases : [phase],\n origin: error.origin ?? 'unknown',\n handled: error.handled === true,\n recovery: error.recovery ?? 'propagated'\n }\n}\n\nfunction parseDiagnosticSnapshot(value: unknown): DevToolsDiagnosticSnapshot {\n if (!value || typeof value !== 'object') throw new Error('Vobs DevTools: invalid diagnostic snapshot')\n const snapshot = value as Partial<DevToolsDiagnosticSnapshot>\n if (snapshot.version !== 1\n || !Array.isArray(snapshot.updates)\n || !Array.isArray(snapshot.lifecycle)\n || !Array.isArray(snapshot.network)\n || !Array.isArray(snapshot.errors)\n || !snapshot.performance\n || !snapshot.memory) {\n throw new Error('Vobs DevTools: unsupported diagnostic snapshot')\n }\n if (!snapshot.updates.every(item => isRecord(item)\n && typeof item.id === 'string'\n && typeof item.duration === 'number'\n && Array.isArray(item.effects)\n && Array.isArray(item.affectedSignals)\n && Array.isArray(item.affectedEffects)\n && Array.isArray(item.domUpdates))\n || !snapshot.lifecycle.every(item => isRecord(item) && typeof item.id === 'string' && typeof item.type === 'string')\n || !snapshot.network.every(item => isRecord(item) && typeof item.id === 'number' && typeof item.url === 'string' && isRecord(item.headers))\n || !snapshot.errors.every(item => isRecord(item) && typeof item.id === 'number' && typeof item.message === 'string')\n || !isRecord(snapshot.performance)\n || typeof snapshot.performance.updateCount !== 'number'\n || typeof snapshot.performance.effectExecutionCount !== 'number'\n || !isRecord(snapshot.memory)) {\n throw new Error('Vobs DevTools: malformed diagnostic snapshot')\n }\n return snapshot as DevToolsDiagnosticSnapshot\n}\n\nfunction parseSSRRequestSnapshot(value: unknown): readonly HTTPDebugRequest[] {\n const candidate = value && typeof value === 'object' && !Array.isArray(value)\n ? value as { readonly version?: unknown; readonly environment?: unknown; readonly requests?: unknown }\n : { version: 1, environment: 'server', requests: value }\n if (candidate.version !== 1 || candidate.environment !== 'server' || !Array.isArray(candidate.requests)) {\n throw new Error('Vobs DevTools: invalid SSR request snapshot')\n }\n if (!candidate.requests.every(item => isRecord(item)\n && typeof item.id === 'number'\n && typeof item.url === 'string'\n && typeof item.method === 'string'\n && typeof item.startedAt === 'number'\n && isRecord(item.headers))) {\n throw new Error('Vobs DevTools: malformed SSR request snapshot')\n }\n return candidate.requests as HTTPDebugRequest[]\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value)\n}\n\ninterface NormalizedPrivacyOptions {\n readonly redactedHeaders: readonly string[]\n readonly redactedFields: readonly string[]\n readonly redactDomValues: boolean\n readonly replacement: string\n}\n\nfunction normalizePrivacyOptions(options: DevToolsPrivacyOptions | undefined): NormalizedPrivacyOptions {\n return {\n redactedHeaders: options?.redactedHeaders ?? [],\n redactedFields: options?.redactedFields ?? [],\n redactDomValues: options?.redactDomValues ?? false,\n replacement: options?.replacement ?? '[Redacted]'\n }\n}\n\nfunction sanitizeImportedUpdate(update: UpdateTrace, privacy: NormalizedPrivacyOptions): UpdateTrace {\n return {\n ...update,\n previousValue: serializeForDevTools(update.previousValue, new Set<object>(), 0, privacy),\n nextValue: serializeForDevTools(update.nextValue, new Set<object>(), 0, privacy),\n domUpdates: update.domUpdates.map(mutation => ({\n ...mutation,\n previousValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.previousValue, new Set<object>(), 0, privacy),\n nextValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.nextValue, new Set<object>(), 0, privacy)\n }))\n }\n}\n\nfunction sanitizeImportedRequest(request: NetworkRequestTrace, privacy: NormalizedPrivacyOptions): NetworkRequestTrace {\n return {\n ...request,\n headers: redactHeaders(request.headers, privacy),\n requestBody: serializeForDevTools(request.requestBody, new Set<object>(), 0, privacy),\n responseBody: serializeForDevTools(request.responseBody, new Set<object>(), 0, privacy)\n }\n}\n\nfunction redactHeaders(headers: Readonly<Record<string, string>>, privacy: NormalizedPrivacyOptions): Readonly<Record<string, string>> {\n const result: Record<string, string> = {}\n for (const [key, value] of Object.entries(headers)) {\n if (/authorization|cookie|token|password|secret|api[-_]?key/i.test(key)\n || privacy.redactedHeaders.some(fragment => key.toLowerCase().includes(fragment.toLowerCase()))) continue\n result[key] = value\n }\n return result\n}\n\nfunction serializeForDevTools(value: unknown, seen = new Set<object>(), depth = 0, privacy?: NormalizedPrivacyOptions): unknown {\n if (value === null || typeof value === 'string' || typeof value === 'boolean') return value\n if (typeof value === 'number') return Number.isFinite(value) ? value : String(value)\n if (typeof value === 'bigint') return `${value}n`\n if (typeof value === 'undefined') return undefined\n if (typeof value === 'function') return `[Function ${value.name || 'anonymous'}]`\n if (typeof value === 'symbol') return String(value)\n if (depth >= 4) return '[MaxDepth]'\n\n const object = value as object\n if (seen.has(object)) return '[Circular]'\n seen.add(object)\n try {\n if (value instanceof Date) return value.toISOString()\n if (value instanceof Error) return { name: value.name, message: value.message }\n if (Array.isArray(value)) return value.slice(0, 100).map(item => serializeForDevTools(item, seen, depth + 1, privacy))\n\n const result: Record<string, unknown> = {}\n for (const key of Object.keys(object).slice(0, 100)) {\n try {\n if (privacy?.redactedFields.some(field => field.toLowerCase() === key.toLowerCase())) {\n result[key] = privacy.replacement\n } else {\n result[key] = serializeForDevTools((object as Record<string, unknown>)[key], seen, depth + 1, privacy)\n }\n } catch {\n result[key] = '[Uninspectable]'\n }\n }\n return result\n } finally {\n seen.delete(object)\n }\n}\n\ndeclare global {\n interface Window {\n __VOBS_DEVTOOLS__?: DevToolsAPI\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n getDebugHooks,\n getOwnerDebugName,\n getSignalDebugName,\n setDebugHooks,\n untrack,\n type Dependency,\n type Effect,\n type Owner,\n type ReactivityDebugHooks,\n type ReadableSignal,\n type Signal,\n type Subscriber\n} from '@vobs/reactivity'\nimport {\n getRuntimeDebugHooks,\n getRuntimeDebugContext,\n setRuntimeDebugHooks,\n type RuntimeDebugHooks,\n type RuntimeDomMutation,\n type RuntimeErrorEvent,\n type RuntimeHydrationMismatch\n} from '@vobs/runtime'\nimport { normalizeVobsError } from '@vobs/runtime'\nimport type { VobsContext, VobsPlugin } from '@vobs/vobs'\nimport {\n getHTTPDebugHooks,\n setHTTPDebugHooks,\n type HTTPDebugRequest\n} from '@vobs/http'\n\nexport type DependencyEdgeType =\n | 'state-to-effect'\n | 'state-to-memo'\n | 'memo-to-effect'\n | 'memo-to-memo'\n\nexport interface ComponentDebugNode {\n readonly id: string\n readonly name: string\n readonly ownerId: string\n readonly signals: readonly string[]\n readonly effects: readonly string[]\n readonly recentUpdates: readonly string[]\n readonly domUpdates: number\n readonly children: readonly ComponentDebugNode[]\n readonly mounted: boolean\n}\n\nexport interface SignalDebugInfo {\n readonly id: string\n readonly name: string\n readonly value: unknown\n readonly component: string\n readonly subscribers: number\n readonly createdAt: number\n readonly kind?: 'state' | 'memo'\n}\n\nexport interface DebugErrorInfo {\n readonly name: string\n readonly message: string\n readonly stack?: string\n readonly phase?: string\n readonly source?: string\n readonly code?: string\n readonly hint?: string\n readonly cause?: string\n readonly fix?: string\n readonly location?: { readonly file: string; readonly line: number; readonly column: number }\n readonly hydration?: RuntimeHydrationMismatch\n}\n\nexport interface EffectDebugInfo {\n readonly id: string\n readonly name: string\n readonly component: string\n readonly dependencies: readonly string[]\n readonly status: 'idle' | 'dirty' | 'running' | 'success' | 'error'\n readonly executionCount: number\n readonly lastExecutionTime: number\n readonly lastRunStatus?: 'success' | 'error' | 'cancelled'\n readonly lastDuration?: number\n readonly lastUpdateId?: string\n readonly lastError?: DebugErrorInfo\n readonly lastDomUpdates?: number\n}\n\nexport interface DependencyEdge {\n readonly from: string\n readonly to: string\n readonly type: DependencyEdgeType\n}\n\nexport interface EffectExecutionInfo {\n readonly effectId: string\n readonly component: string\n readonly duration: number\n readonly domUpdates: number\n readonly status?: 'success' | 'error' | 'cancelled'\n readonly error?: DebugErrorInfo\n}\n\nexport interface DomUpdateInfo {\n readonly operation: 'text' | 'property' | 'attribute' | 'insert' | 'remove'\n readonly target: string\n readonly parent?: string\n readonly key?: string\n readonly previousValue?: unknown\n readonly nextValue?: unknown\n readonly effectId?: string\n readonly route?: string\n readonly navigationId?: number\n readonly requestId?: number\n}\n\nexport interface UpdateTrace {\n readonly id: string\n readonly signalId: string\n readonly signalName: string\n readonly previousValue: unknown\n readonly nextValue: unknown\n readonly timestamp: number\n readonly effects: readonly EffectExecutionInfo[]\n readonly affectedSignals: readonly string[]\n readonly affectedEffects: readonly string[]\n readonly domUpdates: readonly DomUpdateInfo[]\n readonly status: 'completed' | 'error' | 'cancelled'\n readonly error?: DebugErrorInfo\n readonly duration: number\n readonly route?: string\n readonly navigationId?: number\n readonly requestIds?: readonly number[]\n}\n\nexport type LifecycleEventType =\n | 'owner-created' | 'owner-named' | 'owner-disposed'\n | 'signal-created' | 'signal-named' | 'signal-changed' | 'signal-disposed'\n | 'memo-created' | 'memo-invalidated'\n | 'effect-created' | 'effect-invalidated' | 'effect-run-start' | 'effect-run' | 'effect-disposed'\n\nexport interface LifecycleEvent {\n readonly id: string\n readonly type: LifecycleEventType\n readonly timestamp: number\n readonly targetId: string\n readonly name?: string\n readonly ownerId?: string\n readonly status?: 'success' | 'error' | 'cancelled'\n}\n\nexport interface NetworkRequestTrace {\n readonly id: number\n readonly url: string\n readonly method: string\n readonly status: 'loading' | 'retrying' | 'success' | 'error' | 'cancelled'\n readonly headers: Readonly<Record<string, string>>\n readonly requestBody?: unknown\n readonly startedAt: number\n readonly endedAt?: number\n readonly duration?: number\n readonly attempt: number\n readonly retries: number\n readonly responseStatus?: number\n readonly responseBody?: unknown\n readonly error?: { readonly name: string; readonly message: string }\n readonly source?: 'http' | 'router' | 'ssr'\n readonly test?: boolean\n readonly route?: string\n readonly navigationId?: number\n readonly dataRequestId?: number\n readonly environment?: 'client' | 'server'\n}\n\nexport type DevToolsErrorPhase = 'effect' | 'network' | 'global' | 'unhandledrejection' | 'route' | 'hydration' | 'render' | 'boundary' | 'application' | 'event'\nexport type DevToolsErrorOrigin = 'framework' | 'usage' | 'application' | 'unknown'\nexport type DevToolsErrorRecovery = 'propagated' | 'handled' | 'fallback' | 'retrying' | 'recovered'\n\nexport interface DevToolsErrorContext {\n readonly updateId?: string\n readonly effectId?: string\n readonly requestId?: number\n readonly navigationId?: number\n readonly route?: string\n readonly source?: string\n readonly ownerId?: string\n readonly component?: string\n readonly origin?: DevToolsErrorOrigin\n readonly code?: string\n readonly hint?: string\n readonly handled?: boolean\n readonly recovery?: DevToolsErrorRecovery\n}\n\nexport interface DevToolsErrorTrace extends DebugErrorInfo {\n readonly id: number\n readonly phase: DevToolsErrorPhase\n readonly firstOccurredAt: number\n readonly lastOccurredAt: number\n readonly count: number\n readonly phases: readonly DevToolsErrorPhase[]\n readonly origin: DevToolsErrorOrigin\n readonly handled: boolean\n readonly recovery: DevToolsErrorRecovery\n readonly updateId?: string\n readonly effectId?: string\n readonly requestId?: number\n readonly navigationId?: number\n readonly route?: string\n readonly ownerId?: string\n readonly component?: string\n}\n\nexport interface DevToolsCollectionState {\n readonly paused: boolean\n}\n\nexport interface DevToolsPrivacyOptions {\n /** Additional case-insensitive header names or fragments to omit. */\n readonly redactedHeaders?: readonly string[]\n /** Object keys whose values are replaced in captured/exported values. */\n readonly redactedFields?: readonly string[]\n /** Replace DOM values in diagnostics with the configured replacement. */\n readonly redactDomValues?: boolean\n readonly replacement?: string\n}\n\nexport interface DevToolsPerformanceEntry {\n readonly kind: 'update' | 'effect' | 'request'\n readonly id: string | number\n readonly label: string\n readonly duration: number\n readonly timestamp: number\n readonly status: string\n}\n\nexport interface DevToolsInspector {\n readonly label?: string\n inspect(value: unknown): unknown\n}\n\nexport interface DevToolsTimeline {\n readonly label?: string\n readonly getEvents?: () => readonly DevToolsTimelineEvent[]\n}\n\nexport interface DevToolsTimelineEvent {\n readonly id: string\n readonly timestamp: number\n readonly title: string\n readonly data?: unknown\n}\n\nexport interface DevToolsMetric {\n readonly label?: string\n read(): number | string\n}\n\nexport interface DevToolsExtensionSnapshot {\n readonly inspectors: readonly string[]\n readonly timelines: readonly string[]\n readonly timelineEvents: Readonly<Record<string, readonly DevToolsTimelineEvent[]>>\n readonly metrics: Readonly<Record<string, number | string>>\n}\n\nexport interface DevToolsDiagnosticSnapshot {\n readonly version: 1\n readonly exportedAt: number\n readonly updates: readonly UpdateTrace[]\n readonly lifecycle: readonly LifecycleEvent[]\n readonly network: readonly NetworkRequestTrace[]\n readonly errors: readonly DevToolsErrorTrace[]\n readonly performance: PerformanceMetrics\n readonly memory: MemorySnapshot\n readonly extensions: DevToolsExtensionSnapshot\n}\n\nexport interface DevToolsSSRRequestSnapshot {\n readonly version: 1\n readonly environment: 'server'\n readonly requests: readonly HTTPDebugRequest[]\n}\n\nexport type DevToolsSelection =\n | { readonly type: 'component'; readonly id: string }\n | { readonly type: 'signal'; readonly id: string }\n | { readonly type: 'effect'; readonly id: string }\n | { readonly type: 'update'; readonly id: string }\n | { readonly type: 'request'; readonly id: number }\n | { readonly type: 'error'; readonly id: number }\n\nexport const DEVTOOLS_REACTIVITY_EVENTS = [\n 'owner-created', 'owner-named', 'owner-disposed',\n 'signal-created', 'signal-named', 'signal-update', 'signal-disposed',\n 'effect-created', 'effect-invalidated', 'effect-run-start', 'effect-run', 'effect-disposed',\n 'memo-created', 'memo-update', 'update'\n] as const\n\nexport const DEVTOOLS_EVENTS = [...DEVTOOLS_REACTIVITY_EVENTS, 'lifecycle', 'dom-update', 'network-request', 'router', 'error', 'collection', 'collection-cleared', 'extension'] as const\n\nexport interface PerformanceMetrics {\n readonly updateCount: number\n readonly averageUpdateDuration: number\n readonly slowUpdateCount: number\n readonly effectExecutionCount: number\n readonly slowEffectCount: number\n readonly slowRequestCount: number\n readonly maxUpdateDuration: number\n readonly maxEffectDuration: number\n readonly maxRequestDuration: number\n}\n\nexport interface MemorySnapshot {\n readonly signalCount: number\n readonly effectCount: number\n readonly ownerCount: number\n readonly dependencyEdgeCount: number\n readonly leakedOwners: number\n}\n\nexport interface DevToolsTarget {\n __VOBS_DEVTOOLS__?: DevToolsAPI\n addEventListener?: (type: string, listener: (...args: any[]) => void) => void\n removeEventListener?: (type: string, listener: (...args: any[]) => void) => void\n}\n\nexport interface DevToolsOptions {\n readonly expose?: boolean\n readonly target?: DevToolsTarget\n readonly maxUpdates?: number\n readonly slowUpdateThreshold?: number\n readonly privacy?: DevToolsPrivacyOptions\n /** Explicit opt-in for state-changing debug actions. Disabled by default. */\n readonly allowMutations?: boolean\n /** Optional Router-like source for associating navigation/data events. */\n readonly router?: DevToolsRouterSource\n}\n\nexport interface DevToolsRouterSource {\n readonly devtools: {\n subscribe(event: string, callback: (payload: unknown) => void): () => void\n }\n}\n\nexport interface DevToolsAPI {\n getComponentTree(): readonly ComponentDebugNode[]\n getComponent(ownerId: string): ComponentDebugNode | null\n getSignals(): readonly SignalDebugInfo[]\n getSignal(signalId: string): SignalDebugInfo | null\n canMutate(): boolean\n setSignalValue(signalId: string, value: unknown): boolean\n getDependencies(signalId: string): readonly DependencyEdge[]\n getDependents(subscriberId: string): readonly DependencyEdge[]\n getEffects(): readonly EffectDebugInfo[]\n getUpdates(): readonly UpdateTrace[]\n getLifecycleEvents(): readonly LifecycleEvent[]\n getNetworkRequests(): readonly NetworkRequestTrace[]\n importSSRRequests(snapshot: unknown): void\n getRouterContext(): DevToolsRouterContext | null\n attachRouter(router: DevToolsRouterSource): () => void\n getErrors(): readonly DevToolsErrorTrace[]\n getPerformanceEntries(): readonly DevToolsPerformanceEntry[]\n getCollectionState(): DevToolsCollectionState\n setCollectionPaused(paused: boolean): void\n clearUpdates(): void\n clearNetworkRequests(): void\n clearErrors(): void\n clearLifecycleEvents(): void\n reportError(phase: DevToolsErrorPhase, error: unknown, context?: DevToolsErrorContext): void\n getPerformanceMetrics(): PerformanceMetrics\n takeMemorySnapshot(): MemorySnapshot\n exportDiagnostics(): DevToolsDiagnosticSnapshot\n importDiagnostics(snapshot: unknown): void\n registerInspector(id: string, inspector: DevToolsInspector): () => void\n registerTimeline(id: string, timeline?: DevToolsTimeline): () => void\n registerMetric(id: string, metric: DevToolsMetric): () => void\n getExtensionSnapshot(): DevToolsExtensionSnapshot\n inspectExtension(id: string, value: unknown): unknown\n onUpdate(callback: (trace: UpdateTrace) => void): () => void\n subscribe(event: string, callback: (...args: any[]) => void): () => void\n dispose(): void\n}\n\nexport interface DevToolsRouterContext {\n readonly route?: string\n readonly navigationId?: number\n readonly navigationStatus?: string\n readonly dataRequests: readonly {\n readonly id: number\n readonly kind: string\n readonly key: string\n readonly route?: string\n readonly status: string\n readonly startedAt?: number\n readonly endedAt?: number\n readonly duration?: number\n readonly navigationId?: number\n readonly trigger?: string\n readonly result?: unknown\n readonly error?: string\n readonly environment?: 'client' | 'server'\n }[]\n}\n\nexport interface DevToolsWireRequest {\n readonly source: 'vobs-devtools'\n readonly type: 'request'\n readonly id: string\n readonly method: string\n readonly args?: readonly unknown[]\n}\n\nexport interface DevToolsWireResponse {\n readonly source: 'vobs-devtools'\n readonly type: 'response'\n readonly id: string\n readonly ok: boolean\n readonly result?: unknown\n readonly error?: string\n}\n\nexport interface DevToolsWireEvent {\n readonly source: 'vobs-devtools'\n readonly type: 'event'\n readonly event: string\n readonly payload: unknown\n}\n\nexport interface DevToolsMessageTarget {\n addEventListener(type: string, listener: (event: DevToolsMessageEvent) => void): void\n removeEventListener(type: string, listener: (event: DevToolsMessageEvent) => void): void\n postMessage(message: unknown, targetOrigin: string): void\n}\n\nexport interface DevToolsMessageEvent {\n readonly data?: unknown\n readonly source?: unknown\n}\n\nexport interface DevToolsBridgeOptions {\n readonly target?: DevToolsMessageTarget\n readonly api?: DevToolsAPI | null\n}\n\nexport interface DevToolsPluginOptions extends DevToolsOptions {\n readonly enabled?: boolean\n}\n\ninterface OwnerRecord {\n readonly owner: Owner\n readonly id: string\n readonly parentId: string | null\n name: string\n disposed: boolean\n}\n\ninterface SignalRecord {\n readonly signal: ReadableSignal<unknown>\n readonly id: string\n readonly ownerId: string | null\n readonly createdAt: number\n name: string\n explicitName: boolean\n kind: 'state' | 'memo'\n disposed: boolean\n}\n\ninterface EffectRecord {\n readonly effect: Effect\n readonly id: string\n readonly ownerId: string | null\n status: 'idle' | 'dirty' | 'running' | 'success' | 'error'\n executionCount: number\n lastExecutionTime: number\n lastRunStatus: 'success' | 'error' | 'cancelled' | undefined\n lastDuration: number\n lastUpdateId: string | undefined\n lastError: DebugErrorInfo | undefined\n lastDomUpdates: number\n runningSince: number | null\n disposed: boolean\n}\n\ninterface PendingUpdate {\n readonly id: string\n readonly signal: SignalRecord\n readonly timestamp: number\n previousValue: unknown\n nextValue: unknown\n readonly affectedSignals: Set<string>\n readonly effectIds: Set<string>\n readonly executions: Map<string, EffectExecutionInfo>\n readonly domUpdates: DomUpdateInfo[]\n status: 'completed' | 'error' | 'cancelled'\n error: DebugErrorInfo | undefined\n context: {\n readonly route?: string\n readonly navigationId?: number\n readonly requestIds: Set<number>\n }\n}\n\nlet activeDevTools: DevToolsAPI | null = null\n\nexport function createDevTools(options: DevToolsOptions = {}): DevToolsAPI {\n activeDevTools?.dispose()\n\n const owners = new Map<string, OwnerRecord>()\n const ownerIds = new WeakMap<object, string>()\n const signals = new Map<string, SignalRecord>()\n const signalIds = new WeakMap<object, string>()\n const effects = new Map<string, EffectRecord>()\n const effectIds = new WeakMap<object, string>()\n const memoSignalIds = new WeakMap<object, string>()\n const edges = new Map<string, DependencyEdge>()\n const listeners = new Map<string, Set<(...args: any[]) => void>>()\n const updates: UpdateTrace[] = []\n const lifecycleEvents: LifecycleEvent[] = []\n const networkRequests = new Map<number, NetworkRequestTrace>()\n const errors = new Map<string, DevToolsErrorTrace>()\n const inspectors = new Map<string, DevToolsInspector>()\n const timelines = new Map<string, DevToolsTimeline>()\n const metrics = new Map<string, DevToolsMetric>()\n let routerContext: DevToolsRouterContext | null = null\n const routerStops = new Map<DevToolsRouterSource, { readonly stop: () => void; refs: number }>()\n let nextErrorId = 1\n let collectionPaused = false\n const pendingUpdates: PendingUpdate[] = []\n const updateDurations: number[] = []\n const maxUpdates = Math.max(1, Math.floor(options.maxUpdates ?? 100))\n const slowUpdateThreshold = Math.max(0, options.slowUpdateThreshold ?? 16)\n let nextId = 1\n let updateCount = 0\n let effectExecutionCount = 0\n let disposed = false\n let pendingFlushScheduled = false\n let activeEffectId: string | null = null\n const privacy = normalizePrivacyOptions(options.privacy)\n const allowMutations = options.allowMutations === true\n\n function now(): number {\n return typeof performance === 'undefined' ? Date.now() : performance.now()\n }\n\n function emit(event: string, ...args: any[]): void {\n if (collectionPaused && event !== 'collection' && event !== 'collection-cleared') return\n const callbacks = [\n ...(listeners.get(event) ?? []),\n ...(listeners.get('*') ?? [])\n ]\n for (const callback of callbacks) {\n try {\n callback(...args)\n } catch {\n // A DevTools listener must never affect the application.\n }\n }\n }\n\n function safeExtensionCall<T>(read: () => T, fallback: T): T {\n try { return read() } catch { return fallback }\n }\n\n function getExtensionSnapshot(): DevToolsExtensionSnapshot {\n const extensionMetrics: Record<string, number | string> = {}\n const extensionTimelineEvents: Record<string, readonly DevToolsTimelineEvent[]> = {}\n for (const [id, timeline] of timelines) {\n const events = safeExtensionCall(() => timeline.getEvents?.() ?? [], [])\n extensionTimelineEvents[id] = events.map(event => ({\n ...event,\n data: serializeForDevTools(event.data, new Set<object>(), 0, privacy)\n })).slice(-maxUpdates)\n }\n for (const [id, metric] of metrics) {\n const value = safeExtensionCall(() => metric.read(), 0)\n extensionMetrics[id] = typeof value === 'number' || typeof value === 'string' ? value : 0\n }\n return {\n inspectors: [...inspectors.keys()],\n timelines: [...timelines.keys()],\n timelineEvents: extensionTimelineEvents,\n metrics: extensionMetrics\n }\n }\n\n function recordLifecycle(\n type: LifecycleEventType,\n targetId: string,\n name?: string,\n ownerId?: string,\n status?: LifecycleEvent['status']\n ): void {\n if (disposed || collectionPaused || isInternalOwnerId(targetId) || (ownerId !== undefined && isInternalOwnerId(ownerId))) return\n const event: LifecycleEvent = {\n id: `lifecycle-${nextId++}`,\n type,\n timestamp: now(),\n targetId,\n name,\n ownerId,\n status\n }\n lifecycleEvents.push(event)\n while (lifecycleEvents.length > maxUpdates) lifecycleEvents.shift()\n emit('lifecycle', event)\n }\n\n function reportError(\n phase: DevToolsErrorPhase,\n error: unknown,\n context: DevToolsErrorContext = {}\n ): void {\n if (collectionPaused) return\n const debugError = toDebugError(error, phase)\n const metadata = classifyError(phase, error, context)\n const code = context.code ?? debugError.code ?? metadata.code\n const hint = context.hint ?? debugError.hint ?? metadata.hint\n const origin = context.origin ?? metadata.origin\n const ownerId = context.ownerId ?? readErrorProperty(error, 'vobsOwnerId')\n const component = context.component ?? readErrorProperty(error, 'vobsComponent')\n const source = context.source ?? debugError.source ?? readErrorProperty(error, 'vobsSource')\n const activeRoute = context.route ?? getRuntimeDebugContext()?.route ?? routerContext?.route\n const activeNavigationId = context.navigationId ?? getRuntimeDebugContext()?.navigationId ?? routerContext?.navigationId\n // The same exception can pass through effect -> boundary -> application\n // handlers. Keep one diagnostic and accumulate its phases instead of\n // presenting the propagation chain as duplicate errors.\n const key = diagnosticErrorKey({ origin, code, name: debugError.name, message: debugError.message, source, component })\n const previous = errors.get(key)\n const nowValue = Date.now()\n const trace: DevToolsErrorTrace = previous\n ? {\n ...previous,\n ...context,\n phase,\n phases: previous.phases.includes(phase) ? previous.phases : [...previous.phases, phase],\n lastOccurredAt: nowValue,\n count: previous.count + 1,\n code,\n hint,\n origin,\n handled: context.handled ?? previous.handled,\n recovery: mergeRecovery(previous.recovery, context.recovery),\n ownerId: ownerId ?? previous.ownerId,\n component: component ?? previous.component,\n source: source ?? previous.source,\n updateId: context.updateId ?? previous.updateId,\n effectId: context.effectId ?? previous.effectId,\n requestId: context.requestId ?? previous.requestId,\n route: activeRoute ?? previous.route,\n navigationId: activeNavigationId ?? previous.navigationId\n }\n : {\n ...debugError,\n ...context,\n source,\n code,\n hint,\n id: nextErrorId++,\n phase,\n phases: [phase],\n origin,\n handled: context.handled ?? false,\n recovery: context.recovery ?? 'propagated',\n firstOccurredAt: nowValue,\n lastOccurredAt: nowValue,\n count: 1,\n ownerId,\n component,\n route: activeRoute,\n navigationId: activeNavigationId\n }\n errors.set(key, trace)\n while (errors.size > maxUpdates) {\n const oldest = errors.keys().next().value\n if (typeof oldest !== 'string') break\n errors.delete(oldest)\n }\n emit('error', trace)\n }\n\n function ensureOwner(owner: Owner): OwnerRecord {\n const existingId = ownerIds.get(owner)\n if (existingId) {\n const existing = owners.get(existingId)\n if (existing) return existing\n }\n\n const record: OwnerRecord = {\n owner,\n id: owner.id,\n parentId: owner.parent?.id ?? null,\n name: getOwnerDebugName(owner) ?? (owner.parent ? 'Owner' : 'App'),\n disposed: owner.disposed\n }\n ownerIds.set(owner, record.id)\n owners.set(record.id, record)\n return record\n }\n\n function isInternalOwnerId(ownerId: string | null | undefined): boolean {\n const visited = new Set<string>()\n let current = ownerId === undefined ? null : ownerId\n while (current && !visited.has(current)) {\n visited.add(current)\n const record = owners.get(current)\n if (!record) return false\n if (debugComponentName(record.name).startsWith('DevTools')) return true\n current = record.parentId\n }\n return false\n }\n\n function isInternalSignal(record: SignalRecord): boolean {\n return isInternalOwnerId(record.ownerId)\n }\n\n function isNoisyViewportSignal(record: SignalRecord): boolean {\n return record.explicitName\n && (record.name === 'layout.viewport.width' || record.name === 'layout.viewport.height')\n }\n\n function hasMeaningfulDomUpdate(updates: readonly DomUpdateInfo[]): boolean {\n return updates.some(update => update.operation === 'insert'\n || update.operation === 'remove'\n || !Object.is(update.previousValue, update.nextValue))\n }\n\n function isInternalEffect(record: EffectRecord): boolean {\n return isInternalOwnerId(record.ownerId)\n }\n\n function errorComponentForOwner(ownerId: string | undefined): string | undefined {\n if (!ownerId) return undefined\n const record = owners.get(ownerId)\n if (!record) return undefined\n if (record.name !== 'Owner' && record.name !== 'dynamic') return record.name\n return errorComponentForOwner(record.parentId ?? undefined)\n }\n\n function ensureSignal(signal: ReadableSignal<unknown>, owner: Owner | null = null): SignalRecord {\n const existingId = signalIds.get(signal)\n if (existingId) {\n const existing = signals.get(existingId)\n if (existing) return existing\n }\n\n const id = `signal-${nextId++}`\n const explicitName = getSignalDebugName(signal)\n const ownerName = owner ? getOwnerDebugName(owner) : undefined\n const record: SignalRecord = {\n signal,\n id,\n ownerId: owner ? ensureOwner(owner).id : null,\n createdAt: Date.now(),\n name: explicitName ?? (ownerName ? `${ownerName} state` : 'runtime state'),\n explicitName: explicitName !== undefined,\n kind: 'state',\n disposed: false\n }\n signalIds.set(signal, id)\n signals.set(id, record)\n return record\n }\n\n function ensureEffect(effect: Effect, owner: Owner | null = null): EffectRecord {\n const existingId = effectIds.get(effect)\n if (existingId) {\n const existing = effects.get(existingId)\n if (existing) return existing\n }\n\n const id = `effect-${nextId++}`\n const record: EffectRecord = {\n effect,\n id,\n ownerId: owner ? ensureOwner(owner).id : null,\n status: 'dirty',\n executionCount: 0,\n lastExecutionTime: 0,\n lastRunStatus: undefined,\n lastDuration: 0,\n lastUpdateId: undefined,\n lastError: undefined,\n lastDomUpdates: 0,\n runningSince: null,\n disposed: effect.disposed\n }\n effectIds.set(effect, id)\n effects.set(id, record)\n return record\n }\n\n function ensureDependencySignal(dependency: Dependency): SignalRecord | null {\n const existingId = signalIds.get(dependency as object)\n if (existingId) return signals.get(existingId) ?? null\n if (!('value' in (dependency as object))) return null\n return ensureSignal(dependency as ReadableSignal<unknown>)\n }\n\n function edgeKey(from: string, to: string): string {\n return `${from}->${to}`\n }\n\n function trackDependency(dependency: Dependency, subscriber: Subscriber): void {\n const source = ensureDependencySignal(dependency)\n if (!source) return\n\n const memoId = memoSignalIds.get(subscriber as object)\n const effectId = effectIds.get(subscriber as object)\n const targetId = memoId ?? effectId\n if (!targetId) return\n\n const type: DependencyEdgeType = memoId\n ? source.kind === 'memo' ? 'memo-to-memo' : 'state-to-memo'\n : source.kind === 'memo' ? 'memo-to-effect' : 'state-to-effect'\n edges.set(edgeKey(source.id, targetId), {\n from: source.id,\n to: targetId,\n type\n })\n }\n\n function collectEffectIds(signalId: string): Set<string> {\n const effectsForSignal = new Set<string>()\n const visited = new Set<string>()\n const visit = (sourceId: string): void => {\n if (visited.has(sourceId)) return\n visited.add(sourceId)\n for (const edge of edges.values()) {\n if (edge.from !== sourceId) continue\n if (effects.has(edge.to)) {\n const effect = effects.get(edge.to)\n if (effect && !isInternalEffect(effect)) effectsForSignal.add(edge.to)\n }\n else visit(edge.to)\n }\n }\n visit(signalId)\n return effectsForSignal\n }\n\n function collectAffectedSignals(signalId: string): Set<string> {\n const affected = new Set<string>()\n const visited = new Set<string>()\n const visit = (sourceId: string): void => {\n if (visited.has(sourceId)) return\n visited.add(sourceId)\n if (signals.has(sourceId)) affected.add(sourceId)\n for (const edge of edges.values()) {\n if (edge.from === sourceId && signals.has(edge.to)) visit(edge.to)\n }\n }\n visit(signalId)\n return affected\n }\n\n function untrackDependency(dependency: Dependency, subscriber: Subscriber): void {\n const source = ensureDependencySignal(dependency)\n if (!source) return\n const targetId = memoSignalIds.get(subscriber as object) ?? effectIds.get(subscriber as object)\n if (targetId) edges.delete(edgeKey(source.id, targetId))\n }\n\n function signalInfo(record: SignalRecord, readValue = true): SignalDebugInfo {\n return {\n id: record.id,\n name: record.name,\n value: readValue ? serializeForDevTools(readSignal(record.signal), new Set<object>(), 0, privacy) : undefined,\n component: record.ownerId ? owners.get(record.ownerId)?.name ?? 'unknown' : 'unknown',\n subscribers: [...edges.values()].filter(edge => edge.from === record.id).length,\n createdAt: record.createdAt,\n kind: record.kind\n }\n }\n\n function readSignal(signal: ReadableSignal<unknown>): unknown {\n try {\n return untrack(() => signal.value)\n } catch (error) {\n return { type: 'thrown', message: toErrorMessage(error) }\n }\n }\n\n function effectInfo(record: EffectRecord): EffectDebugInfo {\n const component = record.ownerId ? owners.get(record.ownerId)?.name ?? 'unknown' : 'runtime'\n return {\n id: record.id,\n name: `${debugComponentName(component)} effect`,\n component,\n dependencies: [...edges.values()]\n .filter(edge => edge.to === record.id)\n .map(edge => edge.from),\n status: record.status,\n executionCount: record.executionCount,\n lastExecutionTime: record.lastExecutionTime,\n lastRunStatus: record.lastRunStatus,\n lastDuration: record.lastDuration,\n lastUpdateId: record.lastUpdateId,\n lastError: record.lastError,\n lastDomUpdates: record.lastDomUpdates\n }\n }\n\n function removeEdgesFor(ids: ReadonlySet<string>): void {\n for (const [key, edge] of edges) {\n if (ids.has(edge.from) || ids.has(edge.to)) edges.delete(key)\n }\n }\n\n function cleanupSignalRecord(record: SignalRecord): void {\n if (signals.get(record.id) !== record) return\n removeEdgesFor(new Set([record.id]))\n signals.delete(record.id)\n }\n\n function cleanupEffectRecord(record: EffectRecord): void {\n if (effects.get(record.id) !== record) return\n removeEdgesFor(new Set([record.id]))\n effects.delete(record.id)\n }\n\n function cleanupOwnerRecord(record: OwnerRecord): void {\n if (owners.get(record.id) !== record) return\n const removedIds = new Set<string>([record.id])\n for (const [id, signal] of signals) {\n if (signal.ownerId === record.id) {\n removedIds.add(id)\n signals.delete(id)\n }\n }\n for (const [id, effect] of effects) {\n if (effect.ownerId === record.id) {\n removedIds.add(id)\n effects.delete(id)\n }\n }\n removeEdgesFor(removedIds)\n owners.delete(record.id)\n }\n\n function debugComponentName(value: string): string {\n const separator = value.indexOf(' (')\n return separator > 0 ? value.slice(0, separator) : value\n }\n\n function buildComponentNode(record: OwnerRecord, activeIds: ReadonlySet<string>): ComponentDebugNode {\n const componentEffects = [...effects.values()]\n .filter(effect => !effect.disposed && effect.ownerId === record.id)\n const componentEffectIds = new Set(componentEffects.map(effect => effect.id))\n const componentUpdates = updates.filter(update => update.effects.some(effect => componentEffectIds.has(effect.effectId)))\n return {\n id: record.id,\n name: record.name,\n ownerId: record.id,\n signals: [...signals.values()]\n .filter(signal => !signal.disposed && signal.ownerId === record.id)\n .map(signal => signal.id),\n effects: componentEffects.map(effect => effect.id),\n recentUpdates: componentUpdates.slice(-10).map(update => update.id),\n domUpdates: componentUpdates.reduce((count, update) => count + update.domUpdates.length, 0),\n children: [...owners.values()]\n .filter(child => !child.disposed && child.parentId === record.id && activeIds.has(child.id))\n .map(child => buildComponentNode(child, activeIds)),\n mounted: !record.disposed\n }\n }\n\n function recordUpdate(pending: PendingUpdate): void {\n if (disposed || collectionPaused || isInternalSignal(pending.signal)) return\n if (isNoisyViewportSignal(pending.signal) && !hasMeaningfulDomUpdate(pending.domUpdates)) return\n const duration = Math.max(0, now() - pending.timestamp)\n const trace: UpdateTrace = {\n id: pending.id,\n signalId: pending.signal.id,\n signalName: pending.signal.name,\n previousValue: serializeForDevTools(pending.previousValue, new Set<object>(), 0, privacy),\n nextValue: serializeForDevTools(pending.nextValue, new Set<object>(), 0, privacy),\n timestamp: pending.timestamp,\n effects: [...pending.executions.values()],\n affectedSignals: [...pending.affectedSignals],\n affectedEffects: [...pending.effectIds],\n domUpdates: pending.domUpdates.slice(),\n status: pending.status,\n error: pending.error,\n duration,\n route: pending.context.route,\n navigationId: pending.context.navigationId,\n requestIds: [...pending.context.requestIds]\n }\n updates.push(trace)\n while (updates.length > maxUpdates) updates.shift()\n updateDurations.push(duration)\n while (updateDurations.length > maxUpdates) updateDurations.shift()\n updateCount++\n emit('update', trace)\n }\n\n function onFlushEnd(): void {\n const current = pendingUpdates.splice(0)\n for (const pending of current) recordUpdate(pending)\n }\n\n function schedulePendingFlush(): void {\n if (pendingFlushScheduled) return\n pendingFlushScheduled = true\n queueMicrotask(() => {\n if (disposed) {\n pendingUpdates.length = 0\n return\n }\n pendingFlushScheduled = false\n for (let index = pendingUpdates.length - 1; index >= 0; index--) {\n const pending = pendingUpdates[index]\n if (!pending || pending.effectIds.size > 0) continue\n pendingUpdates.splice(index, 1)\n recordUpdate(pending)\n }\n })\n }\n\n const hooks: ReactivityDebugHooks = {\n ownerCreated(owner) {\n const record = ensureOwner(owner)\n recordLifecycle('owner-created', record.id, record.name, record.parentId ?? undefined)\n emit('owner-created', record)\n },\n\n ownerNamed(owner, name) {\n const record = ensureOwner(owner)\n record.name = name\n if (isInternalOwnerId(record.id)) return\n for (const signal of signals.values()) {\n if (signal.ownerId === record.id && !signal.explicitName) signal.name = `${name} state`\n }\n recordLifecycle('owner-named', record.id, name, record.parentId ?? undefined)\n emit('owner-named', record)\n },\n\n ownerDisposed(owner) {\n const record = ensureOwner(owner)\n record.disposed = true\n const internal = isInternalOwnerId(record.id)\n if (!internal) {\n recordLifecycle('owner-disposed', record.id, record.name, record.parentId ?? undefined)\n emit('owner-disposed', record)\n }\n cleanupOwnerRecord(record)\n },\n\n signalCreated(signal, owner) {\n const record = ensureSignal(signal, owner)\n if (isInternalSignal(record)) return\n recordLifecycle('signal-created', record.id, record.name, record.ownerId ?? undefined)\n emit('signal-created', signalInfo(record, false))\n },\n\n signalNamed(signal, name) {\n const record = ensureSignal(signal)\n record.name = name\n record.explicitName = true\n if (isInternalSignal(record)) return\n recordLifecycle('signal-named', record.id, name, record.ownerId ?? undefined)\n emit('signal-named', signalInfo(record))\n },\n\n signalRead(signal, subscriber) {\n ensureSignal(signal)\n emit('signal-read', signal, subscriber)\n },\n\n signalChanged(signal, previousValue, nextValue) {\n const record = ensureSignal(signal)\n if (isInternalSignal(record)) return\n let pending = pendingUpdates.find(item => item.signal.signal === signal)\n if (pending) {\n pending.nextValue = nextValue\n const context = getRuntimeDebugContext()\n if (context?.route) pending.context = { ...pending.context, route: context.route }\n if (context?.navigationId !== undefined) pending.context = { ...pending.context, navigationId: context.navigationId }\n if (context?.dataRequestId !== undefined) pending.context.requestIds.add(context.dataRequestId)\n } else {\n pending = {\n id: `update-${nextId++}`,\n signal: record,\n timestamp: now(),\n previousValue,\n nextValue,\n affectedSignals: collectAffectedSignals(record.id),\n effectIds: collectEffectIds(record.id),\n executions: new Map(),\n domUpdates: [],\n status: 'completed',\n error: undefined,\n context: {\n route: getRuntimeDebugContext()?.route,\n navigationId: getRuntimeDebugContext()?.navigationId,\n requestIds: new Set(\n getRuntimeDebugContext()?.dataRequestId === undefined\n ? []\n : [getRuntimeDebugContext()!.dataRequestId!]\n )\n }\n }\n pendingUpdates.push(pending)\n }\n emit('signal-update', {\n ...signalInfo(record),\n previousValue: serializeForDevTools(previousValue, new Set<object>(), 0, privacy),\n nextValue: serializeForDevTools(nextValue, new Set<object>(), 0, privacy),\n updateId: pending.id\n })\n recordLifecycle('signal-changed', record.id, record.name, record.ownerId ?? undefined)\n if (pending.effectIds.size === 0) schedulePendingFlush()\n },\n\n signalDisposed(signal) {\n const record = ensureSignal(signal)\n record.disposed = true\n const internal = isInternalSignal(record)\n if (!internal) {\n recordLifecycle('signal-disposed', record.id, record.name, record.ownerId ?? undefined)\n emit('signal-disposed', record)\n }\n cleanupSignalRecord(record)\n },\n\n dependencyTracked(dependency, subscriber) {\n trackDependency(dependency, subscriber)\n },\n\n dependencyUntracked(dependency, subscriber) {\n untrackDependency(dependency, subscriber)\n },\n\n effectCreated(effect, owner) {\n const record = ensureEffect(effect, owner)\n if (isInternalEffect(record)) return\n recordLifecycle('effect-created', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-created', effectInfo(record))\n },\n\n effectInvalidated(effect) {\n const record = ensureEffect(effect)\n if (isInternalEffect(record)) return\n record.status = 'dirty'\n recordLifecycle('effect-invalidated', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-invalidated', effectInfo(record))\n },\n\n effectRunStart(effect) {\n const record = ensureEffect(effect)\n if (isInternalEffect(record)) return\n record.status = 'running'\n record.runningSince = now()\n activeEffectId = record.id\n recordLifecycle('effect-run-start', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-run-start', effectInfo(record))\n },\n\n effectRunEnd(effect, error, handled = false) {\n const record = ensureEffect(effect)\n if (isInternalEffect(record)) return\n const end = now()\n const duration = record.runningSince === null ? 0 : Math.max(0, end - record.runningSince)\n const runStatus = error === undefined ? 'success' : 'error'\n const debugError = error === undefined ? undefined : toDebugError(error, 'effect')\n record.status = runStatus\n record.runningSince = null\n record.executionCount++\n record.lastExecutionTime = end\n record.lastRunStatus = runStatus\n record.lastDuration = duration\n record.lastError = debugError\n effectExecutionCount++\n const execution: EffectExecutionInfo = {\n effectId: record.id,\n component: record.ownerId ? owners.get(record.ownerId)?.name ?? 'unknown' : 'unknown',\n duration,\n domUpdates: 0,\n status: runStatus,\n error: debugError\n }\n for (const pending of pendingUpdates) {\n if (!pending.effectIds.has(record.id)) continue\n const domUpdates = pending.domUpdates.filter(update => update.effectId === record.id).length\n const completedExecution = { ...execution, domUpdates }\n pending.executions.set(record.id, completedExecution)\n if (error !== undefined) {\n pending.status = 'error'\n pending.error = debugError\n }\n record.lastUpdateId = pending.id\n record.lastDomUpdates = domUpdates\n }\n activeEffectId = null\n if (error !== undefined) {\n const update = [...pendingUpdates].reverse().find(item => item.effectIds.has(record.id))\n const errorOwnerId = readErrorProperty(error, 'vobsOwnerId')\n const errorComponent = readErrorProperty(error, 'vobsComponent')\n reportError('effect', error, {\n effectId: record.id,\n updateId: update?.id,\n ownerId: errorOwnerId ?? record.ownerId ?? undefined,\n component: errorComponent ?? errorComponentForOwner(record.ownerId ?? undefined),\n handled,\n recovery: handled ? 'handled' : 'propagated'\n })\n }\n recordLifecycle('effect-run', record.id, effectInfo(record).name, record.ownerId ?? undefined, runStatus)\n emit('effect-run', execution)\n },\n\n effectDisposed(effect) {\n const record = ensureEffect(effect)\n const internal = isInternalEffect(record)\n record.disposed = true\n record.status = 'idle'\n if (!internal) {\n recordLifecycle('effect-disposed', record.id, effectInfo(record).name, record.ownerId ?? undefined)\n emit('effect-disposed', record)\n }\n cleanupEffectRecord(record)\n },\n\n memoCreated(signal, subscriber, owner) {\n const record = ensureSignal(signal, owner)\n record.kind = 'memo'\n memoSignalIds.set(subscriber as object, record.id)\n if (isInternalSignal(record)) return\n recordLifecycle('memo-created', record.id, record.name, record.ownerId ?? undefined)\n emit('memo-created', signalInfo(record))\n },\n\n memoInvalidated(signal) {\n const record = ensureSignal(signal)\n if (isInternalSignal(record)) return\n recordLifecycle('memo-invalidated', record.id, record.name, record.ownerId ?? undefined)\n emit('memo-update', signalInfo(record))\n },\n\n flushEnd: onFlushEnd\n }\n\n const runtimeHooks: RuntimeDebugHooks = {\n domMutation(mutation: RuntimeDomMutation): void {\n if (!activeEffectId) return\n const effect = effects.get(activeEffectId)\n if (!effect || isInternalEffect(effect)) return\n const safeMutation: DomUpdateInfo = {\n ...mutation,\n previousValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.previousValue, new Set<object>(), 0, privacy),\n nextValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.nextValue, new Set<object>(), 0, privacy),\n effectId: activeEffectId,\n route: getRuntimeDebugContext()?.route,\n navigationId: getRuntimeDebugContext()?.navigationId,\n requestId: getRuntimeDebugContext()?.dataRequestId\n }\n for (const pending of pendingUpdates) {\n if (pending.effectIds.has(activeEffectId)) {\n pending.domUpdates.push(safeMutation)\n if (safeMutation.route) pending.context = { ...pending.context, route: safeMutation.route }\n if (safeMutation.navigationId !== undefined) pending.context = { ...pending.context, navigationId: safeMutation.navigationId }\n if (safeMutation.requestId !== undefined) pending.context.requestIds.add(safeMutation.requestId)\n }\n }\n emit('dom-update', safeMutation)\n },\n\n hydrationMismatch(event: RuntimeHydrationMismatch): void {\n reportError('hydration', Object.assign(new Error(event.message), {\n name: 'HydrationMismatchError',\n vobsCode: 'VOBS_HYDRATION_MISMATCH',\n vobsHydration: event\n }), {\n route: getRuntimeDebugContext()?.route,\n navigationId: getRuntimeDebugContext()?.navigationId\n })\n },\n\n error(event: RuntimeErrorEvent): void {\n const owner = ensureOwner(event.owner)\n const errorOwnerId = readErrorProperty(event.error, 'vobsOwnerId')\n const errorComponent = readErrorProperty(event.error, 'vobsComponent')\n reportError(event.phase === 'boundary' ? 'boundary' : 'event', event.error, {\n ownerId: errorOwnerId ?? owner.id,\n component: errorComponent ?? errorComponentForOwner(owner.id ?? undefined) ?? owner.name,\n handled: event.handled,\n recovery: event.recovery,\n })\n }\n }\n\n const httpHooks = {\n request(event: HTTPDebugRequest): void {\n if (collectionPaused) return\n const previous = networkRequests.get(event.id)\n const trace: NetworkRequestTrace = {\n id: event.id,\n url: event.url,\n method: event.method,\n status: event.status,\n headers: redactHeaders(event.headers, privacy),\n requestBody: serializeForDevTools(event.requestBody, new Set<object>(), 0, privacy),\n startedAt: previous?.startedAt ?? event.startedAt,\n endedAt: event.endedAt,\n duration: event.duration,\n attempt: Math.max(event.attempt, previous?.attempt ?? 0),\n retries: Math.max(event.retries, previous?.retries ?? 0),\n responseStatus: event.responseStatus,\n responseBody: serializeForDevTools(event.responseBody, new Set<object>(), 0, privacy),\n error: event.error,\n source: event.context?.environment === 'server' ? 'ssr' : 'http',\n test: event.context?.test,\n route: event.context?.route,\n navigationId: event.context?.navigationId,\n dataRequestId: event.context?.dataRequestId,\n environment: event.context?.environment\n }\n for (const pending of pendingUpdates) {\n if (event.context?.dataRequestId !== undefined && pending.context.requestIds.has(event.context.dataRequestId)) pending.context.requestIds.add(event.id)\n if (activeEffectId !== null && pending.effectIds.has(activeEffectId)) pending.context.requestIds.add(event.id)\n }\n networkRequests.set(event.id, trace)\n while (networkRequests.size > maxUpdates) {\n const oldest = networkRequests.keys().next().value\n if (typeof oldest !== 'number') break\n networkRequests.delete(oldest)\n }\n emit('network-request', trace)\n if (event.error) reportError('network', new Error(event.error.message), {\n requestId: event.id,\n route: event.context?.route,\n navigationId: event.context?.navigationId\n })\n }\n }\n\n function importSSRRequests(snapshot: unknown): void {\n if (disposed) return\n const events = parseSSRRequestSnapshot(snapshot)\n const ids = new Map<number, number>()\n for (const event of events) {\n const importedId = ids.get(event.id) ?? -(event.id + 1)\n ids.set(event.id, importedId)\n const trace: NetworkRequestTrace = {\n id: importedId,\n url: event.url,\n method: event.method,\n status: event.status,\n headers: redactHeaders(event.headers, privacy),\n requestBody: serializeForDevTools(event.requestBody, new Set<object>(), 0, privacy),\n startedAt: event.startedAt,\n endedAt: event.endedAt,\n duration: event.duration,\n attempt: event.attempt,\n retries: event.retries,\n responseStatus: event.responseStatus,\n responseBody: serializeForDevTools(event.responseBody, new Set<object>(), 0, privacy),\n error: event.error,\n source: 'ssr',\n test: event.context?.test,\n route: event.context?.route,\n navigationId: event.context?.navigationId,\n dataRequestId: event.context?.dataRequestId,\n environment: 'server'\n }\n networkRequests.set(importedId, trace)\n }\n while (networkRequests.size > maxUpdates) {\n const oldest = networkRequests.keys().next().value\n if (typeof oldest !== 'number') break\n networkRequests.delete(oldest)\n }\n emit('network-request', { source: 'ssr', imported: events.length })\n }\n\n const previousHooks = getDebugHooks()\n const previousRuntimeHooks = getRuntimeDebugHooks()\n const previousHTTPHooks = getHTTPDebugHooks()\n setDebugHooks(hooks)\n setRuntimeDebugHooks(runtimeHooks)\n setHTTPDebugHooks(httpHooks)\n\n const target = options.target ?? defaultTarget()\n const shouldExpose = options.expose ?? Boolean(target)\n const previousGlobal = target?.__VOBS_DEVTOOLS__\n let api!: DevToolsAPI\n const onGlobalError = (event: { readonly error?: unknown; readonly message?: unknown; readonly filename?: unknown; readonly lineno?: unknown; readonly colno?: unknown }): void => {\n const source = typeof event.filename === 'string' && event.filename\n ? `${event.filename}:${typeof event.lineno === 'number' ? event.lineno : 0}:${typeof event.colno === 'number' ? event.colno : 0}`\n : undefined\n reportError('global', event.error ?? event.message ?? 'Unknown global error', { source })\n }\n const onUnhandledRejection = (event: { readonly reason?: unknown }): void => {\n reportError('unhandledrejection', event.reason ?? 'Unhandled promise rejection')\n }\n target?.addEventListener?.('error', onGlobalError)\n target?.addEventListener?.('unhandledrejection', onUnhandledRejection)\n\n function subscribe(event: string, callback: (...args: any[]) => void): () => void {\n if (disposed) return () => undefined\n const callbacks = listeners.get(event) ?? new Set<(...args: any[]) => void>()\n callbacks.add(callback)\n listeners.set(event, callbacks)\n return () => {\n callbacks.delete(callback)\n if (callbacks.size === 0 && listeners.get(event) === callbacks) listeners.delete(event)\n }\n }\n\n function attachRouter(router: DevToolsRouterSource): () => void {\n const existing = routerStops.get(router)\n if (existing) {\n existing.refs++\n let released = false\n return () => {\n if (released) return\n released = true\n existing.refs--\n if (existing.refs === 0) existing.stop()\n }\n }\n const source = router.devtools as DevToolsRouterSource['devtools'] & {\n getCurrentRoute?: () => { readonly fullPath?: unknown }\n getNavigationState?: () => { readonly traceId?: unknown; readonly status?: unknown }\n getDataRequests?: () => readonly DevToolsRouterContext['dataRequests'][number][]\n }\n const initialRoute = source.getCurrentRoute?.()\n const initialState = source.getNavigationState?.()\n routerContext = {\n route: typeof initialRoute?.fullPath === 'string' ? initialRoute.fullPath : routerContext?.route,\n navigationId: typeof initialState?.traceId === 'number' ? initialState.traceId : routerContext?.navigationId,\n navigationStatus: typeof initialState?.status === 'string' ? initialState.status : routerContext?.navigationStatus,\n dataRequests: source.getDataRequests?.() ?? routerContext?.dataRequests ?? []\n }\n const stops = [\n router.devtools.subscribe('navigation:start', payload => {\n const value = payload as { readonly to?: unknown; readonly traceId?: unknown; readonly status?: unknown }\n routerContext = {\n route: typeof value.to === 'string' ? value.to : routerContext?.route,\n navigationId: typeof value.traceId === 'number' ? value.traceId : routerContext?.navigationId,\n navigationStatus: typeof value.status === 'string' ? value.status : undefined,\n dataRequests: routerContext?.dataRequests ?? []\n }\n emit('router', { type: 'navigation:start', payload })\n }),\n router.devtools.subscribe('navigation:end', payload => {\n const value = payload as { readonly to?: unknown; readonly id?: unknown; readonly status?: unknown }\n routerContext = {\n route: typeof value.to === 'string' ? value.to : routerContext?.route,\n navigationId: typeof value.id === 'number' ? value.id : routerContext?.navigationId,\n navigationStatus: typeof value.status === 'string' ? value.status : undefined,\n dataRequests: routerContext?.dataRequests ?? []\n }\n emit('router', { type: 'navigation:end', payload })\n }),\n router.devtools.subscribe('data-request', payload => {\n const request = payload as DevToolsRouterContext['dataRequests'][number]\n const requests = [...(routerContext?.dataRequests ?? [])]\n const existingIndex = requests.findIndex(item => item.id === request.id)\n if (existingIndex >= 0) requests[existingIndex] = request\n else requests.push(request)\n requests.splice(0, Math.max(0, requests.length - maxUpdates))\n routerContext = { ...routerContext, dataRequests: requests }\n emit('router', { type: 'data-request', payload })\n }),\n router.devtools.subscribe('route:update', payload => {\n const value = payload as { readonly fullPath?: unknown }\n if (typeof value.fullPath === 'string') routerContext = { ...routerContext, route: value.fullPath, dataRequests: routerContext?.dataRequests ?? [] }\n emit('router', { type: 'route:update', payload })\n }),\n router.devtools.subscribe('error', payload => {\n const value = payload as { readonly route?: unknown; readonly requestId?: unknown; readonly navigationId?: unknown; readonly message?: unknown; readonly stack?: unknown; readonly phase?: unknown }\n reportError('route', Object.assign(new Error(typeof value.message === 'string' ? value.message : 'Router error'), {\n stack: value.stack\n }), {\n route: typeof value.route === 'string' ? value.route : routerContext?.route,\n requestId: typeof value.requestId === 'number' ? value.requestId : undefined,\n navigationId: typeof value.navigationId === 'number' ? value.navigationId : undefined\n })\n emit('router', { type: 'error', payload })\n })\n ]\n const stop = () => {\n const current = routerStops.get(router)\n if (!current || current.stop !== stop) return\n for (const stop of stops) stop()\n routerStops.delete(router)\n }\n routerStops.set(router, { stop, refs: 1 })\n let released = false\n return () => {\n if (released) return\n released = true\n const current = routerStops.get(router)\n if (!current) return\n current.refs--\n if (current.refs === 0) current.stop()\n }\n }\n\n api = {\n getComponentTree(): readonly ComponentDebugNode[] {\n const active = [...owners.values()].filter(owner => !owner.disposed && !isInternalOwnerId(owner.id))\n const activeIds = new Set(active.map(owner => owner.id))\n return active\n .filter(owner => owner.parentId === null || !activeIds.has(owner.parentId))\n .map(owner => buildComponentNode(owner, activeIds))\n },\n\n getComponent(ownerId: string): ComponentDebugNode | null {\n const active = [...owners.values()].filter(owner => !owner.disposed && !isInternalOwnerId(owner.id))\n const activeIds = new Set(active.map(owner => owner.id))\n const find = (records: readonly OwnerRecord[]): ComponentDebugNode | null => {\n for (const record of records) {\n if (!activeIds.has(record.id)) continue\n if (record.id === ownerId) return buildComponentNode(record, activeIds)\n const child = find(active.filter(candidate => candidate.parentId === record.id))\n if (child) return child\n }\n return null\n }\n return find(active.filter(owner => owner.parentId === null || !activeIds.has(owner.parentId)))\n },\n\n getSignals(): readonly SignalDebugInfo[] {\n return [...signals.values()]\n .filter(signal => !signal.disposed && !isInternalSignal(signal))\n .map(signal => signalInfo(signal))\n },\n\n getSignal(signalId: string): SignalDebugInfo | null {\n const record = signals.get(signalId)\n return record && !record.disposed && !isInternalSignal(record) ? signalInfo(record) : null\n },\n\n canMutate(): boolean {\n return allowMutations && !disposed\n },\n\n setSignalValue(signalId: string, value: unknown): boolean {\n if (!allowMutations || disposed) return false\n const record = signals.get(signalId)\n // 只有 state 创建的信号可写;memo 派生值拒绝。\n if (!record || record.disposed || record.kind !== 'state') return false\n try {\n ;(record.signal as Signal<unknown>).value = value\n return true\n } catch (error) {\n reportError('render', error)\n return false\n }\n },\n\n getDependencies(signalId: string): readonly DependencyEdge[] {\n return [...edges.values()].filter(edge => edge.from === signalId)\n },\n\n getDependents(subscriberId: string): readonly DependencyEdge[] {\n return [...edges.values()].filter(edge => edge.to === subscriberId)\n },\n\n getEffects(): readonly EffectDebugInfo[] {\n return [...effects.values()]\n .filter(effect => !effect.disposed && !isInternalEffect(effect))\n .map(effectInfo)\n },\n\n getUpdates(): readonly UpdateTrace[] {\n return updates.slice()\n },\n\n getLifecycleEvents(): readonly LifecycleEvent[] {\n return lifecycleEvents.slice()\n },\n\n getNetworkRequests(): readonly NetworkRequestTrace[] {\n return [...networkRequests.values()]\n },\n\n importSSRRequests,\n\n getRouterContext(): DevToolsRouterContext | null {\n return routerContext ? { ...routerContext, dataRequests: [...routerContext.dataRequests] } : null\n },\n\n attachRouter,\n\n getErrors(): readonly DevToolsErrorTrace[] {\n return [...errors.values()]\n },\n\n getPerformanceEntries(): readonly DevToolsPerformanceEntry[] {\n const entries: DevToolsPerformanceEntry[] = []\n for (const update of updates) {\n entries.push({\n kind: 'update',\n id: update.id,\n label: update.signalName,\n duration: update.duration,\n timestamp: update.timestamp,\n status: update.status\n })\n }\n for (const effect of effects.values()) {\n if (effect.disposed || isInternalEffect(effect) || effect.lastDuration <= 0) continue\n entries.push({\n kind: 'effect',\n id: effect.id,\n label: effectInfo(effect).name,\n duration: effect.lastDuration,\n timestamp: effect.lastExecutionTime,\n status: effect.lastRunStatus ?? effect.status\n })\n }\n for (const request of networkRequests.values()) {\n if (request.duration === undefined) continue\n entries.push({\n kind: 'request',\n id: request.id,\n label: `${request.method} ${request.url}`,\n duration: request.duration,\n timestamp: request.startedAt,\n status: request.status\n })\n }\n return entries.sort((left, right) => right.duration - left.duration)\n },\n\n reportError,\n\n getCollectionState(): DevToolsCollectionState {\n return { paused: collectionPaused }\n },\n\n setCollectionPaused(paused: boolean): void {\n collectionPaused = paused\n if (paused) pendingUpdates.length = 0\n emit('collection', { paused })\n },\n\n clearUpdates(): void {\n pendingUpdates.length = 0\n updates.length = 0\n updateDurations.length = 0\n updateCount = 0\n emit('collection-cleared', 'updates')\n },\n\n clearNetworkRequests(): void {\n networkRequests.clear()\n emit('collection-cleared', 'network')\n },\n\n clearErrors(): void {\n errors.clear()\n emit('collection-cleared', 'errors')\n },\n\n clearLifecycleEvents(): void {\n lifecycleEvents.length = 0\n emit('collection-cleared', 'lifecycle')\n },\n\n getPerformanceMetrics(): PerformanceMetrics {\n const total = updateDurations.reduce((sum, duration) => sum + duration, 0)\n const effectDurations = [...effects.values()]\n .filter(effect => !effect.disposed)\n .map(effect => effect.lastDuration)\n .filter(duration => duration > 0)\n const requestDurations = [...networkRequests.values()]\n .map(request => request.duration ?? 0)\n .filter(duration => duration > 0)\n return {\n updateCount,\n averageUpdateDuration: updateDurations.length === 0 ? 0 : total / updateDurations.length,\n slowUpdateCount: updateDurations.filter(duration => duration > slowUpdateThreshold).length,\n effectExecutionCount,\n slowEffectCount: effectDurations.filter(duration => duration > slowUpdateThreshold).length,\n slowRequestCount: requestDurations.filter(duration => duration > slowUpdateThreshold).length,\n maxUpdateDuration: updateDurations.length === 0 ? 0 : Math.max(...updateDurations),\n maxEffectDuration: effectDurations.length === 0 ? 0 : Math.max(...effectDurations),\n maxRequestDuration: requestDurations.length === 0 ? 0 : Math.max(...requestDurations)\n }\n },\n\n takeMemorySnapshot(): MemorySnapshot {\n return {\n signalCount: [...signals.values()].filter(signal => !signal.disposed && !isInternalSignal(signal)).length,\n effectCount: [...effects.values()].filter(effect => !effect.disposed && !isInternalEffect(effect)).length,\n ownerCount: [...owners.values()].filter(owner => !owner.disposed && !isInternalOwnerId(owner.id)).length,\n dependencyEdgeCount: edges.size,\n leakedOwners: [...owners.values()].filter(owner => owner.disposed).length\n }\n },\n\n exportDiagnostics(): DevToolsDiagnosticSnapshot {\n return {\n version: 1,\n exportedAt: Date.now(),\n updates: api.getUpdates(),\n lifecycle: api.getLifecycleEvents(),\n network: api.getNetworkRequests(),\n errors: api.getErrors(),\n performance: api.getPerformanceMetrics(),\n memory: api.takeMemorySnapshot(),\n extensions: getExtensionSnapshot()\n }\n },\n\n importDiagnostics(snapshot: unknown): void {\n const imported = parseDiagnosticSnapshot(snapshot)\n updates.splice(0, updates.length, ...imported.updates.slice(-maxUpdates).map(update => sanitizeImportedUpdate(update, privacy)))\n lifecycleEvents.splice(0, lifecycleEvents.length, ...imported.lifecycle.slice(-maxUpdates))\n networkRequests.clear()\n for (const request of imported.network.slice(-maxUpdates)) networkRequests.set(request.id, sanitizeImportedRequest(request, privacy))\n errors.clear()\n for (const error of imported.errors.slice(-maxUpdates)) {\n const normalized = sanitizeImportedError(error)\n errors.set(diagnosticErrorKey(normalized), normalized)\n }\n updateDurations.splice(0, updateDurations.length, ...updates.map(update => update.duration))\n updateCount = imported.performance.updateCount\n effectExecutionCount = imported.performance.effectExecutionCount\n emit('collection', { imported: true })\n },\n\n registerInspector(id: string, inspector: DevToolsInspector): () => void {\n if (disposed || !id) return () => undefined\n inspectors.set(id, inspector)\n emit('extension', { type: 'inspector', id })\n return () => {\n if (inspectors.get(id) === inspector) inspectors.delete(id)\n }\n },\n\n registerTimeline(id: string, timeline: DevToolsTimeline = {}): () => void {\n if (disposed || !id) return () => undefined\n timelines.set(id, timeline)\n emit('extension', { type: 'timeline', id })\n return () => {\n if (timelines.get(id) === timeline) timelines.delete(id)\n }\n },\n\n registerMetric(id: string, metric: DevToolsMetric): () => void {\n if (disposed || !id) return () => undefined\n metrics.set(id, metric)\n emit('extension', { type: 'metric', id })\n return () => {\n if (metrics.get(id) === metric) metrics.delete(id)\n }\n },\n\n getExtensionSnapshot,\n\n inspectExtension(id: string, value: unknown): unknown {\n const inspector = inspectors.get(id)\n if (!inspector) return undefined\n return safeExtensionCall(\n () => serializeForDevTools(inspector.inspect(value), new Set<object>(), 0, privacy),\n undefined\n )\n },\n\n onUpdate(callback: (trace: UpdateTrace) => void): () => void {\n return subscribe('update', callback)\n },\n\n subscribe,\n\n dispose(): void {\n if (disposed) return\n disposed = true\n if (getDebugHooks() === hooks) setDebugHooks(previousHooks)\n if (getRuntimeDebugHooks() === runtimeHooks) setRuntimeDebugHooks(previousRuntimeHooks)\n if (getHTTPDebugHooks() === httpHooks) setHTTPDebugHooks(previousHTTPHooks)\n if (activeDevTools === api) activeDevTools = null\n if (target && target.__VOBS_DEVTOOLS__ === api) {\n if (previousGlobal) target.__VOBS_DEVTOOLS__ = previousGlobal\n else delete target.__VOBS_DEVTOOLS__\n }\n target?.removeEventListener?.('error', onGlobalError)\n target?.removeEventListener?.('unhandledrejection', onUnhandledRejection)\n listeners.clear()\n for (const { stop } of [...routerStops.values()]) stop()\n routerStops.clear()\n routerContext = null\n pendingUpdates.length = 0\n pendingFlushScheduled = false\n activeEffectId = null\n inspectors.clear()\n timelines.clear()\n metrics.clear()\n }\n }\n\n if (shouldExpose && target) target.__VOBS_DEVTOOLS__ = api\n activeDevTools = api\n if (options.router) attachRouter(options.router)\n return api\n}\n\nexport function enableDevTools(options: DevToolsOptions = {}): DevToolsAPI {\n return createDevTools(options)\n}\n\nexport function disableDevTools(): void {\n activeDevTools?.dispose()\n}\n\nexport function getDevTools(): DevToolsAPI | null {\n return activeDevTools\n}\n\n/** Connects a browser panel through a small postMessage protocol. */\nexport function connectDevTools(options: DevToolsBridgeOptions = {}): () => void {\n const target = options.target ?? defaultMessageTarget()\n const api = options.api ?? activeDevTools\n if (!target || !api) return () => undefined\n\n const send = (message: DevToolsWireResponse | DevToolsWireEvent): void => {\n try {\n target.postMessage(message, '*')\n } catch {\n // A panel disappearing during navigation must not affect the application.\n }\n }\n const unsubscribes = DEVTOOLS_EVENTS.map(event => api.subscribe(event, (...args: unknown[]) => {\n send({\n source: 'vobs-devtools',\n type: 'event',\n event,\n payload: args.length === 1 ? args[0] : args\n })\n }))\n const onMessage = (event: DevToolsMessageEvent): void => {\n const request = parseRequest(event.data)\n if (!request) return\n try {\n send({\n source: 'vobs-devtools',\n type: 'response',\n id: request.id,\n ok: true,\n result: invokeRequest(api, request)\n })\n } catch (error) {\n send({\n source: 'vobs-devtools',\n type: 'response',\n id: request.id,\n ok: false,\n error: toErrorMessage(error)\n })\n }\n }\n target.addEventListener('message', onMessage)\n\n return () => {\n target.removeEventListener('message', onMessage)\n for (const unsubscribe of unsubscribes) unsubscribe()\n }\n}\n\nexport function devtoolsPlugin(options: DevToolsPluginOptions = {}): VobsPlugin {\n return {\n name: '@vobs/devtools',\n version: '0.1.0',\n install(context: VobsContext) {\n if (options.enabled === false) return\n const devtools = createDevTools(options)\n const removeErrorObserver = context.onError(error => {\n const phase: DevToolsErrorPhase = readErrorProperty(error, 'vobsCode') === 'VOBS_HYDRATION_MISMATCH'\n || Boolean(readErrorProperty(error, 'vobsHydration'))\n ? 'hydration'\n : 'application'\n devtools.reportError(phase, error, {\n handled: false,\n recovery: 'propagated'\n })\n })\n return () => {\n removeErrorObserver()\n devtools.dispose()\n }\n }\n }\n}\n\nfunction defaultTarget(): DevToolsTarget | undefined {\n return typeof window === 'undefined' ? undefined : window\n}\n\nfunction defaultMessageTarget(): DevToolsMessageTarget | undefined {\n return typeof window === 'undefined' ? undefined : window as unknown as DevToolsMessageTarget\n}\n\nfunction parseRequest(value: unknown): DevToolsWireRequest | null {\n if (!value || typeof value !== 'object') return null\n const request = value as Partial<DevToolsWireRequest>\n if (request.source !== 'vobs-devtools' || request.type !== 'request') return null\n if (typeof request.id !== 'string' || typeof request.method !== 'string') return null\n return request as DevToolsWireRequest\n}\n\nfunction invokeRequest(api: DevToolsAPI, request: DevToolsWireRequest): unknown {\n const args = request.args ?? []\n switch (request.method) {\n case 'getComponentTree': return api.getComponentTree()\n case 'getComponent': return api.getComponent(String(args[0] ?? ''))\n case 'getSignals': return api.getSignals()\n case 'getSignal': return api.getSignal(String(args[0] ?? ''))\n case 'canMutate': return api.canMutate()\n case 'setSignalValue': return api.setSignalValue(String(args[0] ?? ''), args[1])\n case 'getDependencies': return api.getDependencies(String(args[0] ?? ''))\n case 'getDependents': return api.getDependents(String(args[0] ?? ''))\n case 'getEffects': return api.getEffects()\n case 'getUpdates': return api.getUpdates()\n case 'getLifecycleEvents': return api.getLifecycleEvents()\n case 'getNetworkRequests': return api.getNetworkRequests()\n case 'importSSRRequests': api.importSSRRequests(args[0]); return undefined\n case 'getRouterContext': return api.getRouterContext()\n case 'getErrors': return api.getErrors()\n case 'getPerformanceEntries': return api.getPerformanceEntries()\n case 'getCollectionState': return api.getCollectionState()\n case 'setCollectionPaused': api.setCollectionPaused(Boolean(args[0])); return undefined\n case 'clearUpdates': api.clearUpdates(); return undefined\n case 'clearNetworkRequests': api.clearNetworkRequests(); return undefined\n case 'clearErrors': api.clearErrors(); return undefined\n case 'clearLifecycleEvents': api.clearLifecycleEvents(); return undefined\n case 'getPerformanceMetrics': return api.getPerformanceMetrics()\n case 'takeMemorySnapshot': return api.takeMemorySnapshot()\n case 'exportDiagnostics': return api.exportDiagnostics()\n case 'importDiagnostics': api.importDiagnostics(args[0]); return undefined\n case 'getExtensionSnapshot': return api.getExtensionSnapshot()\n case 'inspectExtension': return api.inspectExtension(String(args[0] ?? ''), args[1])\n default: throw new Error(`Vobs DevTools: 未知请求 ${request.method}`)\n }\n}\n\nfunction toErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nfunction toDebugError(error: unknown, phase?: string): DebugErrorInfo {\n const normalized = normalizeVobsError(error)\n const value = error as {\n name?: unknown\n message?: unknown\n stack?: unknown\n vobsSource?: { file?: unknown; line?: unknown; column?: unknown }\n vobsCode?: unknown\n code?: unknown\n vobsHint?: unknown\n vobsHydration?: RuntimeHydrationMismatch\n } | null\n const source = value?.vobsSource ?? normalized.location\n return {\n name: typeof value?.name === 'string' ? value.name : normalized.name,\n message: typeof value?.message === 'string' ? value.message : normalized.message,\n stack: typeof value?.stack === 'string' ? value.stack : normalized.stack,\n phase,\n source: source && typeof source.file === 'string'\n ? `${source.file}:${source.line ?? 0}:${source.column ?? 0}`\n : undefined,\n location: source && typeof source.file === 'string' && typeof source.line === 'number' && typeof source.column === 'number'\n ? { file: source.file, line: source.line, column: source.column }\n : undefined,\n code: typeof value?.vobsCode === 'string'\n ? value.vobsCode\n : typeof value?.code === 'string' ? value.code : undefined,\n hint: typeof value?.vobsHint === 'string' ? value.vobsHint : undefined,\n cause: normalized.cause instanceof Error ? `${normalized.cause.name}: ${normalized.cause.message}` : normalized.cause === undefined ? undefined : String(normalized.cause),\n fix: normalized.fix,\n hydration: value?.vobsHydration && typeof value.vobsHydration === 'object' ? value.vobsHydration : undefined\n }\n}\n\ninterface ErrorClassification {\n readonly origin: DevToolsErrorOrigin\n readonly code?: string\n readonly hint?: string\n}\n\nconst FRAMEWORK_ERROR_RULES: readonly { pattern: RegExp; origin: DevToolsErrorOrigin; code: string; hint: string }[] = [\n { pattern: /响应式更新超过\\s*100\\s*轮/, origin: 'framework', code: 'VOBS_REACTIVITY_LOOP', hint: '检查 Effect 是否在执行时持续写入它依赖的 Signal。' },\n { pattern: /Fragment: (?:不能跨父节点移动|Fragment 不属于指定父节点|找不到结束锚点)/, origin: 'framework', code: 'VOBS_FRAGMENT_INVARIANT', hint: '检查 Fragment 的父节点和插入/删除顺序,通常表示运行时树结构已不一致。' },\n { pattern: /当前渲染器不支持 Hydration/, origin: 'usage', code: 'VOBS_HYDRATION_UNSUPPORTED', hint: '请使用支持 Hydration 的 Renderer,或改用 app.mount()。' },\n { pattern: /(?:HydrationMismatchError|Vobs hydration:|服务端 DOM 与客户端渲染结构不一致|节点位置与客户端渲染结果不一致)/, origin: 'framework', code: 'VOBS_HYDRATION_MISMATCH', hint: '检查服务端和客户端是否生成了相同的节点结构与初始状态。' },\n { pattern: /渲染器未初始化/, origin: 'usage', code: 'VOBS_RENDERER_NOT_INITIALIZED', hint: '请在应用 mount 或 hydrate 后调用 Runtime DOM API。' },\n { pattern: /节点不属于指定父节点/, origin: 'framework', code: 'VOBS_DOM_PARENT_MISMATCH', hint: '检查节点是否被重复移动、删除,或被错误的 Renderer 实例管理。' }\n]\n\nfunction classifyError(phase: DevToolsErrorPhase, error: unknown, context: DevToolsErrorContext): ErrorClassification {\n const message = toErrorMessage(error)\n const explicitCode = context.code\n ?? readErrorProperty(error, 'vobsCode')\n ?? readErrorProperty(error, 'code')\n ?? extractErrorCode(message)\n const frameworkRule = FRAMEWORK_ERROR_RULES.find(rule => rule.pattern.test(message))\n if (frameworkRule) return { origin: context.origin ?? frameworkRule.origin, code: explicitCode ?? frameworkRule.code, hint: context.hint ?? frameworkRule.hint }\n if (context.origin) return { origin: context.origin, code: explicitCode, hint: context.hint }\n if ((explicitCode && isUsageErrorCode(explicitCode))\n || (/^Vobs(?:\\s|:)|^VOBS_/.test(message) && /必须|不能为空|找不到|缺少|不存在|无效|不能直接|重复|未配置|已销毁/.test(message))) {\n return { origin: 'usage', code: explicitCode, hint: context.hint ?? '检查调用参数、Owner 作用域和相关插件是否已安装。' }\n }\n if (phase === 'global') return { origin: 'unknown', code: explicitCode, hint: context.hint }\n return { origin: 'application', code: explicitCode, hint: context.hint }\n}\n\nfunction isUsageErrorCode(code: string): boolean {\n return /^(?:INVALID_|.*_(?:CONTEXT_MISSING|CONTEXT_DISPOSED|OPTIONS|MISSING|UNAVAILABLE))/.test(code)\n}\n\nfunction extractErrorCode(message: string): string | undefined {\n return message.match(/\\b[A-Z][A-Z0-9_]{2,}_[A-Z0-9_]+\\b/)?.[0]\n}\n\nfunction readErrorProperty(error: unknown, key: string): string | undefined {\n if (!error || (typeof error !== 'object' && typeof error !== 'function')) return undefined\n const value = (error as Record<string, unknown>)[key]\n return typeof value === 'string' ? value : undefined\n}\n\nfunction mergeRecovery(previous: DevToolsErrorRecovery, next: DevToolsErrorRecovery | undefined): DevToolsErrorRecovery {\n if (!next) return previous\n if (next === 'retrying') return next\n if (next === 'recovered') return next\n if (next === 'fallback') return next\n if (previous === 'fallback') return previous\n return next\n}\n\nfunction diagnosticErrorKey(error: Pick<DevToolsErrorTrace, 'origin' | 'code' | 'name' | 'message' | 'source' | 'component'>): string {\n return [error.origin, error.code ?? error.name, error.message, error.source ?? '', error.component ?? ''].join(':')\n}\n\nfunction sanitizeImportedError(error: DevToolsErrorTrace): DevToolsErrorTrace {\n const phase = error.phase ?? 'global'\n return {\n ...error,\n phase,\n phases: Array.isArray(error.phases) && error.phases.length > 0 ? error.phases : [phase],\n origin: error.origin ?? 'unknown',\n handled: error.handled === true,\n recovery: error.recovery ?? 'propagated'\n }\n}\n\nfunction parseDiagnosticSnapshot(value: unknown): DevToolsDiagnosticSnapshot {\n if (!value || typeof value !== 'object') throw new Error('Vobs DevTools: invalid diagnostic snapshot')\n const snapshot = value as Partial<DevToolsDiagnosticSnapshot>\n if (snapshot.version !== 1\n || !Array.isArray(snapshot.updates)\n || !Array.isArray(snapshot.lifecycle)\n || !Array.isArray(snapshot.network)\n || !Array.isArray(snapshot.errors)\n || !snapshot.performance\n || !snapshot.memory) {\n throw new Error('Vobs DevTools: unsupported diagnostic snapshot')\n }\n if (!snapshot.updates.every(item => isRecord(item)\n && typeof item.id === 'string'\n && typeof item.duration === 'number'\n && Array.isArray(item.effects)\n && Array.isArray(item.affectedSignals)\n && Array.isArray(item.affectedEffects)\n && Array.isArray(item.domUpdates))\n || !snapshot.lifecycle.every(item => isRecord(item) && typeof item.id === 'string' && typeof item.type === 'string')\n || !snapshot.network.every(item => isRecord(item) && typeof item.id === 'number' && typeof item.url === 'string' && isRecord(item.headers))\n || !snapshot.errors.every(item => isRecord(item) && typeof item.id === 'number' && typeof item.message === 'string')\n || !isRecord(snapshot.performance)\n || typeof snapshot.performance.updateCount !== 'number'\n || typeof snapshot.performance.effectExecutionCount !== 'number'\n || !isRecord(snapshot.memory)) {\n throw new Error('Vobs DevTools: malformed diagnostic snapshot')\n }\n return snapshot as DevToolsDiagnosticSnapshot\n}\n\nfunction parseSSRRequestSnapshot(value: unknown): readonly HTTPDebugRequest[] {\n const candidate = value && typeof value === 'object' && !Array.isArray(value)\n ? value as { readonly version?: unknown; readonly environment?: unknown; readonly requests?: unknown }\n : { version: 1, environment: 'server', requests: value }\n if (candidate.version !== 1 || candidate.environment !== 'server' || !Array.isArray(candidate.requests)) {\n throw new Error('Vobs DevTools: invalid SSR request snapshot')\n }\n if (!candidate.requests.every(item => isRecord(item)\n && typeof item.id === 'number'\n && typeof item.url === 'string'\n && typeof item.method === 'string'\n && typeof item.startedAt === 'number'\n && isRecord(item.headers))) {\n throw new Error('Vobs DevTools: malformed SSR request snapshot')\n }\n return candidate.requests as HTTPDebugRequest[]\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value)\n}\n\ninterface NormalizedPrivacyOptions {\n readonly redactedHeaders: readonly string[]\n readonly redactedFields: readonly string[]\n readonly redactDomValues: boolean\n readonly replacement: string\n}\n\nfunction normalizePrivacyOptions(options: DevToolsPrivacyOptions | undefined): NormalizedPrivacyOptions {\n return {\n redactedHeaders: options?.redactedHeaders ?? [],\n redactedFields: options?.redactedFields ?? [],\n redactDomValues: options?.redactDomValues ?? false,\n replacement: options?.replacement ?? '[Redacted]'\n }\n}\n\nfunction sanitizeImportedUpdate(update: UpdateTrace, privacy: NormalizedPrivacyOptions): UpdateTrace {\n return {\n ...update,\n previousValue: serializeForDevTools(update.previousValue, new Set<object>(), 0, privacy),\n nextValue: serializeForDevTools(update.nextValue, new Set<object>(), 0, privacy),\n domUpdates: update.domUpdates.map(mutation => ({\n ...mutation,\n previousValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.previousValue, new Set<object>(), 0, privacy),\n nextValue: privacy.redactDomValues ? privacy.replacement : serializeForDevTools(mutation.nextValue, new Set<object>(), 0, privacy)\n }))\n }\n}\n\nfunction sanitizeImportedRequest(request: NetworkRequestTrace, privacy: NormalizedPrivacyOptions): NetworkRequestTrace {\n return {\n ...request,\n headers: redactHeaders(request.headers, privacy),\n requestBody: serializeForDevTools(request.requestBody, new Set<object>(), 0, privacy),\n responseBody: serializeForDevTools(request.responseBody, new Set<object>(), 0, privacy)\n }\n}\n\nfunction redactHeaders(headers: Readonly<Record<string, string>>, privacy: NormalizedPrivacyOptions): Readonly<Record<string, string>> {\n const result: Record<string, string> = {}\n for (const [key, value] of Object.entries(headers)) {\n if (/authorization|cookie|token|password|secret|api[-_]?key/i.test(key)\n || privacy.redactedHeaders.some(fragment => key.toLowerCase().includes(fragment.toLowerCase()))) continue\n result[key] = value\n }\n return result\n}\n\nfunction serializeForDevTools(value: unknown, seen = new Set<object>(), depth = 0, privacy?: NormalizedPrivacyOptions): unknown {\n if (value === null || typeof value === 'string' || typeof value === 'boolean') return value\n if (typeof value === 'number') return Number.isFinite(value) ? value : String(value)\n if (typeof value === 'bigint') return `${value}n`\n if (typeof value === 'undefined') return undefined\n if (typeof value === 'function') return `[Function ${value.name || 'anonymous'}]`\n if (typeof value === 'symbol') return String(value)\n if (depth >= 4) return '[MaxDepth]'\n\n const object = value as object\n if (seen.has(object)) return '[Circular]'\n seen.add(object)\n try {\n if (value instanceof Date) return value.toISOString()\n if (value instanceof Error) return { name: value.name, message: value.message }\n if (Array.isArray(value)) return value.slice(0, 100).map(item => serializeForDevTools(item, seen, depth + 1, privacy))\n\n const result: Record<string, unknown> = {}\n for (const key of Object.keys(object).slice(0, 100)) {\n try {\n if (privacy?.redactedFields.some(field => field.toLowerCase() === key.toLowerCase())) {\n result[key] = privacy.replacement\n } else {\n result[key] = serializeForDevTools((object as Record<string, unknown>)[key], seen, depth + 1, privacy)\n }\n } catch {\n result[key] = '[Uninspectable]'\n }\n }\n return result\n } finally {\n seen.delete(object)\n }\n}\n\ndeclare global {\n interface Window {\n __VOBS_DEVTOOLS__?: DevToolsAPI\n }\n}\n"],"mappings":"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","names":["updates","released","stop"]}