Skip to content

Commit

Permalink
[new] order: add internal-regex setting for marking packages as int…
Browse files Browse the repository at this point in the history
…ernal
  • Loading branch information
Librazy committed Sep 29, 2019
1 parent 5e143b2 commit 9b6def1
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
4 changes: 4 additions & 0 deletions README.md
Expand Up @@ -402,6 +402,10 @@ settings:
[`eslint_d`]: https://www.npmjs.com/package/eslint_d
[`eslint-loader`]: https://www.npmjs.com/package/eslint-loader

#### `import/internal-regex`

A regex for packages should be treated as internal.


## SublimeLinter-eslint

Expand Down
3 changes: 2 additions & 1 deletion src/core/importType.js
Expand Up @@ -54,8 +54,9 @@ export function isScopedMain(name) {
}

function isInternalModule(name, settings, path) {
const internalScope = (settings && settings['import/internal-regex'])
const matchesScopedOrExternalRegExp = scopedRegExp.test(name) || externalModuleRegExp.test(name)
return (matchesScopedOrExternalRegExp && !isExternalPath(path, name, settings))
return (matchesScopedOrExternalRegExp && (internalScope && new RegExp(internalScope).test(name) || !isExternalPath(path, name, settings)))
}

function isRelativeToParent(name) {
Expand Down
12 changes: 11 additions & 1 deletion tests/src/core/importType.js
Expand Up @@ -51,7 +51,7 @@ describe('importType(name)', function () {
const pathContext = testContext({ 'import/resolver': { node: { paths: [pathToTestFiles] } } })
expect(importType('@importType/index', pathContext)).to.equal('internal')
})

it("should return 'internal' for internal modules that are referenced by aliases", function () {
const pathContext = testContext({ 'import/resolver': { node: { paths: [pathToTestFiles] } } })
expect(importType('@my-alias/fn', pathContext)).to.equal('internal')
Expand Down Expand Up @@ -130,6 +130,16 @@ describe('importType(name)', function () {
expect(importType('resolve', foldersContext)).to.equal('internal')
})

it("should return 'internal' for module from 'node_modules' if its name matched 'internal-regex'", function() {
const foldersContext = testContext({ 'import/internal-regex': '^@org' })
expect(importType('@org/foobar', foldersContext)).to.equal('internal')
})

it("should return 'external' for module from 'node_modules' if its name did not match 'internal-regex'", function() {
const foldersContext = testContext({ 'import/internal-regex': '^@bar' })
expect(importType('@org/foobar', foldersContext)).to.equal('external')
})

it("should return 'external' for module from 'node_modules' if 'node_modules' contained in 'external-module-folders'", function() {
const foldersContext = testContext({ 'import/external-module-folders': ['node_modules'] })
expect(importType('resolve', foldersContext)).to.equal('external')
Expand Down

0 comments on commit 9b6def1

Please sign in to comment.