import fs from "node:fs"; import path from "node:path"; import { fileURLToPath, pathToFileURL } from "node:url"; import { prependForwardSlash, slash } from "../../core/path.js"; import { imageMetadata } from "./metadata.js"; async function emitESMImage(id, watchMode, fileEmitter) { if (!id) { return void 0; } const url = pathToFileURL(id); const meta = await imageMetadata(url); if (!meta) { return void 0; } if (!watchMode) { const pathname = decodeURI(url.pathname); const filename = path.basename(pathname, path.extname(pathname) + `.${meta.format}`); const handle = fileEmitter({ name: filename, source: await fs.promises.readFile(url), type: "asset" }); meta.src = `__ASTRO_ASSET_IMAGE__${handle}__`; } else { url.searchParams.append("origWidth", meta.width.toString()); url.searchParams.append("origHeight", meta.height.toString()); url.searchParams.append("origFormat", meta.format); meta.src = `/@fs` + prependForwardSlash(fileURLToNormalizedPath(url)); } return meta; } function fileURLToNormalizedPath(filePath) { return slash(fileURLToPath(filePath) + filePath.search).replace(/\\/g, "/"); } export { emitESMImage };