This repository has been archived on 2025-12-24. You can view files and clone it, but cannot push or open issues or pull requests.
site-template/packages/imagetoolsNew/integration/utils/saveAndCopyAsset.js
2025-03-07 14:59:06 +01:00

35 lines
961 B
JavaScript

import fs from "node:fs/promises";
import { posix as path } from "node:path";
import { fsCachePath } from "../../utils/runtimeChecks.js";
import { sync as mkdir } from "@polymech/fs/dir"
const copied = []
export async function saveAndCopyAsset(
hash,
image,
buffer,
outDir,
assetsDir,
assetPath,
isSsrBuild
) {
debugger
const src = fsCachePath + hash
const dest = path.join(outDir, isSsrBuild ? "/client" : "", assetPath)
assetsDir = path.join(outDir, isSsrBuild ? "/client" : "/", assetsDir)
if (copied.includes(assetPath)) return
mkdir(assetsDir)
console.log("Copying", src, "to", dest)
await fs.copyFile(src, dest).catch(async (error) => {
if (error.code === "ENOENT") {
const imageBuffer = buffer || (await image.toBuffer());
await Promise.all(
[src, dest].map(async (dir) => {
await fs.writeFile(dir, imageBuffer);
})
);
} else throw error;
})
copied.push(assetPath)
}