๐ฆ Installation
npm install --save-dev valimock @faker-js/faker
yarn add -D valimock @faker-js/faker
๐ง Usage
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, url, number, maxValue } from "valibot";
import { Valimock } from "valimock";
describe(`example test`, () => {
it(`should generate valid mock data`, () => {
const schema = array(union([string([url()]), 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.
API Coverage
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 | โ | โ | โ | โ |
Schemas
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 |
โ | โ | โ | โ | โ | โ | โ |
Validations
String | Number | Bigint | Boolean | Date | Array | Tuple | Union | Map | Set | Object | Blob | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
bytes | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
cuid2 | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
custom | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
customAsync | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | |
emoji | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
endsWith | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
excludes | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
finite | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
imei | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
includes | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
integer | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
ip | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
ipv4 | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
ipv6 | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
isoDate | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
isoDateTime | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
isoTime | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
isoTimeSecond | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
isoTimestamp | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
isoWeek | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
length | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
mexBytes | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
maxLength | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
maxSize | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
maxValue | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
mimeType | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
minBytes | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
minLength | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
minSize | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
minValue | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
multipleOf | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
notBytes | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
notLength | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
notSize | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
notValue | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
regex | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
safeInteger | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
size | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
startsWith | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
ulid | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
url | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
uuid | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
value | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
๐ฃ Acknowledgements
Valimock's implementation is based on @anatine/zod-mock
๐ฅ License
Released under the MIT license.