IOweb/node_modules/@iconify/tools/lib/download/api/download.mjs
2026-07-03 15:07:38 -05:00

24 lines
808 B
JavaScript

import { writeFile } from 'fs/promises';
import { fetchCallbacks, axiosConfig } from './config.mjs';
import { getFetch } from './fetch.mjs';
async function downloadFile(query, target) {
const params = query.params ? query.params.toString() : "";
const url = query.uri + (params ? "?" + params : "");
const headers = query.headers;
fetchCallbacks.onStart?.(url, query);
const fetch = getFetch();
const response = await fetch(url, {
...axiosConfig,
headers
});
if (response.status !== 200) {
fetchCallbacks.onError?.(url, query, response.status);
throw new Error(`Error downloading ${url}: ${response.status}`);
}
const data = await response.arrayBuffer();
fetchCallbacks.onSuccess?.(url, query);
await writeFile(target, Buffer.from(data));
}
export { downloadFile };