valimock
v0.1.3
Published
Generate mock data for Valibot schemas using Faker
Downloads
255
Readme
🃏 Valimock
Generate mock data for Valibot schemas using Faker
📦 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 aPromise
and may need to beawait
'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 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 | ✔ | ⚠ | ❌ | ➖ |
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 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | email | ✔ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | ➖ | | 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.