UNPKG

4.21 kBJavaScriptView Raw
1'use strict'
2const fs = require('fs')
3const path = require('path')
4const _ = require('lodash')
5const rules = fs.readdirSync(path.resolve(__dirname, 'rules')).map(f => f.replace(/\.js$/, ''))
6const recommended = {
7 plugins: ['lodash'],
8 rules: {
9 'lodash/callback-binding': 2,
10 'lodash/chain-style': [2, 'as-needed'],
11 'lodash/chaining': 2,
12 'lodash/collection-method-value': 2,
13 'lodash/collection-ordering': 2,
14 'lodash/collection-return': 2,
15 'lodash/consistent-compose': [2, 'flow'],
16 'lodash/identity-shorthand': [2, 'always'],
17 'lodash/import-scope': [2],
18 'lodash/matches-prop-shorthand': [2, 'always'],
19 'lodash/matches-shorthand': [2, 'always', 3],
20 'lodash/no-commit': 2,
21 'lodash/no-double-unwrap': 2,
22 'lodash/no-extra-args': 2,
23 'lodash/no-unbound-this': 2,
24 'lodash/path-style': [2, 'string'],
25 'lodash/prefer-compact': 2,
26 'lodash/prefer-constant': 2,
27 'lodash/prefer-filter': [2, 3],
28 'lodash/prefer-find': 2,
29 'lodash/prefer-flat-map': 2,
30 'lodash/prefer-get': [2, 3],
31 'lodash/prefer-immutable-method': 2,
32 'lodash/prefer-includes': [2, {includeNative: true}],
33 'lodash/prefer-invoke-map': 2,
34 'lodash/prefer-is-nil': 2,
35 'lodash/prefer-lodash-chain': 2,
36 'lodash/prefer-lodash-method': 2,
37 'lodash/prefer-lodash-typecheck': 2,
38 'lodash/prefer-map': 2,
39 'lodash/prefer-matches': [2, 3],
40 'lodash/prefer-noop': 2,
41 'lodash/prefer-over-quantifier': 2,
42 'lodash/prefer-reject': [2, 3],
43 'lodash/prefer-some': [2, {includeNative: true}],
44 'lodash/prefer-startswith': 2,
45 'lodash/prefer-thru': 2,
46 'lodash/prefer-times': 2,
47 'lodash/prefer-wrapper-method': 2,
48 'lodash/preferred-alias': 2,
49 'lodash/prop-shorthand': [2, 'always'],
50 'lodash/unwrap': 2
51 }
52}
53module.exports = {
54 rules: _.zipObject(rules, rules.map(rule => require(`./rules/${rule}`))),
55 configs: {
56 recommended,
57 canonical: _.defaultsDeep({
58 settings: {lodash: {pragma: '_'}},
59 rules: {
60 'lodash/import-scope': [2, 'full']
61 }
62 }, recommended),
63 v3: {
64 settings: {
65 lodash: {
66 version: 3,
67 pragma: '_'
68 }
69 },
70 rules: {
71 'lodash/callback-binding': 2,
72 'lodash/chain-style': [2, 'as-needed'],
73 'lodash/chaining': [2, 'implicit'],
74 'lodash/collection-method-value': 2,
75 'lodash/collection-return': 2,
76 'lodash/consistent-compose': [2, 'flow'],
77 'lodash/import-scope': [2, 'full'],
78 'lodash/identity-shorthand': [2, 'always'],
79 'lodash/matches-prop-shorthand': [2, 'always'],
80 'lodash/matches-shorthand': [2, 'always', 3],
81 'lodash/no-commit': 2,
82 'lodash/no-double-unwrap': 2,
83 'lodash/no-extra-args': 2,
84 'lodash/path-style': [2, 'string'],
85 'lodash/prefer-compact': 2,
86 'lodash/prefer-constant': 2,
87 'lodash/prefer-filter': [2, 3],
88 'lodash/prefer-get': [2, 3],
89 'lodash/prefer-includes': [2, {includeNative: true}],
90 'lodash/prefer-lodash-chain': 2,
91 'lodash/prefer-lodash-method': 2,
92 'lodash/prefer-lodash-typecheck': 2,
93 'lodash/prefer-map': 2,
94 'lodash/prefer-matches': [2, 3],
95 'lodash/prefer-noop': 2,
96 'lodash/prefer-reject': [2, 3],
97 'lodash/prefer-some': [2, {includeNative: true}],
98 'lodash/prefer-startswith': 2,
99 'lodash/prefer-thru': 2,
100 'lodash/prefer-times': 2,
101 'lodash/prefer-wrapper-method': 2,
102 'lodash/preferred-alias': 2,
103 'lodash/prop-shorthand': [2, 'always'],
104 'lodash/unwrap': 2
105 }
106 }
107 }
108}