4
4
*/
5
5
'use strict' ;
6
6
7
- const path = require ( 'path' ) ;
8
-
9
7
//------------------------------------------------------------------------------
10
8
// Rule Definition
11
9
//------------------------------------------------------------------------------
12
10
13
11
module . exports = function ( context ) {
14
12
// Trim required module names
15
- const requiredModules = context . options ;
13
+ const options = context . options [ 0 ] ;
14
+ const requiredModules = options ? Object . keys ( options ) . map ( ( x ) => {
15
+ return [ x , new RegExp ( options [ x ] ) ] ;
16
+ } ) : [ ] ;
16
17
const isESM = context . parserOptions . sourceType === 'module' ;
17
18
18
19
const foundModules = [ ] ;
@@ -46,14 +47,10 @@ module.exports = function(context) {
46
47
* @returns {undefined|String } required module name or undefined
47
48
*/
48
49
function getRequiredModuleName ( str ) {
49
- if ( str === '../common/index.mjs' ) {
50
- return 'common' ;
51
- }
52
-
53
- const value = path . basename ( str ) ;
54
-
55
- // Check if value is in required modules array
56
- return requiredModules . indexOf ( value ) !== - 1 ? value : undefined ;
50
+ const match = requiredModules . find ( ( [ , test ] ) => {
51
+ return test . test ( str ) ;
52
+ } ) ;
53
+ return match ? match [ 0 ] : undefined ;
57
54
}
58
55
59
56
/**
@@ -75,9 +72,9 @@ module.exports = function(context) {
75
72
'Program:exit' ( node ) {
76
73
if ( foundModules . length < requiredModules . length ) {
77
74
const missingModules = requiredModules . filter (
78
- ( module ) => foundModules . indexOf ( module ) === - 1
75
+ ( [ module ] ) => foundModules . indexOf ( module ) === - 1
79
76
) ;
80
- missingModules . forEach ( ( moduleName ) => {
77
+ missingModules . forEach ( ( [ moduleName ] ) => {
81
78
context . report (
82
79
node ,
83
80
'Mandatory module "{{moduleName}}" must be loaded.' ,
@@ -110,10 +107,11 @@ module.exports = function(context) {
110
107
return rules ;
111
108
} ;
112
109
113
- module . exports . schema = {
114
- 'type' : 'array' ,
115
- 'additionalItems' : {
116
- 'type' : 'string'
117
- } ,
118
- 'uniqueItems' : true
110
+ module . exports . meta = {
111
+ schema : [ {
112
+ 'type' : 'object' ,
113
+ 'additionalProperties' : {
114
+ 'type' : 'string'
115
+ } ,
116
+ } ] ,
119
117
} ;
0 commit comments