SkillAgentSearch skills...

Valimock

🃏 Generate mock data for Valibot schemas using Faker

Install / Use

/learn @Saeris/Valimock
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center">

🃏 Valimock

npm version CI status

Generate mock data for Valibot schemas using Faker

</div>

📦 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, 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.

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

Below is an incomplete list of supported validations for the given schemas.

Array

| check | checkItems | empty | everyItem | excludes | | :-----------: | :--------------: | :-----------: | :-----------: | :----------: | | ❌ | ❌ | ✔ | ❌ | ❌ | | includes | length | maxLength | minLength | nonEmpty | | ❌ | ✔ | ✔ | ✔ | ✔ | | notLength | partialCheck | rawCheck | someItem | | ❌ | ❌ | ❌ | ❌ |

BigInt

| check | gtValue | ltValue | maxValue | minValue | | :------------: | :----------: | :-----------: | :----------: | :-------: | | ❌ | ❌ | ❌ | ✔ | ✔ | | multipleOf | notValue | notValues | rawCheck | value | | ❌ | ❌ | ❌ | ❌ | ✔ | | values | | ❌ |

Date

| check | gtValue | ltValue | maxValue | minValue | | :----------: | :-----------: | :----------: | :-------: | :--------: | | ❌ | ❌ | ❌ | ✔ | ✔ | | notValue | notValues | rawCheck | value | values | | ❌ | ❌ | ❌ | ✔ | ❌ |

Number

| check | finite | gtValue | integer | ltValue | | :----------: | :-------------: | :------------: | :----------: | :-----------: | | ❌ | ❌ | ❌ | ✔ | ❌ | | maxValue | minValue | multipleOf | notValue | notValues | | ✔ | ✔ | ❌ | ❌ | ❌ | | rawCheck | safeInteger | value | values | | ❌ | ❌ | ✔ | ❌ |

String

| base64 | bic | bytes | creditCard | cuid2 | | :--------------: | :---------------: | :--------------: | :--------------: | :-------------: | | ✔ | ✔ | ❌ | ✔ | ✔ | | check | decimal | digits | email | 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 | | ✔ | ✔ | ❌ | ❌ | ❌ |

📣 Acknowledgements

Valimock's implementation is based on @anatine/zod-mock

🥂 License

Released under the MIT license © Drake Costa.

Related Skills

View on GitHub
GitHub Stars38
CategoryDevelopment
Updated1mo ago
Forks2

Languages

TypeScript

Security Score

95/100

Audited on Jan 28, 2026

No findings