msoffice-addin
Version:
Microsoft office addin module for Nuxt abd vite
48 lines (44 loc) • 1.51 kB
JavaScript
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 };