// @ts-check import fs from "node:fs"; import path from "node:path"; import { findUpSync } from 'find-up' import findCacheDir from "find-cache-dir"; import filterConfigs from "./filterConfigs.js"; export const sharp = await (async () => { return true })() export const supportedImageTypes = [ "avif", "jpeg", "jpg", "png", "webp", ...(sharp ? ["heic", "heif", "tiff", "gif"] : ["jxl", "wp2"]), ]; // prettier-ignore export const supportedConfigs = [ "src", "alt", "tag", "content", "sizes", "preload", "loading", "decoding", "attributes", "layout", "placeholder", "breakpoints", "objectFit", "objectPosition", "backgroundSize", "backgroundPosition", "format", "fallbackFormat", "includeSourceFormat", "formatOptions", "fadeInTransition", "artDirectives", "flip", "flop", "invert", "flatten", "normalize", "grayscale", "hue", "saturation", "brightness", "w", "h", "ar", "width", "height", "aspect", "background", "tint", "blur", "median", "rotate", "quality", "fit", "kernel", "position", "cacheDir", "assetFileNames", ]; const configFile = findUpSync([ "astro-imagetools.config.js", "astro-imagetools.config.mjs", ]) const configFunction = configFile ? await import(configFile).catch(async () => await import( /* @vite-ignore */ "/" + configFile)) : null const rawGlobalConfigOptions = configFunction?.default ?? {} const NonGlobalConfigOptions = ["src", "alt", "content"] const GlobalConfigs = supportedConfigs.filter( (key) => !NonGlobalConfigOptions.includes(key) ); const GlobalConfigOptions = filterConfigs( "Global", rawGlobalConfigOptions, GlobalConfigs ) export { GlobalConfigOptions } export const cwd = process.cwd().split(path.sep).join(path.posix.sep) const { cacheDir } = GlobalConfigOptions const fsCachePath = (cacheDir ? cwd + cacheDir : findCacheDir({ name: "astro-imagetools", })) + "/" fs.existsSync(fsCachePath) || fs.mkdirSync(fsCachePath, { recursive: true }); export { fsCachePath }