Initial commit

This commit is contained in:
Ammaar Reshi
2025-01-04 14:06:53 +00:00
parent 7082408604
commit d6025af146
23760 changed files with 3299690 additions and 0 deletions

65
node_modules/drizzle-zod/README.md generated vendored Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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

File diff suppressed because one or more lines are too long

2
node_modules/drizzle-zod/index.d.cts generated vendored Normal file
View 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
View 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
View 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
View 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

File diff suppressed because one or more lines are too long

82
node_modules/drizzle-zod/package.json generated vendored Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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 {};