diff --git a/src/ExportMap.js b/src/ExportMap.js index e18797a4d7..d6e64f5da6 100644 --- a/src/ExportMap.js +++ b/src/ExportMap.js @@ -438,7 +438,7 @@ ExportMap.parse = function (path, content, context) { const namespaces = new Map(); function remotePath(value) { - return resolve.relative(value, path, context.settings); + return resolve.relative(value, path, context.settings, context); } function resolveImport(value) { @@ -534,7 +534,7 @@ ExportMap.parse = function (path, content, context) { if (tsConfigInfo.tsConfigPath !== undefined) { // Projects not using TypeScript won't have `typescript` installed. if (!ts) { ts = require('typescript'); } - + const configFile = ts.readConfigFile(tsConfigInfo.tsConfigPath, ts.sys.readFile); return ts.parseJsonConfigFileContent( configFile.config, diff --git a/tests/files/foo-bar-resolver-no-version.js b/tests/files/foo-bar-resolver-no-version.js index f00198562e..6cf68e6c05 100644 --- a/tests/files/foo-bar-resolver-no-version.js +++ b/tests/files/foo-bar-resolver-no-version.js @@ -1,12 +1,14 @@ -var path = require('path') - -exports.resolveImport = function (modulePath, sourceFile, config) { - var sourceFileName = path.basename(sourceFile) - if (sourceFileName === 'foo.js') { - return path.join(__dirname, 'bar.jsx') - } - if (sourceFileName === 'exception.js') { - throw new Error('foo-bar-resolver-v1 resolveImport test exception') - } - return undefined; -} +var assert = require('assert') +var path = require('path') + +exports.resolveImport = function (modulePath, sourceFile, config, context) { + var sourceFileName = path.basename(sourceFile) + if (sourceFileName === 'foo.js') { + return path.join(__dirname, 'bar.jsx') + } + if (sourceFileName === 'exception.js') { + throw new Error('foo-bar-resolver-v1 resolveImport test exception') + } + assert.ok(context, 'the `context` must be presented') + return undefined; +} diff --git a/tests/files/foo-bar-resolver-v1.js b/tests/files/foo-bar-resolver-v1.js index af9da1b7a6..afca888d24 100644 --- a/tests/files/foo-bar-resolver-v1.js +++ b/tests/files/foo-bar-resolver-v1.js @@ -1,14 +1,16 @@ -var path = require('path') - -exports.resolveImport = function (modulePath, sourceFile, config) { - var sourceFileName = path.basename(sourceFile) - if (sourceFileName === 'foo.js') { - return path.join(__dirname, 'bar.jsx'); - } - if (sourceFileName === 'exception.js') { - throw new Error('foo-bar-resolver-v1 resolveImport test exception'); - } - return undefined; -}; - -exports.interfaceVersion = 1; +var assert = require('assert') +var path = require('path') + +exports.resolveImport = function (modulePath, sourceFile, config, context) { + var sourceFileName = path.basename(sourceFile) + if (sourceFileName === 'foo.js') { + return path.join(__dirname, 'bar.jsx'); + } + if (sourceFileName === 'exception.js') { + throw new Error('foo-bar-resolver-v1 resolveImport test exception'); + } + assert.ok(context, 'the `context` must be presented') + return undefined; +}; + +exports.interfaceVersion = 1; diff --git a/tests/files/foo-bar-resolver-v2.js b/tests/files/foo-bar-resolver-v2.js index 7f8bcc0f86..b01ceda3c8 100644 --- a/tests/files/foo-bar-resolver-v2.js +++ b/tests/files/foo-bar-resolver-v2.js @@ -1,14 +1,16 @@ -var path = require('path') - -exports.resolve = function (modulePath, sourceFile, config) { - var sourceFileName = path.basename(sourceFile) - if (sourceFileName === 'foo.js') { - return { found: true, path: path.join(__dirname, 'bar.jsx') } - } - if (sourceFileName === 'exception.js') { - throw new Error('foo-bar-resolver-v2 resolve test exception') - } - return { found: false }; -}; - -exports.interfaceVersion = 2; +var assert = require('assert') +var path = require('path') + +exports.resolve = function (modulePath, sourceFile, config, context) { + var sourceFileName = path.basename(sourceFile) + if (sourceFileName === 'foo.js') { + return { found: true, path: path.join(__dirname, 'bar.jsx') } + } + if (sourceFileName === 'exception.js') { + throw new Error('foo-bar-resolver-v2 resolve test exception') + } + assert.ok(context, 'the `context` must be presented') + return { found: false }; +}; + +exports.interfaceVersion = 2; diff --git a/utils/resolve.js b/utils/resolve.js index 4a35c6a472..ba29e610ac 100644 --- a/utils/resolve.js +++ b/utils/resolve.js @@ -79,11 +79,11 @@ exports.fileExistsWithCaseSync = function fileExistsWithCaseSync(filepath, cache return result; }; -function relative(modulePath, sourceFile, settings) { - return fullResolve(modulePath, sourceFile, settings).path; +function relative(modulePath, sourceFile, settings, context) { + return fullResolve(modulePath, sourceFile, settings, context).path; } -function fullResolve(modulePath, sourceFile, settings) { +function fullResolve(modulePath, sourceFile, settings, context) { // check if this is a bonus core module const coreSet = new Set(settings['import/core-modules']); if (coreSet.has(modulePath)) return { found: true, path: null }; @@ -104,7 +104,7 @@ function fullResolve(modulePath, sourceFile, settings) { function v1() { try { - const resolved = resolver.resolveImport(modulePath, sourceFile, config); + const resolved = resolver.resolveImport(modulePath, sourceFile, config, context); if (resolved === undefined) return { found: false }; return { found: true, path: resolved }; } catch (err) { @@ -113,7 +113,7 @@ function fullResolve(modulePath, sourceFile, settings) { } function v2() { - return resolver.resolve(modulePath, sourceFile, config); + return resolver.resolve(modulePath, sourceFile, config, context); } switch (resolver.interfaceVersion) { @@ -216,7 +216,7 @@ const erroredContexts = new Set(); */ function resolve(p, context) { try { - return relative(p, context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename(), context.settings); + return relative(p, context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename(), context.settings, context); } catch (err) { if (!erroredContexts.has(context)) { // The `err.stack` string starts with `err.name` followed by colon and `err.message`.