Skip to content

Commit

Permalink
closes #1293. allows aliases that start with @ to be caught as internal
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffshaver committed Feb 21, 2019
1 parent bdc05aa commit f2da641
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
21 changes: 11 additions & 10 deletions src/core/importType.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ function constant(value) {
return () => value
}

function baseModule(name) {
if (isScoped(name)) {
function baseModule(name, path) {
if (isScoped(name, path)) {
const [scope, pkg] = name.split('/')
return `${scope}/${pkg}`
}
Expand All @@ -21,8 +21,8 @@ export function isAbsolute(name) {
return name.indexOf('/') === 0
}

export function isBuiltIn(name, settings) {
const base = baseModule(name)
export function isBuiltIn(name, settings, path) {
const base = baseModule(name, path)
const extras = (settings && settings['import/core-modules']) || []
return coreModules[base] || extras.indexOf(base) > -1
}
Expand All @@ -39,21 +39,22 @@ function isExternalModule(name, settings, path) {

const externalModuleMainRegExp = /^[\w]((?!\/).)*$/
export function isExternalModuleMain(name, settings, path) {
return externalModuleMainRegExp.test(name) && isExternalPath(path, name, settings)
return (externalModuleMainRegExp.test(name) && isExternalPath(path, name, settings))
}

const scopedRegExp = /^@[^/]+\/[^/]+/
function isScoped(name) {
return scopedRegExp.test(name)
function isScoped(name, settings, path) {
return scopedRegExp.test(name) && isExternalPath(path, name, settings)
}

const scopedMainRegExp = /^@[^/]+\/?[^/]+$/
export function isScopedMain(name) {
return scopedMainRegExp.test(name)
export function isScopedMain(name, settings, path) {
return scopedMainRegExp.test(name) && isExternalPath(path, settings, name)
}

function isInternalModule(name, settings, path) {
return externalModuleRegExp.test(name) && !isExternalPath(path, name, settings)
const matchesScopedOrExternal = scopedRegExp.test(name) || externalModuleRegExp.test(name)
return (matchesScopedOrExternal&& !isExternalPath(path, name, settings))
}

function isRelativeToParent(name) {
Expand Down
Empty file added tests/files/@my-alias/fn.js
Empty file.
5 changes: 5 additions & 0 deletions tests/src/core/importType.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ describe('importType(name)', function () {
expect(importType('importType', pathContext)).to.equal('internal')
})

it("should return 'internal' for internal modules that are referenced by aliases", function () {
const pathContext = testContext({ 'import/resolver': { node: { paths: [path.join(__dirname, '..', '..', 'files')] } } })
expect(importType('@my-alias/fn', pathContext)).to.equal('internal')
})

it("should return 'parent' for internal modules that go through the parent", function() {
expect(importType('../foo', context)).to.equal('parent')
expect(importType('../../foo', context)).to.equal('parent')
Expand Down

0 comments on commit f2da641

Please sign in to comment.