π Generate mock data for Valibot schemas using Faker
Key metrics and engagement data
Repository has been active for 1 year, 9 months
β33
Want deeper insights? ExploreΒ GitObs.com
bash1npm install --save-dev valimock @faker-js/faker
bash1yarn 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!
ts1import { parse, array, union, string, pipe, url, number, maxValue } from "valibot";2import { Valimock } from "valimock";34describe(`example test`, () => {5 it(`should generate valid mock data`, () => {6 const schema = array(union([pipe(string(), url()), pipe(number(), maxValue(20))]));7 const result = new Valimock().mock(schema);8 expect(parse(schema, result)).toStrictEqual(result);9 });10});
[!NOTE]
For async schemas, you will need to use
parseAsync()
. Be aware that async schemas generate aPromise
and may need to beawait
'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 byvalimock
, however, any unimplemented schema type can be handled by a user-supplied map via thecustomMocks
configuration option. The schema'stype
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 Β© Drake Costa.