npm install --save-dev valimock @faker-js/faker
yarn add -D valimock @faker-js/faker
Import and optionally configure a new instance of the Valimock
class, then pass along your valibot
schema to mock()
, that's it!
import { parse, array, union, string, pipe, url, number, maxValue } from "valibot";
import { Valimock } from "valimock";
describe(`example test`, () => {
it(`should generate valid mock data`, () => {
const schema = array(union([pipe(string(), url()), pipe(number(), maxValue(20))]));
const result = new Valimock().mock(schema);
expect(parse(schema, result)).toStrictEqual(result);
});
});
Note
For async schemas, you will need to use parseAsync()
. Be aware that async schemas generate a Promise
and may need to be await
'ed depending on usage.
Please see the __tests__
folder for more usage examples of different schema types.
Warning
At present, not all of valibot
's API is fully covered by valimock
, however, any unimplemented schema type can be handled by a user-supplied map via the customMocks
configuration option. The schema's type
proerty is used as the property key for this map.
Implemented | Incomplete | Not Implemented | Unsupported | |
---|---|---|---|---|
Symbol | β | β | β | β |
Any | Array | Bigint | Blob | Boolean | Date | Enum |
---|---|---|---|---|---|---|
β | β | β | β | β | β | β |
Instance | Intersect | Literal | Map | NaN | Never | NonNullable |
β | β | β | β | β | β | β |
NonNullish | NonOptional | Null | Nullable | Nullish | Number | Object |
β | β | β | β | β | β | β |
Optional | Picklist | Record | Recursive | Set | Special | String |
β | β | β | β | β | β | β |
Symbol | Tuple | Undefined | Union | Unknown | Variant | Void |
β | β | β | β | β | β | β |
Below is an incomplete list of supported validations for the given schemas.
check | checkItems | empty | everyItem | excludes |
---|---|---|---|---|
β | β | β | β | β |
includes | length | maxLength | minLength | nonEmpty |
β | β | β | β | β |
notLength | partialCheck | rawCheck | someItem | |
β | β | β | β |
check | gtValue | ltValue | maxValue | minValue |
---|---|---|---|---|
β | β | β | β | β |
multipleOf | notValue | notValues | rawCheck | value |
β | β | β | β | β |
values | ||||
β |
check | gtValue | ltValue | maxValue | minValue |
---|---|---|---|---|
β | β | β | β | β |
notValue | notValues | rawCheck | value | values |
β | β | β | β | β |
check | finite | gtValue | integer | ltValue |
---|---|---|---|---|
β | β | β | β | β |
maxValue | minValue | multipleOf | notValue | notValues |
β | β | β | β | β |
rawCheck | safeInteger | value | values | |
β | β | β | β |
base64 | bic | bytes | creditCard | cuid2 |
---|---|---|---|---|
β | β | β | β | β |
check | decimal | digits | emoji | |
β | β | β | β | β |
empty | endsWith | excludes | graphemes | gtValue |
β | β | β | β | β |
hash | hexadecimal | hexColor | imei | includes |
β | β | β | β | β |
ip | ipv4 | ipv6 | isoDate | isoDateTime |
β | β | β | β | β |
isoTime | isoTimeSecond | isoTimestamp | isoWeek | length |
β | β | β | β | β |
ltValue | mac | mac48 | mac64 | maxBytes |
β | β | β | β | β |
maxGraphemes | maxLength | maxValue | maxWords | minBytes |
β | β | β | β | β |
minGraphemes | minLength | minValue | minWords | nanoid |
β | β | β | β | β |
nonEmpty | notBytes | notEntries | notGraphemes | notLength |
β | β | β | β | β |
notValue | notValues | notWords | octal | rawCheck |
β | β | β | β | β |
regex | rfcEmail | slug | startsWith | ulid |
β | β | β | β | β |
url | uuid | value | values | words |
β | β | β | β | β |
Valimock's implementation is based on @anatine/zod-mock
Released under the MIT license.