PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` import fs from "fs"; import { join } from "path"; import { URL, fileURLToPath } from "url"; import { minify } from "terser"; // eslint-disable-line import/no-extraneous-dependencies const HELPERS_FOLDER = new URL("../src/helpers", import.meta.url); const IGNORED_FILES = new Set(["package.json"]); export default async function generateHelpers() { let output = `/* * This file is auto-generated! Do not modify it directly. * To re-generate run 'yarn gulp generate-runtime-helpers' */ import template from "@babel/template"; function helper(minVersion: string, source: string) { return Object.freeze({ minVersion, ast: () => template.program.ast(source, { preserveComments: true }), }) } export default Object.freeze({ `; for (const file of (await fs.promises.readdir(HELPERS_FOLDER)).sort()) { if (IGNORED_FILES.has(file)) continue; if (file.startsWith(".")) continue; // ignore e.g. vim swap files const [helperName] = file.split("."); const filePath = join(fileURLToPath(HELPERS_FOLDER), file); if (!file.endsWith(".js")) { console.error("ignoring", filePath); continue; } const fileContents = await fs.promises.readFile(filePath, "utf8"); const minVersionMatch = fileContents.match( /^\s*\/\*\s*@minVersion\s+(?\S+)\s*\*\/\s*$/m ); if (!minVersionMatch) { throw new Error(`@minVersion number missing in ${filePath}`); } const { minVersion } = minVersionMatch.groups; const source = await minify(fileContents, { mangle: false, // The _typeof helper has a custom directive that we must keep compress: { directives: false }, }); output += `\ ${JSON.stringify(helperName)}: helper( ${JSON.stringify(minVersion)}, ${JSON.stringify(source.code)}, ), `; } output += "});"; return output; }