Skip to content

Commit 1388a8d

Browse files
Change line endings.
1 parent dfc381c commit 1388a8d

File tree

1 file changed

+129
-129
lines changed

1 file changed

+129
-129
lines changed

Diff for: src/rules/no-extraneous-dependencies.js

+129-129
Original file line numberDiff line numberDiff line change
@@ -1,129 +1,129 @@
1-
import path from 'path'
2-
import readPkgUp from 'read-pkg-up'
3-
import minimatch from 'minimatch'
4-
import importType from '../core/importType'
5-
import isStaticRequire from '../core/staticRequire'
6-
7-
function getDependencies(context) {
8-
try {
9-
const pkg = readPkgUp.sync({cwd: context.getFilename(), normalize: false})
10-
if (!pkg || !pkg.pkg) {
11-
return null
12-
}
13-
const packageContent = pkg.pkg
14-
return {
15-
dependencies: packageContent.dependencies || {},
16-
devDependencies: packageContent.devDependencies || {},
17-
optionalDependencies: packageContent.optionalDependencies || {},
18-
peerDependencies: packageContent.peerDependencies || {},
19-
}
20-
} catch (e) {
21-
return null
22-
}
23-
}
24-
25-
function missingErrorMessage(packageName) {
26-
return `'${packageName}' should be listed in the project's dependencies. ` +
27-
`Run 'npm i -S ${packageName}' to add it`
28-
}
29-
30-
function devDepErrorMessage(packageName) {
31-
return `'${packageName}' should be listed in the project's dependencies, not devDependencies.`
32-
}
33-
34-
function optDepErrorMessage(packageName) {
35-
return `'${packageName}' should be listed in the project's dependencies, ` +
36-
`not optionalDependencies.`
37-
}
38-
39-
function reportIfMissing(context, deps, depsOptions, node, name) {
40-
if (importType(name, context) !== 'external') {
41-
return
42-
}
43-
const splitName = name.split('/')
44-
const packageName = splitName[0][0] === '@'
45-
? splitName.slice(0, 2).join('/')
46-
: splitName[0]
47-
const isInDeps = deps.dependencies[packageName] !== undefined
48-
const isInDevDeps = deps.devDependencies[packageName] !== undefined
49-
const isInOptDeps = deps.optionalDependencies[packageName] !== undefined
50-
const isInPeerDeps = deps.peerDependencies[packageName] !== undefined
51-
52-
if (isInDeps ||
53-
(depsOptions.allowDevDeps && isInDevDeps) ||
54-
(depsOptions.allowPeerDeps && isInPeerDeps) ||
55-
(depsOptions.allowOptDeps && isInOptDeps)
56-
) {
57-
return
58-
}
59-
60-
if (isInDevDeps && !depsOptions.allowDevDeps) {
61-
context.report(node, devDepErrorMessage(packageName))
62-
return
63-
}
64-
65-
if (isInOptDeps && !depsOptions.allowOptDeps) {
66-
context.report(node, optDepErrorMessage(packageName))
67-
return
68-
}
69-
70-
context.report(node, missingErrorMessage(packageName))
71-
}
72-
73-
function testConfig(config, filename) {
74-
// Simplest configuration first, either a boolean or nothing.
75-
if (typeof config === 'boolean' || typeof config === 'undefined') {
76-
return config
77-
}
78-
// Array of globs.
79-
return config.some(c => (
80-
minimatch(filename, c) ||
81-
minimatch(filename, path.join(process.cwd(), c))
82-
))
83-
}
84-
85-
module.exports = {
86-
meta: {
87-
docs: {},
88-
89-
schema: [
90-
{
91-
'type': 'object',
92-
'properties': {
93-
'devDependencies': { 'type': ['boolean', 'array'] },
94-
'optionalDependencies': { 'type': ['boolean', 'array'] },
95-
'peerDependencies': { 'type': ['boolean', 'array'] },
96-
},
97-
'additionalProperties': false,
98-
},
99-
],
100-
},
101-
102-
create: function (context) {
103-
const options = context.options[0] || {}
104-
const filename = context.getFilename()
105-
const deps = getDependencies(context)
106-
107-
if (!deps) {
108-
return {}
109-
}
110-
111-
const depsOptions = {
112-
allowDevDeps: testConfig(options.devDependencies, filename) !== false,
113-
allowOptDeps: testConfig(options.optionalDependencies, filename) !== false,
114-
allowPeerDeps: testConfig(options.peerDependencies, filename) !== false,
115-
}
116-
117-
// todo: use module visitor from module-utils core
118-
return {
119-
ImportDeclaration: function (node) {
120-
reportIfMissing(context, deps, depsOptions, node, node.source.value)
121-
},
122-
CallExpression: function handleRequires(node) {
123-
if (isStaticRequire(node)) {
124-
reportIfMissing(context, deps, depsOptions, node, node.arguments[0].value)
125-
}
126-
},
127-
}
128-
},
129-
}
1+
import path from 'path'
2+
import readPkgUp from 'read-pkg-up'
3+
import minimatch from 'minimatch'
4+
import importType from '../core/importType'
5+
import isStaticRequire from '../core/staticRequire'
6+
7+
function getDependencies(context) {
8+
try {
9+
const pkg = readPkgUp.sync({cwd: context.getFilename(), normalize: false})
10+
if (!pkg || !pkg.pkg) {
11+
return null
12+
}
13+
const packageContent = pkg.pkg
14+
return {
15+
dependencies: packageContent.dependencies || {},
16+
devDependencies: packageContent.devDependencies || {},
17+
optionalDependencies: packageContent.optionalDependencies || {},
18+
peerDependencies: packageContent.peerDependencies || {},
19+
}
20+
} catch (e) {
21+
return null
22+
}
23+
}
24+
25+
function missingErrorMessage(packageName) {
26+
return `'${packageName}' should be listed in the project's dependencies. ` +
27+
`Run 'npm i -S ${packageName}' to add it`
28+
}
29+
30+
function devDepErrorMessage(packageName) {
31+
return `'${packageName}' should be listed in the project's dependencies, not devDependencies.`
32+
}
33+
34+
function optDepErrorMessage(packageName) {
35+
return `'${packageName}' should be listed in the project's dependencies, ` +
36+
`not optionalDependencies.`
37+
}
38+
39+
function reportIfMissing(context, deps, depsOptions, node, name) {
40+
if (importType(name, context) !== 'external') {
41+
return
42+
}
43+
const splitName = name.split('/')
44+
const packageName = splitName[0][0] === '@'
45+
? splitName.slice(0, 2).join('/')
46+
: splitName[0]
47+
const isInDeps = deps.dependencies[packageName] !== undefined
48+
const isInDevDeps = deps.devDependencies[packageName] !== undefined
49+
const isInOptDeps = deps.optionalDependencies[packageName] !== undefined
50+
const isInPeerDeps = deps.peerDependencies[packageName] !== undefined
51+
52+
if (isInDeps ||
53+
(depsOptions.allowDevDeps && isInDevDeps) ||
54+
(depsOptions.allowPeerDeps && isInPeerDeps) ||
55+
(depsOptions.allowOptDeps && isInOptDeps)
56+
) {
57+
return
58+
}
59+
60+
if (isInDevDeps && !depsOptions.allowDevDeps) {
61+
context.report(node, devDepErrorMessage(packageName))
62+
return
63+
}
64+
65+
if (isInOptDeps && !depsOptions.allowOptDeps) {
66+
context.report(node, optDepErrorMessage(packageName))
67+
return
68+
}
69+
70+
context.report(node, missingErrorMessage(packageName))
71+
}
72+
73+
function testConfig(config, filename) {
74+
// Simplest configuration first, either a boolean or nothing.
75+
if (typeof config === 'boolean' || typeof config === 'undefined') {
76+
return config
77+
}
78+
// Array of globs.
79+
return config.some(c => (
80+
minimatch(filename, c) ||
81+
minimatch(filename, path.join(process.cwd(), c))
82+
))
83+
}
84+
85+
module.exports = {
86+
meta: {
87+
docs: {},
88+
89+
schema: [
90+
{
91+
'type': 'object',
92+
'properties': {
93+
'devDependencies': { 'type': ['boolean', 'array'] },
94+
'optionalDependencies': { 'type': ['boolean', 'array'] },
95+
'peerDependencies': { 'type': ['boolean', 'array'] },
96+
},
97+
'additionalProperties': false,
98+
},
99+
],
100+
},
101+
102+
create: function (context) {
103+
const options = context.options[0] || {}
104+
const filename = context.getFilename()
105+
const deps = getDependencies(context)
106+
107+
if (!deps) {
108+
return {}
109+
}
110+
111+
const depsOptions = {
112+
allowDevDeps: testConfig(options.devDependencies, filename) !== false,
113+
allowOptDeps: testConfig(options.optionalDependencies, filename) !== false,
114+
allowPeerDeps: testConfig(options.peerDependencies, filename) !== false,
115+
}
116+
117+
// todo: use module visitor from module-utils core
118+
return {
119+
ImportDeclaration: function (node) {
120+
reportIfMissing(context, deps, depsOptions, node, node.source.value)
121+
},
122+
CallExpression: function handleRequires(node) {
123+
if (isStaticRequire(node)) {
124+
reportIfMissing(context, deps, depsOptions, node, node.arguments[0].value)
125+
}
126+
},
127+
}
128+
},
129+
}

0 commit comments

Comments
 (0)