1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# jest-validate
Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.
```
npm install --save jest-validate
```
## Usage
```js
import {validate} from 'jest-validate';
validate(
config: Object,
options: ValidationOptions,
); // => {hasDeprecationWarnings: boolean, isValid: boolean}
```
Where `ValidationOptions` are:
```js
type ValidationOptions = {
comment?: string,
condition?: (option: any, validOption: any) => boolean,
deprecate?: (
config: Object,
option: string,
deprecatedOptions: Object,
options: ValidationOptions
) => true,
deprecatedConfig?: {[key: string]: Function},
error?: (
option: string,
received: any,
defaultValue: any,
options: ValidationOptions,
) => void,
exampleConfig: Object,
title?: Title,
unknown?: (
config: Object,
exampleConfig: Object,
option: string,
options: ValidationOptions
) => void,
}
type Title = {|
deprecation?: string,
error?: string,
warning?: string,
|}
```
`exampleConfig` is the only option required.
## API
By default `jest-validate` will print generic warning and error messages. You can however customize this behavior by providing `options: ValidationOptions` object as a second argument:
Almost anything can be overwritten to suite your needs.
### Options
* `comment` – optional string to be rendered bellow error/warning message.
* `condition` – an optional function with validation condition.
* `deprecate`, `error`, `unknown` – optional functions responsible for displaying warning and error messages.
* `deprecatedConfig` – optional object with deprecated config keys.
* `exampleConfig` – the only **required** option with configuration against which you'd like to test.
* `title` – optional object of titles for errors and messages.
You will find examples of `condition`, `deprecate`, `error`, `unknown`, and `deprecatedConfig` inside source of this repository, named respectively.
## Examples
Minimal example:
```js
validate(config, {exampleConfig});
```
Example with slight modifications:
```js
validate(config, {
comment: ' Documentation: http://custom-docs.com',
exampleConfig,
deprecatedConfig,
title: {
deprecation: 'Custom Deprecation',
// leaving 'error' and 'warning' as default
}
});
```
This will output:
#### Warning:
```
● Validation Warning:
Unknown option transformx with value "<rootDir>/node_modules/babel-jest" was found.
This is either a typing error or a user mistake. Fixing it will remove this message.
Documentation: http://custom-docs.com
```
#### Error:
```
● Validation Error:
Option transform must be of type:
object
but instead received:
string
Example:
{
"transform": {"^.+\\.js$": "<rootDir>/preprocessor.js"}
}
Documentation: http://custom-docs.com
```
#### Deprecation
Based on `deprecatedConfig` object with proper deprecation messages. Note custom title:
```
Custom Deprecation:
Option scriptPreprocessor was replaced by transform, which support multiple preprocessors.
Jest now treats your current configuration as:
{
"transform": {".*": "xxx"}
}
Please update your configuration.
Documentation: http://custom-docs.com
```
|