UNPKG

@razz21/vue-scan

Version:

Track and visualize Vue 3 component renders

46 lines (45 loc) 1.76 kB
import { VueScanCanvas as C } from "../canvas/index.js"; import { initCanvasContainer as E } from "../canvas/render.js"; import { defaultOptions as d, DevToolsHooks as l } from "../core/constants.js"; import { createDevToolsHook as N } from "../core/hook.js"; import { VueScanInstrumentation as D } from "../core/instrumentation.js"; import { VueScanStore as T } from "../core/store.js"; import { getComponentName as s } from "../core/utils.js"; import { logger as t } from "../utils/logger.js"; import { getCurrentInstance as f } from "vue"; N(); const I = { install(_, O) { const r = { ...d, ...O }; if (!r.enabled) return; t.setOptions({ enabled: r.logToConsole }); const m = E(), u = new C(m, r), p = new T(), e = new D(r, p, u), n = window.__VUE_DEVTOOLS_GLOBAL_HOOK__; if (!n) { t.error("__VUE_DEVTOOLS_GLOBAL_HOOK__ not available"), e.clear(); return; } n.on(l.COMPONENT_ADDED, (a, i, c, o) => { requestIdleCallback(async () => await e.track(o)), t.log("COMPONENT_ADDED", s(o)); }), n.on(l.COMPONENT_UPDATED, (a, i, c, o) => { requestIdleCallback(async () => await e.track(o)), t.log("COMPONENT_UPDATED", s(o)); }), n.on(l.COMPONENT_REMOVED, (a, i, c, o) => { requestIdleCallback(() => e.delete(i), { timeout: 1e3 }), t.log("COMPONENT_REMOVED", s(o)); }), n.on(l.APP_UNMOUNT, (a) => { t.log("APP_UNMOUNT"); }), _.mixin({ beforeUnmount() { const a = f(); requestIdleCallback(() => e.delete(a.uid), { timeout: 1e3 }); } }), setInterval(() => { requestIdleCallback(() => e.garbageCollectElements()); }, 5e3), _.onUnmount?.(() => { e.clear(); }); } }; export { I as default }; //# sourceMappingURL=plugin.js.map