Initial commit
This commit is contained in:
56
node_modules/astro/dist/assets/endpoint/node.js
generated
vendored
Normal file
56
node_modules/astro/dist/assets/endpoint/node.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
import { outDir, serverDir } from "astro:assets";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { isParentDirectory } from "@astrojs/internal-helpers/path";
|
||||
import { handleImageRequest } from "./shared.js";
|
||||
async function loadLocalImage(src, url) {
|
||||
const outDirURL = resolveOutDir();
|
||||
const idx = url.pathname.indexOf("/_image");
|
||||
if (idx > 0) {
|
||||
src = src.slice(idx);
|
||||
}
|
||||
if (!URL.canParse("." + src, outDirURL)) {
|
||||
return void 0;
|
||||
}
|
||||
const fileUrl = new URL("." + src, outDirURL);
|
||||
if (fileUrl.protocol !== "file:") {
|
||||
return void 0;
|
||||
}
|
||||
if (!isParentDirectory(fileURLToPath(outDirURL), fileURLToPath(fileUrl))) {
|
||||
return void 0;
|
||||
}
|
||||
try {
|
||||
return await readFile(fileUrl);
|
||||
} catch {
|
||||
return void 0;
|
||||
}
|
||||
}
|
||||
const GET = async ({ request }) => {
|
||||
try {
|
||||
return await handleImageRequest({ request, loadLocalImage });
|
||||
} catch (err) {
|
||||
console.error("Could not process image request:", err);
|
||||
return new Response("Internal Server Error", {
|
||||
status: 500
|
||||
});
|
||||
}
|
||||
};
|
||||
function resolveOutDir() {
|
||||
const serverDirPath = fileURLToPath(serverDir);
|
||||
const rel = path.relative(serverDirPath, fileURLToPath(outDir));
|
||||
const serverFolder = path.basename(serverDirPath);
|
||||
let serverEntryFolderURL = path.dirname(import.meta.url);
|
||||
while (!serverEntryFolderURL.endsWith(serverFolder)) {
|
||||
serverEntryFolderURL = path.dirname(serverEntryFolderURL);
|
||||
}
|
||||
const serverEntryURL = serverEntryFolderURL + "/entry.mjs";
|
||||
const outDirURL = new URL(appendForwardSlash(rel), serverEntryURL);
|
||||
return outDirURL;
|
||||
}
|
||||
function appendForwardSlash(pth) {
|
||||
return pth.endsWith("/") ? pth : pth + "/";
|
||||
}
|
||||
export {
|
||||
GET
|
||||
};
|
||||
Reference in New Issue
Block a user