import { addVitePlugin, addWebpackPlugin, defineNuxtModule } from 'nuxt/kit' import { createUnplugin } from 'unplugin' import { parseURL } from 'ufo' import MagicString from 'magic-string' const plugin = createUnplugin(() => { const replaced: string[] = [] return { name: 'lazy-hydrate', enforce: 'post', transformInclude (id) { return parseURL(id).pathname.endsWith('.vue') }, transform (code, id) { const chunks = code.matchAll( /const _hoisted_(?\d+)(?[\s\S]*?)(;$|\n(?=const ))/gm, ) const s = new MagicString(code) const registeredChunks: Record = {} for (const chunk of chunks) { if (!chunk.groups || !chunk.groups.value) continue if (chunk.groups.value in registeredChunks) { const replacementChunk = registeredChunks[chunk.groups.value] s.replace( new RegExp(`(?