astro-ghostcms/.pnpm-store/v3/files/09/ad943ffd4ac7f7e900787389401...

66 lines
1.6 KiB
Plaintext

import nodeFs from "node:fs";
import npath from "node:path";
import { slash } from "../core/path.js";
import { cleanUrl } from "../vite-plugin-utils/index.js";
function loadFallbackPlugin({
fs,
root
}) {
if (!fs || fs === nodeFs || fs.default === nodeFs) {
return false;
}
const tryLoadModule = async (id) => {
try {
return await fs.promises.readFile(cleanUrl(id), "utf-8");
} catch (e) {
try {
return await fs.promises.readFile(id, "utf-8");
} catch (e2) {
try {
const fullpath = new URL("." + id, root);
return await fs.promises.readFile(fullpath, "utf-8");
} catch (e3) {
}
}
}
};
return [
{
name: "astro:load-fallback",
enforce: "post",
async resolveId(id, parent) {
if (parent) {
const candidateId = npath.posix.join(npath.posix.dirname(slash(parent)), id);
try {
const stats = await fs.promises.stat(candidateId);
if (!stats.isDirectory()) {
return candidateId;
}
} catch {
}
}
},
async load(id) {
const source = await tryLoadModule(id);
return source;
}
},
{
name: "astro:load-fallback-hmr",
enforce: "pre",
handleHotUpdate(context) {
const read = context.read;
context.read = async () => {
const source = await tryLoadModule(context.file);
if (source)
return source;
return read.call(context);
};
}
}
];
}
export {
loadFallbackPlugin as default
};