vue-jsx-vapor
Version:
Vapor Mode of Vue JSX
93 lines (90 loc) • 3 kB
JavaScript
import { t as transformVueJsxVapor } from "./core-C8zepAJD.js";
import macros from "@vue-jsx-vapor/macros/raw";
import { propsHelperCode, propsHelperId, vaporHelperCode, vaporHelperId, vdomHelperCode, vdomHelperId } from "@vue-jsx-vapor/runtime/raw";
import { relative } from "pathe";
import { normalizePath } from "unplugin-utils";
//#region src/core/ssr.ts
const ssrRegisterHelperId = "/__vue-jsx-ssr-register-helper";
const ssrRegisterHelperCode = `import { useSSRContext } from "vue"\nexport const ssrRegisterHelper = ${ssrRegisterHelper.toString()}`;
/**
* This function is serialized with toString() and evaluated as a virtual
* module during SSR
*/
function ssrRegisterHelper(comp, filename) {
if (typeof comp === "function") comp.__setup = () => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add(filename);
};
else {
const setup = comp.setup;
comp.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add(filename);
if (setup) return setup(props, ctx);
};
}
}
//#endregion
//#region src/raw.ts
const plugin = (options = {}) => {
let root = "";
let needHMR = false;
let needSourceMap = options.sourceMap || false;
return [...options.macros === false ? [] : options.macros ? macros(options.macros === true ? void 0 : options.macros) : [], {
enforce: "pre",
name: "vue-jsx-vapor",
vite: {
config(config) {
return { define: {
__VUE_OPTIONS_API__: config.define?.__VUE_OPTIONS_API__ ?? true,
__VUE_PROD_DEVTOOLS__: config.define?.__VUE_PROD_DEVTOOLS__ ?? false,
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: config.define?.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ ?? false
} };
},
configResolved(config) {
root = config.root;
needHMR = config.command === "serve";
needSourceMap ||= config.command === "serve" || !!config.build.sourcemap;
}
},
resolveId: {
filter: { id: [
ssrRegisterHelperId,
propsHelperId,
vdomHelperId,
vaporHelperId
] },
handler: (id) => id
},
load: {
filter: { id: [
ssrRegisterHelperId,
propsHelperId,
vdomHelperId,
vaporHelperId
] },
handler(id) {
if (id === ssrRegisterHelperId) return ssrRegisterHelperCode;
if (id === propsHelperId) return propsHelperCode;
if (id === vdomHelperId) return vdomHelperCode;
if (id === vaporHelperId) return vaporHelperCode;
}
},
transform: {
filter: { id: {
include: options?.include || /\.[cm]?[jt]sx$/,
exclude: options?.exclude || /node_modules/
} },
handler(code, id, opt) {
const result = transformVueJsxVapor(code, opt?.ssr ? normalizePath(relative(root, id)) : id, options, needSourceMap, needHMR, opt?.ssr);
if (result?.code) return {
code: result.code,
map: result.map ? JSON.parse(result.map) : null
};
}
}
}];
};
var raw_default = plugin;
//#endregion
export { raw_default as t };