JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5019
  • Score
    100M100P100Q132619F
  • License MIT

Generate `effect` schemas from Drizzle ORM schemas

Package Exports

  • @handfish/drizzle-effect

Readme

./index.cjs000644 000766 000024 00000004561 15012666403 013046 0ustar00kdu3staff000000 000000 "use strict";var e=require("drizzle-orm"),t=require("drizzle-orm/mysql-core"),r=require("drizzle-orm/pg-core"),a=require("drizzle-orm/sqlite-core"),n=require("effect");function c(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var i=c(e),m=c(t),o=c(r),s=c(a);const l=n.Schema.Union(n.Schema.String,n.Schema.Number,n.Schema.Boolean,n.Schema.Null),u=n.Schema.suspend((()=>n.Schema.Union(l,n.Schema.Array(u),n.Schema.Record({key:n.Schema.String,value:u}))));function S(e){let t;if(function(e){return"enumValues"in e&&Array.isArray(e.enumValues)&&e.enumValues.length>0}(e)&&(t=e.enumValues.length?n.Schema.Literal(...e.enumValues):n.Schema.String),!t)if(i.is(e,o.PgUUID))t=n.Schema.UUID;else if("custom"===e.dataType)t=n.Schema.Any;else if("json"===e.dataType)t=u;else if("array"===e.dataType)t=n.Schema.Array(S(e.baseColumn));else if("number"===e.dataType)t=n.Schema.Number;else if("bigint"===e.dataType)t=n.Schema.BigIntFromSelf;else if("boolean"===e.dataType)t=n.Schema.Boolean;else if("date"===e.dataType)t=n.Schema.DateFromSelf;else if("string"===e.dataType){let r=n.Schema.String;(i.is(e,o.PgChar)||i.is(e,o.PgVarchar)||i.is(e,m.MySqlVarChar)||i.is(e,m.MySqlVarBinary)||i.is(e,m.MySqlChar)||i.is(e,s.SQLiteText))&&"number"==typeof e.length&&(r=r.pipe(n.Schema.maxLength(e.length))),t=r}return t||(t=n.Schema.Any),t}exports.Json=u,exports.createInsertSchema=function(e,t){const r=i.getTableColumns(e),a=Object.entries(r);let c=Object.fromEntries(a.map((([e,t])=>[e,S(t)])));t&&(c=Object.assign(c,Object.fromEntries(Object.entries(t).map((([e,t])=>[e,"function"!=typeof t||n.Schema.isSchema(t)||n.Schema.isPropertySignature(t)?t:t(c)])))));for(const[e,t]of a)t.notNull?t.hasDefault&&(c[e]=n.Schema.optional(c[e])):c[e]=n.Schema.optional(n.Schema.NullOr(c[e]));return n.Schema.Struct(c)},exports.createSelectSchema=function(e,t){const r=i.getTableColumns(e),a=Object.entries(r);let c=Object.fromEntries(a.map((([e,t])=>[e,S(t)])));t&&(c=Object.assign(c,Object.fromEntries(Object.entries(t).map((([e,t])=>[e,"function"!=typeof t||n.Schema.isSchema(t)||n.Schema.isPropertySignature(t)?t:t(c)])))));for(const[e,t]of a)t.notNull||(c[e]=n.Schema.NullOr(c[e]));return n.Schema.Struct(c)}; //# sourceMappingURL=index.cjs.map ./index.cjs.map000644 000766 000024 00000006001 15012666403 013611 0ustar00kdu3staff000000 000000 {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":[null],"names":["literalSchema","Schema","Union","String","Number","Boolean","Null","Json","suspend","Array","Record","key","value","mapColumnToSchema","column","type","isArray","enumValues","length","isWithEnum","Literal","Drizzle","is","DrizzlePg","PgUUID","UUID","dataType","Any","baseColumn","BigIntFromSelf","DateFromSelf","sType","PgChar","PgVarchar","DrizzleMysql","MySqlVarChar","MySqlVarBinary","MySqlChar","DrizzleSqlite","SQLiteText","pipe","maxLength","table","refine","columns","getTableColumns","columnEntries","Object","entries","schemaEntries","fromEntries","map","name","assign","refineColumn","isSchema","isPropertySignature","notNull","hasDefault","optional","NullOr","Struct"],"mappings":"2cAwJA,MAAMA,EAAgBC,EAAMA,OAACC,MAC5BD,EAAAA,OAAOE,OACPF,EAAAA,OAAOG,OACPH,SAAOI,QACPJ,EAAMA,OAACK,MAcKC,EAAON,EAAAA,OAAOO,SAC1B,IACCP,EAAAA,OAAOC,MACNF,EACAC,EAAMA,OAACQ,MAAMF,GACbN,SAAOS,OAAO,CAAEC,IAAKV,EAAAA,OAAOE,OAAQS,MAAOL,OAkS9C,SAASM,EAAkBC,GAC1B,IAAIC,EAQJ,GA6CD,SACCD,GAEA,MACC,eAAgBA,GACbL,MAAMO,QAAQF,EAAOG,aACrBH,EAAOG,WAAWC,OAAS,CAEhC,CA3DKC,CAAWL,KACdC,EAAOD,EAAOG,WAAWC,OACtBjB,EAAAA,OAAOmB,WAAWN,EAAOG,YACzBhB,EAAAA,OAAOE,SAGNY,EACJ,GAAIM,EAAQC,GAAGR,EAAQS,EAAUC,QAChCT,EAAOd,EAAMA,OAACwB,UACR,GAAwB,WAApBX,EAAOY,SACjBX,EAAOd,EAAMA,OAAC0B,SACR,GAAwB,SAApBb,EAAOY,SACjBX,EAAOR,OACD,GAAwB,UAApBO,EAAOY,SACjBX,EAAOd,EAAMA,OAACQ,MACbI,EAAmBC,EAAuCc,kBAErD,GAAwB,WAApBd,EAAOY,SACjBX,EAAOd,EAAMA,OAACG,YACR,GAAwB,WAApBU,EAAOY,SACjBX,EAAOd,EAAMA,OAAC4B,oBACR,GAAwB,YAApBf,EAAOY,SACjBX,EAAOd,EAAMA,OAACI,aACR,GAAwB,SAApBS,EAAOY,SACjBX,EAAOd,EAAMA,OAAC6B,kBACR,GAAwB,WAApBhB,EAAOY,SAAuB,CACxC,IAAIK,EAAQ9B,EAAMA,OAACE,QAGjBkB,EAAQC,GAAGR,EAAQS,EAAUS,SAC1BX,EAAQC,GAAGR,EAAQS,EAAUU,YAC7BZ,EAAQC,GAAGR,EAAQoB,EAAaC,eAChCd,EAAQC,GAAGR,EAAQoB,EAAaE,iBAChCf,EAAQC,GAAGR,EAAQoB,EAAaG,YAChChB,EAAQC,GAAGR,EAAQwB,EAAcC,cACT,iBAAlBzB,EAAOI,SAEjBa,EAAQA,EAAMS,KAAKvC,EAAAA,OAAOwC,UAAU3B,EAAOI,UAG5CH,EAAOgB,CACP,CAOF,OAJKhB,IACJA,EAAOd,EAAMA,OAAC0B,KAGRZ,CACR,2CApLgB,SAIf2B,EACAC,GAYA,MAAMC,EAAUvB,EAAQwB,gBAAgBH,GAClCI,EAAgBC,OAAOC,QAAQJ,GAErC,IAAIK,EAGAF,OAAOG,YACVJ,EAAcK,KAAI,EAAEC,EAAMtC,KAClB,CAACsC,EAAMvC,EAAkBC,OAI9B6B,IACHM,EAAgBF,OAAOM,OACtBJ,EACAF,OAAOG,YACNH,OAAOC,QAAQL,GAAQQ,KAAI,EAAEC,EAAME,KAC3B,CACNF,EACwB,mBAAjBE,GACFrD,EAAMA,OAACsD,SAASD,IAChBrD,EAAMA,OAACuD,oBAAoBF,GAE7BA,EADAA,EAAaL,SAQrB,IAAK,MAAOG,EAAMtC,KAAWgC,EACvBhC,EAAO2C,QAUR3C,EAAO4C,aAGVT,EAAcG,GAAQnD,EAAMA,OAAC0D,SAC5BV,EAAcG,KAXfH,EAAcG,GAAQnD,EAAAA,OAAO0D,SAC5B1D,SAAO2D,OAAOX,EAAcG,KAe/B,OAAOnD,EAAMA,OAAC4D,OAAOZ,EACtB,6BAEgB,SAIfP,EACAC,GAYA,MAAMC,EAAUvB,EAAQwB,gBAAgBH,GAClCI,EAAgBC,OAAOC,QAAQJ,GAErC,IAAIK,EAGAF,OAAOG,YACVJ,EAAcK,KAAI,EAAEC,EAAMtC,KAClB,CAACsC,EAAMvC,EAAkBC,OAI9B6B,IACHM,EAAgBF,OAAOM,OACtBJ,EACAF,OAAOG,YACNH,OAAOC,QAAQL,GAAQQ,KAAI,EAAEC,EAAME,KAC3B,CACNF,EACwB,mBAAjBE,GACFrD,EAAMA,OAACsD,SAASD,IAChBrD,EAAMA,OAACuD,oBAAoBF,GAE7BA,EADAA,EAAaL,SAQrB,IAAK,MAAOG,EAAMtC,KAAWgC,EACvBhC,EAAO2C,UACXR,EAAcG,GAAQnD,EAAMA,OAAC2D,OAC5BX,EAAcG,KAKjB,OAAOnD,EAAMA,OAAC4D,OAAOZ,EACtB"}./index.d.cts000644 000766 000024 00000016713 15012666403 013304 0ustar00kdu3staff000000 000000 import * as Drizzle from 'drizzle-orm'; import { Schema } from 'effect'; type Columns = TTable['']['columns'] extends infer TColumns extends Record<string, Drizzle.Column> ? TColumns : never; type PropertySignatureEncoded = T extends Schema.PropertySignature<any, any, any, any, infer From, any, any> ? From : never; type PropertySignatureType = T extends Schema.PropertySignature<any, infer To, any, any, any, any, any> ? To : never; type InsertRefineArg<TTable extends Drizzle.Table, Col extends keyof Columns> = Schema.Schema<any, any, any> | ((s: { [S in keyof InsertColumnPropertySignatures]: InsertColumnPropertySignatures[S] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[S]>, undefined | null>, Exclude<PropertySignatureType<InsertColumnPropertySignatures[S]>, undefined | null>> : InsertColumnPropertySignatures[S]; }) => InsertColumnPropertySignatures[Col] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any> : Schema.Schema<Exclude<Schema.Schema.Encoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any>); type SelectRefineArg<TTable extends Drizzle.Table, Col extends keyof Columns> = Schema.Schema<any, any, any> | ((s: { [S in keyof InsertColumnPropertySignatures]: InsertColumnPropertySignatures[S] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[S]>, undefined | null>, Exclude<PropertySignatureType<InsertColumnPropertySignatures[S]>, undefined | null>> : InsertColumnPropertySignatures[S]; }) => InsertColumnPropertySignatures[Col] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any> : Schema.Schema<Exclude<Schema.Schema.Encoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any>); type InsertRefine = { [K in keyof Columns]?: InsertRefineArg<TTable, K>; }; type SelectRefine = { [K in keyof Columns]?: SelectRefineArg<TTable, K>; }; type Json = string | number | boolean | { [key: string]: Json; } | Json[] | readonly Json[] | null; export declare const Json: Schema.suspend<Json, Json, never>; type GetSchemaForType = TColumn['']['dataType'] extends infer TDataType ? TDataType extends 'custom' ? Schema.Schema : TDataType extends 'json' ? Schema.Schema : TColumn extends { enumValues: [string, ...string[]]; } ? Drizzle.Equal<TColumn['enumValues'], [string, ...string[]]> extends true ? Schema.Schema : Schema.Schema<TColumn['enumValues'][number]> : TDataType extends 'array' ? Schema.Schema<null | readonly Drizzle.Assume<TColumn[''], { baseColumn: Drizzle.Column; }>['baseColumn']['']['data'][]> : TDataType extends 'bigint' ? Schema.Schema : TDataType extends 'number' ? Schema.Schema : TDataType extends 'string' ? Schema.Schema : TDataType extends 'boolean' ? Schema.Schema : TDataType extends 'date' ? Schema.Schema : Schema.Schema : never; type MapInsertColumnToPropertySignature = TColumn['']['notNull'] extends false ? Schema.PropertySignature<'?:', Schema.Schema.Type<GetSchemaForType> | undefined | null, TColumn['']['name'], '?:', Schema.Schema.Encoded<GetSchemaForType> | undefined | null, false, never> : TColumn['']['hasDefault'] extends true ? Schema.PropertySignature<'?:', Schema.Schema.Type<GetSchemaForType> | undefined, TColumn['']['name'], '?:', Schema.Schema.Encoded<GetSchemaForType> | undefined, true, never> : GetSchemaForType; type MapSelectColumnToPropertySignature = TColumn['']['notNull'] extends false ? Schema.Schema<Schema.Schema.Type<GetSchemaForType> | null> : GetSchemaForType; type InsertColumnPropertySignatures = { [K in keyof Columns]: MapInsertColumnToPropertySignature<Columns[K]>; }; type SelectColumnPropertySignatures = { [K in keyof Columns]: MapSelectColumnToPropertySignature<Columns[K]>; }; type PropertySignatureReplaceType<S, ReplaceWith> = S extends Schema.PropertySignature<infer TokenType, any, infer Name, infer TokenEncoded, infer Encoded, infer HasDefault, infer R> ? Schema.PropertySignature<TokenType, ReplaceWith, Name, TokenEncoded, Encoded, HasDefault, R> : never; type CarryOverNull<From, To> = null extends From ? To | null : To; type CarryOverUndefined<From, To> = undefined extends From ? To | undefined : To; type CarryOverOptionality<From, To> = CarryOverNull<From, CarryOverUndefined<From, To>>; type BuildInsertSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine | {} = {}> = Schema.Struct<InsertColumnPropertySignatures & { [K in keyof TRefine & string]: InsertColumnPropertySignatures[K] extends Schema.PropertySignature<any, any, any, any, any, any> ? TRefine[K] extends Schema.Schema<any, any, any> ? Schema.Schema<CarryOverOptionality<PropertySignatureType<InsertColumnPropertySignatures[K]>, Schema.Schema.Type<TRefine[K]>>> : TRefine[K] extends (...a: any[]) => any ? PropertySignatureReplaceType<InsertColumnPropertySignatures[K], CarryOverOptionality<PropertySignatureType<InsertColumnPropertySignatures[K]>, Schema.Schema.Type<ReturnType<TRefine[K]>>>> : never : TRefine[K]; }>; type BuildSelectSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine | {} = {}> = Schema.Struct<{ [K in keyof SelectColumnPropertySignatures]: SelectColumnPropertySignatures[K]; } & { [K in keyof TRefine & string]: SelectColumnPropertySignatures[K] extends Schema.PropertySignature<any, any, any, any, any, any> ? TRefine[K] extends Schema.Schema<any, any, any> ? Schema.Schema<CarryOverOptionality<PropertySignatureType<SelectColumnPropertySignatures[K]>, Schema.Schema.Type<TRefine[K]>>> : TRefine[K] extends (...a: any[]) => any ? PropertySignatureReplaceType<SelectColumnPropertySignatures[K], CarryOverOptionality<PropertySignatureType<SelectColumnPropertySignatures[K]>, Schema.Schema.Type<ReturnType<TRefine[K]>>>> : never : TRefine[K]; }>; export declare function createInsertSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine>(table: TTable, refine?: { [K in keyof TRefine]: K extends keyof TTable['']['columns'] ? TRefine[K] : Drizzle.DrizzleTypeError<Column '${K & string}' does not exist in table '${TTable['_']['name']}'>; }): BuildInsertSchema<TTable, Drizzle.Equal<TRefine, InsertRefine> extends true ? {} : TRefine>; export declare function createSelectSchema<TTable extends Drizzle.Table, TRefine extends SelectRefine>(table: TTable, refine?: { [K in keyof TRefine]: K extends keyof TTable['']['columns'] ? TRefine[K] : Drizzle.DrizzleTypeError<Column '${K & string}' does not exist in table '${TTable['_']['name']}'>; }): BuildSelectSchema<TTable, Drizzle.Equal<TRefine, SelectRefine> extends true ? {} : TRefine>; export {}; ./index.d.mts000644 000766 000024 00000016713 15012666403 013316 0ustar00kdu3staff000000 000000 import * as Drizzle from 'drizzle-orm'; import { Schema } from 'effect'; type Columns = TTable['']['columns'] extends infer TColumns extends Record<string, Drizzle.Column> ? TColumns : never; type PropertySignatureEncoded = T extends Schema.PropertySignature<any, any, any, any, infer From, any, any> ? From : never; type PropertySignatureType = T extends Schema.PropertySignature<any, infer To, any, any, any, any, any> ? To : never; type InsertRefineArg<TTable extends Drizzle.Table, Col extends keyof Columns> = Schema.Schema<any, any, any> | ((s: { [S in keyof InsertColumnPropertySignatures]: InsertColumnPropertySignatures[S] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[S]>, undefined | null>, Exclude<PropertySignatureType<InsertColumnPropertySignatures[S]>, undefined | null>> : InsertColumnPropertySignatures[S]; }) => InsertColumnPropertySignatures[Col] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any> : Schema.Schema<Exclude<Schema.Schema.Encoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any>); type SelectRefineArg<TTable extends Drizzle.Table, Col extends keyof Columns> = Schema.Schema<any, any, any> | ((s: { [S in keyof InsertColumnPropertySignatures]: InsertColumnPropertySignatures[S] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[S]>, undefined | null>, Exclude<PropertySignatureType<InsertColumnPropertySignatures[S]>, undefined | null>> : InsertColumnPropertySignatures[S]; }) => InsertColumnPropertySignatures[Col] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any> : Schema.Schema<Exclude<Schema.Schema.Encoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any>); type InsertRefine = { [K in keyof Columns]?: InsertRefineArg<TTable, K>; }; type SelectRefine = { [K in keyof Columns]?: SelectRefineArg<TTable, K>; }; type Json = string | number | boolean | { [key: string]: Json; } | Json[] | readonly Json[] | null; export declare const Json: Schema.suspend<Json, Json, never>; type GetSchemaForType = TColumn['']['dataType'] extends infer TDataType ? TDataType extends 'custom' ? Schema.Schema : TDataType extends 'json' ? Schema.Schema : TColumn extends { enumValues: [string, ...string[]]; } ? Drizzle.Equal<TColumn['enumValues'], [string, ...string[]]> extends true ? Schema.Schema : Schema.Schema<TColumn['enumValues'][number]> : TDataType extends 'array' ? Schema.Schema<null | readonly Drizzle.Assume<TColumn['_'], { baseColumn: Drizzle.Column; }>['baseColumn']['']['data'][]> : TDataType extends 'bigint' ? Schema.Schema : TDataType extends 'number' ? Schema.Schema : TDataType extends 'string' ? Schema.Schema : TDataType extends 'boolean' ? Schema.Schema : TDataType extends 'date' ? Schema.Schema : Schema.Schema : never; type MapInsertColumnToPropertySignature = TColumn['']['notNull'] extends false ? Schema.PropertySignature<'?:', Schema.Schema.Type<GetSchemaForType> | undefined | null, TColumn['']['name'], '?:', Schema.Schema.Encoded<GetSchemaForType> | undefined | null, false, never> : TColumn['']['hasDefault'] extends true ? Schema.PropertySignature<'?:', Schema.Schema.Type<GetSchemaForType> | undefined, TColumn['']['name'], '?:', Schema.Schema.Encoded<GetSchemaForType> | undefined, true, never> : GetSchemaForType; type MapSelectColumnToPropertySignature = TColumn['']['notNull'] extends false ? Schema.Schema<Schema.Schema.Type<GetSchemaForType> | null> : GetSchemaForType; type InsertColumnPropertySignatures = { [K in keyof Columns]: MapInsertColumnToPropertySignature<Columns[K]>; }; type SelectColumnPropertySignatures = { [K in keyof Columns]: MapSelectColumnToPropertySignature<Columns[K]>; }; type PropertySignatureReplaceType<S, ReplaceWith> = S extends Schema.PropertySignature<infer TokenType, any, infer Name, infer TokenEncoded, infer Encoded, infer HasDefault, infer R> ? Schema.PropertySignature<TokenType, ReplaceWith, Name, TokenEncoded, Encoded, HasDefault, R> : never; type CarryOverNull<From, To> = null extends From ? To | null : To; type CarryOverUndefined<From, To> = undefined extends From ? To | undefined : To; type CarryOverOptionality<From, To> = CarryOverNull<From, CarryOverUndefined<From, To>>; type BuildInsertSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine | {} = {}> = Schema.Struct<InsertColumnPropertySignatures & { [K in keyof TRefine & string]: InsertColumnPropertySignatures[K] extends Schema.PropertySignature<any, any, any, any, any, any> ? TRefine[K] extends Schema.Schema<any, any, any> ? Schema.Schema<CarryOverOptionality<PropertySignatureType<InsertColumnPropertySignatures[K]>, Schema.Schema.Type<TRefine[K]>>> : TRefine[K] extends (...a: any[]) => any ? PropertySignatureReplaceType<InsertColumnPropertySignatures[K], CarryOverOptionality<PropertySignatureType<InsertColumnPropertySignatures[K]>, Schema.Schema.Type<ReturnType<TRefine[K]>>>> : never : TRefine[K]; }>; type BuildSelectSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine | {} = {}> = Schema.Struct<{ [K in keyof SelectColumnPropertySignatures]: SelectColumnPropertySignatures[K]; } & { [K in keyof TRefine & string]: SelectColumnPropertySignatures[K] extends Schema.PropertySignature<any, any, any, any, any, any> ? TRefine[K] extends Schema.Schema<any, any, any> ? Schema.Schema<CarryOverOptionality<PropertySignatureType<SelectColumnPropertySignatures[K]>, Schema.Schema.Type<TRefine[K]>>> : TRefine[K] extends (...a: any[]) => any ? PropertySignatureReplaceType<SelectColumnPropertySignatures[K], CarryOverOptionality<PropertySignatureType<SelectColumnPropertySignatures[K]>, Schema.Schema.Type<ReturnType<TRefine[K]>>>> : never : TRefine[K]; }>; export declare function createInsertSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine>(table: TTable, refine?: { [K in keyof TRefine]: K extends keyof TTable['']['columns'] ? TRefine[K] : Drizzle.DrizzleTypeError<Column '${K & string}' does not exist in table '${TTable['_']['name']}'>; }): BuildInsertSchema<TTable, Drizzle.Equal<TRefine, InsertRefine> extends true ? {} : TRefine>; export declare function createSelectSchema<TTable extends Drizzle.Table, TRefine extends SelectRefine>(table: TTable, refine?: { [K in keyof TRefine]: K extends keyof TTable['']['columns'] ? TRefine[K] : Drizzle.DrizzleTypeError<Column '${K & string}' does not exist in table '${TTable['_']['name']}'>; }): BuildSelectSchema<TTable, Drizzle.Equal<TRefine, SelectRefine> extends true ? {} : TRefine>; export {}; ./index.d.ts000644 000766 000024 00000016713 15012666403 013141 0ustar00kdu3staff000000 000000 import * as Drizzle from 'drizzle-orm'; import { Schema } from 'effect'; type Columns = TTable['']['columns'] extends infer TColumns extends Record<string, Drizzle.Column> ? TColumns : never; type PropertySignatureEncoded = T extends Schema.PropertySignature<any, any, any, any, infer From, any, any> ? From : never; type PropertySignatureType = T extends Schema.PropertySignature<any, infer To, any, any, any, any, any> ? To : never; type InsertRefineArg<TTable extends Drizzle.Table, Col extends keyof Columns> = Schema.Schema<any, any, any> | ((s: { [S in keyof InsertColumnPropertySignatures]: InsertColumnPropertySignatures[S] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[S]>, undefined | null>, Exclude<PropertySignatureType<InsertColumnPropertySignatures[S]>, undefined | null>> : InsertColumnPropertySignatures[S]; }) => InsertColumnPropertySignatures[Col] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any> : Schema.Schema<Exclude<Schema.Schema.Encoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any>); type SelectRefineArg<TTable extends Drizzle.Table, Col extends keyof Columns> = Schema.Schema<any, any, any> | ((s: { [S in keyof InsertColumnPropertySignatures]: InsertColumnPropertySignatures[S] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[S]>, undefined | null>, Exclude<PropertySignatureType<InsertColumnPropertySignatures[S]>, undefined | null>> : InsertColumnPropertySignatures[S]; }) => InsertColumnPropertySignatures[Col] extends Schema.PropertySignature<any, any, any, any, any, any, any> ? Schema.Schema<Exclude<PropertySignatureEncoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any> : Schema.Schema<Exclude<Schema.Schema.Encoded<InsertColumnPropertySignatures[Col]>, undefined | null>, any>); type InsertRefine = { [K in keyof Columns]?: InsertRefineArg<TTable, K>; }; type SelectRefine = { [K in keyof Columns]?: SelectRefineArg<TTable, K>; }; type Json = string | number | boolean | { [key: string]: Json; } | Json[] | readonly Json[] | null; export declare const Json: Schema.suspend<Json, Json, never>; type GetSchemaForType = TColumn['']['dataType'] extends infer TDataType ? TDataType extends 'custom' ? Schema.Schema : TDataType extends 'json' ? Schema.Schema : TColumn extends { enumValues: [string, ...string[]]; } ? Drizzle.Equal<TColumn['enumValues'], [string, ...string[]]> extends true ? Schema.Schema : Schema.Schema<TColumn['enumValues'][number]> : TDataType extends 'array' ? Schema.Schema<null | readonly Drizzle.Assume<TColumn['_'], { baseColumn: Drizzle.Column; }>['baseColumn']['']['data'][]> : TDataType extends 'bigint' ? Schema.Schema : TDataType extends 'number' ? Schema.Schema : TDataType extends 'string' ? Schema.Schema : TDataType extends 'boolean' ? Schema.Schema : TDataType extends 'date' ? Schema.Schema : Schema.Schema : never; type MapInsertColumnToPropertySignature = TColumn['']['notNull'] extends false ? Schema.PropertySignature<'?:', Schema.Schema.Type<GetSchemaForType> | undefined | null, TColumn['']['name'], '?:', Schema.Schema.Encoded<GetSchemaForType> | undefined | null, false, never> : TColumn['']['hasDefault'] extends true ? Schema.PropertySignature<'?:', Schema.Schema.Type<GetSchemaForType> | undefined, TColumn['']['name'], '?:', Schema.Schema.Encoded<GetSchemaForType> | undefined, true, never> : GetSchemaForType; type MapSelectColumnToPropertySignature = TColumn['']['notNull'] extends false ? Schema.Schema<Schema.Schema.Type<GetSchemaForType> | null> : GetSchemaForType; type InsertColumnPropertySignatures = { [K in keyof Columns]: MapInsertColumnToPropertySignature<Columns[K]>; }; type SelectColumnPropertySignatures = { [K in keyof Columns]: MapSelectColumnToPropertySignature<Columns[K]>; }; type PropertySignatureReplaceType<S, ReplaceWith> = S extends Schema.PropertySignature<infer TokenType, any, infer Name, infer TokenEncoded, infer Encoded, infer HasDefault, infer R> ? Schema.PropertySignature<TokenType, ReplaceWith, Name, TokenEncoded, Encoded, HasDefault, R> : never; type CarryOverNull<From, To> = null extends From ? To | null : To; type CarryOverUndefined<From, To> = undefined extends From ? To | undefined : To; type CarryOverOptionality<From, To> = CarryOverNull<From, CarryOverUndefined<From, To>>; type BuildInsertSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine | {} = {}> = Schema.Struct<InsertColumnPropertySignatures & { [K in keyof TRefine & string]: InsertColumnPropertySignatures[K] extends Schema.PropertySignature<any, any, any, any, any, any> ? TRefine[K] extends Schema.Schema<any, any, any> ? Schema.Schema<CarryOverOptionality<PropertySignatureType<InsertColumnPropertySignatures[K]>, Schema.Schema.Type<TRefine[K]>>> : TRefine[K] extends (...a: any[]) => any ? PropertySignatureReplaceType<InsertColumnPropertySignatures[K], CarryOverOptionality<PropertySignatureType<InsertColumnPropertySignatures[K]>, Schema.Schema.Type<ReturnType<TRefine[K]>>>> : never : TRefine[K]; }>; type BuildSelectSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine | {} = {}> = Schema.Struct<{ [K in keyof SelectColumnPropertySignatures]: SelectColumnPropertySignatures[K]; } & { [K in keyof TRefine & string]: SelectColumnPropertySignatures[K] extends Schema.PropertySignature<any, any, any, any, any, any> ? TRefine[K] extends Schema.Schema<any, any, any> ? Schema.Schema<CarryOverOptionality<PropertySignatureType<SelectColumnPropertySignatures[K]>, Schema.Schema.Type<TRefine[K]>>> : TRefine[K] extends (...a: any[]) => any ? PropertySignatureReplaceType<SelectColumnPropertySignatures[K], CarryOverOptionality<PropertySignatureType<SelectColumnPropertySignatures[K]>, Schema.Schema.Type<ReturnType<TRefine[K]>>>> : never : TRefine[K]; }>; export declare function createInsertSchema<TTable extends Drizzle.Table, TRefine extends InsertRefine>(table: TTable, refine?: { [K in keyof TRefine]: K extends keyof TTable['']['columns'] ? TRefine[K] : Drizzle.DrizzleTypeError<Column '${K & string}' does not exist in table '${TTable['_']['name']}'>; }): BuildInsertSchema<TTable, Drizzle.Equal<TRefine, InsertRefine> extends true ? {} : TRefine>; export declare function createSelectSchema<TTable extends Drizzle.Table, TRefine extends SelectRefine>(table: TTable, refine?: { [K in keyof TRefine]: K extends keyof TTable['_']['columns'] ? TRefine[K] : Drizzle.DrizzleTypeError<Column '${K & string}' does not exist in table '${TTable['_']['name']}'>; }): BuildSelectSchema<TTable, Drizzle.Equal<TRefine, SelectRefine> extends true ? {} : TRefine>; export {}; ./index.mjs000644 000766 000024 00000003574 15012666403 013063 0ustar00kdu3staff000000 000000 importas e from"drizzle-orm";importas t from"drizzle-orm/mysql-core";importas r from"drizzle-orm/pg-core";importas n from"drizzle-orm/sqlite-core";import{Schema as i}from"effect";const a=i.Union(i.String,i.Number,i.Boolean,i.Null),o=i.suspend((()=>i.Union(a,i.Array(o),i.Record({key:i.String,value:o}))));function s(t,r){const n=e.getTableColumns(t),a=Object.entries(n);let o=Object.fromEntries(a.map((([e,t])=>[e,m(t)])));r&&(o=Object.assign(o,Object.fromEntries(Object.entries(r).map((([e,t])=>[e,"function"!=typeof t||i.isSchema(t)||i.isPropertySignature(t)?t:t(o)])))));for(const[e,t]of a)t.notNull?t.hasDefault&&(o[e]=i.optional(o[e])):o[e]=i.optional(i.NullOr(o[e]));return i.Struct(o)}function l(t,r){const n=e.getTableColumns(t),a=Object.entries(n);let o=Object.fromEntries(a.map((([e,t])=>[e,m(t)])));r&&(o=Object.assign(o,Object.fromEntries(Object.entries(r).map((([e,t])=>[e,"function"!=typeof t||i.isSchema(t)||i.isPropertySignature(t)?t:t(o)])))));for(const[e,t]of a)t.notNull||(o[e]=i.NullOr(o[e]));return i.Struct(o)}function m(a){let s;if(function(e){return"enumValues"in e&&Array.isArray(e.enumValues)&&e.enumValues.length>0}(a)&&(s=a.enumValues.length?i.Literal(...a.enumValues):i.String),!s)if(e.is(a,r.PgUUID))s=i.UUID;else if("custom"===a.dataType)s=i.Any;else if("json"===a.dataType)s=o;else if("array"===a.dataType)s=i.Array(m(a.baseColumn));else if("number"===a.dataType)s=i.Number;else if("bigint"===a.dataType)s=i.BigIntFromSelf;else if("boolean"===a.dataType)s=i.Boolean;else if("date"===a.dataType)s=i.DateFromSelf;else if("string"===a.dataType){let o=i.String;(e.is(a,r.PgChar)||e.is(a,r.PgVarchar)||e.is(a,t.MySqlVarChar)||e.is(a,t.MySqlVarBinary)||e.is(a,t.MySqlChar)||e.is(a,n.SQLiteText))&&"number"==typeof a.length&&(o=o.pipe(i.maxLength(a.length))),s=o}return s||(s=i.Any),s}export{o as Json,s as createInsertSchema,l as createSelectSchema}; //# sourceMappingURL=index.mjs.map ./index.mjs.map000644 000766 000024 00000005641 15012666403 013634 0ustar00kdu3staff000000 000000 {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":[null],"names":["literalSchema","Schema","Union","String","Number","Boolean","Null","Json","suspend","Array","Record","key","value","createInsertSchema","table","refine","columns","Drizzle","getTableColumns","columnEntries","Object","entries","schemaEntries","fromEntries","map","name","column","mapColumnToSchema","assign","refineColumn","isSchema","isPropertySignature","notNull","hasDefault","optional","NullOr","Struct","createSelectSchema","type","isArray","enumValues","length","isWithEnum","Literal","is","DrizzlePg","PgUUID","UUID","dataType","Any","baseColumn","BigIntFromSelf","DateFromSelf","sType","PgChar","PgVarchar","DrizzleMysql","MySqlVarChar","MySqlVarBinary","MySqlChar","DrizzleSqlite","SQLiteText","pipe","maxLength"],"mappings":"uLAwJA,MAAMA,EAAgBC,EAAOC,MAC5BD,EAAOE,OACPF,EAAOG,OACPH,EAAOI,QACPJ,EAAOK,MAcKC,EAAON,EAAOO,SAC1B,IACCP,EAAOC,MACNF,EACAC,EAAOQ,MAAMF,GACbN,EAAOS,OAAO,CAAEC,IAAKV,EAAOE,OAAQS,MAAOL,OAkK9B,SAAAM,EAIfC,EACAC,GAYA,MAAMC,EAAUC,EAAQC,gBAAgBJ,GAClCK,EAAgBC,OAAOC,QAAQL,GAErC,IAAIM,EAGAF,OAAOG,YACVJ,EAAcK,KAAI,EAAEC,EAAMC,KAClB,CAACD,EAAME,EAAkBD,OAI9BX,IACHO,EAAgBF,OAAOQ,OACtBN,EACAF,OAAOG,YACNH,OAAOC,QAAQN,GAAQS,KAAI,EAAEC,EAAMI,KAC3B,CACNJ,EACwB,mBAAjBI,GACF5B,EAAO6B,SAASD,IAChB5B,EAAO8B,oBAAoBF,GAE7BA,EADAA,EAAaP,SAQrB,IAAK,MAAOG,EAAMC,KAAWP,EACvBO,EAAOM,QAURN,EAAOO,aAGVX,EAAcG,GAAQxB,EAAOiC,SAC5BZ,EAAcG,KAXfH,EAAcG,GAAQxB,EAAOiC,SAC5BjC,EAAOkC,OAAOb,EAAcG,KAe/B,OAAOxB,EAAOmC,OAAOd,EACtB,CAEgB,SAAAe,EAIfvB,EACAC,GAYA,MAAMC,EAAUC,EAAQC,gBAAgBJ,GAClCK,EAAgBC,OAAOC,QAAQL,GAErC,IAAIM,EAGAF,OAAOG,YACVJ,EAAcK,KAAI,EAAEC,EAAMC,KAClB,CAACD,EAAME,EAAkBD,OAI9BX,IACHO,EAAgBF,OAAOQ,OACtBN,EACAF,OAAOG,YACNH,OAAOC,QAAQN,GAAQS,KAAI,EAAEC,EAAMI,KAC3B,CACNJ,EACwB,mBAAjBI,GACF5B,EAAO6B,SAASD,IAChB5B,EAAO8B,oBAAoBF,GAE7BA,EADAA,EAAaP,SAQrB,IAAK,MAAOG,EAAMC,KAAWP,EACvBO,EAAOM,UACXV,EAAcG,GAAQxB,EAAOkC,OAC5Bb,EAAcG,KAKjB,OAAOxB,EAAOmC,OAAOd,EACtB,CAEA,SAASK,EAAkBD,GAC1B,IAAIY,EAQJ,GA6CD,SACCZ,GAEA,MACC,eAAgBA,GACbjB,MAAM8B,QAAQb,EAAOc,aACrBd,EAAOc,WAAWC,OAAS,CAEhC,CA3DKC,CAAWhB,KACdY,EAAOZ,EAAOc,WAAWC,OACtBxC,EAAO0C,WAAWjB,EAAOc,YACzBvC,EAAOE,SAGNmC,EACJ,GAAIrB,EAAQ2B,GAAGlB,EAAQmB,EAAUC,QAChCR,EAAOrC,EAAO8C,UACR,GAAwB,WAApBrB,EAAOsB,SACjBV,EAAOrC,EAAOgD,SACR,GAAwB,SAApBvB,EAAOsB,SACjBV,EAAO/B,OACD,GAAwB,UAApBmB,EAAOsB,SACjBV,EAAOrC,EAAOQ,MACbkB,EAAmBD,EAAuCwB,kBAErD,GAAwB,WAApBxB,EAAOsB,SACjBV,EAAOrC,EAAOG,YACR,GAAwB,WAApBsB,EAAOsB,SACjBV,EAAOrC,EAAOkD,oBACR,GAAwB,YAApBzB,EAAOsB,SACjBV,EAAOrC,EAAOI,aACR,GAAwB,SAApBqB,EAAOsB,SACjBV,EAAOrC,EAAOmD,kBACR,GAAwB,WAApB1B,EAAOsB,SAAuB,CACxC,IAAIK,EAAQpD,EAAOE,QAGjBc,EAAQ2B,GAAGlB,EAAQmB,EAAUS,SAC1BrC,EAAQ2B,GAAGlB,EAAQmB,EAAUU,YAC7BtC,EAAQ2B,GAAGlB,EAAQ8B,EAAaC,eAChCxC,EAAQ2B,GAAGlB,EAAQ8B,EAAaE,iBAChCzC,EAAQ2B,GAAGlB,EAAQ8B,EAAaG,YAChC1C,EAAQ2B,GAAGlB,EAAQkC,EAAcC,cACT,iBAAlBnC,EAAOe,SAEjBY,EAAQA,EAAMS,KAAK7D,EAAO8D,UAAUrC,EAAOe,UAG5CH,EAAOe,CACP,CAOF,OAJKf,IACJA,EAAOrC,EAAOgD,KAGRX,CACR"}./package.json000644 000766 000024 00000003243 15012666403 013520 0ustar00kdu3staff000000 000000 { "name": "@handfish/drizzle-effect", "version": "0.0.4", "description": "Generate effect 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": [ "effect", "effect-ts", "validate", "validation", "schema", "drizzle", "orm", "pg", "mysql", "postgresql", "postgres", "sqlite", "database", "sql", "typescript", "ts" ], "author": "Drizzle Team", "license": "MIT", "peerDependencies": { "drizzle-orm": ">=0.23.13", "effect": ">=3.10.16" }, "devDependencies": { "@rollup/plugin-terser": "^0.4.1", "@rollup/plugin-typescript": "^11.1.0", "@types/node": "^18.15.10", "cpy": "^10.1.0", "drizzle-orm": "link:../drizzle-orm/dist", "effect": "^3.14.13", "rimraf": "^5.0.0", "rollup": "^3.20.7", "vite-tsconfig-paths": "^4.3.2", "vitest": "^1.6.0", "zx": "^7.2.2" } }