UNPKG

msoffice-addin

Version:

Microsoft office addin module for Nuxt abd vite

48 lines (44 loc) 1.51 kB
import process from 'node:process'; import { defineNuxtModule, createResolver, addServerPlugin, addPrerenderRoutes } from '@nuxt/kit'; import { t as transformManifests } from './shared/msoffice-addin.fd118499.mjs'; import 'node:fs'; import 'node:path'; import 'vite'; function serialize(source) { function replacer(key, value) { if (value instanceof RegExp) return `__REGEX__${value.toString()}__REGEX__`; return value; } const content = JSON.stringify(source, replacer, 2); const result = content.replaceAll(/"__REGEX__.*?__REGEX__"/gm, (pattern) => { const value = pattern.replaceAll(/"__REGEX__|__REGEX__"/gm, "").replaceAll("\\\\", "\\"); return value; }); return result; } const module = defineNuxtModule({ meta: { name: "msoffice-addin", configKey: "msOfficeAddin" }, setup(options, nuxt) { const { vite } = nuxt.options; const { resolve } = createResolver(import.meta.url); addServerPlugin(resolve("./runtime/loader.server")); nuxt.hooks.hookOnce("nitro:config", async (nitro) => { const manifests = transformManifests({ mode: vite.mode, envDir: vite.envDir ?? process.cwd(), inputs: options.manifests, defineENV: options.defineENV }); addPrerenderRoutes( manifests.flatMap((entry) => entry.route) ); nitro.virtual ||= {}; nitro.virtual["#office-addin-content"] = `export default ${serialize({ manifests, options })}`; }); } }); export { module as default };