putout 22.3.0 → 22.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ChangeLog CHANGED
@@ -1,3 +1,11 @@
1
+ 2021.11.30, v22.3.1
2
+
3
+ feature:
4
+ - validate-options: improve support of rules, match
5
+ - (putout) validate-options: improve validations: ignore, processors
6
+ - (putout) validate-options: add descriptions
7
+
8
+
1
9
  2021.11.30, v22.3.0
2
10
 
3
11
  feature:
@@ -16,9 +16,18 @@ module.exports.validateOptions = (options) => {
16
16
  const [error] = validate.errors || [];
17
17
 
18
18
  if (error)
19
- throw Error(`.putout.json: ${parsePath(error)}${parseAdditional(error)}${parseMessage(error)}`);
19
+ throw Error(`.putout.json: ${parsePath(error)}${parseAdditional(error)}${parseMessage(error)}${parseAllowed(error)}`);
20
20
  };
21
21
 
22
+ function parseAllowed(error) {
23
+ const {allowedValues} = error.params;
24
+
25
+ if (!allowedValues)
26
+ return '';
27
+
28
+ return ` (${allowedValues.join('/')})`;
29
+ }
30
+
22
31
  function parseMessage(error) {
23
32
  return error.message.replace(',', ' or ');
24
33
  }
@@ -2,32 +2,197 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "type": "object",
4
4
  "additionalProperties": false,
5
+ "definitions": {
6
+ "rule": {
7
+ "oneOf": [{
8
+ "description": "🐊Putout rule\n\n\"off\" means rule is off\n\"on\" means it is a on\n",
9
+ "enum": [ "on", "off"]
10
+ }, {
11
+ "type": "array",
12
+ "items": [{
13
+ "enum": [ "on", "off"]
14
+ }, {
15
+ "type": "object"
16
+ }],
17
+ "minItems": 2,
18
+ "additionalItems": false
19
+ }]
20
+ },
21
+ "rules": {
22
+ "description": "🐊Putout comes with a large number of rules. You can modify which rules your project uses.",
23
+ "type": "object",
24
+ "properties": {
25
+ "add-return-await": {"$ref": "#/definitions/rule"},
26
+ "apply-array-at": {"$ref": "#/definitions/rule"},
27
+ "apply-as-type-assertions": {"$ref": "#/definitions/rule"},
28
+ "apply-destructuring": {"$ref": "#/definitions/rule"},
29
+ "apply-early-return": {"$ref": "#/definitions/rule"},
30
+ "apply-if-condition": {"$ref": "#/definitions/rule"},
31
+ "apply-is-array": {"$ref": "#/definitions/rule"},
32
+ "apply-montag": {"$ref": "#/definitions/rule"},
33
+ "apply-nullish-coalescing": {"$ref": "#/definitions/rule"},
34
+ "apply-numeric-separators": {"$ref": "#/definitions/rule"},
35
+ "apply-optional-chaining": {"$ref": "#/definitions/rule"},
36
+ "apply-shorthand-properties": {"$ref": "#/definitions/rule"},
37
+ "apply-top-level-await": {"$ref": "#/definitions/rule"},
38
+ "apply-try-catch": {"$ref": "#/definitions/rule"},
39
+ "apply-utility-types": {"$ref": "#/definitions/rule"},
40
+ "browserlist": {"$ref": "#/definitions/rule"},
41
+ "cloudcmd": {"$ref": "#/definitions/rule"},
42
+ "convert-any-to-primitive": {"$ref": "#/definitions/rule"},
43
+ "convert-apply-to-spread": {"$ref": "#/definitions/rule"},
44
+ "convert-arguments-to-rest": {"$ref": "#/definitions/rule"},
45
+ "convert-array-copy-to-slice": {"$ref": "#/definitions/rule"},
46
+ "convert-assignment-to-arrow-function": {"$ref": "#/definitions/rule"},
47
+ "convert-assignment-to-comparison": {"$ref": "#/definitions/rule"},
48
+ "convert-bitwise-to-logical": {"$ref": "#/definitions/rule"},
49
+ "convert-commonjs-to-esm": {"$ref": "#/definitions/rule"},
50
+ "convert-comparison-to-boolean": {"$ref": "#/definitions/rule"},
51
+ "convert-concat-to-flat": {"$ref": "#/definitions/rule"},
52
+ "convert-equal-to-strict-equal": {"$ref": "#/definitions/rule"},
53
+ "convert-esm-to-commonjs": {"$ref": "#/definitions/rule"},
54
+ "convert-for-each-to-for-of": {"$ref": "#/definitions/rule"},
55
+ "convert-for-in-to-for-of": {"$ref": "#/definitions/rule"},
56
+ "convert-for-to-for-of": {"$ref": "#/definitions/rule"},
57
+ "convert-generic-to-shorthand": {"$ref": "#/definitions/rule"},
58
+ "convert-index-of-to-includes": {"$ref": "#/definitions/rule"},
59
+ "convert-is-nan-to-number-is-nan": {"$ref": "#/definitions/rule"},
60
+ "convert-map-to-for-of": {"$ref": "#/definitions/rule"},
61
+ "convert-math-pow": {"$ref": "#/definitions/rule"},
62
+ "convert-mock-require-to-mock-import": {"$ref": "#/definitions/rule"},
63
+ "convert-object-assign-to-merge-spread": {"$ref": "#/definitions/rule"},
64
+ "convert-quotes-to-backticks": {"$ref": "#/definitions/rule"},
65
+ "convert-spread-to-array-from": {"$ref": "#/definitions/rule"},
66
+ "convert-template-to-string": {"$ref": "#/definitions/rule"},
67
+ "convert-throw": {"$ref": "#/definitions/rule"},
68
+ "convert-to-arrow-function": {"$ref": "#/definitions/rule"},
69
+ "convert-top-level-return": {"$ref": "#/definitions/rule"},
70
+ "convert-typeof-to-is-type": {"$ref": "#/definitions/rule"},
71
+ "convert-while-to-for-of": {"$ref": "#/definitions/rule"},
72
+ "declare-undefined-variables": {"$ref": "#/definitions/rule"},
73
+ "eslint": {"$ref": "#/definitions/rule"},
74
+ "extract-object-properties": {"$ref": "#/definitions/rule"},
75
+ "extract-sequence-expressions": {"$ref": "#/definitions/rule"},
76
+ "github": {"$ref": "#/definitions/rule"},
77
+ "gitignore": {"$ref": "#/definitions/rule"},
78
+ "jest": {"$ref": "#/definitions/rule"},
79
+ "madrun": {"$ref": "#/definitions/rule"},
80
+ "merge-destructuring-properties": {"$ref": "#/definitions/rule"},
81
+ "merge-duplicate-imports": {"$ref": "#/definitions/rule"},
82
+ "merge-if-statements": {"$ref": "#/definitions/rule"},
83
+ "nodejs": {"$ref": "#/definitions/rule"},
84
+ "npmignore": {"$ref": "#/definitions/rule"},
85
+ "package-json": {"$ref": "#/definitions/rule"},
86
+ "postcss": {"$ref": "#/definitions/rule"},
87
+ "promises": {"$ref": "#/definitions/rule"},
88
+ "putout": {"$ref": "#/definitions/rule"},
89
+ "putout-config": {"$ref": "#/definitions/rule"},
90
+ "react-hooks": {"$ref": "#/definitions/rule"},
91
+ "regexp": {"$ref": "#/definitions/rule"},
92
+ "remove-boolean-from-assertions": {"$ref": "#/definitions/rule"},
93
+ "remove-boolean-from-logical-expressions": {"$ref": "#/definitions/rule"},
94
+ "remove-console": {"$ref": "#/definitions/rule"},
95
+ "remove-constant-conditions": {"$ref": "#/definitions/rule"},
96
+ "remove-debugger": {"$ref": "#/definitions/rule"},
97
+ "remove-double-negations": {"$ref": "#/definitions/rule"},
98
+ "remove-duplicate-case": {"$ref": "#/definitions/rule"},
99
+ "remove-duplicate-interface-keys": {"$ref": "#/definitions/rule"},
100
+ "remove-duplicate-keys": {"$ref": "#/definitions/rule"},
101
+ "remove-duplicates-from-logical-expressions": {"$ref": "#/definitions/rule"},
102
+ "remove-duplicates-from-union": {"$ref": "#/definitions/rule"},
103
+ "remove-empty": {"$ref": "#/definitions/rule"},
104
+ "remove-empty-pattern": {"$ref": "#/definitions/rule"},
105
+ "remove-iife": {"$ref": "#/definitions/rule"},
106
+ "remove-nested-blocks": {"$ref": "#/definitions/rule"},
107
+ "remove-only": {"$ref": "#/definitions/rule"},
108
+ "remove-process-exit": {"$ref": "#/definitions/rule"},
109
+ "remove-skip": {"$ref": "#/definitions/rule"},
110
+ "remove-undeclared-properties": {"$ref": "#/definitions/rule"},
111
+ "remove-unreachable-code": {"$ref": "#/definitions/rule"},
112
+ "remove-unreferenced-variables": {"$ref": "#/definitions/rule"},
113
+ "remove-unused-expressions": {"$ref": "#/definitions/rule"},
114
+ "remove-unused-for-of-variables": {"$ref": "#/definitions/rule"},
115
+ "remove-unused-private-fields": {"$ref": "#/definitions/rule"},
116
+ "remove-unused-types": {"$ref": "#/definitions/rule"},
117
+ "remove-unused-variables": {"$ref": "#/definitions/rule"},
118
+ "remove-useless-arguments": {"$ref": "#/definitions/rule"},
119
+ "remove-useless-array-constructor": {"$ref": "#/definitions/rule"},
120
+ "remove-useless-array-from": {"$ref": "#/definitions/rule"},
121
+ "remove-useless-async": {"$ref": "#/definitions/rule"},
122
+ "remove-useless-await": {"$ref": "#/definitions/rule"},
123
+ "remove-useless-conditions": {"$ref": "#/definitions/rule"},
124
+ "remove-useless-constructor": {"$ref": "#/definitions/rule"},
125
+ "remove-useless-continue": {"$ref": "#/definitions/rule"},
126
+ "remove-useless-escape": {"$ref": "#/definitions/rule"},
127
+ "remove-useless-for-of": {"$ref": "#/definitions/rule"},
128
+ "remove-useless-functions": {"$ref": "#/definitions/rule"},
129
+ "remove-useless-map": {"$ref": "#/definitions/rule"},
130
+ "remove-useless-mapped-types": {"$ref": "#/definitions/rule"},
131
+ "remove-useless-mapping-modifiers": {"$ref": "#/definitions/rule"},
132
+ "remove-useless-new": {"$ref": "#/definitions/rule"},
133
+ "remove-useless-operand": {"$ref": "#/definitions/rule"},
134
+ "remove-useless-return": {"$ref": "#/definitions/rule"},
135
+ "remove-useless-spread": {"$ref": "#/definitions/rule"},
136
+ "remove-useless-template-expressions": {"$ref": "#/definitions/rule"},
137
+ "remove-useless-templates": {"$ref": "#/definitions/rule"},
138
+ "remove-useless-type-conversion": {"$ref": "#/definitions/rule"},
139
+ "remove-useless-typeof": {"$ref": "#/definitions/rule"},
140
+ "remove-useless-types": {"$ref": "#/definitions/rule"},
141
+ "remove-useless-types-from-constants": {"$ref": "#/definitions/rule"},
142
+ "remove-useless-variables": {"$ref": "#/definitions/rule"},
143
+ "reuse-duplicate-init": {"$ref": "#/definitions/rule"},
144
+ "simplify-assignment": {"$ref": "#/definitions/rule"},
145
+ "simplify-logical-expressions": {"$ref": "#/definitions/rule"},
146
+ "simplify-ternary": {"$ref": "#/definitions/rule"},
147
+ "split-nested-destructuring": {"$ref": "#/definitions/rule"},
148
+ "split-variable-declarations": {"$ref": "#/definitions/rule"},
149
+ "strict-mode": {"$ref": "#/definitions/rule"},
150
+ "tape": {"$ref": "#/definitions/rule"},
151
+ "travis": {"$ref": "#/definitions/rule"},
152
+ "webpack": {"$ref": "#/definitions/rule"}
153
+ }
154
+ }
155
+ },
5
156
  "properties": {
6
157
  "parser": {
158
+ "description": "Tell 🐊Putout which parser to use",
7
159
  "type": "string"
8
160
  },
9
161
  "formatter": {
162
+ "description": "Choose the way to show information about errors found",
10
163
  "type": ["string", "array"]
11
164
  },
12
165
  "processors": {
166
+ "description": "Tell 🐊Putout which processors to use to support file types other then JavaScript",
13
167
  "type": "array",
14
- "uniqueItems": true
168
+ "uniqueItems": true,
169
+ "items": {
170
+ "type": "string"
171
+ }
15
172
  },
16
173
  "ignore": {
174
+ "description": "Tell 🐊Putout to ignore specific files and directories.",
17
175
  "type": "array",
18
- "uniqueItems": true
176
+ "uniqueItems": true,
177
+ "items": {
178
+ "type": "string"
179
+ }
19
180
  },
20
181
  "match": {
21
- "type": "object"
182
+ "description": "Allows to match rules for files and folders, specified by glob patterns.",
183
+ "type": "object",
184
+ "patternProperties": {
185
+ "^.*$": {
186
+ "$ref": "#/definitions/rules"
187
+ },
188
+ "additionalProperties": false
189
+ }
22
190
  },
23
191
  "plugins": {
24
- "description": "List of plugins to load",
192
+ "description": "Tell 🐊Putout which plugins to load",
25
193
  "type": "array",
26
194
  "uniqueItems": true
27
195
  },
28
- "rules": {
29
- "description": "Names list of rules",
30
- "type": "object"
31
- }
196
+ "rules": {"$ref": "#/definitions/rules"}
32
197
  }
33
198
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "putout",
3
- "version": "22.3.0",
3
+ "version": "22.3.1",
4
4
  "author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
5
5
  "description": "🐊 Pluggable and configurable code transformer with built-in eslint, babel plugins and jscodeshift codemods support of js, jsx typescript, flow files, markdown, yaml and json",
6
6
  "homepage": "http://github.com/coderaiser/putout",