aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-validate/README.md
diff options
context:
space:
mode:
authorJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
committerJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
commit080c5819d87b933816d724a83f3bf4f1686770a7 (patch)
tree4a2ccc68b27edf7d4cbc586c932cc7542b655e19 /node_modules/jest-validate/README.md
parent5ac7049a9d30733165cc212dee308163c2a14644 (diff)
parentd003b82235a9329f912522a2f70aa950dfce4998 (diff)
downloadLYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.tar.gz
LYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.zip
Merge branch 'master' of https://github.com/JoelHMikael/FoodJS
Updating remote changes
Diffstat (limited to 'node_modules/jest-validate/README.md')
-rw-r--r--node_modules/jest-validate/README.md196
1 files changed, 196 insertions, 0 deletions
diff --git a/node_modules/jest-validate/README.md b/node_modules/jest-validate/README.md
new file mode 100644
index 0000000..2406bd5
--- /dev/null
+++ b/node_modules/jest-validate/README.md
@@ -0,0 +1,196 @@
+# jest-validate
+
+Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.
+
+```bash
+npm install --save jest-validate
+```
+
+## Usage
+
+```js
+import {validate} from 'jest-validate';
+
+validate(config, validationOptions); // => {hasDeprecationWarnings: boolean, isValid: boolean}
+```
+
+Where `ValidationOptions` are:
+
+```ts
+type ValidationOptions = {
+ comment?: string;
+ condition?: (option: unknown, validOption: unknown) => boolean;
+ deprecate?: (
+ config: Record<string, unknown>,
+ option: string,
+ deprecatedOptions: DeprecatedOptions,
+ options: ValidationOptions,
+ ) => boolean;
+ deprecatedConfig?: DeprecatedOptions;
+ error?: (
+ option: string,
+ received: unknown,
+ defaultValue: unknown,
+ options: ValidationOptions,
+ path?: Array<string>,
+ ) => void;
+ exampleConfig: Record<string, unknown>;
+ recursive?: boolean;
+ recursiveBlacklist?: Array<string>;
+ recursiveDenylist?: Array<string>;
+ title?: Title;
+ unknown?: (
+ config: Record<string, unknown>,
+ exampleConfig: Record<string, unknown>,
+ option: string,
+ options: ValidationOptions,
+ path?: Array<string>,
+ ) => 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
+
+- `recursiveDenylist` – optional array of string keyPaths that should be excluded from deep (recursive) validation.
+- `comment` – optional string to be rendered below 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.
+- `recursive` - optional boolean determining whether recursively compare `exampleConfig` to `config` (default: `true`).
+- `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.
+
+## exampleConfig syntax
+
+`exampleConfig` should be an object with key/value pairs that contain an example of a valid value for each key. A configuration value is considered valid when:
+
+- it matches the JavaScript type of the example value, e.g. `string`, `number`, `array`, `boolean`, `function`, or `object`
+- it is `null` or `undefined`
+- it matches the Javascript type of any of arguments passed to `MultipleValidOptions(...)`
+
+The last condition is a special syntax that allows validating where more than one type is permissible; see example below. It's acceptable to have multiple values of the same type in the example, so you can also use this syntax to provide more than one example. When a validation failure occurs, the error message will show all other values in the array as examples.
+
+## Examples
+
+Minimal example:
+
+```js
+validate(config, {exampleConfig});
+```
+
+Example with slight modifications:
+
+```js
+validate(config, {
+ comment: ' Documentation: http://custom-docs.com',
+ deprecatedConfig,
+ exampleConfig,
+ title: {
+ deprecation: 'Custom Deprecation',
+ // leaving 'error' and 'warning' as default
+ },
+});
+```
+
+This will output:
+
+#### Warning:
+
+```bash
+● 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:
+
+```bash
+● Validation Error:
+
+ Option transform must be of type:
+ object
+ but instead received:
+ string
+
+ Example:
+ {
+ "transform": {
+ "\\.js$": "<rootDir>/preprocessor.js"
+ }
+ }
+
+ Documentation: http://custom-docs.com
+```
+
+## Example validating multiple types
+
+```js
+import {multipleValidOptions} from 'jest-validate';
+
+validate(config, {
+ // `bar` will accept either a string or a number
+ bar: multipleValidOptions('string is ok', 2),
+});
+```
+
+#### Error:
+
+```bash
+● Validation Error:
+
+ Option foo must be of type:
+ string or number
+ but instead received:
+ array
+
+ Example:
+ {
+ "bar": "string is ok"
+ }
+
+ or
+
+ {
+ "bar": 2
+ }
+
+ Documentation: http://custom-docs.com
+```
+
+#### Deprecation
+
+Based on `deprecatedConfig` object with proper deprecation messages. Note custom title:
+
+```bash
+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
+```