From 870b98222ea8f0f2a049de0a775956726fdc797a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 3 Jun 2021 22:06:59 +0200 Subject: [PATCH] Expose CJS proxy in `@babel/core` --- packages/babel-core/package.json | 4 ++++ packages/babel-core/proxy.cjs | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 packages/babel-core/proxy.cjs diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index adba85eb958a..2e4dbdde0a5b 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -4,6 +4,10 @@ "description": "Babel compiler core.", "type": "module", "main": "./lib/index.js", + "exports": { + "require": "./proxy.cjs", + "default": "./lib/index.js" + }, "author": "The Babel Team (https://babel.dev/team)", "license": "MIT", "publishConfig": { diff --git a/packages/babel-core/proxy.cjs b/packages/babel-core/proxy.cjs new file mode 100644 index 000000000000..799f00777c17 --- /dev/null +++ b/packages/babel-core/proxy.cjs @@ -0,0 +1,25 @@ +"use strict"; + +const babelP = import("./lib/index.js"); + +proxy("createConfigItem"); +proxy("loadPartialConfig"); +proxy("loadOptions"); +proxy("transform"); +proxy("transformFile"); +proxy("transformFromAst"); +proxy("parse"); + +function proxy(name) { + exports[`${name}Sync`] = () => { + throw new Error( + "Only async methods are supported when using `require()` to load `@babel/core`." + ); + }; + exports[`${name}Async`] = (...args) => + babelP.then(babel => babel[`${name}Async`](...args)); + exports[name] = (...args) => { + const cb = args.pop(); + babelP.then(babel => babel[name](...args, cb), cb); + }; +}