From 97b0ac41acb32cf301dbb4110243d9607d99f8a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Sun, 9 Jun 2019 23:56:29 +0200 Subject: [PATCH] Add error callback to amd interop --- .../test/fixtures/amd/module/output.js | 2 +- .../test/fixtures/amd/no-interop/output.js | 2 +- .../test/fixtures/amd/script/output.js | 2 +- .../amd/with-other-import-export/output.js | 2 +- .../src/index.js | 14 +++++++++----- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/module/output.js b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/module/output.js index 1d7d6ca24973..e0d86f169580 100644 --- a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/module/output.js +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/module/output.js @@ -1,5 +1,5 @@ define(["require"], function (_require) { "use strict"; - var modP = new Promise(_resolve => _require(["mod"], imported => _resolve(babelHelpers.interopRequireWildcard(imported)))); + var modP = new Promise((_resolve, _reject) => _require(["mod"], imported => _resolve(babelHelpers.interopRequireWildcard(imported)), _reject)); }); diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/no-interop/output.js b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/no-interop/output.js index 60e8ffd0b56c..96dab9dce6f7 100644 --- a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/no-interop/output.js +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/no-interop/output.js @@ -1,3 +1,3 @@ define(["require"], function (_require) { - var modP = new Promise(_resolve => _require(["mod"], imported => _resolve(imported))); + var modP = new Promise((_resolve, _reject) => _require(["mod"], imported => _resolve(imported), _reject)); }); diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/script/output.js b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/script/output.js index e34deeb43422..0b8b11e86a92 100644 --- a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/script/output.js +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/script/output.js @@ -1,3 +1,3 @@ define(["require"], function (_require) { - var modP = new Promise(_resolve => _require(["mod"], imported => _resolve(babelHelpers.interopRequireWildcard(imported)))); + var modP = new Promise((_resolve, _reject) => _require(["mod"], imported => _resolve(babelHelpers.interopRequireWildcard(imported)), _reject)); }); diff --git a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/with-other-import-export/output.js b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/with-other-import-export/output.js index 97badd6c0f91..d5871c47383f 100644 --- a/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/with-other-import-export/output.js +++ b/packages/babel-plugin-proposal-dynamic-import/test/fixtures/amd/with-other-import-export/output.js @@ -8,5 +8,5 @@ define(["require", "exports", "foo"], function (_require, _exports, _foo) { _foo = babelHelpers.interopRequireDefault(_foo); var mod; _exports.mod = mod; - new Promise(_resolve => _require(["mod"], imported => _resolve(babelHelpers.interopRequireWildcard(imported)))).then(m => _exports.mod = mod = m); + new Promise((_resolve, _reject) => _require(["mod"], imported => _resolve(babelHelpers.interopRequireWildcard(imported)), _reject)).then(m => _exports.mod = mod = m); }); diff --git a/packages/babel-plugin-transform-modules-amd/src/index.js b/packages/babel-plugin-transform-modules-amd/src/index.js index 2118ad5e9035..f69a8ee8d621 100644 --- a/packages/babel-plugin-transform-modules-amd/src/index.js +++ b/packages/babel-plugin-transform-modules-amd/src/index.js @@ -49,14 +49,16 @@ export default declare((api, options) => { if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return; if (!path.get("callee").isImport()) return; - let { requireId, resolveId } = state; + let { requireId, resolveId, rejectId } = state; if (!requireId) { requireId = path.scope.generateUidIdentifier("require"); state.requireId = requireId; } - if (!resolveId) { + if (!resolveId || !rejectId) { resolveId = path.scope.generateUidIdentifier("resolve"); + rejectId = path.scope.generateUidIdentifier("reject"); state.resolveId = resolveId; + state.rejectId = rejectId; } let result = t.identifier("imported"); @@ -64,9 +66,11 @@ export default declare((api, options) => { path.replaceWith( template.expression.ast` - new Promise((${resolveId}) => - ${requireId}([${path.node.arguments[0]}], imported => - ${resolveId}(${result}) + new Promise((${resolveId}, ${rejectId}) => + ${requireId}( + [${path.node.arguments[0]}], + imported => ${resolveId}(${result}), + ${rejectId} ) )`, );