- Notifications
You must be signed in to change notification settings - Fork0
Generate mock data from zod schemas. Powered by @faker-js/faker and randexp.js.
License
NotificationsYou must be signed in to change notification settings
soc221b/zod-schema-faker
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Generate mock data fromzod schemas. Powered by@faker-js/faker andrandexp.js.
Features
- Support almost all zod types
- Support for custom zod types
- Extensive tests
npm install --save-dev zod-schema-faker
Built-in zod types:
import{z}from'zod'import{install,fake}from'zod-schema-faker'// define a zod schemaconstschema=z.number()// call install() to register fakersinstall()// generate fake data based on schemaconstdata=fake(schema)
Custom zod types:
import{z}from'zod'import{installCustom,fake,getFaker,ZodTypeFaker}from'zod-schema-faker'// define a custom zod schemaconstpxSchema=z.custom<`${number}px`>(val=>{returntypeofval==='string' ?/^\d+px$/.test(val) :false})// define a custom fakerclassZodPxFakerextendsZodTypeFaker<typeofpxSchema>{fake(): `${number}px`{return`${getFaker().number.int({min:0})}px`}}// call installCustom() to register custom fakersinstallCustom(pxSchema,ZodPxFaker)// generate fake data based on schemaconstdata=fake(pxSchema)
Core APIs
function install(): void
: Install fakers for built-in types, must be called before usingfake
.function fake<T extends z.ZodType>(schema: T): z.infer<T>
: Generate fake data based on schema.function seed(value?: number): void
: Sets the seed to use.class ZodSchemaFakerError
Random Utility APIs
function setFaker(faker: Faker): void
: Use given faker instance instead of the default one.function getFaker(): Faker
: Get the faker instance. Defaults tofakerEN
.function randexp(pattern: string | RegExp, flags?: string): string
: Create random strings that match a given regularexpression.
Customization APIs - seeexample for details
class ZodTypeFaker
: Base class for fakers.function installCustom<T extends z.ZodTypeAny>(schema: T, faker: typeof ZodTypeFakerConcrete<T>): void
: Installfakers for custom schemas, must be called before usingfake
.
- methods
- ✅ .and
- ✅ .array
- ✅ .brand
- ✅ .catch
- ✅ .default
- ✅ .nullable
- ✅ .nullish
- ✅ .optional
- ✅ .or
- ✅ .pipe
- ✅ .promise
- ✅ .readonly
- ❌ .refine
- ❌ .superRefine
- ✅ .transform
- ✅ z.any
- ✅ z.array
- ✅ z.bigint
- ✅ z.boolean
- ✅ z.custom: seeexample for details.
- ✅ z.date
- ✅ z.discriminatedUnion
- ✅ z.enum
- ✅ z.instanceof: seeexample for details.
- ✅ z.intersection
- ✅ z.function
- ✅ z.lazy
- ✅ z.literal
- ✅ z.map
- ✅ z.nan
- ✅ z.nativeEnum
- ✅ z.never: always throws an error
- ✅ z.null
- ✅ z.number
- ✅ z.object
- ✅ z.preprocess1
- ✅ z.promise
- ✅ z.record
- ✅ z.set
- ✅ z.string2
- ✅ z.symbol
- ✅ z.tuple
- ✅ z.undefined
- ✅ z.union
- ✅ z.unknown
- ✅ z.void
https://github.com/anatine/zod-plugins/tree/main/packages/zod-mock
- Excels at generating realistic data for
z.string
. For instance,z.object({ image: z.string() })
will produce a URLstring. - Lacks support for some basic zod types such as
z.any
,z.default
,z.tuple
, etc.
https://github.com/timdeschryver/zod-fixture
- Provides support for custom zod types.
- Occasionally generates invalid mocked data. For example, calling with the function generated from
z.function(z.tuple([]), z.boolean())
did not return a boolean value.
- https://github.com/dipasqualew/zod-mocking
- https://github.com/LorisSigrist/zocker
- https://github.com/ItMaga/zodock
Distributed under the MIT license. See LICENSE for more information.
Footnotes
About
Generate mock data from zod schemas. Powered by @faker-js/faker and randexp.js.