UNPKG

@razz21/vue-scan

Version:

Track and visualize Vue 3 component renders

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