diff options
Diffstat (limited to 'node_modules/@babel/helpers/scripts')
-rw-r--r-- | node_modules/@babel/helpers/scripts/generate-helpers.js | 64 | ||||
-rw-r--r-- | node_modules/@babel/helpers/scripts/package.json | 1 |
2 files changed, 65 insertions, 0 deletions
diff --git a/node_modules/@babel/helpers/scripts/generate-helpers.js b/node_modules/@babel/helpers/scripts/generate-helpers.js new file mode 100644 index 0000000..1c59746 --- /dev/null +++ b/node_modules/@babel/helpers/scripts/generate-helpers.js @@ -0,0 +1,64 @@ +import fs from "fs"; +import { join } from "path"; +import { URL, fileURLToPath } from "url"; +import { minify } from "terser"; // eslint-disable-line + +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, source) { + return Object.freeze({ + minVersion, + ast: () => template.program.ast(source), + }) +} + +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+(?<minVersion>\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; +} diff --git a/node_modules/@babel/helpers/scripts/package.json b/node_modules/@babel/helpers/scripts/package.json new file mode 100644 index 0000000..5ffd980 --- /dev/null +++ b/node_modules/@babel/helpers/scripts/package.json @@ -0,0 +1 @@ +{ "type": "module" } |