Big update!Announcing Socket for GitHub 1.0. Learn more
Socket
BlogLoveFAQ
Install
Log in

jest-validate

Package Overview
Dependencies
6
Maintainers
6
Versions
192
Issues
File Explorer

Advanced tools

jest-validate

Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.

    28.1.3latest

Version published
Maintainers
6
Weekly downloads
19,952,624
increased by1.64%

Weekly downloads

Changelog

Source

28.1.3

Features

  • [jest-leak-detector] Use native FinalizationRegistry when it exists to get rid of external C dependency (#12973)

Fixes

  • [jest-changed-files] Fix a lock-up after repeated invocations (#12757)
  • [@jest/expect-utils] Fix deep equality of ImmutableJS OrderedSets (#12977)
  • [jest-mock] Add index signature support for spyOn types (#13013, #13020)
  • [jest-snapshot] Fix indentation of awaited inline snapshots (#12986)

Chore & Maintenance

  • [*] Replace internal usage of pretty-format/ConvertAnsi with jest-serializer-ansi-escapes (#12935, #13004)
  • [docs] Update spyOn docs (#13000)

Readme

Source

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

import {validate} from 'jest-validate'; validate(config, validationOptions); // => {hasDeprecationWarnings: boolean, isValid: boolean}

Where ValidationOptions are:

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:

validate(config, {exampleConfig});

Example with slight modifications:

validate(config, { comment: ' Documentation: http://custom-docs.com', deprecatedConfig, exampleConfig, 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

Example validating multiple types

import {multipleValidOptions} from 'jest-validate'; validate(config, { // `bar` will accept either a string or a number bar: multipleValidOptions('string is ok', 2), });
Error:
● 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:

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

FAQs

What is jest-validate?

Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.

Is jest-validate popular?

The npm package jest-validate receives a total of 16,230,816 weekly downloads. As such, jest-validate popularity was classified as popular.

Is jest-validate well maintained?

We found that jest-validate demonstrated a healthy version release cadence and project activity. It has 6 open source maintainers collaborating on the project.

Last updated on 13 Jul 2022
Socket

Product

Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc