From 9c058e453d176e6cd0da1c88a21a65e850cb1f2d Mon Sep 17 00:00:00 2001 From: Daniel Nalborczyk Date: Thu, 30 Dec 2021 13:19:43 -0500 Subject: [PATCH] refactor: convert utils.transform to async function --- src/utils/transform.ts | 47 ++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/src/utils/transform.ts b/src/utils/transform.ts index 5821d636a07..f9eab38a9a3 100644 --- a/src/utils/transform.ts +++ b/src/utils/transform.ts @@ -21,7 +21,7 @@ import { decodedSourcemap } from './decodedSourcemap'; import { augmentCodeLocation, errNoTransformMapOrAstWithoutCode } from './error'; import { throwPluginError } from './pluginUtils'; -export default function transform( +export default async function transform( source: SourceDescription, module: Module, pluginDriver: PluginDriver, @@ -37,7 +37,7 @@ export default function transform( const emittedFiles: EmittedFile[] = []; let customTransformCache = false; const useCustomTransformCache = () => (customTransformCache = true); - let curPlugin: Plugin; + let curPlugin: Plugin | undefined; const curSource: string = source.code; function transformReducer( @@ -77,8 +77,10 @@ export default function transform( return code; } - return pluginDriver - .hookReduceArg0( + let code: string; + + try { + code = await pluginDriver.hookReduceArg0( 'transform', [curSource, id], transformReducer, @@ -149,23 +151,24 @@ export default function transform( } }; } - ) - .catch(err => throwPluginError(err, curPlugin.name, { hook: 'transform', id })) - .then(code => { - if (!customTransformCache) { - // files emitted by a transform hook need to be emitted again if the hook is skipped - if (emittedFiles.length) module.transformFiles = emittedFiles; - } + ); + } catch (err: any) { + throwPluginError(err, curPlugin?.name ?? 'Plugin unknown', { hook: 'transform', id }); + } + + if (!customTransformCache) { + // files emitted by a transform hook need to be emitted again if the hook is skipped + if (emittedFiles.length) module.transformFiles = emittedFiles; + } - return { - ast, - code, - customTransformCache, - meta: module.info.meta, - originalCode, - originalSourcemap, - sourcemapChain, - transformDependencies - }; - }); + return { + ast, + code, + customTransformCache, + meta: module.info.meta, + originalCode, + originalSourcemap, + sourcemapChain, + transformDependencies + }; }