@razz21/vue-scan
Version: 
Track and visualize Vue 3 component renders
43 lines (42 loc) • 1.69 kB
JavaScript
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