import fs from "node:fs/promises" import { posix as path, join, resolve } from "node:path" import { fsCachePath } from "../../utils/runtimeChecks.js"; //import { sync as copy } from "@polymech/fs/copy" import { sync as exists } from "@polymech/fs/exists" import { sync as mkdir } from "@polymech/fs/dir" import { createLogger } from "@polymech/log" const logger = createLogger("imagetools:integration") const copied = []; let assetsDirExists; export async function saveAndCopyAsset( hash, image, buffer, outDir, assetsDir, assetPath, isSsrBuild ) { const src = resolve(join(fsCachePath,hash)) const dest = join(outDir, isSsrBuild ? "/client" : "", assetPath) assetsDir = join(outDir, isSsrBuild ? "/client" : "/", assetsDir) if (copied.includes(assetPath)) return if(!exists(src)){ logger.error(`imagetools : saveAndCopyAsset : ${src} does not exist`) return false } mkdir(assetsDir) 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) }