diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:31:11 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:31:11 +0800 |
| commit | aa773172311dcada759dfbaac485f4bc6e00bc21 (patch) | |
| tree | ca6d9a5eff3ab8f689f9acb4f0df791d9486813d /node_modules/@babel/helpers/scripts | |
| parent | c5a5384e846f242e901e859fe600d695d8990a9a (diff) | |
added babel
Diffstat (limited to 'node_modules/@babel/helpers/scripts')
3 files changed, 128 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 00000000..e2a31886 --- /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 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+(?<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: { keep_fnames: true }, + // 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/generate-regenerator-runtime.js b/node_modules/@babel/helpers/scripts/generate-regenerator-runtime.js new file mode 100644 index 00000000..34a46d63 --- /dev/null +++ b/node_modules/@babel/helpers/scripts/generate-regenerator-runtime.js @@ -0,0 +1,63 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +import fs from "fs"; +import { createRequire } from "module"; + +const [parse, generate] = await Promise.all([ + import("@babel/parser").then(ns => ns.parse), + import("@babel/generator").then(ns => ns.default.default || ns.default), +]).catch(error => { + console.error(error); + throw new Error( + "Before running generate-helpers.js you must compile @babel/parser and @babel/generator.", + { cause: error } + ); +}); + +const REGENERATOR_RUNTIME_IN_FILE = fs.readFileSync( + createRequire(import.meta.url).resolve("regenerator-runtime"), + "utf8" +); + +const MIN_VERSION = "7.18.0"; + +const HEADER = `/* @minVersion ${MIN_VERSION} */ +/* + * This file is auto-generated! Do not modify it directly. + * To re-generate, update the regenerator-runtime dependency of + * @babel/helpers and run 'yarn gulp generate-runtime-helpers'. + */ + +/* eslint-disable */ +`; + +const COPYRIGHT = `/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */`; + +export default function generateRegeneratorRuntimeHelper() { + const ast = parse(REGENERATOR_RUNTIME_IN_FILE, { sourceType: "script" }); + + const factoryFunction = ast.program.body[0].declarations[0].init.callee; + factoryFunction.type = "FunctionDeclaration"; + factoryFunction.id = { type: "Identifier", name: "_regeneratorRuntime" }; + factoryFunction.params = []; + factoryFunction.body.body.unshift( + ...stmts(` + ${COPYRIGHT} + _regeneratorRuntime = function () { return exports; }; + var exports = {}; + `) + ); + + const { code } = generate({ + type: "ExportDefaultDeclaration", + declaration: factoryFunction, + }); + + return HEADER + code; +} + +function stmts(code) { + return parse(`function _() { ${code} }`, { + sourceType: "script", + }).program.body[0].body.body; +} diff --git a/node_modules/@babel/helpers/scripts/package.json b/node_modules/@babel/helpers/scripts/package.json new file mode 100644 index 00000000..5ffd9800 --- /dev/null +++ b/node_modules/@babel/helpers/scripts/package.json @@ -0,0 +1 @@ +{ "type": "module" } |
