From 6559f687821324dfa3a88c0445ea14ee059f72c7 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Sat, 10 Apr 2021 07:02:13 +0200 Subject: [PATCH] Do not fail when returning null or undefined from an async options hook (#4039) --- src/rollup/rollup.ts | 7 +++--- test/function/samples/aync-options/_config.js | 25 +++++++++++++++++++ test/function/samples/aync-options/main.js | 1 + 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 test/function/samples/aync-options/_config.js create mode 100644 test/function/samples/aync-options/main.js diff --git a/src/rollup/rollup.ts b/src/rollup/rollup.ts index c3dffad1299..86519eb5439 100644 --- a/src/rollup/rollup.ts +++ b/src/rollup/rollup.ts @@ -122,13 +122,14 @@ function applyOptionHook(watchMode: boolean) { inputOptions: Promise, plugin: Plugin ): Promise => { - if (plugin.options) + if (plugin.options) { return ( - (plugin.options.call( + ((await plugin.options.call( { meta: { rollupVersion, watchMode } }, await inputOptions - ) as GenericConfigObject) || inputOptions + )) as GenericConfigObject) || inputOptions ); + } return inputOptions; }; diff --git a/test/function/samples/aync-options/_config.js b/test/function/samples/aync-options/_config.js new file mode 100644 index 00000000000..31fa811ee27 --- /dev/null +++ b/test/function/samples/aync-options/_config.js @@ -0,0 +1,25 @@ +const assert = require('assert'); + +module.exports = { + description: 'handles async plugin options', + options: { + preserveEntrySignatures: false, + plugins: [ + { + options(options) { + assert.strictEqual(options.preserveEntrySignatures, false); + return Promise.resolve({ ...options, preserveEntrySignatures: 'strict' }); + } + }, + { + options(options) { + assert.strictEqual(options.preserveEntrySignatures, 'strict'); + return Promise.resolve(null); + } + } + ] + }, + exports(exports) { + assert.strictEqual(exports.foo, 1); + } +}; diff --git a/test/function/samples/aync-options/main.js b/test/function/samples/aync-options/main.js new file mode 100644 index 00000000000..bb1843d113a --- /dev/null +++ b/test/function/samples/aync-options/main.js @@ -0,0 +1 @@ +export const foo = 1;