From 0bc30275542f699a5056764fe5ad746ac70073de Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Wed, 23 May 2018 19:48:05 -0700 Subject: [PATCH] Add a promise version of each of Babel's transform functions. --- packages/babel-core/src/index.js | 16 ++++++++++++---- packages/babel-core/src/parse.js | 12 ++++++++++++ packages/babel-core/src/transform-ast.js | 13 +++++++++++++ packages/babel-core/src/transform-file.js | 12 ++++++++++++ packages/babel-core/src/transform.js | 12 ++++++++++++ 5 files changed, 61 insertions(+), 4 deletions(-) diff --git a/packages/babel-core/src/index.js b/packages/babel-core/src/index.js index 975a82226e..075351715a 100644 --- a/packages/babel-core/src/index.js +++ b/packages/babel-core/src/index.js @@ -17,10 +17,18 @@ export { createConfigItem } from "./config/item"; export { loadPartialConfig, loadOptions } from "./config"; -export { transform, transformSync } from "./transform"; -export { transformFile, transformFileSync } from "./transform-file"; -export { transformFromAst, transformFromAstSync } from "./transform-ast"; -export { parse, parseSync } from "./parse"; +export { transform, transformSync, transformAsync } from "./transform"; +export { + transformFile, + transformFileSync, + transformFileAsync, +} from "./transform-file"; +export { + transformFromAst, + transformFromAstSync, + transformFromAstAsync, +} from "./transform-ast"; +export { parse, parseSync, parseAsync } from "./parse"; /** * Recommended set of compilable extensions. Not used in @babel/core directly, but meant as diff --git a/packages/babel-core/src/parse.js b/packages/babel-core/src/parse.js index 679a4f7c7d..ef905efb1f 100644 --- a/packages/babel-core/src/parse.js +++ b/packages/babel-core/src/parse.js @@ -70,3 +70,15 @@ export function parseSync( return normalizeFile(config.passes, normalizeOptions(config), code).ast; } + +export function parseAsync( + code: string, + opts?: InputOptions, +): Promise { + return new Promise((res, rej) => { + parse(code, opts, (err, result) => { + if (err == null) res(result); + else rej(err); + }); + }); +} diff --git a/packages/babel-core/src/transform-ast.js b/packages/babel-core/src/transform-ast.js index 9097a4e72e..62cef671e3 100644 --- a/packages/babel-core/src/transform-ast.js +++ b/packages/babel-core/src/transform-ast.js @@ -71,3 +71,16 @@ export function transformFromAstSync( return runSync(config, code, ast); } + +export function transformFromAstAsync( + ast: AstRoot, + code: string, + opts: ?InputOptions, +): Promise { + return new Promise((res, rej) => { + transformFromAst(ast, code, opts, (err, result) => { + if (err == null) res(result); + else rej(err); + }); + }); +} diff --git a/packages/babel-core/src/transform-file.js b/packages/babel-core/src/transform-file.js index b44f502cc6..1011bd8a4d 100644 --- a/packages/babel-core/src/transform-file.js +++ b/packages/babel-core/src/transform-file.js @@ -73,3 +73,15 @@ export function transformFileSync( return runSync(config, fs.readFileSync(filename, "utf8")); } + +export function transformFileAsync( + filename: string, + opts: ?InputOptions, +): Promise { + return new Promise((res, rej) => { + transformFile(filename, opts, (err, result) => { + if (err == null) res(result); + else rej(err); + }); + }); +} diff --git a/packages/babel-core/src/transform.js b/packages/babel-core/src/transform.js index 4a5ce0f8c8..11a8ad5c0c 100644 --- a/packages/babel-core/src/transform.js +++ b/packages/babel-core/src/transform.js @@ -53,3 +53,15 @@ export function transformSync( return runSync(config, code); } + +export function transformAsync( + code: string, + opts: ?InputOptions, +): Promise { + return new Promise((res, rej) => { + transform(code, opts, (err, result) => { + if (err == null) res(result); + else rej(err); + }); + }); +}