import https from "https"; import fs from "fs"; import path from "path"; const fontasticDownloadURI = "https://file.myfontastic.com/Fd33ifaooDVpESwnDXETgR/icons.css"; // i tried the zip dl unfortunately its auth protected so have to hack our way into the resources const downloadFileTo = async (uri, path) => { return new Promise((resolve) => { const file = fs.createWriteStream(path); https.get(uri, (res) => { res.pipe(file); file.on("finish", () => { file.close(); console.log(`downloaded: ${uri}`); resolve(); }); }); }); }; async function main() { const tmpIconsCss = "./scripts/icons.css"; const iconsFolder = "./src/icons/"; await downloadFileTo(fontasticDownloadURI, tmpIconsCss); // works const cssFile = fs.readFileSync(tmpIconsCss, "utf-8"); const matches = cssFile.matchAll(/url\(.*?\)/gi); const [url] = matches.next().value; const fileVersion = url.split("/").pop().split(".")[0]; const exts = ["eot", "woff", "ttf", "svg"]; for (const ext of exts) { const uri = `https://file.myfontastic.com/Fd33ifaooDVpESwnDXETgR/fonts/${fileVersion}.${ext}`; await downloadFileTo(uri, path.join(iconsFolder, `fonts/tea-icons.${ext}`)); } const newCssFile = cssFile .replaceAll("https://file.myfontastic.com/Fd33ifaooDVpESwnDXETgR/", "") .replaceAll(fileVersion, "tea-icons"); await fs.writeFileSync(path.join(iconsFolder, "icons.css"), newCssFile, { encoding: "utf-8" }); } main();