Initial commit
This commit is contained in:
65
node_modules/drizzle-zod/README.md
generated
vendored
Normal file
65
node_modules/drizzle-zod/README.md
generated
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
<div align='center'>
|
||||
<h1>drizzle-zod <a href=''><img alt='npm' src='https://img.shields.io/npm/v/drizzle-zod?label='></a></h1>
|
||||
<img alt='npm' src='https://img.shields.io/npm/dm/drizzle-zod'>
|
||||
<img alt='npm bundle size' src='https://img.shields.io/bundlephobia/min/drizzle-zod'>
|
||||
<a href='https://discord.gg/yfjTbVXMW4'><img alt='Discord' src='https://img.shields.io/discord/1043890932593987624'></a>
|
||||
<img alt='License' src='https://img.shields.io/npm/l/drizzle-zod'>
|
||||
<h6><i>If you know SQL, you know Drizzle ORM</i></h6>
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
`drizzle-zod` is a plugin for [Drizzle ORM](https://github.com/drizzle-team/drizzle-orm) that allows you to generate [Zod](https://zod.dev/) schemas from Drizzle ORM schemas.
|
||||
|
||||
**Features**
|
||||
|
||||
- Create a select schema for tables, views and enums.
|
||||
- Create insert and update schemas for tables.
|
||||
- Supports all dialects: PostgreSQL, MySQL and SQLite.
|
||||
|
||||
# Usage
|
||||
|
||||
```ts
|
||||
import { pgEnum, pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core';
|
||||
import { createInsertSchema, createSelectSchema } from 'drizzle-zod';
|
||||
import { z } from 'zod';
|
||||
|
||||
const users = pgTable('users', {
|
||||
id: serial('id').primaryKey(),
|
||||
name: text('name').notNull(),
|
||||
email: text('email').notNull(),
|
||||
role: text('role', { enum: ['admin', 'user'] }).notNull(),
|
||||
createdAt: timestamp('created_at').notNull().defaultNow(),
|
||||
});
|
||||
|
||||
// Schema for inserting a user - can be used to validate API requests
|
||||
const insertUserSchema = createInsertSchema(users);
|
||||
|
||||
// Schema for updating a user - can be used to validate API requests
|
||||
const updateUserSchema = createUpdateSchema(users);
|
||||
|
||||
// Schema for selecting a user - can be used to validate API responses
|
||||
const selectUserSchema = createSelectSchema(users);
|
||||
|
||||
// Overriding the fields
|
||||
const insertUserSchema = createInsertSchema(users, {
|
||||
role: z.string(),
|
||||
});
|
||||
|
||||
// Refining the fields - useful if you want to change the fields before they become nullable/optional in the final schema
|
||||
const insertUserSchema = createInsertSchema(users, {
|
||||
id: (schema) => schema.positive(),
|
||||
email: (schema) => schema.email(),
|
||||
role: z.string(),
|
||||
});
|
||||
|
||||
// Usage
|
||||
|
||||
const user = insertUserSchema.parse({
|
||||
name: 'John Doe',
|
||||
email: 'johndoe@test.com',
|
||||
role: 'admin',
|
||||
});
|
||||
|
||||
// Zod schema type is also inferred from the table schema, so you have full type safety
|
||||
const requestSchema = insertUserSchema.pick({ name: true, email: true });
|
||||
```
|
||||
5
node_modules/drizzle-zod/column.d.cts
generated
vendored
Normal file
5
node_modules/drizzle-zod/column.d.cts
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import { z } from 'zod';
|
||||
import type { Json } from "./utils.cjs";
|
||||
export declare const literalSchema: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
|
||||
export declare const jsonSchema: z.ZodType<Json>;
|
||||
export declare const bufferSchema: z.ZodType<Buffer>;
|
||||
5
node_modules/drizzle-zod/column.d.mts
generated
vendored
Normal file
5
node_modules/drizzle-zod/column.d.mts
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import { z } from 'zod';
|
||||
import type { Json } from "./utils.mjs";
|
||||
export declare const literalSchema: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
|
||||
export declare const jsonSchema: z.ZodType<Json>;
|
||||
export declare const bufferSchema: z.ZodType<Buffer>;
|
||||
5
node_modules/drizzle-zod/column.d.ts
generated
vendored
Normal file
5
node_modules/drizzle-zod/column.d.ts
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import { z } from 'zod';
|
||||
import type { Json } from './utils.js';
|
||||
export declare const literalSchema: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
|
||||
export declare const jsonSchema: z.ZodType<Json>;
|
||||
export declare const bufferSchema: z.ZodType<Buffer>;
|
||||
19
node_modules/drizzle-zod/column.types.d.cts
generated
vendored
Normal file
19
node_modules/drizzle-zod/column.types.d.cts
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
import type { Assume, Column } from 'drizzle-orm';
|
||||
import type { z } from 'zod';
|
||||
import type { ArrayHasAtLeastOneValue, ColumnIsGeneratedAlwaysAs, IsNever, Json } from "./utils.cjs";
|
||||
export type GetEnumValuesFromColumn<TColumn extends Column> = TColumn['_'] extends {
|
||||
enumValues: [string, ...string[]];
|
||||
} ? TColumn['_']['enumValues'] : undefined;
|
||||
export type GetBaseColumn<TColumn extends Column> = TColumn['_'] extends {
|
||||
baseColumn: Column | never | undefined;
|
||||
} ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
|
||||
export type GetZodType<TData, TDataType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined> = TBaseColumn extends Column ? z.ZodArray<GetZodType<TBaseColumn['_']['data'], TBaseColumn['_']['dataType'], GetEnumValuesFromColumn<TBaseColumn>, GetBaseColumn<TBaseColumn>>> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? z.ZodEnum<Assume<TEnumValues, [string, ...string[]]>> : TData extends infer TTuple extends [any, ...any[]] ? z.ZodTuple<Assume<{
|
||||
[K in keyof TTuple]: GetZodType<TTuple[K], string, undefined, undefined>;
|
||||
}, [any, ...any[]]>> : TData extends Date ? z.ZodDate : TData extends Buffer ? z.ZodType<Buffer> : TDataType extends 'array' ? z.ZodArray<GetZodType<Assume<TData, any[]>[number], string, undefined, undefined>> : TData extends infer TDict extends Record<string, any> ? z.ZodObject<{
|
||||
[K in keyof TDict]: GetZodType<TDict[K], string, undefined, undefined>;
|
||||
}, 'strip'> : TDataType extends 'json' ? z.ZodType<Json> : TData extends number ? z.ZodNumber : TData extends bigint ? z.ZodBigInt : TData extends boolean ? z.ZodBoolean : TData extends string ? z.ZodString : z.ZodTypeAny;
|
||||
type HandleSelectColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : z.ZodNullable<TSchema>;
|
||||
type HandleInsertColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? z.ZodOptional<TSchema> : TSchema : z.ZodOptional<z.ZodNullable<TSchema>>;
|
||||
type HandleUpdateColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? z.ZodOptional<TSchema> : z.ZodOptional<z.ZodNullable<TSchema>>;
|
||||
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetZodType<TColumn['_']['data'], TColumn['_']['dataType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends z.ZodTypeAny ? TSchema extends z.ZodAny ? z.ZodAny : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : z.ZodAny;
|
||||
export {};
|
||||
19
node_modules/drizzle-zod/column.types.d.mts
generated
vendored
Normal file
19
node_modules/drizzle-zod/column.types.d.mts
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
import type { Assume, Column } from 'drizzle-orm';
|
||||
import type { z } from 'zod';
|
||||
import type { ArrayHasAtLeastOneValue, ColumnIsGeneratedAlwaysAs, IsNever, Json } from "./utils.mjs";
|
||||
export type GetEnumValuesFromColumn<TColumn extends Column> = TColumn['_'] extends {
|
||||
enumValues: [string, ...string[]];
|
||||
} ? TColumn['_']['enumValues'] : undefined;
|
||||
export type GetBaseColumn<TColumn extends Column> = TColumn['_'] extends {
|
||||
baseColumn: Column | never | undefined;
|
||||
} ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
|
||||
export type GetZodType<TData, TDataType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined> = TBaseColumn extends Column ? z.ZodArray<GetZodType<TBaseColumn['_']['data'], TBaseColumn['_']['dataType'], GetEnumValuesFromColumn<TBaseColumn>, GetBaseColumn<TBaseColumn>>> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? z.ZodEnum<Assume<TEnumValues, [string, ...string[]]>> : TData extends infer TTuple extends [any, ...any[]] ? z.ZodTuple<Assume<{
|
||||
[K in keyof TTuple]: GetZodType<TTuple[K], string, undefined, undefined>;
|
||||
}, [any, ...any[]]>> : TData extends Date ? z.ZodDate : TData extends Buffer ? z.ZodType<Buffer> : TDataType extends 'array' ? z.ZodArray<GetZodType<Assume<TData, any[]>[number], string, undefined, undefined>> : TData extends infer TDict extends Record<string, any> ? z.ZodObject<{
|
||||
[K in keyof TDict]: GetZodType<TDict[K], string, undefined, undefined>;
|
||||
}, 'strip'> : TDataType extends 'json' ? z.ZodType<Json> : TData extends number ? z.ZodNumber : TData extends bigint ? z.ZodBigInt : TData extends boolean ? z.ZodBoolean : TData extends string ? z.ZodString : z.ZodTypeAny;
|
||||
type HandleSelectColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : z.ZodNullable<TSchema>;
|
||||
type HandleInsertColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? z.ZodOptional<TSchema> : TSchema : z.ZodOptional<z.ZodNullable<TSchema>>;
|
||||
type HandleUpdateColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? z.ZodOptional<TSchema> : z.ZodOptional<z.ZodNullable<TSchema>>;
|
||||
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetZodType<TColumn['_']['data'], TColumn['_']['dataType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends z.ZodTypeAny ? TSchema extends z.ZodAny ? z.ZodAny : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : z.ZodAny;
|
||||
export {};
|
||||
19
node_modules/drizzle-zod/column.types.d.ts
generated
vendored
Normal file
19
node_modules/drizzle-zod/column.types.d.ts
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
import type { Assume, Column } from 'drizzle-orm';
|
||||
import type { z } from 'zod';
|
||||
import type { ArrayHasAtLeastOneValue, ColumnIsGeneratedAlwaysAs, IsNever, Json } from './utils.js';
|
||||
export type GetEnumValuesFromColumn<TColumn extends Column> = TColumn['_'] extends {
|
||||
enumValues: [string, ...string[]];
|
||||
} ? TColumn['_']['enumValues'] : undefined;
|
||||
export type GetBaseColumn<TColumn extends Column> = TColumn['_'] extends {
|
||||
baseColumn: Column | never | undefined;
|
||||
} ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
|
||||
export type GetZodType<TData, TDataType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined> = TBaseColumn extends Column ? z.ZodArray<GetZodType<TBaseColumn['_']['data'], TBaseColumn['_']['dataType'], GetEnumValuesFromColumn<TBaseColumn>, GetBaseColumn<TBaseColumn>>> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? z.ZodEnum<Assume<TEnumValues, [string, ...string[]]>> : TData extends infer TTuple extends [any, ...any[]] ? z.ZodTuple<Assume<{
|
||||
[K in keyof TTuple]: GetZodType<TTuple[K], string, undefined, undefined>;
|
||||
}, [any, ...any[]]>> : TData extends Date ? z.ZodDate : TData extends Buffer ? z.ZodType<Buffer> : TDataType extends 'array' ? z.ZodArray<GetZodType<Assume<TData, any[]>[number], string, undefined, undefined>> : TData extends infer TDict extends Record<string, any> ? z.ZodObject<{
|
||||
[K in keyof TDict]: GetZodType<TDict[K], string, undefined, undefined>;
|
||||
}, 'strip'> : TDataType extends 'json' ? z.ZodType<Json> : TData extends number ? z.ZodNumber : TData extends bigint ? z.ZodBigInt : TData extends boolean ? z.ZodBoolean : TData extends string ? z.ZodString : z.ZodTypeAny;
|
||||
type HandleSelectColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : z.ZodNullable<TSchema>;
|
||||
type HandleInsertColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? z.ZodOptional<TSchema> : TSchema : z.ZodOptional<z.ZodNullable<TSchema>>;
|
||||
type HandleUpdateColumn<TSchema extends z.ZodTypeAny, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? z.ZodOptional<TSchema> : z.ZodOptional<z.ZodNullable<TSchema>>;
|
||||
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetZodType<TColumn['_']['data'], TColumn['_']['dataType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends z.ZodTypeAny ? TSchema extends z.ZodAny ? z.ZodAny : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : z.ZodAny;
|
||||
export {};
|
||||
20
node_modules/drizzle-zod/constants.d.cts
generated
vendored
Normal file
20
node_modules/drizzle-zod/constants.d.cts
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
export declare const CONSTANTS: {
|
||||
INT8_MIN: number;
|
||||
INT8_MAX: number;
|
||||
INT8_UNSIGNED_MAX: number;
|
||||
INT16_MIN: number;
|
||||
INT16_MAX: number;
|
||||
INT16_UNSIGNED_MAX: number;
|
||||
INT24_MIN: number;
|
||||
INT24_MAX: number;
|
||||
INT24_UNSIGNED_MAX: number;
|
||||
INT32_MIN: number;
|
||||
INT32_MAX: number;
|
||||
INT32_UNSIGNED_MAX: number;
|
||||
INT48_MIN: number;
|
||||
INT48_MAX: number;
|
||||
INT48_UNSIGNED_MAX: number;
|
||||
INT64_MIN: bigint;
|
||||
INT64_MAX: bigint;
|
||||
INT64_UNSIGNED_MAX: bigint;
|
||||
};
|
||||
20
node_modules/drizzle-zod/constants.d.mts
generated
vendored
Normal file
20
node_modules/drizzle-zod/constants.d.mts
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
export declare const CONSTANTS: {
|
||||
INT8_MIN: number;
|
||||
INT8_MAX: number;
|
||||
INT8_UNSIGNED_MAX: number;
|
||||
INT16_MIN: number;
|
||||
INT16_MAX: number;
|
||||
INT16_UNSIGNED_MAX: number;
|
||||
INT24_MIN: number;
|
||||
INT24_MAX: number;
|
||||
INT24_UNSIGNED_MAX: number;
|
||||
INT32_MIN: number;
|
||||
INT32_MAX: number;
|
||||
INT32_UNSIGNED_MAX: number;
|
||||
INT48_MIN: number;
|
||||
INT48_MAX: number;
|
||||
INT48_UNSIGNED_MAX: number;
|
||||
INT64_MIN: bigint;
|
||||
INT64_MAX: bigint;
|
||||
INT64_UNSIGNED_MAX: bigint;
|
||||
};
|
||||
20
node_modules/drizzle-zod/constants.d.ts
generated
vendored
Normal file
20
node_modules/drizzle-zod/constants.d.ts
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
export declare const CONSTANTS: {
|
||||
INT8_MIN: number;
|
||||
INT8_MAX: number;
|
||||
INT8_UNSIGNED_MAX: number;
|
||||
INT16_MIN: number;
|
||||
INT16_MAX: number;
|
||||
INT16_UNSIGNED_MAX: number;
|
||||
INT24_MIN: number;
|
||||
INT24_MAX: number;
|
||||
INT24_UNSIGNED_MAX: number;
|
||||
INT32_MIN: number;
|
||||
INT32_MAX: number;
|
||||
INT32_UNSIGNED_MAX: number;
|
||||
INT48_MIN: number;
|
||||
INT48_MAX: number;
|
||||
INT48_UNSIGNED_MAX: number;
|
||||
INT64_MIN: bigint;
|
||||
INT64_MAX: bigint;
|
||||
INT64_UNSIGNED_MAX: bigint;
|
||||
};
|
||||
302
node_modules/drizzle-zod/index.cjs
generated
vendored
Normal file
302
node_modules/drizzle-zod/index.cjs
generated
vendored
Normal file
@ -0,0 +1,302 @@
|
||||
'use strict';
|
||||
|
||||
var drizzleOrm = require('drizzle-orm');
|
||||
var zod = require('zod');
|
||||
|
||||
const CONSTANTS = {
|
||||
INT8_MIN: -128,
|
||||
INT8_MAX: 127,
|
||||
INT8_UNSIGNED_MAX: 255,
|
||||
INT16_MIN: -32768,
|
||||
INT16_MAX: 32767,
|
||||
INT16_UNSIGNED_MAX: 65535,
|
||||
INT24_MIN: -8388608,
|
||||
INT24_MAX: 8388607,
|
||||
INT24_UNSIGNED_MAX: 16777215,
|
||||
INT32_MIN: -2147483648,
|
||||
INT32_MAX: 2147483647,
|
||||
INT32_UNSIGNED_MAX: 4294967295,
|
||||
INT48_MIN: -140737488355328,
|
||||
INT48_MAX: 140737488355327,
|
||||
INT48_UNSIGNED_MAX: 281474976710655,
|
||||
INT64_MIN: -9223372036854775808n,
|
||||
INT64_MAX: 9223372036854775807n,
|
||||
INT64_UNSIGNED_MAX: 18446744073709551615n,
|
||||
};
|
||||
|
||||
function isColumnType(column, columnTypes) {
|
||||
return columnTypes.includes(column.columnType);
|
||||
}
|
||||
function isWithEnum(column) {
|
||||
return 'enumValues' in column && Array.isArray(column.enumValues) && column.enumValues.length > 0;
|
||||
}
|
||||
const isPgEnum = isWithEnum;
|
||||
|
||||
const literalSchema = zod.z.union([zod.z.string(), zod.z.number(), zod.z.boolean(), zod.z.null()]);
|
||||
const jsonSchema = zod.z.lazy(() => zod.z.union([literalSchema, zod.z.array(jsonSchema), zod.z.record(jsonSchema)]));
|
||||
const bufferSchema = zod.z.custom((v) => v instanceof Buffer); // eslint-disable-line no-instanceof/no-instanceof
|
||||
/** @internal */
|
||||
function columnToSchema(column, z) {
|
||||
let schema;
|
||||
if (isWithEnum(column)) {
|
||||
schema = column.enumValues.length ? z.enum(column.enumValues) : z.string();
|
||||
}
|
||||
if (!schema) {
|
||||
// Handle specific types
|
||||
if (isColumnType(column, ['PgGeometry', 'PgPointTuple'])) {
|
||||
schema = z.tuple([z.number(), z.number()]);
|
||||
}
|
||||
else if (isColumnType(column, ['PgGeometryObject', 'PgPointObject'])) {
|
||||
schema = z.object({ x: z.number(), y: z.number() });
|
||||
}
|
||||
else if (isColumnType(column, ['PgHalfVector', 'PgVector'])) {
|
||||
schema = z.array(z.number());
|
||||
schema = column.dimensions ? schema.length(column.dimensions) : schema;
|
||||
}
|
||||
else if (isColumnType(column, ['PgLine'])) {
|
||||
schema = z.tuple([z.number(), z.number(), z.number()]);
|
||||
}
|
||||
else if (isColumnType(column, ['PgLineABC'])) {
|
||||
schema = z.object({
|
||||
a: z.number(),
|
||||
b: z.number(),
|
||||
c: z.number(),
|
||||
});
|
||||
} // Handle other types
|
||||
else if (isColumnType(column, ['PgArray'])) {
|
||||
schema = z.array(columnToSchema(column.baseColumn, z));
|
||||
schema = column.size ? schema.length(column.size) : schema;
|
||||
}
|
||||
else if (column.dataType === 'array') {
|
||||
schema = z.array(z.any());
|
||||
}
|
||||
else if (column.dataType === 'number') {
|
||||
schema = numberColumnToSchema(column, z);
|
||||
}
|
||||
else if (column.dataType === 'bigint') {
|
||||
schema = bigintColumnToSchema(column, z);
|
||||
}
|
||||
else if (column.dataType === 'boolean') {
|
||||
schema = z.boolean();
|
||||
}
|
||||
else if (column.dataType === 'date') {
|
||||
schema = z.date();
|
||||
}
|
||||
else if (column.dataType === 'string') {
|
||||
schema = stringColumnToSchema(column, z);
|
||||
}
|
||||
else if (column.dataType === 'json') {
|
||||
schema = jsonSchema;
|
||||
}
|
||||
else if (column.dataType === 'custom') {
|
||||
schema = z.any();
|
||||
}
|
||||
else if (column.dataType === 'buffer') {
|
||||
schema = bufferSchema;
|
||||
}
|
||||
}
|
||||
if (!schema) {
|
||||
schema = z.any();
|
||||
}
|
||||
return schema;
|
||||
}
|
||||
function numberColumnToSchema(column, z) {
|
||||
let unsigned = column.getSQLType().includes('unsigned');
|
||||
let min;
|
||||
let max;
|
||||
let integer = false;
|
||||
if (isColumnType(column, ['MySqlTinyInt'])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT8_MIN;
|
||||
max = unsigned ? CONSTANTS.INT8_UNSIGNED_MAX : CONSTANTS.INT8_MAX;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, [
|
||||
'PgSmallInt',
|
||||
'PgSmallSerial',
|
||||
'MySqlSmallInt',
|
||||
])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT16_MIN;
|
||||
max = unsigned ? CONSTANTS.INT16_UNSIGNED_MAX : CONSTANTS.INT16_MAX;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, [
|
||||
'PgReal',
|
||||
'MySqlFloat',
|
||||
'MySqlMediumInt',
|
||||
])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT24_MIN;
|
||||
max = unsigned ? CONSTANTS.INT24_UNSIGNED_MAX : CONSTANTS.INT24_MAX;
|
||||
integer = isColumnType(column, ['MySqlMediumInt']);
|
||||
}
|
||||
else if (isColumnType(column, ['PgInteger', 'PgSerial', 'MySqlInt'])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT32_MIN;
|
||||
max = unsigned ? CONSTANTS.INT32_UNSIGNED_MAX : CONSTANTS.INT32_MAX;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, [
|
||||
'PgDoublePrecision',
|
||||
'MySqlReal',
|
||||
'MySqlDouble',
|
||||
'SQLiteReal',
|
||||
])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT48_MIN;
|
||||
max = unsigned ? CONSTANTS.INT48_UNSIGNED_MAX : CONSTANTS.INT48_MAX;
|
||||
}
|
||||
else if (isColumnType(column, ['PgBigInt53', 'PgBigSerial53', 'MySqlBigInt53', 'MySqlSerial', 'SQLiteInteger'])) {
|
||||
unsigned = unsigned || isColumnType(column, ['MySqlSerial']);
|
||||
min = unsigned ? 0 : Number.MIN_SAFE_INTEGER;
|
||||
max = Number.MAX_SAFE_INTEGER;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, ['MySqlYear'])) {
|
||||
min = 1901;
|
||||
max = 2155;
|
||||
integer = true;
|
||||
}
|
||||
else {
|
||||
min = Number.MIN_SAFE_INTEGER;
|
||||
max = Number.MAX_SAFE_INTEGER;
|
||||
}
|
||||
const schema = z.number().min(min).max(max);
|
||||
return integer ? schema.int() : schema;
|
||||
}
|
||||
function bigintColumnToSchema(column, z) {
|
||||
const unsigned = column.getSQLType().includes('unsigned');
|
||||
const min = unsigned ? 0n : CONSTANTS.INT64_MIN;
|
||||
const max = unsigned ? CONSTANTS.INT64_UNSIGNED_MAX : CONSTANTS.INT64_MAX;
|
||||
return z.bigint().min(min).max(max);
|
||||
}
|
||||
function stringColumnToSchema(column, z) {
|
||||
if (isColumnType(column, ['PgUUID'])) {
|
||||
return z.string().uuid();
|
||||
}
|
||||
let max;
|
||||
let regex;
|
||||
let fixed = false;
|
||||
if (isColumnType(column, ['PgVarchar', 'SQLiteText'])) {
|
||||
max = column.length;
|
||||
}
|
||||
else if (isColumnType(column, ['MySqlVarChar'])) {
|
||||
max = column.length ?? CONSTANTS.INT16_UNSIGNED_MAX;
|
||||
}
|
||||
else if (isColumnType(column, ['MySqlText'])) {
|
||||
if (column.textType === 'longtext') {
|
||||
max = CONSTANTS.INT32_UNSIGNED_MAX;
|
||||
}
|
||||
else if (column.textType === 'mediumtext') {
|
||||
max = CONSTANTS.INT24_UNSIGNED_MAX;
|
||||
}
|
||||
else if (column.textType === 'text') {
|
||||
max = CONSTANTS.INT16_UNSIGNED_MAX;
|
||||
}
|
||||
else {
|
||||
max = CONSTANTS.INT8_UNSIGNED_MAX;
|
||||
}
|
||||
}
|
||||
if (isColumnType(column, ['PgChar', 'MySqlChar'])) {
|
||||
max = column.length;
|
||||
fixed = true;
|
||||
}
|
||||
if (isColumnType(column, ['PgBinaryVector'])) {
|
||||
regex = /^[01]+$/;
|
||||
max = column.dimensions;
|
||||
}
|
||||
let schema = z.string();
|
||||
schema = regex ? schema.regex(regex) : schema;
|
||||
return max && fixed ? schema.length(max) : max ? schema.max(max) : schema;
|
||||
}
|
||||
|
||||
function getColumns(tableLike) {
|
||||
return drizzleOrm.isTable(tableLike) ? drizzleOrm.getTableColumns(tableLike) : drizzleOrm.getViewSelectedFields(tableLike);
|
||||
}
|
||||
function handleColumns(columns, refinements, conditions, factory) {
|
||||
const columnSchemas = {};
|
||||
for (const [key, selected] of Object.entries(columns)) {
|
||||
if (!drizzleOrm.is(selected, drizzleOrm.Column) && !drizzleOrm.is(selected, drizzleOrm.SQL) && !drizzleOrm.is(selected, drizzleOrm.SQL.Aliased) && typeof selected === 'object') {
|
||||
const columns = drizzleOrm.isTable(selected) || drizzleOrm.isView(selected) ? getColumns(selected) : selected;
|
||||
columnSchemas[key] = handleColumns(columns, refinements[key] ?? {}, conditions, factory);
|
||||
continue;
|
||||
}
|
||||
const refinement = refinements[key];
|
||||
if (refinement !== undefined && typeof refinement !== 'function') {
|
||||
columnSchemas[key] = refinement;
|
||||
continue;
|
||||
}
|
||||
const column = drizzleOrm.is(selected, drizzleOrm.Column) ? selected : undefined;
|
||||
const schema = column ? columnToSchema(column, factory?.zodInstance ?? zod.z) : zod.z.any();
|
||||
const refined = typeof refinement === 'function' ? refinement(schema) : schema;
|
||||
if (conditions.never(column)) {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
columnSchemas[key] = refined;
|
||||
}
|
||||
if (column) {
|
||||
if (conditions.nullable(column)) {
|
||||
columnSchemas[key] = columnSchemas[key].nullable();
|
||||
}
|
||||
if (conditions.optional(column)) {
|
||||
columnSchemas[key] = columnSchemas[key].optional();
|
||||
}
|
||||
}
|
||||
}
|
||||
return zod.z.object(columnSchemas);
|
||||
}
|
||||
function handleEnum(enum_, factory) {
|
||||
const zod$1 = factory?.zodInstance ?? zod.z;
|
||||
return zod$1.enum(enum_.enumValues);
|
||||
}
|
||||
const selectConditions = {
|
||||
never: () => false,
|
||||
optional: () => false,
|
||||
nullable: (column) => !column.notNull,
|
||||
};
|
||||
const insertConditions = {
|
||||
never: (column) => column?.generated?.type === 'always' || column?.generatedIdentity?.type === 'always',
|
||||
optional: (column) => !column.notNull || (column.notNull && column.hasDefault),
|
||||
nullable: (column) => !column.notNull,
|
||||
};
|
||||
const updateConditions = {
|
||||
never: (column) => column?.generated?.type === 'always' || column?.generatedIdentity?.type === 'always',
|
||||
optional: () => true,
|
||||
nullable: (column) => !column.notNull,
|
||||
};
|
||||
const createSelectSchema = (entity, refine) => {
|
||||
if (isPgEnum(entity)) {
|
||||
return handleEnum(entity);
|
||||
}
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, selectConditions);
|
||||
};
|
||||
const createInsertSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, insertConditions);
|
||||
};
|
||||
const createUpdateSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, updateConditions);
|
||||
};
|
||||
function createSchemaFactory(options) {
|
||||
const createSelectSchema = (entity, refine) => {
|
||||
if (isPgEnum(entity)) {
|
||||
return handleEnum(entity, options);
|
||||
}
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, selectConditions, options);
|
||||
};
|
||||
const createInsertSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, insertConditions, options);
|
||||
};
|
||||
const createUpdateSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, updateConditions, options);
|
||||
};
|
||||
return { createSelectSchema, createInsertSchema, createUpdateSchema };
|
||||
}
|
||||
|
||||
exports.createInsertSchema = createInsertSchema;
|
||||
exports.createSchemaFactory = createSchemaFactory;
|
||||
exports.createSelectSchema = createSelectSchema;
|
||||
exports.createUpdateSchema = createUpdateSchema;
|
||||
//# sourceMappingURL=index.cjs.map
|
||||
1
node_modules/drizzle-zod/index.cjs.map
generated
vendored
Normal file
1
node_modules/drizzle-zod/index.cjs.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
2
node_modules/drizzle-zod/index.d.cts
generated
vendored
Normal file
2
node_modules/drizzle-zod/index.d.cts
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export * from "./schema.cjs";
|
||||
export * from "./schema.types.cjs";
|
||||
2
node_modules/drizzle-zod/index.d.mts
generated
vendored
Normal file
2
node_modules/drizzle-zod/index.d.mts
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export * from "./schema.mjs";
|
||||
export * from "./schema.types.mjs";
|
||||
2
node_modules/drizzle-zod/index.d.ts
generated
vendored
Normal file
2
node_modules/drizzle-zod/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './schema.js';
|
||||
export * from './schema.types.js';
|
||||
297
node_modules/drizzle-zod/index.mjs
generated
vendored
Normal file
297
node_modules/drizzle-zod/index.mjs
generated
vendored
Normal file
@ -0,0 +1,297 @@
|
||||
import { isTable, getTableColumns, getViewSelectedFields, is, Column, SQL, isView } from 'drizzle-orm';
|
||||
import { z } from 'zod';
|
||||
|
||||
const CONSTANTS = {
|
||||
INT8_MIN: -128,
|
||||
INT8_MAX: 127,
|
||||
INT8_UNSIGNED_MAX: 255,
|
||||
INT16_MIN: -32768,
|
||||
INT16_MAX: 32767,
|
||||
INT16_UNSIGNED_MAX: 65535,
|
||||
INT24_MIN: -8388608,
|
||||
INT24_MAX: 8388607,
|
||||
INT24_UNSIGNED_MAX: 16777215,
|
||||
INT32_MIN: -2147483648,
|
||||
INT32_MAX: 2147483647,
|
||||
INT32_UNSIGNED_MAX: 4294967295,
|
||||
INT48_MIN: -140737488355328,
|
||||
INT48_MAX: 140737488355327,
|
||||
INT48_UNSIGNED_MAX: 281474976710655,
|
||||
INT64_MIN: -9223372036854775808n,
|
||||
INT64_MAX: 9223372036854775807n,
|
||||
INT64_UNSIGNED_MAX: 18446744073709551615n,
|
||||
};
|
||||
|
||||
function isColumnType(column, columnTypes) {
|
||||
return columnTypes.includes(column.columnType);
|
||||
}
|
||||
function isWithEnum(column) {
|
||||
return 'enumValues' in column && Array.isArray(column.enumValues) && column.enumValues.length > 0;
|
||||
}
|
||||
const isPgEnum = isWithEnum;
|
||||
|
||||
const literalSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);
|
||||
const jsonSchema = z.lazy(() => z.union([literalSchema, z.array(jsonSchema), z.record(jsonSchema)]));
|
||||
const bufferSchema = z.custom((v) => v instanceof Buffer); // eslint-disable-line no-instanceof/no-instanceof
|
||||
/** @internal */
|
||||
function columnToSchema(column, z) {
|
||||
let schema;
|
||||
if (isWithEnum(column)) {
|
||||
schema = column.enumValues.length ? z.enum(column.enumValues) : z.string();
|
||||
}
|
||||
if (!schema) {
|
||||
// Handle specific types
|
||||
if (isColumnType(column, ['PgGeometry', 'PgPointTuple'])) {
|
||||
schema = z.tuple([z.number(), z.number()]);
|
||||
}
|
||||
else if (isColumnType(column, ['PgGeometryObject', 'PgPointObject'])) {
|
||||
schema = z.object({ x: z.number(), y: z.number() });
|
||||
}
|
||||
else if (isColumnType(column, ['PgHalfVector', 'PgVector'])) {
|
||||
schema = z.array(z.number());
|
||||
schema = column.dimensions ? schema.length(column.dimensions) : schema;
|
||||
}
|
||||
else if (isColumnType(column, ['PgLine'])) {
|
||||
schema = z.tuple([z.number(), z.number(), z.number()]);
|
||||
}
|
||||
else if (isColumnType(column, ['PgLineABC'])) {
|
||||
schema = z.object({
|
||||
a: z.number(),
|
||||
b: z.number(),
|
||||
c: z.number(),
|
||||
});
|
||||
} // Handle other types
|
||||
else if (isColumnType(column, ['PgArray'])) {
|
||||
schema = z.array(columnToSchema(column.baseColumn, z));
|
||||
schema = column.size ? schema.length(column.size) : schema;
|
||||
}
|
||||
else if (column.dataType === 'array') {
|
||||
schema = z.array(z.any());
|
||||
}
|
||||
else if (column.dataType === 'number') {
|
||||
schema = numberColumnToSchema(column, z);
|
||||
}
|
||||
else if (column.dataType === 'bigint') {
|
||||
schema = bigintColumnToSchema(column, z);
|
||||
}
|
||||
else if (column.dataType === 'boolean') {
|
||||
schema = z.boolean();
|
||||
}
|
||||
else if (column.dataType === 'date') {
|
||||
schema = z.date();
|
||||
}
|
||||
else if (column.dataType === 'string') {
|
||||
schema = stringColumnToSchema(column, z);
|
||||
}
|
||||
else if (column.dataType === 'json') {
|
||||
schema = jsonSchema;
|
||||
}
|
||||
else if (column.dataType === 'custom') {
|
||||
schema = z.any();
|
||||
}
|
||||
else if (column.dataType === 'buffer') {
|
||||
schema = bufferSchema;
|
||||
}
|
||||
}
|
||||
if (!schema) {
|
||||
schema = z.any();
|
||||
}
|
||||
return schema;
|
||||
}
|
||||
function numberColumnToSchema(column, z) {
|
||||
let unsigned = column.getSQLType().includes('unsigned');
|
||||
let min;
|
||||
let max;
|
||||
let integer = false;
|
||||
if (isColumnType(column, ['MySqlTinyInt'])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT8_MIN;
|
||||
max = unsigned ? CONSTANTS.INT8_UNSIGNED_MAX : CONSTANTS.INT8_MAX;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, [
|
||||
'PgSmallInt',
|
||||
'PgSmallSerial',
|
||||
'MySqlSmallInt',
|
||||
])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT16_MIN;
|
||||
max = unsigned ? CONSTANTS.INT16_UNSIGNED_MAX : CONSTANTS.INT16_MAX;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, [
|
||||
'PgReal',
|
||||
'MySqlFloat',
|
||||
'MySqlMediumInt',
|
||||
])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT24_MIN;
|
||||
max = unsigned ? CONSTANTS.INT24_UNSIGNED_MAX : CONSTANTS.INT24_MAX;
|
||||
integer = isColumnType(column, ['MySqlMediumInt']);
|
||||
}
|
||||
else if (isColumnType(column, ['PgInteger', 'PgSerial', 'MySqlInt'])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT32_MIN;
|
||||
max = unsigned ? CONSTANTS.INT32_UNSIGNED_MAX : CONSTANTS.INT32_MAX;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, [
|
||||
'PgDoublePrecision',
|
||||
'MySqlReal',
|
||||
'MySqlDouble',
|
||||
'SQLiteReal',
|
||||
])) {
|
||||
min = unsigned ? 0 : CONSTANTS.INT48_MIN;
|
||||
max = unsigned ? CONSTANTS.INT48_UNSIGNED_MAX : CONSTANTS.INT48_MAX;
|
||||
}
|
||||
else if (isColumnType(column, ['PgBigInt53', 'PgBigSerial53', 'MySqlBigInt53', 'MySqlSerial', 'SQLiteInteger'])) {
|
||||
unsigned = unsigned || isColumnType(column, ['MySqlSerial']);
|
||||
min = unsigned ? 0 : Number.MIN_SAFE_INTEGER;
|
||||
max = Number.MAX_SAFE_INTEGER;
|
||||
integer = true;
|
||||
}
|
||||
else if (isColumnType(column, ['MySqlYear'])) {
|
||||
min = 1901;
|
||||
max = 2155;
|
||||
integer = true;
|
||||
}
|
||||
else {
|
||||
min = Number.MIN_SAFE_INTEGER;
|
||||
max = Number.MAX_SAFE_INTEGER;
|
||||
}
|
||||
const schema = z.number().min(min).max(max);
|
||||
return integer ? schema.int() : schema;
|
||||
}
|
||||
function bigintColumnToSchema(column, z) {
|
||||
const unsigned = column.getSQLType().includes('unsigned');
|
||||
const min = unsigned ? 0n : CONSTANTS.INT64_MIN;
|
||||
const max = unsigned ? CONSTANTS.INT64_UNSIGNED_MAX : CONSTANTS.INT64_MAX;
|
||||
return z.bigint().min(min).max(max);
|
||||
}
|
||||
function stringColumnToSchema(column, z) {
|
||||
if (isColumnType(column, ['PgUUID'])) {
|
||||
return z.string().uuid();
|
||||
}
|
||||
let max;
|
||||
let regex;
|
||||
let fixed = false;
|
||||
if (isColumnType(column, ['PgVarchar', 'SQLiteText'])) {
|
||||
max = column.length;
|
||||
}
|
||||
else if (isColumnType(column, ['MySqlVarChar'])) {
|
||||
max = column.length ?? CONSTANTS.INT16_UNSIGNED_MAX;
|
||||
}
|
||||
else if (isColumnType(column, ['MySqlText'])) {
|
||||
if (column.textType === 'longtext') {
|
||||
max = CONSTANTS.INT32_UNSIGNED_MAX;
|
||||
}
|
||||
else if (column.textType === 'mediumtext') {
|
||||
max = CONSTANTS.INT24_UNSIGNED_MAX;
|
||||
}
|
||||
else if (column.textType === 'text') {
|
||||
max = CONSTANTS.INT16_UNSIGNED_MAX;
|
||||
}
|
||||
else {
|
||||
max = CONSTANTS.INT8_UNSIGNED_MAX;
|
||||
}
|
||||
}
|
||||
if (isColumnType(column, ['PgChar', 'MySqlChar'])) {
|
||||
max = column.length;
|
||||
fixed = true;
|
||||
}
|
||||
if (isColumnType(column, ['PgBinaryVector'])) {
|
||||
regex = /^[01]+$/;
|
||||
max = column.dimensions;
|
||||
}
|
||||
let schema = z.string();
|
||||
schema = regex ? schema.regex(regex) : schema;
|
||||
return max && fixed ? schema.length(max) : max ? schema.max(max) : schema;
|
||||
}
|
||||
|
||||
function getColumns(tableLike) {
|
||||
return isTable(tableLike) ? getTableColumns(tableLike) : getViewSelectedFields(tableLike);
|
||||
}
|
||||
function handleColumns(columns, refinements, conditions, factory) {
|
||||
const columnSchemas = {};
|
||||
for (const [key, selected] of Object.entries(columns)) {
|
||||
if (!is(selected, Column) && !is(selected, SQL) && !is(selected, SQL.Aliased) && typeof selected === 'object') {
|
||||
const columns = isTable(selected) || isView(selected) ? getColumns(selected) : selected;
|
||||
columnSchemas[key] = handleColumns(columns, refinements[key] ?? {}, conditions, factory);
|
||||
continue;
|
||||
}
|
||||
const refinement = refinements[key];
|
||||
if (refinement !== undefined && typeof refinement !== 'function') {
|
||||
columnSchemas[key] = refinement;
|
||||
continue;
|
||||
}
|
||||
const column = is(selected, Column) ? selected : undefined;
|
||||
const schema = column ? columnToSchema(column, factory?.zodInstance ?? z) : z.any();
|
||||
const refined = typeof refinement === 'function' ? refinement(schema) : schema;
|
||||
if (conditions.never(column)) {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
columnSchemas[key] = refined;
|
||||
}
|
||||
if (column) {
|
||||
if (conditions.nullable(column)) {
|
||||
columnSchemas[key] = columnSchemas[key].nullable();
|
||||
}
|
||||
if (conditions.optional(column)) {
|
||||
columnSchemas[key] = columnSchemas[key].optional();
|
||||
}
|
||||
}
|
||||
}
|
||||
return z.object(columnSchemas);
|
||||
}
|
||||
function handleEnum(enum_, factory) {
|
||||
const zod = factory?.zodInstance ?? z;
|
||||
return zod.enum(enum_.enumValues);
|
||||
}
|
||||
const selectConditions = {
|
||||
never: () => false,
|
||||
optional: () => false,
|
||||
nullable: (column) => !column.notNull,
|
||||
};
|
||||
const insertConditions = {
|
||||
never: (column) => column?.generated?.type === 'always' || column?.generatedIdentity?.type === 'always',
|
||||
optional: (column) => !column.notNull || (column.notNull && column.hasDefault),
|
||||
nullable: (column) => !column.notNull,
|
||||
};
|
||||
const updateConditions = {
|
||||
never: (column) => column?.generated?.type === 'always' || column?.generatedIdentity?.type === 'always',
|
||||
optional: () => true,
|
||||
nullable: (column) => !column.notNull,
|
||||
};
|
||||
const createSelectSchema = (entity, refine) => {
|
||||
if (isPgEnum(entity)) {
|
||||
return handleEnum(entity);
|
||||
}
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, selectConditions);
|
||||
};
|
||||
const createInsertSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, insertConditions);
|
||||
};
|
||||
const createUpdateSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, updateConditions);
|
||||
};
|
||||
function createSchemaFactory(options) {
|
||||
const createSelectSchema = (entity, refine) => {
|
||||
if (isPgEnum(entity)) {
|
||||
return handleEnum(entity, options);
|
||||
}
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, selectConditions, options);
|
||||
};
|
||||
const createInsertSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, insertConditions, options);
|
||||
};
|
||||
const createUpdateSchema = (entity, refine) => {
|
||||
const columns = getColumns(entity);
|
||||
return handleColumns(columns, refine ?? {}, updateConditions, options);
|
||||
};
|
||||
return { createSelectSchema, createInsertSchema, createUpdateSchema };
|
||||
}
|
||||
|
||||
export { createInsertSchema, createSchemaFactory, createSelectSchema, createUpdateSchema };
|
||||
//# sourceMappingURL=index.mjs.map
|
||||
1
node_modules/drizzle-zod/index.mjs.map
generated
vendored
Normal file
1
node_modules/drizzle-zod/index.mjs.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
82
node_modules/drizzle-zod/package.json
generated
vendored
Normal file
82
node_modules/drizzle-zod/package.json
generated
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
{
|
||||
"name": "drizzle-zod",
|
||||
"version": "0.6.0",
|
||||
"description": "Generate Zod schemas from Drizzle ORM schemas",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "tsx scripts/build.ts",
|
||||
"b": "pnpm build",
|
||||
"test:types": "cd tests && tsc",
|
||||
"pack": "(cd dist && npm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz",
|
||||
"publish": "npm publish package.tgz",
|
||||
"test": "vitest run"
|
||||
},
|
||||
"exports": {
|
||||
".": {
|
||||
"import": {
|
||||
"types": "./index.d.mts",
|
||||
"default": "./index.mjs"
|
||||
},
|
||||
"require": {
|
||||
"types": "./index.d.cjs",
|
||||
"default": "./index.cjs"
|
||||
},
|
||||
"types": "./index.d.ts",
|
||||
"default": "./index.mjs"
|
||||
}
|
||||
},
|
||||
"main": "./index.cjs",
|
||||
"module": "./index.mjs",
|
||||
"types": "./index.d.ts",
|
||||
"publishConfig": {
|
||||
"provenance": true
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/drizzle-team/drizzle-orm.git"
|
||||
},
|
||||
"ava": {
|
||||
"files": [
|
||||
"tests/**/*.test.ts",
|
||||
"!tests/bun/**/*"
|
||||
],
|
||||
"extensions": {
|
||||
"ts": "module"
|
||||
}
|
||||
},
|
||||
"keywords": [
|
||||
"zod",
|
||||
"validate",
|
||||
"validation",
|
||||
"schema",
|
||||
"drizzle",
|
||||
"orm",
|
||||
"pg",
|
||||
"mysql",
|
||||
"postgresql",
|
||||
"postgres",
|
||||
"sqlite",
|
||||
"database",
|
||||
"sql",
|
||||
"typescript",
|
||||
"ts"
|
||||
],
|
||||
"author": "Drizzle Team",
|
||||
"license": "Apache-2.0",
|
||||
"peerDependencies": {
|
||||
"drizzle-orm": ">=0.36.0",
|
||||
"zod": ">=3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-typescript": "^11.1.0",
|
||||
"@types/node": "^18.15.10",
|
||||
"cpy": "^10.1.0",
|
||||
"drizzle-orm": "link:../drizzle-orm/dist",
|
||||
"rimraf": "^5.0.0",
|
||||
"rollup": "^3.20.7",
|
||||
"vite-tsconfig-paths": "^4.3.2",
|
||||
"vitest": "^1.6.0",
|
||||
"zod": "^3.20.2",
|
||||
"zx": "^7.2.2"
|
||||
}
|
||||
}
|
||||
9
node_modules/drizzle-zod/schema.d.cts
generated
vendored
Normal file
9
node_modules/drizzle-zod/schema.d.cts
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import type { CreateInsertSchema, CreateSchemaFactoryOptions, CreateSelectSchema, CreateUpdateSchema } from "./schema.types.cjs";
|
||||
export declare const createSelectSchema: CreateSelectSchema;
|
||||
export declare const createInsertSchema: CreateInsertSchema;
|
||||
export declare const createUpdateSchema: CreateUpdateSchema;
|
||||
export declare function createSchemaFactory(options?: CreateSchemaFactoryOptions): {
|
||||
createSelectSchema: CreateSelectSchema;
|
||||
createInsertSchema: CreateInsertSchema;
|
||||
createUpdateSchema: CreateUpdateSchema;
|
||||
};
|
||||
9
node_modules/drizzle-zod/schema.d.mts
generated
vendored
Normal file
9
node_modules/drizzle-zod/schema.d.mts
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import type { CreateInsertSchema, CreateSchemaFactoryOptions, CreateSelectSchema, CreateUpdateSchema } from "./schema.types.mjs";
|
||||
export declare const createSelectSchema: CreateSelectSchema;
|
||||
export declare const createInsertSchema: CreateInsertSchema;
|
||||
export declare const createUpdateSchema: CreateUpdateSchema;
|
||||
export declare function createSchemaFactory(options?: CreateSchemaFactoryOptions): {
|
||||
createSelectSchema: CreateSelectSchema;
|
||||
createInsertSchema: CreateInsertSchema;
|
||||
createUpdateSchema: CreateUpdateSchema;
|
||||
};
|
||||
9
node_modules/drizzle-zod/schema.d.ts
generated
vendored
Normal file
9
node_modules/drizzle-zod/schema.d.ts
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
import type { CreateInsertSchema, CreateSchemaFactoryOptions, CreateSelectSchema, CreateUpdateSchema } from './schema.types.js';
|
||||
export declare const createSelectSchema: CreateSelectSchema;
|
||||
export declare const createInsertSchema: CreateInsertSchema;
|
||||
export declare const createUpdateSchema: CreateUpdateSchema;
|
||||
export declare function createSchemaFactory(options?: CreateSchemaFactoryOptions): {
|
||||
createSelectSchema: CreateSelectSchema;
|
||||
createInsertSchema: CreateInsertSchema;
|
||||
createUpdateSchema: CreateUpdateSchema;
|
||||
};
|
||||
22
node_modules/drizzle-zod/schema.types.d.cts
generated
vendored
Normal file
22
node_modules/drizzle-zod/schema.types.d.cts
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
import type { Table, View } from 'drizzle-orm';
|
||||
import type { PgEnum } from 'drizzle-orm/pg-core';
|
||||
import type { z } from 'zod';
|
||||
import type { BuildRefine, BuildSchema, NoUnknownKeys } from "./schema.types.internal.cjs";
|
||||
export interface CreateSelectSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'select', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<TTable['_']['columns']>>(table: TTable, refine?: NoUnknownKeys<TRefine, TTable['$inferSelect']>): BuildSchema<'select', TTable['_']['columns'], TRefine>;
|
||||
<TView extends View>(view: TView): BuildSchema<'select', TView['_']['selectedFields'], undefined>;
|
||||
<TView extends View, TRefine extends BuildRefine<TView['_']['selectedFields']>>(view: TView, refine: NoUnknownKeys<TRefine, TView['$inferSelect']>): BuildSchema<'select', TView['_']['selectedFields'], TRefine>;
|
||||
<TEnum extends PgEnum<any>>(enum_: TEnum): z.ZodEnum<TEnum['enumValues']>;
|
||||
}
|
||||
export interface CreateInsertSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'insert', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<Pick<TTable['_']['columns'], keyof TTable['$inferInsert']>>>(table: TTable, refine?: NoUnknownKeys<TRefine, TTable['$inferInsert']>): BuildSchema<'insert', TTable['_']['columns'], TRefine>;
|
||||
}
|
||||
export interface CreateUpdateSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'update', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<Pick<TTable['_']['columns'], keyof TTable['$inferInsert']>>>(table: TTable, refine?: TRefine): BuildSchema<'update', TTable['_']['columns'], TRefine>;
|
||||
}
|
||||
export interface CreateSchemaFactoryOptions {
|
||||
zodInstance?: any;
|
||||
}
|
||||
22
node_modules/drizzle-zod/schema.types.d.mts
generated
vendored
Normal file
22
node_modules/drizzle-zod/schema.types.d.mts
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
import type { Table, View } from 'drizzle-orm';
|
||||
import type { PgEnum } from 'drizzle-orm/pg-core';
|
||||
import type { z } from 'zod';
|
||||
import type { BuildRefine, BuildSchema, NoUnknownKeys } from "./schema.types.internal.mjs";
|
||||
export interface CreateSelectSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'select', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<TTable['_']['columns']>>(table: TTable, refine?: NoUnknownKeys<TRefine, TTable['$inferSelect']>): BuildSchema<'select', TTable['_']['columns'], TRefine>;
|
||||
<TView extends View>(view: TView): BuildSchema<'select', TView['_']['selectedFields'], undefined>;
|
||||
<TView extends View, TRefine extends BuildRefine<TView['_']['selectedFields']>>(view: TView, refine: NoUnknownKeys<TRefine, TView['$inferSelect']>): BuildSchema<'select', TView['_']['selectedFields'], TRefine>;
|
||||
<TEnum extends PgEnum<any>>(enum_: TEnum): z.ZodEnum<TEnum['enumValues']>;
|
||||
}
|
||||
export interface CreateInsertSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'insert', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<Pick<TTable['_']['columns'], keyof TTable['$inferInsert']>>>(table: TTable, refine?: NoUnknownKeys<TRefine, TTable['$inferInsert']>): BuildSchema<'insert', TTable['_']['columns'], TRefine>;
|
||||
}
|
||||
export interface CreateUpdateSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'update', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<Pick<TTable['_']['columns'], keyof TTable['$inferInsert']>>>(table: TTable, refine?: TRefine): BuildSchema<'update', TTable['_']['columns'], TRefine>;
|
||||
}
|
||||
export interface CreateSchemaFactoryOptions {
|
||||
zodInstance?: any;
|
||||
}
|
||||
22
node_modules/drizzle-zod/schema.types.d.ts
generated
vendored
Normal file
22
node_modules/drizzle-zod/schema.types.d.ts
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
import type { Table, View } from 'drizzle-orm';
|
||||
import type { PgEnum } from 'drizzle-orm/pg-core';
|
||||
import type { z } from 'zod';
|
||||
import type { BuildRefine, BuildSchema, NoUnknownKeys } from './schema.types.internal.js';
|
||||
export interface CreateSelectSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'select', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<TTable['_']['columns']>>(table: TTable, refine?: NoUnknownKeys<TRefine, TTable['$inferSelect']>): BuildSchema<'select', TTable['_']['columns'], TRefine>;
|
||||
<TView extends View>(view: TView): BuildSchema<'select', TView['_']['selectedFields'], undefined>;
|
||||
<TView extends View, TRefine extends BuildRefine<TView['_']['selectedFields']>>(view: TView, refine: NoUnknownKeys<TRefine, TView['$inferSelect']>): BuildSchema<'select', TView['_']['selectedFields'], TRefine>;
|
||||
<TEnum extends PgEnum<any>>(enum_: TEnum): z.ZodEnum<TEnum['enumValues']>;
|
||||
}
|
||||
export interface CreateInsertSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'insert', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<Pick<TTable['_']['columns'], keyof TTable['$inferInsert']>>>(table: TTable, refine?: NoUnknownKeys<TRefine, TTable['$inferInsert']>): BuildSchema<'insert', TTable['_']['columns'], TRefine>;
|
||||
}
|
||||
export interface CreateUpdateSchema {
|
||||
<TTable extends Table>(table: TTable): BuildSchema<'update', TTable['_']['columns'], undefined>;
|
||||
<TTable extends Table, TRefine extends BuildRefine<Pick<TTable['_']['columns'], keyof TTable['$inferInsert']>>>(table: TTable, refine?: TRefine): BuildSchema<'update', TTable['_']['columns'], TRefine>;
|
||||
}
|
||||
export interface CreateSchemaFactoryOptions {
|
||||
zodInstance?: any;
|
||||
}
|
||||
23
node_modules/drizzle-zod/schema.types.internal.d.cts
generated
vendored
Normal file
23
node_modules/drizzle-zod/schema.types.internal.d.cts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
import type { Assume, Column, DrizzleTypeError, SelectedFieldsFlat, Simplify, Table, View } from 'drizzle-orm';
|
||||
import type { z } from 'zod';
|
||||
import type { GetBaseColumn, GetEnumValuesFromColumn, GetZodType, HandleColumn } from "./column.types.cjs";
|
||||
import type { GetSelection, RemoveNever } from "./utils.cjs";
|
||||
export interface Conditions {
|
||||
never: (column?: Column) => boolean;
|
||||
optional: (column: Column) => boolean;
|
||||
nullable: (column: Column) => boolean;
|
||||
}
|
||||
export type BuildRefineColumns<TColumns extends Record<string, any>> = Simplify<RemoveNever<{
|
||||
[K in keyof TColumns]: TColumns[K] extends infer TColumn extends Column ? GetZodType<TColumn['_']['data'], TColumn['_']['dataType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends z.ZodTypeAny ? TSchema : z.ZodAny : TColumns[K] extends infer TObject extends SelectedFieldsFlat<Column> | Table | View ? BuildRefineColumns<GetSelection<TObject>> : TColumns[K];
|
||||
}>>;
|
||||
export type BuildRefine<TColumns extends Record<string, any>> = BuildRefineColumns<TColumns> extends infer TBuildColumns ? {
|
||||
[K in keyof TBuildColumns]?: TBuildColumns[K] extends z.ZodTypeAny ? ((schema: TBuildColumns[K]) => z.ZodTypeAny) | z.ZodTypeAny : TBuildColumns[K] extends Record<string, any> ? Simplify<BuildRefine<TBuildColumns[K]>> : never;
|
||||
} : never;
|
||||
type HandleRefinement<TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny), TColumn extends Column> = TRefinement extends (schema: z.ZodTypeAny) => z.ZodTypeAny ? TColumn['_']['notNull'] extends true ? ReturnType<TRefinement> : z.ZodNullable<ReturnType<TRefinement>> : TRefinement;
|
||||
export type BuildSchema<TType extends 'select' | 'insert' | 'update', TColumns extends Record<string, any>, TRefinements extends Record<string, any> | undefined> = z.ZodObject<Simplify<RemoveNever<{
|
||||
[K in keyof TColumns]: TColumns[K] extends infer TColumn extends Column ? TRefinements extends object ? TRefinements[Assume<K, keyof TRefinements>] extends infer TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny) ? HandleRefinement<TRefinement, TColumn> : HandleColumn<TType, TColumn> : HandleColumn<TType, TColumn> : TColumns[K] extends infer TObject extends SelectedFieldsFlat<Column> | Table | View ? BuildSchema<TType, GetSelection<TObject>, TRefinements extends object ? TRefinements[Assume<K, keyof TRefinements>] extends infer TNestedRefinements extends object ? TNestedRefinements : undefined : undefined> : z.ZodAny;
|
||||
}>>, 'strip'>;
|
||||
export type NoUnknownKeys<TRefinement extends Record<string, any>, TCompare extends Record<string, any>> = {
|
||||
[K in keyof TRefinement]: K extends keyof TCompare ? TRefinement[K] extends Record<string, z.ZodTypeAny> ? NoUnknownKeys<TRefinement[K], TCompare[K]> : TRefinement[K] : DrizzleTypeError<`Found unknown key in refinement: "${K & string}"`>;
|
||||
};
|
||||
export {};
|
||||
23
node_modules/drizzle-zod/schema.types.internal.d.mts
generated
vendored
Normal file
23
node_modules/drizzle-zod/schema.types.internal.d.mts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
import type { Assume, Column, DrizzleTypeError, SelectedFieldsFlat, Simplify, Table, View } from 'drizzle-orm';
|
||||
import type { z } from 'zod';
|
||||
import type { GetBaseColumn, GetEnumValuesFromColumn, GetZodType, HandleColumn } from "./column.types.mjs";
|
||||
import type { GetSelection, RemoveNever } from "./utils.mjs";
|
||||
export interface Conditions {
|
||||
never: (column?: Column) => boolean;
|
||||
optional: (column: Column) => boolean;
|
||||
nullable: (column: Column) => boolean;
|
||||
}
|
||||
export type BuildRefineColumns<TColumns extends Record<string, any>> = Simplify<RemoveNever<{
|
||||
[K in keyof TColumns]: TColumns[K] extends infer TColumn extends Column ? GetZodType<TColumn['_']['data'], TColumn['_']['dataType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends z.ZodTypeAny ? TSchema : z.ZodAny : TColumns[K] extends infer TObject extends SelectedFieldsFlat<Column> | Table | View ? BuildRefineColumns<GetSelection<TObject>> : TColumns[K];
|
||||
}>>;
|
||||
export type BuildRefine<TColumns extends Record<string, any>> = BuildRefineColumns<TColumns> extends infer TBuildColumns ? {
|
||||
[K in keyof TBuildColumns]?: TBuildColumns[K] extends z.ZodTypeAny ? ((schema: TBuildColumns[K]) => z.ZodTypeAny) | z.ZodTypeAny : TBuildColumns[K] extends Record<string, any> ? Simplify<BuildRefine<TBuildColumns[K]>> : never;
|
||||
} : never;
|
||||
type HandleRefinement<TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny), TColumn extends Column> = TRefinement extends (schema: z.ZodTypeAny) => z.ZodTypeAny ? TColumn['_']['notNull'] extends true ? ReturnType<TRefinement> : z.ZodNullable<ReturnType<TRefinement>> : TRefinement;
|
||||
export type BuildSchema<TType extends 'select' | 'insert' | 'update', TColumns extends Record<string, any>, TRefinements extends Record<string, any> | undefined> = z.ZodObject<Simplify<RemoveNever<{
|
||||
[K in keyof TColumns]: TColumns[K] extends infer TColumn extends Column ? TRefinements extends object ? TRefinements[Assume<K, keyof TRefinements>] extends infer TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny) ? HandleRefinement<TRefinement, TColumn> : HandleColumn<TType, TColumn> : HandleColumn<TType, TColumn> : TColumns[K] extends infer TObject extends SelectedFieldsFlat<Column> | Table | View ? BuildSchema<TType, GetSelection<TObject>, TRefinements extends object ? TRefinements[Assume<K, keyof TRefinements>] extends infer TNestedRefinements extends object ? TNestedRefinements : undefined : undefined> : z.ZodAny;
|
||||
}>>, 'strip'>;
|
||||
export type NoUnknownKeys<TRefinement extends Record<string, any>, TCompare extends Record<string, any>> = {
|
||||
[K in keyof TRefinement]: K extends keyof TCompare ? TRefinement[K] extends Record<string, z.ZodTypeAny> ? NoUnknownKeys<TRefinement[K], TCompare[K]> : TRefinement[K] : DrizzleTypeError<`Found unknown key in refinement: "${K & string}"`>;
|
||||
};
|
||||
export {};
|
||||
23
node_modules/drizzle-zod/schema.types.internal.d.ts
generated
vendored
Normal file
23
node_modules/drizzle-zod/schema.types.internal.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
import type { Assume, Column, DrizzleTypeError, SelectedFieldsFlat, Simplify, Table, View } from 'drizzle-orm';
|
||||
import type { z } from 'zod';
|
||||
import type { GetBaseColumn, GetEnumValuesFromColumn, GetZodType, HandleColumn } from './column.types.js';
|
||||
import type { GetSelection, RemoveNever } from './utils.js';
|
||||
export interface Conditions {
|
||||
never: (column?: Column) => boolean;
|
||||
optional: (column: Column) => boolean;
|
||||
nullable: (column: Column) => boolean;
|
||||
}
|
||||
export type BuildRefineColumns<TColumns extends Record<string, any>> = Simplify<RemoveNever<{
|
||||
[K in keyof TColumns]: TColumns[K] extends infer TColumn extends Column ? GetZodType<TColumn['_']['data'], TColumn['_']['dataType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends z.ZodTypeAny ? TSchema : z.ZodAny : TColumns[K] extends infer TObject extends SelectedFieldsFlat<Column> | Table | View ? BuildRefineColumns<GetSelection<TObject>> : TColumns[K];
|
||||
}>>;
|
||||
export type BuildRefine<TColumns extends Record<string, any>> = BuildRefineColumns<TColumns> extends infer TBuildColumns ? {
|
||||
[K in keyof TBuildColumns]?: TBuildColumns[K] extends z.ZodTypeAny ? ((schema: TBuildColumns[K]) => z.ZodTypeAny) | z.ZodTypeAny : TBuildColumns[K] extends Record<string, any> ? Simplify<BuildRefine<TBuildColumns[K]>> : never;
|
||||
} : never;
|
||||
type HandleRefinement<TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny), TColumn extends Column> = TRefinement extends (schema: z.ZodTypeAny) => z.ZodTypeAny ? TColumn['_']['notNull'] extends true ? ReturnType<TRefinement> : z.ZodNullable<ReturnType<TRefinement>> : TRefinement;
|
||||
export type BuildSchema<TType extends 'select' | 'insert' | 'update', TColumns extends Record<string, any>, TRefinements extends Record<string, any> | undefined> = z.ZodObject<Simplify<RemoveNever<{
|
||||
[K in keyof TColumns]: TColumns[K] extends infer TColumn extends Column ? TRefinements extends object ? TRefinements[Assume<K, keyof TRefinements>] extends infer TRefinement extends z.ZodTypeAny | ((schema: z.ZodTypeAny) => z.ZodTypeAny) ? HandleRefinement<TRefinement, TColumn> : HandleColumn<TType, TColumn> : HandleColumn<TType, TColumn> : TColumns[K] extends infer TObject extends SelectedFieldsFlat<Column> | Table | View ? BuildSchema<TType, GetSelection<TObject>, TRefinements extends object ? TRefinements[Assume<K, keyof TRefinements>] extends infer TNestedRefinements extends object ? TNestedRefinements : undefined : undefined> : z.ZodAny;
|
||||
}>>, 'strip'>;
|
||||
export type NoUnknownKeys<TRefinement extends Record<string, any>, TCompare extends Record<string, any>> = {
|
||||
[K in keyof TRefinement]: K extends keyof TCompare ? TRefinement[K] extends Record<string, z.ZodTypeAny> ? NoUnknownKeys<TRefinement[K], TCompare[K]> : TRefinement[K] : DrizzleTypeError<`Found unknown key in refinement: "${K & string}"`>;
|
||||
};
|
||||
export {};
|
||||
23
node_modules/drizzle-zod/utils.d.cts
generated
vendored
Normal file
23
node_modules/drizzle-zod/utils.d.cts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
import type { Column, SelectedFieldsFlat, Table, View } from 'drizzle-orm';
|
||||
import type { PgEnum } from 'drizzle-orm/pg-core';
|
||||
import type { z } from 'zod';
|
||||
import type { literalSchema } from "./column.cjs";
|
||||
export declare function isColumnType<T extends Column>(column: Column, columnTypes: string[]): column is T;
|
||||
export declare function isWithEnum(column: Column): column is typeof column & {
|
||||
enumValues: [string, ...string[]];
|
||||
};
|
||||
export declare const isPgEnum: (entity: any) => entity is PgEnum<[string, ...string[]]>;
|
||||
type Literal = z.infer<typeof literalSchema>;
|
||||
export type Json = Literal | {
|
||||
[key: string]: Json;
|
||||
} | Json[];
|
||||
export type IsNever<T> = [T] extends [never] ? true : false;
|
||||
export type ArrayHasAtLeastOneValue<TEnum extends [any, ...any[]] | undefined> = TEnum extends [infer TString, ...any[]] ? TString extends `${infer TLiteral}` ? TLiteral extends any ? true : false : false : false;
|
||||
export type ColumnIsGeneratedAlwaysAs<TColumn extends Column> = TColumn['_']['identity'] extends 'always' ? true : TColumn['_']['generated'] extends undefined ? false : TColumn['_']['generated'] extends infer TGenerated extends {
|
||||
type: string;
|
||||
} ? TGenerated['type'] extends 'byDefault' ? false : true : true;
|
||||
export type RemoveNever<T> = {
|
||||
[K in keyof T as T[K] extends never ? never : K]: T[K];
|
||||
};
|
||||
export type GetSelection<T extends SelectedFieldsFlat<Column> | Table | View> = T extends Table ? T['_']['columns'] : T extends View ? T['_']['selectedFields'] : T;
|
||||
export {};
|
||||
23
node_modules/drizzle-zod/utils.d.mts
generated
vendored
Normal file
23
node_modules/drizzle-zod/utils.d.mts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
import type { Column, SelectedFieldsFlat, Table, View } from 'drizzle-orm';
|
||||
import type { PgEnum } from 'drizzle-orm/pg-core';
|
||||
import type { z } from 'zod';
|
||||
import type { literalSchema } from "./column.mjs";
|
||||
export declare function isColumnType<T extends Column>(column: Column, columnTypes: string[]): column is T;
|
||||
export declare function isWithEnum(column: Column): column is typeof column & {
|
||||
enumValues: [string, ...string[]];
|
||||
};
|
||||
export declare const isPgEnum: (entity: any) => entity is PgEnum<[string, ...string[]]>;
|
||||
type Literal = z.infer<typeof literalSchema>;
|
||||
export type Json = Literal | {
|
||||
[key: string]: Json;
|
||||
} | Json[];
|
||||
export type IsNever<T> = [T] extends [never] ? true : false;
|
||||
export type ArrayHasAtLeastOneValue<TEnum extends [any, ...any[]] | undefined> = TEnum extends [infer TString, ...any[]] ? TString extends `${infer TLiteral}` ? TLiteral extends any ? true : false : false : false;
|
||||
export type ColumnIsGeneratedAlwaysAs<TColumn extends Column> = TColumn['_']['identity'] extends 'always' ? true : TColumn['_']['generated'] extends undefined ? false : TColumn['_']['generated'] extends infer TGenerated extends {
|
||||
type: string;
|
||||
} ? TGenerated['type'] extends 'byDefault' ? false : true : true;
|
||||
export type RemoveNever<T> = {
|
||||
[K in keyof T as T[K] extends never ? never : K]: T[K];
|
||||
};
|
||||
export type GetSelection<T extends SelectedFieldsFlat<Column> | Table | View> = T extends Table ? T['_']['columns'] : T extends View ? T['_']['selectedFields'] : T;
|
||||
export {};
|
||||
23
node_modules/drizzle-zod/utils.d.ts
generated
vendored
Normal file
23
node_modules/drizzle-zod/utils.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
import type { Column, SelectedFieldsFlat, Table, View } from 'drizzle-orm';
|
||||
import type { PgEnum } from 'drizzle-orm/pg-core';
|
||||
import type { z } from 'zod';
|
||||
import type { literalSchema } from './column.js';
|
||||
export declare function isColumnType<T extends Column>(column: Column, columnTypes: string[]): column is T;
|
||||
export declare function isWithEnum(column: Column): column is typeof column & {
|
||||
enumValues: [string, ...string[]];
|
||||
};
|
||||
export declare const isPgEnum: (entity: any) => entity is PgEnum<[string, ...string[]]>;
|
||||
type Literal = z.infer<typeof literalSchema>;
|
||||
export type Json = Literal | {
|
||||
[key: string]: Json;
|
||||
} | Json[];
|
||||
export type IsNever<T> = [T] extends [never] ? true : false;
|
||||
export type ArrayHasAtLeastOneValue<TEnum extends [any, ...any[]] | undefined> = TEnum extends [infer TString, ...any[]] ? TString extends `${infer TLiteral}` ? TLiteral extends any ? true : false : false : false;
|
||||
export type ColumnIsGeneratedAlwaysAs<TColumn extends Column> = TColumn['_']['identity'] extends 'always' ? true : TColumn['_']['generated'] extends undefined ? false : TColumn['_']['generated'] extends infer TGenerated extends {
|
||||
type: string;
|
||||
} ? TGenerated['type'] extends 'byDefault' ? false : true : true;
|
||||
export type RemoveNever<T> = {
|
||||
[K in keyof T as T[K] extends never ? never : K]: T[K];
|
||||
};
|
||||
export type GetSelection<T extends SelectedFieldsFlat<Column> | Table | View> = T extends Table ? T['_']['columns'] : T extends View ? T['_']['selectedFields'] : T;
|
||||
export {};
|
||||
Reference in New Issue
Block a user