Format date fields with Day.js#
Format string date and time fields with Day.js by setting dateParser to 'dayjs'. The plugin emits dayjs(...).format(...) and adds the import for you, so the factories reuse the date library your project already ships.
import { defineConfig } from 'kubb/config'
import { pluginTs } from '@kubb/plugin-ts'
import { pluginFaker } from '@kubb/plugin-faker'
export default defineConfig({
input: './petStore.yaml',
output: { path: './src/gen', clean: true },
plugins: [
pluginTs({ output: { path: 'types', mode: 'directory' } }),
pluginFaker({
output: { path: 'mocks', mode: 'directory' },
dateParser: 'dayjs',
}),
],
})
Output example#
import dayjs from 'dayjs'
import type { Order } from '../types/Order'
import { fakerEN as faker } from '@faker-js/faker'
export function createOrder<TData extends Partial<Order> = object>(data?: TData)
{
const defaultFakeData = {
id: faker.number.bigInt(),
petId: faker.number.bigInt(),
quantity: faker.number.int(),
shipDateTime: faker.date.anytime().toISOString(),
shipDate: dayjs(faker.date.anytime()).format("YYYY-MM-DD"),
shipTime: dayjs(faker.date.anytime()).format("HH:mm:ss"),
status: faker.helpers.arrayElement<NonNullable<Order>["status"]>(['placed', 'approved', 'delivered']),
complete: faker.datatype.boolean(),
}
return {
...defaultFakeData,
...(data || {}),
} as Omit<typeof defaultFakeData, keyof TData> & TData
}
import { createOrder } from './src/gen/mocks/createOrder'
// shipDate/shipTime are formatted with dayjs, shipDateTime keeps the plain ISO string
const order = createOrder()
console.log(order.shipDate) // '2024-03-11'