Skip to content

Commit

Permalink
change requireResolve schema
Browse files Browse the repository at this point in the history
  • Loading branch information
vikr01 committed Oct 24, 2018
1 parent e1d0c8e commit e0deb9e
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 6 deletions.
18 changes: 16 additions & 2 deletions tests/src/rules/no-unresolved.js
Expand Up @@ -75,6 +75,12 @@ function runResolverTests(resolver) {
, options: [{ requireResolve: true }]}),
rest({ code: 'require.resolve("./does-not-exist")'
, options: [{ requireResolve: false }]}),
rest({ code: 'require.resolve("./bar")'
, options: [{ commonjs: false, requireResolve: { commonjs: true } }]}),
rest({ code: 'require.resolve("./does-not-exist")'
, options: [{ requireResolve: { commonjs: false } }]}),
rest({ code: 'require.resolve("./does-not-exist")'
, options: [{ requireResolve: {} }]}),
rest({ code: 'require.resolve("./does-not-exist")' }),

// stress tests
Expand Down Expand Up @@ -191,15 +197,23 @@ function runResolverTests(resolver) {
// requireResolve setting
rest({
code: 'var bar = require.resolve("./baz")',
options: [{ requireResolve: true }],
options: [{ commonjs: true, requireResolve: true }],
errors: [{
message: "Unable to resolve path to module './baz'.",
type: 'Literal',
}],
}),
rest({
code: 'require.resolve("./baz")',
options: [{ requireResolve: true }],
options: [{ commonjs: true, requireResolve: true }],
errors: [{
message: "Unable to resolve path to module './baz'.",
type: 'Literal',
}],
}),
rest({
code: 'var bar = require.resolve("./baz")',
options: [{ requireResolve: { commonjs: true } }],
errors: [{
message: "Unable to resolve path to module './baz'.",
type: 'Literal',
Expand Down
28 changes: 24 additions & 4 deletions utils/moduleVisitor.js
Expand Up @@ -80,7 +80,7 @@ exports.default = function visitModules(visitor, options) {
}
}

function checkRequireResolve(call) {
function checkCommonRequireResolve(call) {
if (call.callee.type !== 'MemberExpression') return
if (call.callee.object.name !== 'require') return
if (call.callee.property.name !== 'resolve') return
Expand Down Expand Up @@ -110,11 +110,21 @@ exports.default = function visitModules(visitor, options) {
}
}

if (options.requireResolve) {
const requireResolve = {}
if(typeof options.requireResolve === 'boolean') {
Object.assign(requireResolve, {
commonjs: options.commonjs && options.requireResolve,
})
}
else if(options.requireResolve) {
Object.assign(requireResolve, options.requireResolve)
}

if (requireResolve.commonjs) {
const currentCallExpression = visitors['CallExpression']
visitors['CallExpression'] = function (call) {
if (currentCallExpression) currentCallExpression(call)
checkRequireResolve(call)
checkCommonRequireResolve(call)
}
}

Expand All @@ -132,7 +142,17 @@ function makeOptionsSchema(additionalProperties) {
'commonjs': { 'type': 'boolean' },
'amd': { 'type': 'boolean' },
'esmodule': { 'type': 'boolean' },
'requireResolve': { 'type': 'boolean' },
'requireResolve': {
'oneOf': [
{ 'type': 'boolean' },
{
'type': 'object',
'properties': {
'commonjs': { 'type': 'boolean' },
},
},
],
},
'ignore': {
'type': 'array',
'minItems': 1,
Expand Down

0 comments on commit e0deb9e

Please sign in to comment.