orchid-orm-valibot 0.2.55 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -10
- package/dist/index.js +16 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -25
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { ParseColumn, EncodeColumn, AsTypeArg,
|
|
2
|
-
import { ColumnType, EnumColumn, ArrayColumnValue,
|
|
1
|
+
import { ColumnTypeBase, ParseColumn, ParseNullColumn, EncodeColumn, AsTypeArg, NullableColumn, ColumnSchemaGetterTableClass, ColumnSchemaGetterColumns, ErrorMessage, StringTypeData } from 'orchid-core';
|
|
2
|
+
import { ColumnType, EnumColumn, ArrayColumnValue, JSONColumn, ArrayColumn, SmallIntColumn, IntegerColumn, RealColumn, SmallSerialColumn, SerialColumn, BigIntColumn, DecimalColumn, DoublePrecisionColumn, BigSerialColumn, MoneyColumn, VarCharColumn, TextColumn, StringColumn, CitextColumn, DateColumn, TimestampColumn, TimestampTZColumn } from 'pqb';
|
|
3
3
|
import { BaseValidation, BaseSchema, Output, NumberSchema, DateSchema, PicklistSchema, NullableSchema, UnknownSchema, BooleanSchema, InstanceSchema, NeverSchema, StringSchema, ObjectSchema, OptionalSchema, ArraySchema } from 'valibot';
|
|
4
4
|
|
|
5
|
-
declare class ValibotJSONColumn<Schema extends BaseSchema> extends
|
|
6
|
-
dataType: "jsonb";
|
|
7
|
-
operators: OperatorsJson;
|
|
8
|
-
data: ColumnData;
|
|
5
|
+
declare class ValibotJSONColumn<Schema extends BaseSchema> extends JSONColumn<Output<Schema>, ValibotSchemaConfig, Schema> {
|
|
9
6
|
constructor(schema: Schema);
|
|
10
|
-
toCode(ctx: ColumnToCodeCtx, key: string): Code;
|
|
11
7
|
}
|
|
12
8
|
interface ArrayMethods<Value> {
|
|
13
9
|
min<T extends ColumnTypeBase>(this: T, value: Value, params?: ErrorMessage): T;
|
|
@@ -165,9 +161,8 @@ type PointSchemaValibot = ObjectSchema<{
|
|
|
165
161
|
}>;
|
|
166
162
|
interface ValibotSchemaConfig {
|
|
167
163
|
type: BaseSchema;
|
|
168
|
-
parse<T extends
|
|
169
|
-
|
|
170
|
-
}, OutputSchema extends BaseSchema, Out = Output<OutputSchema>>(this: T, _schema: OutputSchema, fn: (input: T['type']) => Out): ParseColumn<T, OutputSchema, Out>;
|
|
164
|
+
parse<T extends ColumnTypeBase, OutputSchema extends BaseSchema, Out = Output<OutputSchema>>(this: T, _schema: OutputSchema, fn: (input: T['type']) => Out): ParseColumn<T, OutputSchema, Out>;
|
|
165
|
+
parseNull<T extends ColumnTypeBase, NullSchema extends BaseSchema, NullType = Output<NullSchema>>(this: T, _schema: NullSchema, fn: () => NullType): ParseNullColumn<T, NullSchema, NullType>;
|
|
171
166
|
encode<T extends {
|
|
172
167
|
type: unknown;
|
|
173
168
|
}, InputSchema extends BaseSchema, In = Output<InputSchema>>(this: T, _schema: InputSchema, fn: (input: In) => unknown): EncodeColumn<T, InputSchema, In>;
|
package/dist/index.js
CHANGED
|
@@ -23,18 +23,11 @@ var __spreadValues = (a, b) => {
|
|
|
23
23
|
return a;
|
|
24
24
|
};
|
|
25
25
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
26
|
-
|
|
27
|
-
class ValibotJSONColumn extends pqb.ColumnType {
|
|
26
|
+
class ValibotJSONColumn extends pqb.JSONColumn {
|
|
28
27
|
constructor(schema) {
|
|
29
28
|
super(valibotSchemaConfig, schema);
|
|
30
|
-
this.dataType = "jsonb";
|
|
31
|
-
this.operators = pqb.Operators.json;
|
|
32
|
-
}
|
|
33
|
-
toCode(ctx, key) {
|
|
34
|
-
return pqb.columnCode(this, ctx, key, [`json()`], this.data, toCodeSkip);
|
|
35
29
|
}
|
|
36
30
|
}
|
|
37
|
-
ValibotJSONColumn.prototype.encodeFn = JSON.stringify;
|
|
38
31
|
function applyMethod(column, key, value, validation, params) {
|
|
39
32
|
const cloned = orchidCore.setDataValue(column, key, value, params);
|
|
40
33
|
const v = validation(
|
|
@@ -311,32 +304,30 @@ class TimestampColumnValibot extends pqb.TimestampTZColumn {
|
|
|
311
304
|
}
|
|
312
305
|
Object.assign(TimestampColumnValibot.prototype, dateMethods);
|
|
313
306
|
let pointSchema;
|
|
314
|
-
const
|
|
315
|
-
const parseDateToDate = (value) => value ? new Date(value) : value;
|
|
316
|
-
parseDateToNumber.hideFromCode = parseDateToDate.hideFromCode = true;
|
|
307
|
+
const parseDateToDate = (value) => new Date(value);
|
|
317
308
|
const valibotSchemaConfig = {
|
|
318
309
|
type: void 0,
|
|
319
310
|
parse(schema, fn) {
|
|
320
|
-
return
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
});
|
|
311
|
+
return pqb.setColumnParse(this, fn, schema);
|
|
312
|
+
},
|
|
313
|
+
parseNull(schema, fn) {
|
|
314
|
+
return pqb.setColumnParseNull(this, fn, schema);
|
|
325
315
|
},
|
|
326
316
|
encode(schema, fn) {
|
|
327
|
-
return
|
|
328
|
-
inputSchema: schema,
|
|
329
|
-
encodeFn: fn
|
|
330
|
-
});
|
|
317
|
+
return pqb.setColumnEncode(this, fn, schema);
|
|
331
318
|
},
|
|
332
319
|
asType(_types) {
|
|
333
320
|
return this;
|
|
334
321
|
},
|
|
335
322
|
dateAsNumber() {
|
|
336
|
-
|
|
323
|
+
const c = this.parse(valibot.number([]), Date.parse);
|
|
324
|
+
c.data.defaultParse = Date.parse;
|
|
325
|
+
return c;
|
|
337
326
|
},
|
|
338
327
|
dateAsDate() {
|
|
339
|
-
|
|
328
|
+
const c = this.parse(valibot.date([]), parseDateToDate);
|
|
329
|
+
c.data.defaultParse = parseDateToDate;
|
|
330
|
+
return c;
|
|
340
331
|
},
|
|
341
332
|
enum(dataType, type) {
|
|
342
333
|
return new pqb.EnumColumn(valibotSchemaConfig, dataType, type, valibot.picklist(type));
|
|
@@ -348,7 +339,9 @@ const valibotSchemaConfig = {
|
|
|
348
339
|
return orchidCore.makeColumnNullable(
|
|
349
340
|
this,
|
|
350
341
|
valibot.nullable(this.inputSchema),
|
|
351
|
-
valibot.nullable(
|
|
342
|
+
valibot.nullable(
|
|
343
|
+
this.nullSchema ? valibot.union([this.outputSchema, this.nullSchema]) : this.outputSchema
|
|
344
|
+
),
|
|
352
345
|
valibot.nullable(this.querySchema)
|
|
353
346
|
);
|
|
354
347
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/valibot.ts"],"sourcesContent":["import {\n AsTypeArg,\n Code,\n ColumnSchemaGetterColumns,\n ColumnSchemaGetterTableClass,\n ColumnTypeBase,\n EncodeColumn,\n NullableColumn,\n ParseColumn,\n makeColumnNullable,\n ErrorMessage,\n setDataValue,\n StringTypeData,\n ColumnToCodeCtx,\n} from 'orchid-core';\nimport {\n ArrayColumn,\n ArrayColumnValue,\n BigIntColumn,\n BigSerialColumn,\n CitextColumn,\n columnCode,\n ColumnData,\n ColumnType,\n DateColumn,\n DecimalColumn,\n DoublePrecisionColumn,\n EnumColumn,\n IntegerColumn,\n MoneyColumn,\n Operators,\n OperatorsJson,\n RealColumn,\n SerialColumn,\n SmallIntColumn,\n SmallSerialColumn,\n StringColumn,\n TextColumn,\n TimestampColumn,\n TimestampTZColumn,\n VarCharColumn,\n} from 'pqb';\nimport {\n actionIssue,\n actionOutput,\n array,\n ArraySchema,\n BaseSchema,\n BaseTransformation,\n BaseValidation,\n boolean,\n BooleanSchema,\n coerce,\n cuid2,\n date,\n DateSchema,\n email,\n emoji,\n endsWith,\n finite,\n includes,\n instance,\n InstanceSchema,\n integer,\n ip,\n isoDateTime,\n length,\n maxLength,\n maxValue,\n minLength,\n minValue,\n never,\n NeverSchema,\n nullable,\n NullableSchema,\n number,\n NumberSchema,\n object,\n ObjectEntries,\n ObjectSchema,\n optional,\n OptionalSchema,\n Output,\n partial,\n pick,\n picklist,\n PicklistSchema,\n regex,\n required,\n startsWith,\n string,\n stringify,\n StringSchema,\n toLowerCase,\n toTrimmed,\n toUpperCase,\n ulid,\n unknown,\n UnknownSchema,\n url,\n uuid,\n} from 'valibot';\n\n// skip adding the default `encode` function to code\nconst toCodeSkip = { encodeFn: JSON.stringify };\n\nclass ValibotJSONColumn<Schema extends BaseSchema> extends ColumnType<\n ValibotSchemaConfig,\n Output<Schema>,\n Schema,\n OperatorsJson\n> {\n dataType = 'jsonb' as const;\n operators = Operators.json;\n declare data: ColumnData;\n\n constructor(schema: Schema) {\n super(valibotSchemaConfig, schema);\n }\n\n toCode(ctx: ColumnToCodeCtx, key: string): Code {\n return columnCode(this, ctx, key, [`json()`], this.data, toCodeSkip);\n }\n}\n\n// Encode data of both types with JSON.stringify\nValibotJSONColumn.prototype.encodeFn = JSON.stringify;\n\nfunction applyMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n value: unknown,\n validation: (value: never, params?: string) => BaseValidation,\n params?: ErrorMessage,\n) {\n const cloned = setDataValue(column, key, value, params);\n\n const v = validation(\n value as never,\n typeof params === 'object' ? params.message : params,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\nfunction applySimpleMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n validation: (...args: never[]) => BaseValidation | BaseTransformation,\n params?: ErrorMessage,\n ...args: unknown[]\n) {\n const cloned = setDataValue(column, key, true, params);\n\n const v = validation(\n ...(args as never[]),\n (typeof params === 'object' ? params.message : params) as never,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\ninterface ArrayMethods<Value> {\n // Require a minimum length (inclusive)\n min<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a maximum length (inclusive)\n max<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a specific length\n length<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a value to be non-empty\n nonEmpty<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst arrayMethods: ArrayMethods<number> = {\n min(value, params) {\n return applyMethod(this, 'min', value, minLength, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxLength, params);\n },\n length(value, params) {\n return applyMethod(this, 'length', value, length, params);\n },\n nonEmpty(params) {\n return applyMethod(this, 'min', 1, minLength, params);\n },\n};\n\ninterface ValibotArrayColumn<Item extends ArrayColumnValue>\n extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n >,\n ArrayMethods<number> {}\n\nclass ValibotArrayColumn<Item extends ArrayColumnValue> extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n> {\n constructor(item: Item) {\n super(valibotSchemaConfig, item, array(item.inputSchema, []));\n }\n}\n\nObject.assign(ValibotArrayColumn.prototype, arrayMethods);\n\ninterface NumberMethods {\n lt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n lte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n max<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n min<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n positive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonNegative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n negative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonPositive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n step<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n int<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n finite<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n safe<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nexport type GtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'gt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function gt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): GtValidation<TInput, TRequirement> {\n return {\n type: 'gt',\n expects: `>${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input > this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n gt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type LtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'lt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function lt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): LtValidation<TInput, TRequirement> {\n return {\n type: 'lt',\n expects: `<${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input < this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n lt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type StepValidation<\n TInput extends number,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'step';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function step<TInput extends number, TRequirement extends TInput>(\n requirement: TRequirement,\n message?: string,\n): StepValidation<TInput, TRequirement> {\n return {\n type: 'step',\n expects: `a multiple of ${stringify(requirement)}`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input % this.requirement === 0) {\n return actionOutput(input);\n }\n return actionIssue(this, step, input, 'value', stringify(input));\n },\n };\n}\n\nconst numberMethods: NumberMethods = {\n // Require a value to be lower than a given number\n lt(value, params) {\n return applyMethod(this, 'lt', value, lt, params);\n },\n\n // Require a value to be lower than or equal to a given number (the same as `max`)\n lte(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be lower than or equal to a given number\n max(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be greater than a given number\n gt(value, params) {\n return applyMethod(this, 'gt', value, gt, params);\n },\n\n // Require a value to be greater than or equal to a given number (the same as `min`)\n gte(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than or equal to a given number\n min(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than 0\n positive(params) {\n return applyMethod(this, 'gt', 0, gt, params);\n },\n\n // Require a value to be greater than or equal to 0\n nonNegative(params) {\n return applyMethod(this, 'gte', 0, minValue, params);\n },\n\n // Require a value to be lower than 0\n negative(params) {\n return applyMethod(this, 'lt', 0, lt, params);\n },\n\n // Require a value to be lower than or equal to 0\n nonPositive(params) {\n return applyMethod(this, 'lte', 0, maxValue, params);\n },\n\n // Require a value to be a multiple of a given number\n step(value, params) {\n return applyMethod(this, 'step', value, step, params);\n },\n\n // Require a value to be an integer\n int(params) {\n return applySimpleMethod(this, 'int', integer, params);\n },\n\n // Exclude `Infinity` from being a valid value\n finite(params) {\n return applySimpleMethod(this, 'finite', finite, params);\n },\n\n // Require the value to be less than or equal to Number.MAX_SAFE_INTEGER\n safe(params) {\n return applySimpleMethod(\n applySimpleMethod(\n this,\n 'safe',\n minValue,\n params,\n Number.MIN_SAFE_INTEGER,\n ),\n 'safe',\n maxValue,\n params,\n Number.MAX_SAFE_INTEGER,\n );\n },\n};\n\ninterface SmallIntColumnValibot\n extends SmallIntColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallIntColumnValibot extends SmallIntColumn<ValibotSchemaConfig> {}\nObject.assign(SmallIntColumnValibot.prototype, numberMethods);\n\ninterface IntegerColumnValibot\n extends IntegerColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass IntegerColumnValibot extends IntegerColumn<ValibotSchemaConfig> {}\nObject.assign(IntegerColumnValibot.prototype, numberMethods);\n\ninterface RealColumnValibot\n extends RealColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass RealColumnValibot extends RealColumn<ValibotSchemaConfig> {}\nObject.assign(RealColumnValibot.prototype, numberMethods);\n\ninterface SmallSerialColumnValibot\n extends SmallSerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallSerialColumnValibot extends SmallSerialColumn<ValibotSchemaConfig> {}\nObject.assign(SmallSerialColumnValibot.prototype, numberMethods);\n\ninterface SerialColumnValibot\n extends SerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SerialColumnValibot extends SerialColumn<ValibotSchemaConfig> {}\nObject.assign(SerialColumnValibot.prototype, numberMethods);\n\ninterface StringMethods extends ArrayMethods<number> {\n // Check a value to be a valid email\n email<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid url\n url<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be an emoji\n emoji<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid uuid\n uuid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid cuid2\n cuid2<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid ulid\n ulid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Validate the value over the given regular expression\n regex<T extends ColumnTypeBase>(\n this: T,\n value: RegExp,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to include a given string\n includes<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to start with a given string\n startsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to end with a given string\n endsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value have a valid datetime string\n datetime<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['datetime'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Check a value to be a valid ip address\n ip<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['ip'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Trim the value during a validation\n trim<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to a lower case during a validation\n toLowerCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to an upper case during a validation\n toUpperCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst stringMethods: StringMethods = {\n ...(arrayMethods as unknown as ArrayMethods<number>),\n\n email(params) {\n return applySimpleMethod(this, 'email', email, params);\n },\n\n url(params) {\n return applySimpleMethod(this, 'url', url, params);\n },\n\n emoji(params) {\n return applySimpleMethod(this, 'emoji', emoji, params);\n },\n\n uuid(params) {\n return applySimpleMethod(this, 'uuid', uuid, params);\n },\n\n cuid2(params) {\n return applySimpleMethod(this, 'cuid2', cuid2, params);\n },\n\n ulid(params) {\n return applySimpleMethod(this, 'ulid', ulid, params);\n },\n\n regex(value, params) {\n return applyMethod(this, 'regex', value, regex, params);\n },\n\n includes(value, params) {\n return applyMethod(this, 'includes', value, includes, params);\n },\n\n startsWith(value, params) {\n return applyMethod(this, 'startsWith', value, startsWith, params);\n },\n\n endsWith(value, params) {\n return applyMethod(this, 'endsWith', value, endsWith, params);\n },\n\n datetime(params) {\n return applySimpleMethod(this, 'datetime', isoDateTime, params);\n },\n\n ip(params = {}) {\n return applySimpleMethod(this, 'ip', ip, params);\n },\n\n trim(params) {\n return applySimpleMethod(this, 'trim', toTrimmed, params);\n },\n\n toLowerCase(params) {\n return applySimpleMethod(this, 'toLowerCase', toLowerCase, params);\n },\n\n toUpperCase(params) {\n return applySimpleMethod(this, 'toUpperCase', toUpperCase, params);\n },\n};\n\ninterface BigIntColumnValibot\n extends BigIntColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigIntColumnValibot extends BigIntColumn<ValibotSchemaConfig> {}\nObject.assign(BigIntColumnValibot.prototype, stringMethods);\n\ninterface DecimalColumnValibot\n extends DecimalColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DecimalColumnValibot extends DecimalColumn<ValibotSchemaConfig> {}\nObject.assign(DecimalColumnValibot.prototype, stringMethods);\n\ninterface DoublePrecisionColumnValibot\n extends DoublePrecisionColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DoublePrecisionColumnValibot extends DoublePrecisionColumn<ValibotSchemaConfig> {}\nObject.assign(DoublePrecisionColumnValibot.prototype, stringMethods);\n\ninterface BigSerialColumnValibot\n extends BigSerialColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigSerialColumnValibot extends BigSerialColumn<ValibotSchemaConfig> {}\nObject.assign(BigSerialColumnValibot.prototype, stringMethods);\n\ninterface MoneyColumnValibot\n extends MoneyColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass MoneyColumnValibot extends MoneyColumn<ValibotSchemaConfig> {}\nObject.assign(MoneyColumnValibot.prototype, numberMethods);\n\ninterface VarCharColumnValibot\n extends VarCharColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass VarCharColumnValibot extends VarCharColumn<ValibotSchemaConfig> {}\nObject.assign(VarCharColumnValibot.prototype, stringMethods);\n\ninterface TextColumnValibot\n extends TextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass TextColumnValibot extends TextColumn<ValibotSchemaConfig> {}\nObject.assign(TextColumnValibot.prototype, stringMethods);\n\ninterface StringColumnValibot\n extends StringColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass StringColumnValibot extends StringColumn<ValibotSchemaConfig> {}\nObject.assign(StringColumnValibot.prototype, stringMethods);\n\ninterface CitextColumnValibot\n extends CitextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass CitextColumnValibot extends CitextColumn<ValibotSchemaConfig> {}\nObject.assign(CitextColumnValibot.prototype, stringMethods);\n\ninterface DateMethods {\n // Require a value to be greater than or equal to a given Date object\n min<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n\n // Require a value to be lower than or equal to a given Date object\n max<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n}\n\nconst dateMethods: DateMethods = {\n min(value, params) {\n return applyMethod(this, 'min', value, minValue, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxValue, params);\n },\n};\n\ninterface DateColumnValibot\n extends DateColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass DateColumnValibot extends DateColumn<ValibotSchemaConfig> {}\nObject.assign(DateColumnValibot.prototype, dateMethods);\n\ninterface TimestampNoTzColumnValibot\n extends TimestampColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampNoTzColumnValibot extends TimestampColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampNoTzColumnValibot.prototype, dateMethods);\n\ninterface TimestampColumnValibot\n extends TimestampTZColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampColumnValibot extends TimestampTZColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampColumnValibot.prototype, dateMethods);\n\ntype PointSchemaValibot = ObjectSchema<{\n srid: OptionalSchema<NumberSchema>;\n lon: NumberSchema;\n lat: NumberSchema;\n}>;\n\nlet pointSchema: PointSchemaValibot | undefined;\n\nexport interface ValibotSchemaConfig {\n type: BaseSchema;\n\n parse<\n T extends { type: unknown },\n OutputSchema extends BaseSchema,\n Out = Output<OutputSchema>,\n >(\n this: T,\n _schema: OutputSchema,\n fn: (input: T['type']) => Out,\n ): ParseColumn<T, OutputSchema, Out>;\n\n encode<\n T extends { type: unknown },\n InputSchema extends BaseSchema,\n In = Output<InputSchema>,\n >(\n this: T,\n _schema: InputSchema,\n fn: (input: In) => unknown,\n ): EncodeColumn<T, InputSchema, In>;\n\n asType<\n T,\n Types extends AsTypeArg<BaseSchema>,\n TypeSchema extends BaseSchema = Types extends { type: BaseSchema }\n ? Types['type']\n : never,\n Type = Output<TypeSchema>,\n >(\n this: T,\n types: Types,\n ): {\n [K in keyof T]: K extends 'type'\n ? Type\n : K extends 'inputType'\n ? Types['input'] extends BaseSchema\n ? Output<Types['input']>\n : Type\n : K extends 'inputSchema'\n ? Types['input'] extends BaseSchema\n ? Types['input']\n : TypeSchema\n : K extends 'outputType'\n ? Types['output'] extends BaseSchema\n ? Output<Types['output']>\n : Type\n : K extends 'outputSchema'\n ? Types['output'] extends BaseSchema\n ? Types['output']\n : TypeSchema\n : K extends 'queryType'\n ? Types['query'] extends BaseSchema\n ? Output<Types['query']>\n : Type\n : K extends 'querySchema'\n ? Types['query'] extends BaseSchema\n ? Types['query']\n : TypeSchema\n : T[K];\n };\n\n dateAsNumber<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, NumberSchema, number>;\n\n dateAsDate<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, DateSchema, Date>;\n\n enum<U extends string, T extends readonly [U, ...U[]]>(\n dataType: string,\n type: T,\n ): EnumColumn<ValibotSchemaConfig, PicklistSchema<T>, U, T>;\n\n array<Item extends ArrayColumnValue>(item: Item): ValibotArrayColumn<Item>;\n\n nullable<T extends ColumnTypeBase>(\n this: T,\n ): NullableColumn<\n T,\n NullableSchema<T['inputSchema']>,\n NullableSchema<T['outputSchema']>,\n NullableSchema<T['querySchema']>\n >;\n\n json<Schema extends BaseSchema = UnknownSchema>(\n schema?: Schema,\n ): ValibotJSONColumn<Schema>;\n\n boolean(): BooleanSchema;\n buffer(): InstanceSchema<typeof Buffer>;\n unknown(): UnknownSchema;\n never(): NeverSchema;\n stringSchema(): StringSchema;\n stringMin(max: number): StringSchema;\n stringMax(max: number): StringSchema;\n stringMinMax(min: number, max: number): StringSchema;\n number(): NumberSchema;\n int(): NumberSchema;\n stringNumberDate(): DateSchema;\n timeInterval(): ObjectSchema<{\n years: OptionalSchema<NumberSchema>;\n months: OptionalSchema<NumberSchema>;\n days: OptionalSchema<NumberSchema>;\n hours: OptionalSchema<NumberSchema>;\n minutes: OptionalSchema<NumberSchema>;\n seconds: OptionalSchema<NumberSchema>;\n }>;\n bit(max: number): StringSchema;\n uuid(): StringSchema;\n\n inputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'inputSchema'>;\n\n outputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'outputSchema'>;\n\n querySchema<T extends ColumnSchemaGetterTableClass>(this: T): QuerySchema<T>;\n\n createSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): CreateSchema<T>;\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): UpdateSchema<T>;\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T): PkeySchema<T>;\n\n error<T extends ColumnTypeBase<ValibotSchemaConfig>>(\n this: T,\n message: string,\n ): T;\n\n smallint(): SmallIntColumnValibot;\n integer(): IntegerColumnValibot;\n real(): RealColumnValibot;\n smallSerial(): SmallSerialColumnValibot;\n serial(): SerialColumnValibot;\n\n bigint(): BigIntColumnValibot;\n decimal(precision?: number, scale?: number): DecimalColumnValibot;\n doublePrecision(): DoublePrecisionColumnValibot;\n bigSerial(): BigSerialColumnValibot;\n money(): MoneyColumnValibot;\n varchar(limit?: number): VarCharColumnValibot;\n text(): TextColumnValibot;\n string(limit?: number): StringColumnValibot;\n citext(): CitextColumnValibot;\n\n date(): DateColumnValibot;\n timestampNoTZ(precision?: number): TimestampNoTzColumnValibot;\n timestamp(precision?: number): TimestampColumnValibot;\n\n geographyPointSchema(): PointSchemaValibot;\n}\n\n// parse a date string to number, with respect to null\nconst parseDateToNumber = (value: unknown) =>\n (value ? Date.parse(value as string) : value) as number;\n\n// parse a date string to date object, with respect to null\nconst parseDateToDate = (value: unknown) =>\n (value ? new Date(value as string) : value) as Date;\n\n(parseDateToNumber as unknown as { hideFromCode: boolean }).hideFromCode = (\n parseDateToDate as unknown as { hideFromCode: boolean }\n).hideFromCode = true;\n\nexport const valibotSchemaConfig: ValibotSchemaConfig = {\n type: undefined as unknown as BaseSchema,\n parse(schema, fn) {\n return Object.assign(Object.create(this), {\n outputSchema: schema,\n parseFn: fn,\n parseItem: fn,\n });\n },\n encode(schema, fn) {\n return Object.assign(Object.create(this), {\n inputSchema: schema,\n encodeFn: fn,\n });\n },\n asType(_types) {\n return this as never;\n },\n dateAsNumber() {\n return this.parse(number([]), parseDateToNumber) as never;\n },\n dateAsDate() {\n return this.parse(date([]), parseDateToDate) as never;\n },\n enum(dataType, type) {\n return new EnumColumn(valibotSchemaConfig, dataType, type, picklist(type));\n },\n array(item) {\n return new ValibotArrayColumn(item);\n },\n nullable() {\n return makeColumnNullable(\n this,\n nullable(this.inputSchema),\n nullable(this.outputSchema),\n nullable(this.querySchema),\n );\n },\n json<Schema extends BaseSchema = UnknownSchema>(schema?: Schema) {\n return new ValibotJSONColumn((schema ?? unknown([])) as Schema);\n },\n boolean: () => boolean([]),\n buffer: () => instance(Buffer, []),\n unknown: () => unknown([]),\n never: () => never(),\n stringSchema: () => string([]),\n stringMin(min) {\n return string([minLength(min)]);\n },\n stringMax(max) {\n return string([maxLength(max)]);\n },\n stringMinMax(min, max) {\n return string([minLength(min), maxLength(max)]);\n },\n number: () => number([]),\n int: () => number([integer()]),\n\n stringNumberDate: () =>\n coerce(date([]), (input) => new Date(input as string)),\n\n timeInterval: () =>\n object(\n {\n years: optional(number()),\n months: optional(number()),\n days: optional(number()),\n hours: optional(number()),\n minutes: optional(number()),\n seconds: optional(number()),\n },\n [],\n ),\n\n bit: (max?: number) =>\n max ? string([maxLength(max), regex(/[10]/g)]) : string([regex(/[10]/g)]),\n\n uuid: () => string([uuid()]),\n\n inputSchema() {\n return mapSchema(this, 'inputSchema');\n },\n\n outputSchema() {\n return mapSchema(this, 'outputSchema');\n },\n\n querySchema() {\n return partial(mapSchema(this, 'querySchema'));\n },\n\n createSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const input = this.inputSchema() as ObjectSchema<ObjectEntries>;\n\n const shape: ObjectEntries = {};\n const { shape: columns } = this.prototype.columns;\n\n for (const key in columns) {\n const column = columns[key];\n if (column.dataType && !column.data.primaryKey) {\n shape[key] = input.entries[key];\n\n if (column.data.isNullable || column.data.default !== undefined) {\n shape[key] = optional(shape[key]);\n }\n }\n }\n\n return object(shape) as CreateSchema<T>;\n },\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n return partial(this.createSchema() as never) as UpdateSchema<T>;\n },\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const keys: string[] = [];\n\n const {\n columns: { shape },\n } = this.prototype;\n for (const key in shape) {\n if (shape[key].data.primaryKey) {\n keys.push(key);\n }\n }\n\n return required(\n pick(this.querySchema() as never, keys as never),\n ) as PkeySchema<T>;\n },\n\n error(message: string) {\n this.inputSchema.message =\n this.outputSchema.message =\n this.querySchema.message =\n message;\n return this;\n },\n\n smallint: () => new SmallIntColumnValibot(valibotSchemaConfig),\n integer: () => new IntegerColumnValibot(valibotSchemaConfig),\n real: () => new RealColumnValibot(valibotSchemaConfig),\n smallSerial: () => new SmallSerialColumnValibot(valibotSchemaConfig),\n serial: () => new SerialColumnValibot(valibotSchemaConfig),\n\n bigint: () => new BigIntColumnValibot(valibotSchemaConfig),\n decimal: (precision, scale) =>\n new DecimalColumnValibot(valibotSchemaConfig, precision, scale),\n doublePrecision: () => new DoublePrecisionColumnValibot(valibotSchemaConfig),\n bigSerial: () => new BigSerialColumnValibot(valibotSchemaConfig),\n money: () => new MoneyColumnValibot(valibotSchemaConfig),\n varchar: (limit) => new VarCharColumnValibot(valibotSchemaConfig, limit),\n text: () => new TextColumnValibot(valibotSchemaConfig),\n string: (limit) => new StringColumnValibot(valibotSchemaConfig, limit),\n citext: () => new CitextColumnValibot(valibotSchemaConfig),\n\n date: () => new DateColumnValibot(valibotSchemaConfig),\n timestampNoTZ: (precision) =>\n new TimestampNoTzColumnValibot(valibotSchemaConfig, precision),\n timestamp: (precision) =>\n new TimestampColumnValibot(valibotSchemaConfig, precision),\n\n geographyPointSchema: () =>\n (pointSchema ??= object({\n srid: optional(number()),\n lon: number(),\n lat: number(),\n })),\n};\n\ntype MapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: ColumnSchemaGetterColumns<T>[K][Key];\n}>;\n\ntype QuerySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: OptionalSchema<\n ColumnSchemaGetterColumns<T>[K]['querySchema']\n >;\n}>;\n\ntype CreateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: ColumnSchemaGetterColumns<T>[K]['data']['isNullable'] extends true\n ? OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>\n : undefined extends ColumnSchemaGetterColumns<T>[K]['data']['default']\n ? ColumnSchemaGetterColumns<T>[K]['inputSchema']\n : OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype UpdateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype PkeySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? K\n : never]: ColumnSchemaGetterColumns<T>[K]['inputSchema'];\n}>;\n\nfunction mapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n>(klass: T, schemaKey: Key): MapSchema<T, Key> {\n const shape: ObjectEntries = {};\n const { shape: columns } = klass.prototype.columns;\n\n for (const key in columns) {\n if (columns[key].dataType) {\n shape[key] = columns[key][schemaKey];\n }\n }\n\n return object(shape) as MapSchema<T, Key>;\n}\n"],"names":["ColumnType","Operators","columnCode","setDataValue","minLength","maxLength","length","ArrayColumn","array","stringify","actionOutput","actionIssue","maxValue","minValue","integer","finite","SmallIntColumn","IntegerColumn","RealColumn","SmallSerialColumn","SerialColumn","email","url","emoji","uuid","cuid2","ulid","regex","includes","startsWith","endsWith","isoDateTime","ip","toTrimmed","toLowerCase","toUpperCase","BigIntColumn","DecimalColumn","DoublePrecisionColumn","BigSerialColumn","MoneyColumn","VarCharColumn","TextColumn","StringColumn","CitextColumn","DateColumn","TimestampColumn","TimestampTZColumn","number","date","EnumColumn","picklist","makeColumnNullable","nullable","unknown","boolean","instance","never","string","coerce","object","optional","partial","required","pick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/valibot.ts"],"sourcesContent":["import {\n AsTypeArg,\n ColumnSchemaGetterColumns,\n ColumnSchemaGetterTableClass,\n ColumnTypeBase,\n EncodeColumn,\n NullableColumn,\n ParseColumn,\n makeColumnNullable,\n ErrorMessage,\n setDataValue,\n StringTypeData,\n ParseNullColumn,\n} from 'orchid-core';\nimport {\n ArrayColumn,\n ArrayColumnValue,\n BigIntColumn,\n BigSerialColumn,\n CitextColumn,\n ColumnType,\n DateColumn,\n DecimalColumn,\n DoublePrecisionColumn,\n EnumColumn,\n IntegerColumn,\n JSONColumn,\n MoneyColumn,\n RealColumn,\n SerialColumn,\n setColumnEncode,\n setColumnParse,\n setColumnParseNull,\n SmallIntColumn,\n SmallSerialColumn,\n StringColumn,\n TextColumn,\n TimestampColumn,\n TimestampTZColumn,\n VarCharColumn,\n} from 'pqb';\nimport {\n actionIssue,\n actionOutput,\n array,\n ArraySchema,\n BaseSchema,\n BaseTransformation,\n BaseValidation,\n boolean,\n BooleanSchema,\n coerce,\n cuid2,\n date,\n DateSchema,\n email,\n emoji,\n endsWith,\n finite,\n includes,\n instance,\n InstanceSchema,\n integer,\n ip,\n isoDateTime,\n length,\n maxLength,\n maxValue,\n minLength,\n minValue,\n never,\n NeverSchema,\n nullable,\n NullableSchema,\n number,\n NumberSchema,\n object,\n ObjectEntries,\n ObjectSchema,\n optional,\n OptionalSchema,\n Output,\n partial,\n pick,\n picklist,\n PicklistSchema,\n regex,\n required,\n startsWith,\n string,\n stringify,\n StringSchema,\n toLowerCase,\n toTrimmed,\n toUpperCase,\n ulid,\n union,\n unknown,\n UnknownSchema,\n url,\n uuid,\n} from 'valibot';\n\nclass ValibotJSONColumn<Schema extends BaseSchema> extends JSONColumn<\n Output<Schema>,\n ValibotSchemaConfig,\n Schema\n> {\n constructor(schema: Schema) {\n super(valibotSchemaConfig, schema);\n }\n}\n\nfunction applyMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n value: unknown,\n validation: (value: never, params?: string) => BaseValidation,\n params?: ErrorMessage,\n) {\n const cloned = setDataValue(column, key, value, params);\n\n const v = validation(\n value as never,\n typeof params === 'object' ? params.message : params,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\nfunction applySimpleMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n validation: (...args: never[]) => BaseValidation | BaseTransformation,\n params?: ErrorMessage,\n ...args: unknown[]\n) {\n const cloned = setDataValue(column, key, true, params);\n\n const v = validation(\n ...(args as never[]),\n (typeof params === 'object' ? params.message : params) as never,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\ninterface ArrayMethods<Value> {\n // Require a minimum length (inclusive)\n min<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a maximum length (inclusive)\n max<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a specific length\n length<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a value to be non-empty\n nonEmpty<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst arrayMethods: ArrayMethods<number> = {\n min(value, params) {\n return applyMethod(this, 'min', value, minLength, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxLength, params);\n },\n length(value, params) {\n return applyMethod(this, 'length', value, length, params);\n },\n nonEmpty(params) {\n return applyMethod(this, 'min', 1, minLength, params);\n },\n};\n\ninterface ValibotArrayColumn<Item extends ArrayColumnValue>\n extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n >,\n ArrayMethods<number> {}\n\nclass ValibotArrayColumn<Item extends ArrayColumnValue> extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n> {\n constructor(item: Item) {\n super(valibotSchemaConfig, item, array(item.inputSchema, []));\n }\n}\n\nObject.assign(ValibotArrayColumn.prototype, arrayMethods);\n\ninterface NumberMethods {\n lt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n lte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n max<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n min<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n positive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonNegative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n negative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonPositive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n step<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n int<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n finite<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n safe<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nexport type GtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'gt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function gt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): GtValidation<TInput, TRequirement> {\n return {\n type: 'gt',\n expects: `>${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input > this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n gt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type LtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'lt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function lt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): LtValidation<TInput, TRequirement> {\n return {\n type: 'lt',\n expects: `<${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input < this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n lt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type StepValidation<\n TInput extends number,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'step';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function step<TInput extends number, TRequirement extends TInput>(\n requirement: TRequirement,\n message?: string,\n): StepValidation<TInput, TRequirement> {\n return {\n type: 'step',\n expects: `a multiple of ${stringify(requirement)}`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input % this.requirement === 0) {\n return actionOutput(input);\n }\n return actionIssue(this, step, input, 'value', stringify(input));\n },\n };\n}\n\nconst numberMethods: NumberMethods = {\n // Require a value to be lower than a given number\n lt(value, params) {\n return applyMethod(this, 'lt', value, lt, params);\n },\n\n // Require a value to be lower than or equal to a given number (the same as `max`)\n lte(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be lower than or equal to a given number\n max(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be greater than a given number\n gt(value, params) {\n return applyMethod(this, 'gt', value, gt, params);\n },\n\n // Require a value to be greater than or equal to a given number (the same as `min`)\n gte(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than or equal to a given number\n min(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than 0\n positive(params) {\n return applyMethod(this, 'gt', 0, gt, params);\n },\n\n // Require a value to be greater than or equal to 0\n nonNegative(params) {\n return applyMethod(this, 'gte', 0, minValue, params);\n },\n\n // Require a value to be lower than 0\n negative(params) {\n return applyMethod(this, 'lt', 0, lt, params);\n },\n\n // Require a value to be lower than or equal to 0\n nonPositive(params) {\n return applyMethod(this, 'lte', 0, maxValue, params);\n },\n\n // Require a value to be a multiple of a given number\n step(value, params) {\n return applyMethod(this, 'step', value, step, params);\n },\n\n // Require a value to be an integer\n int(params) {\n return applySimpleMethod(this, 'int', integer, params);\n },\n\n // Exclude `Infinity` from being a valid value\n finite(params) {\n return applySimpleMethod(this, 'finite', finite, params);\n },\n\n // Require the value to be less than or equal to Number.MAX_SAFE_INTEGER\n safe(params) {\n return applySimpleMethod(\n applySimpleMethod(\n this,\n 'safe',\n minValue,\n params,\n Number.MIN_SAFE_INTEGER,\n ),\n 'safe',\n maxValue,\n params,\n Number.MAX_SAFE_INTEGER,\n );\n },\n};\n\ninterface SmallIntColumnValibot\n extends SmallIntColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallIntColumnValibot extends SmallIntColumn<ValibotSchemaConfig> {}\nObject.assign(SmallIntColumnValibot.prototype, numberMethods);\n\ninterface IntegerColumnValibot\n extends IntegerColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass IntegerColumnValibot extends IntegerColumn<ValibotSchemaConfig> {}\nObject.assign(IntegerColumnValibot.prototype, numberMethods);\n\ninterface RealColumnValibot\n extends RealColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass RealColumnValibot extends RealColumn<ValibotSchemaConfig> {}\nObject.assign(RealColumnValibot.prototype, numberMethods);\n\ninterface SmallSerialColumnValibot\n extends SmallSerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallSerialColumnValibot extends SmallSerialColumn<ValibotSchemaConfig> {}\nObject.assign(SmallSerialColumnValibot.prototype, numberMethods);\n\ninterface SerialColumnValibot\n extends SerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SerialColumnValibot extends SerialColumn<ValibotSchemaConfig> {}\nObject.assign(SerialColumnValibot.prototype, numberMethods);\n\ninterface StringMethods extends ArrayMethods<number> {\n // Check a value to be a valid email\n email<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid url\n url<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be an emoji\n emoji<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid uuid\n uuid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid cuid2\n cuid2<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid ulid\n ulid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Validate the value over the given regular expression\n regex<T extends ColumnTypeBase>(\n this: T,\n value: RegExp,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to include a given string\n includes<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to start with a given string\n startsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to end with a given string\n endsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value have a valid datetime string\n datetime<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['datetime'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Check a value to be a valid ip address\n ip<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['ip'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Trim the value during a validation\n trim<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to a lower case during a validation\n toLowerCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to an upper case during a validation\n toUpperCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst stringMethods: StringMethods = {\n ...(arrayMethods as unknown as ArrayMethods<number>),\n\n email(params) {\n return applySimpleMethod(this, 'email', email, params);\n },\n\n url(params) {\n return applySimpleMethod(this, 'url', url, params);\n },\n\n emoji(params) {\n return applySimpleMethod(this, 'emoji', emoji, params);\n },\n\n uuid(params) {\n return applySimpleMethod(this, 'uuid', uuid, params);\n },\n\n cuid2(params) {\n return applySimpleMethod(this, 'cuid2', cuid2, params);\n },\n\n ulid(params) {\n return applySimpleMethod(this, 'ulid', ulid, params);\n },\n\n regex(value, params) {\n return applyMethod(this, 'regex', value, regex, params);\n },\n\n includes(value, params) {\n return applyMethod(this, 'includes', value, includes, params);\n },\n\n startsWith(value, params) {\n return applyMethod(this, 'startsWith', value, startsWith, params);\n },\n\n endsWith(value, params) {\n return applyMethod(this, 'endsWith', value, endsWith, params);\n },\n\n datetime(params) {\n return applySimpleMethod(this, 'datetime', isoDateTime, params);\n },\n\n ip(params = {}) {\n return applySimpleMethod(this, 'ip', ip, params);\n },\n\n trim(params) {\n return applySimpleMethod(this, 'trim', toTrimmed, params);\n },\n\n toLowerCase(params) {\n return applySimpleMethod(this, 'toLowerCase', toLowerCase, params);\n },\n\n toUpperCase(params) {\n return applySimpleMethod(this, 'toUpperCase', toUpperCase, params);\n },\n};\n\ninterface BigIntColumnValibot\n extends BigIntColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigIntColumnValibot extends BigIntColumn<ValibotSchemaConfig> {}\nObject.assign(BigIntColumnValibot.prototype, stringMethods);\n\ninterface DecimalColumnValibot\n extends DecimalColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DecimalColumnValibot extends DecimalColumn<ValibotSchemaConfig> {}\nObject.assign(DecimalColumnValibot.prototype, stringMethods);\n\ninterface DoublePrecisionColumnValibot\n extends DoublePrecisionColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DoublePrecisionColumnValibot extends DoublePrecisionColumn<ValibotSchemaConfig> {}\nObject.assign(DoublePrecisionColumnValibot.prototype, stringMethods);\n\ninterface BigSerialColumnValibot\n extends BigSerialColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigSerialColumnValibot extends BigSerialColumn<ValibotSchemaConfig> {}\nObject.assign(BigSerialColumnValibot.prototype, stringMethods);\n\ninterface MoneyColumnValibot\n extends MoneyColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass MoneyColumnValibot extends MoneyColumn<ValibotSchemaConfig> {}\nObject.assign(MoneyColumnValibot.prototype, numberMethods);\n\ninterface VarCharColumnValibot\n extends VarCharColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass VarCharColumnValibot extends VarCharColumn<ValibotSchemaConfig> {}\nObject.assign(VarCharColumnValibot.prototype, stringMethods);\n\ninterface TextColumnValibot\n extends TextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass TextColumnValibot extends TextColumn<ValibotSchemaConfig> {}\nObject.assign(TextColumnValibot.prototype, stringMethods);\n\ninterface StringColumnValibot\n extends StringColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass StringColumnValibot extends StringColumn<ValibotSchemaConfig> {}\nObject.assign(StringColumnValibot.prototype, stringMethods);\n\ninterface CitextColumnValibot\n extends CitextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass CitextColumnValibot extends CitextColumn<ValibotSchemaConfig> {}\nObject.assign(CitextColumnValibot.prototype, stringMethods);\n\ninterface DateMethods {\n // Require a value to be greater than or equal to a given Date object\n min<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n\n // Require a value to be lower than or equal to a given Date object\n max<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n}\n\nconst dateMethods: DateMethods = {\n min(value, params) {\n return applyMethod(this, 'min', value, minValue, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxValue, params);\n },\n};\n\ninterface DateColumnValibot\n extends DateColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass DateColumnValibot extends DateColumn<ValibotSchemaConfig> {}\nObject.assign(DateColumnValibot.prototype, dateMethods);\n\ninterface TimestampNoTzColumnValibot\n extends TimestampColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampNoTzColumnValibot extends TimestampColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampNoTzColumnValibot.prototype, dateMethods);\n\ninterface TimestampColumnValibot\n extends TimestampTZColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampColumnValibot extends TimestampTZColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampColumnValibot.prototype, dateMethods);\n\ntype PointSchemaValibot = ObjectSchema<{\n srid: OptionalSchema<NumberSchema>;\n lon: NumberSchema;\n lat: NumberSchema;\n}>;\n\nlet pointSchema: PointSchemaValibot | undefined;\n\nexport interface ValibotSchemaConfig {\n type: BaseSchema;\n\n parse<\n T extends ColumnTypeBase,\n OutputSchema extends BaseSchema,\n Out = Output<OutputSchema>,\n >(\n this: T,\n _schema: OutputSchema,\n fn: (input: T['type']) => Out,\n ): ParseColumn<T, OutputSchema, Out>;\n\n parseNull<\n T extends ColumnTypeBase,\n NullSchema extends BaseSchema,\n NullType = Output<NullSchema>,\n >(\n this: T,\n _schema: NullSchema,\n fn: () => NullType,\n ): ParseNullColumn<T, NullSchema, NullType>;\n\n encode<\n T extends { type: unknown },\n InputSchema extends BaseSchema,\n In = Output<InputSchema>,\n >(\n this: T,\n _schema: InputSchema,\n fn: (input: In) => unknown,\n ): EncodeColumn<T, InputSchema, In>;\n\n asType<\n T,\n Types extends AsTypeArg<BaseSchema>,\n TypeSchema extends BaseSchema = Types extends { type: BaseSchema }\n ? Types['type']\n : never,\n Type = Output<TypeSchema>,\n >(\n this: T,\n types: Types,\n ): {\n [K in keyof T]: K extends 'type'\n ? Type\n : K extends 'inputType'\n ? Types['input'] extends BaseSchema\n ? Output<Types['input']>\n : Type\n : K extends 'inputSchema'\n ? Types['input'] extends BaseSchema\n ? Types['input']\n : TypeSchema\n : K extends 'outputType'\n ? Types['output'] extends BaseSchema\n ? Output<Types['output']>\n : Type\n : K extends 'outputSchema'\n ? Types['output'] extends BaseSchema\n ? Types['output']\n : TypeSchema\n : K extends 'queryType'\n ? Types['query'] extends BaseSchema\n ? Output<Types['query']>\n : Type\n : K extends 'querySchema'\n ? Types['query'] extends BaseSchema\n ? Types['query']\n : TypeSchema\n : T[K];\n };\n\n dateAsNumber<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, NumberSchema, number>;\n\n dateAsDate<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, DateSchema, Date>;\n\n enum<U extends string, T extends readonly [U, ...U[]]>(\n dataType: string,\n type: T,\n ): EnumColumn<ValibotSchemaConfig, PicklistSchema<T>, U, T>;\n\n array<Item extends ArrayColumnValue>(item: Item): ValibotArrayColumn<Item>;\n\n nullable<T extends ColumnTypeBase>(\n this: T,\n ): NullableColumn<\n T,\n NullableSchema<T['inputSchema']>,\n NullableSchema<T['outputSchema']>,\n NullableSchema<T['querySchema']>\n >;\n\n json<Schema extends BaseSchema = UnknownSchema>(\n schema?: Schema,\n ): ValibotJSONColumn<Schema>;\n\n boolean(): BooleanSchema;\n buffer(): InstanceSchema<typeof Buffer>;\n unknown(): UnknownSchema;\n never(): NeverSchema;\n stringSchema(): StringSchema;\n stringMin(max: number): StringSchema;\n stringMax(max: number): StringSchema;\n stringMinMax(min: number, max: number): StringSchema;\n number(): NumberSchema;\n int(): NumberSchema;\n stringNumberDate(): DateSchema;\n timeInterval(): ObjectSchema<{\n years: OptionalSchema<NumberSchema>;\n months: OptionalSchema<NumberSchema>;\n days: OptionalSchema<NumberSchema>;\n hours: OptionalSchema<NumberSchema>;\n minutes: OptionalSchema<NumberSchema>;\n seconds: OptionalSchema<NumberSchema>;\n }>;\n bit(max: number): StringSchema;\n uuid(): StringSchema;\n\n inputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'inputSchema'>;\n\n outputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'outputSchema'>;\n\n querySchema<T extends ColumnSchemaGetterTableClass>(this: T): QuerySchema<T>;\n\n createSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): CreateSchema<T>;\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): UpdateSchema<T>;\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T): PkeySchema<T>;\n\n error<T extends ColumnTypeBase<ValibotSchemaConfig>>(\n this: T,\n message: string,\n ): T;\n\n smallint(): SmallIntColumnValibot;\n integer(): IntegerColumnValibot;\n real(): RealColumnValibot;\n smallSerial(): SmallSerialColumnValibot;\n serial(): SerialColumnValibot;\n\n bigint(): BigIntColumnValibot;\n decimal(precision?: number, scale?: number): DecimalColumnValibot;\n doublePrecision(): DoublePrecisionColumnValibot;\n bigSerial(): BigSerialColumnValibot;\n money(): MoneyColumnValibot;\n varchar(limit?: number): VarCharColumnValibot;\n text(): TextColumnValibot;\n string(limit?: number): StringColumnValibot;\n citext(): CitextColumnValibot;\n\n date(): DateColumnValibot;\n timestampNoTZ(precision?: number): TimestampNoTzColumnValibot;\n timestamp(precision?: number): TimestampColumnValibot;\n\n geographyPointSchema(): PointSchemaValibot;\n}\n\n// parse a date string to date object, with respect to null\nconst parseDateToDate = (value: unknown) => new Date(value as string);\n\nexport const valibotSchemaConfig: ValibotSchemaConfig = {\n type: undefined as unknown as BaseSchema,\n parse(schema, fn) {\n return setColumnParse(this as never, fn, schema);\n },\n parseNull(schema, fn) {\n return setColumnParseNull(this as never, fn, schema);\n },\n encode(schema, fn) {\n return setColumnEncode(this as never, fn, schema);\n },\n asType(_types) {\n return this as never;\n },\n dateAsNumber() {\n const c = this.parse(number([]), Date.parse as never) as ColumnTypeBase;\n c.data.defaultParse = Date.parse;\n return c as never;\n },\n dateAsDate() {\n const c = this.parse(date([]), parseDateToDate) as ColumnTypeBase;\n c.data.defaultParse = parseDateToDate;\n return c as never;\n },\n enum(dataType, type) {\n return new EnumColumn(valibotSchemaConfig, dataType, type, picklist(type));\n },\n array(item) {\n return new ValibotArrayColumn(item);\n },\n nullable() {\n return makeColumnNullable(\n this,\n nullable(this.inputSchema),\n nullable(\n this.nullSchema\n ? union([this.outputSchema, this.nullSchema])\n : this.outputSchema,\n ),\n nullable(this.querySchema),\n );\n },\n json<Schema extends BaseSchema = UnknownSchema>(schema?: Schema) {\n return new ValibotJSONColumn((schema ?? unknown([])) as Schema);\n },\n boolean: () => boolean([]),\n buffer: () => instance(Buffer, []),\n unknown: () => unknown([]),\n never: () => never(),\n stringSchema: () => string([]),\n stringMin(min) {\n return string([minLength(min)]);\n },\n stringMax(max) {\n return string([maxLength(max)]);\n },\n stringMinMax(min, max) {\n return string([minLength(min), maxLength(max)]);\n },\n number: () => number([]),\n int: () => number([integer()]),\n\n stringNumberDate: () =>\n coerce(date([]), (input) => new Date(input as string)),\n\n timeInterval: () =>\n object(\n {\n years: optional(number()),\n months: optional(number()),\n days: optional(number()),\n hours: optional(number()),\n minutes: optional(number()),\n seconds: optional(number()),\n },\n [],\n ),\n\n bit: (max?: number) =>\n max ? string([maxLength(max), regex(/[10]/g)]) : string([regex(/[10]/g)]),\n\n uuid: () => string([uuid()]),\n\n inputSchema() {\n return mapSchema(this, 'inputSchema');\n },\n\n outputSchema() {\n return mapSchema(this, 'outputSchema');\n },\n\n querySchema() {\n return partial(mapSchema(this, 'querySchema'));\n },\n\n createSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const input = this.inputSchema() as ObjectSchema<ObjectEntries>;\n\n const shape: ObjectEntries = {};\n const { shape: columns } = this.prototype.columns;\n\n for (const key in columns) {\n const column = columns[key];\n if (column.dataType && !column.data.primaryKey) {\n shape[key] = input.entries[key];\n\n if (column.data.isNullable || column.data.default !== undefined) {\n shape[key] = optional(shape[key]);\n }\n }\n }\n\n return object(shape) as CreateSchema<T>;\n },\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n return partial(this.createSchema() as never) as UpdateSchema<T>;\n },\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const keys: string[] = [];\n\n const {\n columns: { shape },\n } = this.prototype;\n for (const key in shape) {\n if (shape[key].data.primaryKey) {\n keys.push(key);\n }\n }\n\n return required(\n pick(this.querySchema() as never, keys as never),\n ) as PkeySchema<T>;\n },\n\n error(message: string) {\n this.inputSchema.message =\n this.outputSchema.message =\n this.querySchema.message =\n message;\n return this;\n },\n\n smallint: () => new SmallIntColumnValibot(valibotSchemaConfig),\n integer: () => new IntegerColumnValibot(valibotSchemaConfig),\n real: () => new RealColumnValibot(valibotSchemaConfig),\n smallSerial: () => new SmallSerialColumnValibot(valibotSchemaConfig),\n serial: () => new SerialColumnValibot(valibotSchemaConfig),\n\n bigint: () => new BigIntColumnValibot(valibotSchemaConfig),\n decimal: (precision, scale) =>\n new DecimalColumnValibot(valibotSchemaConfig, precision, scale),\n doublePrecision: () => new DoublePrecisionColumnValibot(valibotSchemaConfig),\n bigSerial: () => new BigSerialColumnValibot(valibotSchemaConfig),\n money: () => new MoneyColumnValibot(valibotSchemaConfig),\n varchar: (limit) => new VarCharColumnValibot(valibotSchemaConfig, limit),\n text: () => new TextColumnValibot(valibotSchemaConfig),\n string: (limit) => new StringColumnValibot(valibotSchemaConfig, limit),\n citext: () => new CitextColumnValibot(valibotSchemaConfig),\n\n date: () => new DateColumnValibot(valibotSchemaConfig),\n timestampNoTZ: (precision) =>\n new TimestampNoTzColumnValibot(valibotSchemaConfig, precision),\n timestamp: (precision) =>\n new TimestampColumnValibot(valibotSchemaConfig, precision),\n\n geographyPointSchema: () =>\n (pointSchema ??= object({\n srid: optional(number()),\n lon: number(),\n lat: number(),\n })),\n};\n\ntype MapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: ColumnSchemaGetterColumns<T>[K][Key];\n}>;\n\ntype QuerySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: OptionalSchema<\n ColumnSchemaGetterColumns<T>[K]['querySchema']\n >;\n}>;\n\ntype CreateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: ColumnSchemaGetterColumns<T>[K]['data']['isNullable'] extends true\n ? OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>\n : undefined extends ColumnSchemaGetterColumns<T>[K]['data']['default']\n ? ColumnSchemaGetterColumns<T>[K]['inputSchema']\n : OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype UpdateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype PkeySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? K\n : never]: ColumnSchemaGetterColumns<T>[K]['inputSchema'];\n}>;\n\nfunction mapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n>(klass: T, schemaKey: Key): MapSchema<T, Key> {\n const shape: ObjectEntries = {};\n const { shape: columns } = klass.prototype.columns;\n\n for (const key in columns) {\n if (columns[key].dataType) {\n shape[key] = columns[key][schemaKey];\n }\n }\n\n return object(shape) as MapSchema<T, Key>;\n}\n"],"names":["JSONColumn","setDataValue","minLength","maxLength","length","ArrayColumn","array","stringify","actionOutput","actionIssue","maxValue","minValue","integer","finite","SmallIntColumn","IntegerColumn","RealColumn","SmallSerialColumn","SerialColumn","email","url","emoji","uuid","cuid2","ulid","regex","includes","startsWith","endsWith","isoDateTime","ip","toTrimmed","toLowerCase","toUpperCase","BigIntColumn","DecimalColumn","DoublePrecisionColumn","BigSerialColumn","MoneyColumn","VarCharColumn","TextColumn","StringColumn","CitextColumn","DateColumn","TimestampColumn","TimestampTZColumn","setColumnParse","setColumnParseNull","setColumnEncode","number","date","EnumColumn","picklist","makeColumnNullable","nullable","union","unknown","boolean","instance","never","string","coerce","object","optional","partial","required","pick"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { makeColumnNullable, setDataValue } from 'orchid-core';
|
|
2
|
-
import {
|
|
3
|
-
import { array, stringify, actionOutput, actionIssue, minValue, number, date, picklist, nullable, unknown, boolean, instance, never, string, minLength, maxLength, integer, coerce, object, optional, regex, uuid, partial, required, pick, length, maxValue, finite, email, url, emoji, cuid2, ulid, includes, startsWith, endsWith, isoDateTime, ip, toTrimmed, toLowerCase, toUpperCase } from 'valibot';
|
|
2
|
+
import { ArrayColumn, SmallIntColumn, IntegerColumn, RealColumn, SmallSerialColumn, SerialColumn, BigIntColumn, DecimalColumn, DoublePrecisionColumn, BigSerialColumn, MoneyColumn, VarCharColumn, TextColumn, StringColumn, CitextColumn, DateColumn, TimestampColumn, TimestampTZColumn, setColumnParse, setColumnParseNull, setColumnEncode, EnumColumn, JSONColumn } from 'pqb';
|
|
3
|
+
import { array, stringify, actionOutput, actionIssue, minValue, number, date, picklist, nullable, union, unknown, boolean, instance, never, string, minLength, maxLength, integer, coerce, object, optional, regex, uuid, partial, required, pick, length, maxValue, finite, email, url, emoji, cuid2, ulid, includes, startsWith, endsWith, isoDateTime, ip, toTrimmed, toLowerCase, toUpperCase } from 'valibot';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
6
6
|
var __defProps = Object.defineProperties;
|
|
@@ -21,18 +21,11 @@ var __spreadValues = (a, b) => {
|
|
|
21
21
|
return a;
|
|
22
22
|
};
|
|
23
23
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
24
|
-
|
|
25
|
-
class ValibotJSONColumn extends ColumnType {
|
|
24
|
+
class ValibotJSONColumn extends JSONColumn {
|
|
26
25
|
constructor(schema) {
|
|
27
26
|
super(valibotSchemaConfig, schema);
|
|
28
|
-
this.dataType = "jsonb";
|
|
29
|
-
this.operators = Operators.json;
|
|
30
|
-
}
|
|
31
|
-
toCode(ctx, key) {
|
|
32
|
-
return columnCode(this, ctx, key, [`json()`], this.data, toCodeSkip);
|
|
33
27
|
}
|
|
34
28
|
}
|
|
35
|
-
ValibotJSONColumn.prototype.encodeFn = JSON.stringify;
|
|
36
29
|
function applyMethod(column, key, value, validation, params) {
|
|
37
30
|
const cloned = setDataValue(column, key, value, params);
|
|
38
31
|
const v = validation(
|
|
@@ -309,32 +302,30 @@ class TimestampColumnValibot extends TimestampTZColumn {
|
|
|
309
302
|
}
|
|
310
303
|
Object.assign(TimestampColumnValibot.prototype, dateMethods);
|
|
311
304
|
let pointSchema;
|
|
312
|
-
const
|
|
313
|
-
const parseDateToDate = (value) => value ? new Date(value) : value;
|
|
314
|
-
parseDateToNumber.hideFromCode = parseDateToDate.hideFromCode = true;
|
|
305
|
+
const parseDateToDate = (value) => new Date(value);
|
|
315
306
|
const valibotSchemaConfig = {
|
|
316
307
|
type: void 0,
|
|
317
308
|
parse(schema, fn) {
|
|
318
|
-
return
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
});
|
|
309
|
+
return setColumnParse(this, fn, schema);
|
|
310
|
+
},
|
|
311
|
+
parseNull(schema, fn) {
|
|
312
|
+
return setColumnParseNull(this, fn, schema);
|
|
323
313
|
},
|
|
324
314
|
encode(schema, fn) {
|
|
325
|
-
return
|
|
326
|
-
inputSchema: schema,
|
|
327
|
-
encodeFn: fn
|
|
328
|
-
});
|
|
315
|
+
return setColumnEncode(this, fn, schema);
|
|
329
316
|
},
|
|
330
317
|
asType(_types) {
|
|
331
318
|
return this;
|
|
332
319
|
},
|
|
333
320
|
dateAsNumber() {
|
|
334
|
-
|
|
321
|
+
const c = this.parse(number([]), Date.parse);
|
|
322
|
+
c.data.defaultParse = Date.parse;
|
|
323
|
+
return c;
|
|
335
324
|
},
|
|
336
325
|
dateAsDate() {
|
|
337
|
-
|
|
326
|
+
const c = this.parse(date([]), parseDateToDate);
|
|
327
|
+
c.data.defaultParse = parseDateToDate;
|
|
328
|
+
return c;
|
|
338
329
|
},
|
|
339
330
|
enum(dataType, type) {
|
|
340
331
|
return new EnumColumn(valibotSchemaConfig, dataType, type, picklist(type));
|
|
@@ -346,7 +337,9 @@ const valibotSchemaConfig = {
|
|
|
346
337
|
return makeColumnNullable(
|
|
347
338
|
this,
|
|
348
339
|
nullable(this.inputSchema),
|
|
349
|
-
nullable(
|
|
340
|
+
nullable(
|
|
341
|
+
this.nullSchema ? union([this.outputSchema, this.nullSchema]) : this.outputSchema
|
|
342
|
+
),
|
|
350
343
|
nullable(this.querySchema)
|
|
351
344
|
);
|
|
352
345
|
},
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/valibot.ts"],"sourcesContent":["import {\n AsTypeArg,\n Code,\n ColumnSchemaGetterColumns,\n ColumnSchemaGetterTableClass,\n ColumnTypeBase,\n EncodeColumn,\n NullableColumn,\n ParseColumn,\n makeColumnNullable,\n ErrorMessage,\n setDataValue,\n StringTypeData,\n ColumnToCodeCtx,\n} from 'orchid-core';\nimport {\n ArrayColumn,\n ArrayColumnValue,\n BigIntColumn,\n BigSerialColumn,\n CitextColumn,\n columnCode,\n ColumnData,\n ColumnType,\n DateColumn,\n DecimalColumn,\n DoublePrecisionColumn,\n EnumColumn,\n IntegerColumn,\n MoneyColumn,\n Operators,\n OperatorsJson,\n RealColumn,\n SerialColumn,\n SmallIntColumn,\n SmallSerialColumn,\n StringColumn,\n TextColumn,\n TimestampColumn,\n TimestampTZColumn,\n VarCharColumn,\n} from 'pqb';\nimport {\n actionIssue,\n actionOutput,\n array,\n ArraySchema,\n BaseSchema,\n BaseTransformation,\n BaseValidation,\n boolean,\n BooleanSchema,\n coerce,\n cuid2,\n date,\n DateSchema,\n email,\n emoji,\n endsWith,\n finite,\n includes,\n instance,\n InstanceSchema,\n integer,\n ip,\n isoDateTime,\n length,\n maxLength,\n maxValue,\n minLength,\n minValue,\n never,\n NeverSchema,\n nullable,\n NullableSchema,\n number,\n NumberSchema,\n object,\n ObjectEntries,\n ObjectSchema,\n optional,\n OptionalSchema,\n Output,\n partial,\n pick,\n picklist,\n PicklistSchema,\n regex,\n required,\n startsWith,\n string,\n stringify,\n StringSchema,\n toLowerCase,\n toTrimmed,\n toUpperCase,\n ulid,\n unknown,\n UnknownSchema,\n url,\n uuid,\n} from 'valibot';\n\n// skip adding the default `encode` function to code\nconst toCodeSkip = { encodeFn: JSON.stringify };\n\nclass ValibotJSONColumn<Schema extends BaseSchema> extends ColumnType<\n ValibotSchemaConfig,\n Output<Schema>,\n Schema,\n OperatorsJson\n> {\n dataType = 'jsonb' as const;\n operators = Operators.json;\n declare data: ColumnData;\n\n constructor(schema: Schema) {\n super(valibotSchemaConfig, schema);\n }\n\n toCode(ctx: ColumnToCodeCtx, key: string): Code {\n return columnCode(this, ctx, key, [`json()`], this.data, toCodeSkip);\n }\n}\n\n// Encode data of both types with JSON.stringify\nValibotJSONColumn.prototype.encodeFn = JSON.stringify;\n\nfunction applyMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n value: unknown,\n validation: (value: never, params?: string) => BaseValidation,\n params?: ErrorMessage,\n) {\n const cloned = setDataValue(column, key, value, params);\n\n const v = validation(\n value as never,\n typeof params === 'object' ? params.message : params,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\nfunction applySimpleMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n validation: (...args: never[]) => BaseValidation | BaseTransformation,\n params?: ErrorMessage,\n ...args: unknown[]\n) {\n const cloned = setDataValue(column, key, true, params);\n\n const v = validation(\n ...(args as never[]),\n (typeof params === 'object' ? params.message : params) as never,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\ninterface ArrayMethods<Value> {\n // Require a minimum length (inclusive)\n min<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a maximum length (inclusive)\n max<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a specific length\n length<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a value to be non-empty\n nonEmpty<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst arrayMethods: ArrayMethods<number> = {\n min(value, params) {\n return applyMethod(this, 'min', value, minLength, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxLength, params);\n },\n length(value, params) {\n return applyMethod(this, 'length', value, length, params);\n },\n nonEmpty(params) {\n return applyMethod(this, 'min', 1, minLength, params);\n },\n};\n\ninterface ValibotArrayColumn<Item extends ArrayColumnValue>\n extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n >,\n ArrayMethods<number> {}\n\nclass ValibotArrayColumn<Item extends ArrayColumnValue> extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n> {\n constructor(item: Item) {\n super(valibotSchemaConfig, item, array(item.inputSchema, []));\n }\n}\n\nObject.assign(ValibotArrayColumn.prototype, arrayMethods);\n\ninterface NumberMethods {\n lt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n lte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n max<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n min<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n positive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonNegative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n negative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonPositive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n step<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n int<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n finite<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n safe<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nexport type GtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'gt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function gt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): GtValidation<TInput, TRequirement> {\n return {\n type: 'gt',\n expects: `>${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input > this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n gt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type LtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'lt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function lt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): LtValidation<TInput, TRequirement> {\n return {\n type: 'lt',\n expects: `<${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input < this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n lt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type StepValidation<\n TInput extends number,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'step';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function step<TInput extends number, TRequirement extends TInput>(\n requirement: TRequirement,\n message?: string,\n): StepValidation<TInput, TRequirement> {\n return {\n type: 'step',\n expects: `a multiple of ${stringify(requirement)}`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input % this.requirement === 0) {\n return actionOutput(input);\n }\n return actionIssue(this, step, input, 'value', stringify(input));\n },\n };\n}\n\nconst numberMethods: NumberMethods = {\n // Require a value to be lower than a given number\n lt(value, params) {\n return applyMethod(this, 'lt', value, lt, params);\n },\n\n // Require a value to be lower than or equal to a given number (the same as `max`)\n lte(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be lower than or equal to a given number\n max(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be greater than a given number\n gt(value, params) {\n return applyMethod(this, 'gt', value, gt, params);\n },\n\n // Require a value to be greater than or equal to a given number (the same as `min`)\n gte(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than or equal to a given number\n min(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than 0\n positive(params) {\n return applyMethod(this, 'gt', 0, gt, params);\n },\n\n // Require a value to be greater than or equal to 0\n nonNegative(params) {\n return applyMethod(this, 'gte', 0, minValue, params);\n },\n\n // Require a value to be lower than 0\n negative(params) {\n return applyMethod(this, 'lt', 0, lt, params);\n },\n\n // Require a value to be lower than or equal to 0\n nonPositive(params) {\n return applyMethod(this, 'lte', 0, maxValue, params);\n },\n\n // Require a value to be a multiple of a given number\n step(value, params) {\n return applyMethod(this, 'step', value, step, params);\n },\n\n // Require a value to be an integer\n int(params) {\n return applySimpleMethod(this, 'int', integer, params);\n },\n\n // Exclude `Infinity` from being a valid value\n finite(params) {\n return applySimpleMethod(this, 'finite', finite, params);\n },\n\n // Require the value to be less than or equal to Number.MAX_SAFE_INTEGER\n safe(params) {\n return applySimpleMethod(\n applySimpleMethod(\n this,\n 'safe',\n minValue,\n params,\n Number.MIN_SAFE_INTEGER,\n ),\n 'safe',\n maxValue,\n params,\n Number.MAX_SAFE_INTEGER,\n );\n },\n};\n\ninterface SmallIntColumnValibot\n extends SmallIntColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallIntColumnValibot extends SmallIntColumn<ValibotSchemaConfig> {}\nObject.assign(SmallIntColumnValibot.prototype, numberMethods);\n\ninterface IntegerColumnValibot\n extends IntegerColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass IntegerColumnValibot extends IntegerColumn<ValibotSchemaConfig> {}\nObject.assign(IntegerColumnValibot.prototype, numberMethods);\n\ninterface RealColumnValibot\n extends RealColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass RealColumnValibot extends RealColumn<ValibotSchemaConfig> {}\nObject.assign(RealColumnValibot.prototype, numberMethods);\n\ninterface SmallSerialColumnValibot\n extends SmallSerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallSerialColumnValibot extends SmallSerialColumn<ValibotSchemaConfig> {}\nObject.assign(SmallSerialColumnValibot.prototype, numberMethods);\n\ninterface SerialColumnValibot\n extends SerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SerialColumnValibot extends SerialColumn<ValibotSchemaConfig> {}\nObject.assign(SerialColumnValibot.prototype, numberMethods);\n\ninterface StringMethods extends ArrayMethods<number> {\n // Check a value to be a valid email\n email<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid url\n url<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be an emoji\n emoji<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid uuid\n uuid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid cuid2\n cuid2<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid ulid\n ulid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Validate the value over the given regular expression\n regex<T extends ColumnTypeBase>(\n this: T,\n value: RegExp,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to include a given string\n includes<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to start with a given string\n startsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to end with a given string\n endsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value have a valid datetime string\n datetime<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['datetime'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Check a value to be a valid ip address\n ip<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['ip'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Trim the value during a validation\n trim<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to a lower case during a validation\n toLowerCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to an upper case during a validation\n toUpperCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst stringMethods: StringMethods = {\n ...(arrayMethods as unknown as ArrayMethods<number>),\n\n email(params) {\n return applySimpleMethod(this, 'email', email, params);\n },\n\n url(params) {\n return applySimpleMethod(this, 'url', url, params);\n },\n\n emoji(params) {\n return applySimpleMethod(this, 'emoji', emoji, params);\n },\n\n uuid(params) {\n return applySimpleMethod(this, 'uuid', uuid, params);\n },\n\n cuid2(params) {\n return applySimpleMethod(this, 'cuid2', cuid2, params);\n },\n\n ulid(params) {\n return applySimpleMethod(this, 'ulid', ulid, params);\n },\n\n regex(value, params) {\n return applyMethod(this, 'regex', value, regex, params);\n },\n\n includes(value, params) {\n return applyMethod(this, 'includes', value, includes, params);\n },\n\n startsWith(value, params) {\n return applyMethod(this, 'startsWith', value, startsWith, params);\n },\n\n endsWith(value, params) {\n return applyMethod(this, 'endsWith', value, endsWith, params);\n },\n\n datetime(params) {\n return applySimpleMethod(this, 'datetime', isoDateTime, params);\n },\n\n ip(params = {}) {\n return applySimpleMethod(this, 'ip', ip, params);\n },\n\n trim(params) {\n return applySimpleMethod(this, 'trim', toTrimmed, params);\n },\n\n toLowerCase(params) {\n return applySimpleMethod(this, 'toLowerCase', toLowerCase, params);\n },\n\n toUpperCase(params) {\n return applySimpleMethod(this, 'toUpperCase', toUpperCase, params);\n },\n};\n\ninterface BigIntColumnValibot\n extends BigIntColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigIntColumnValibot extends BigIntColumn<ValibotSchemaConfig> {}\nObject.assign(BigIntColumnValibot.prototype, stringMethods);\n\ninterface DecimalColumnValibot\n extends DecimalColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DecimalColumnValibot extends DecimalColumn<ValibotSchemaConfig> {}\nObject.assign(DecimalColumnValibot.prototype, stringMethods);\n\ninterface DoublePrecisionColumnValibot\n extends DoublePrecisionColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DoublePrecisionColumnValibot extends DoublePrecisionColumn<ValibotSchemaConfig> {}\nObject.assign(DoublePrecisionColumnValibot.prototype, stringMethods);\n\ninterface BigSerialColumnValibot\n extends BigSerialColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigSerialColumnValibot extends BigSerialColumn<ValibotSchemaConfig> {}\nObject.assign(BigSerialColumnValibot.prototype, stringMethods);\n\ninterface MoneyColumnValibot\n extends MoneyColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass MoneyColumnValibot extends MoneyColumn<ValibotSchemaConfig> {}\nObject.assign(MoneyColumnValibot.prototype, numberMethods);\n\ninterface VarCharColumnValibot\n extends VarCharColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass VarCharColumnValibot extends VarCharColumn<ValibotSchemaConfig> {}\nObject.assign(VarCharColumnValibot.prototype, stringMethods);\n\ninterface TextColumnValibot\n extends TextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass TextColumnValibot extends TextColumn<ValibotSchemaConfig> {}\nObject.assign(TextColumnValibot.prototype, stringMethods);\n\ninterface StringColumnValibot\n extends StringColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass StringColumnValibot extends StringColumn<ValibotSchemaConfig> {}\nObject.assign(StringColumnValibot.prototype, stringMethods);\n\ninterface CitextColumnValibot\n extends CitextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass CitextColumnValibot extends CitextColumn<ValibotSchemaConfig> {}\nObject.assign(CitextColumnValibot.prototype, stringMethods);\n\ninterface DateMethods {\n // Require a value to be greater than or equal to a given Date object\n min<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n\n // Require a value to be lower than or equal to a given Date object\n max<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n}\n\nconst dateMethods: DateMethods = {\n min(value, params) {\n return applyMethod(this, 'min', value, minValue, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxValue, params);\n },\n};\n\ninterface DateColumnValibot\n extends DateColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass DateColumnValibot extends DateColumn<ValibotSchemaConfig> {}\nObject.assign(DateColumnValibot.prototype, dateMethods);\n\ninterface TimestampNoTzColumnValibot\n extends TimestampColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampNoTzColumnValibot extends TimestampColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampNoTzColumnValibot.prototype, dateMethods);\n\ninterface TimestampColumnValibot\n extends TimestampTZColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampColumnValibot extends TimestampTZColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampColumnValibot.prototype, dateMethods);\n\ntype PointSchemaValibot = ObjectSchema<{\n srid: OptionalSchema<NumberSchema>;\n lon: NumberSchema;\n lat: NumberSchema;\n}>;\n\nlet pointSchema: PointSchemaValibot | undefined;\n\nexport interface ValibotSchemaConfig {\n type: BaseSchema;\n\n parse<\n T extends { type: unknown },\n OutputSchema extends BaseSchema,\n Out = Output<OutputSchema>,\n >(\n this: T,\n _schema: OutputSchema,\n fn: (input: T['type']) => Out,\n ): ParseColumn<T, OutputSchema, Out>;\n\n encode<\n T extends { type: unknown },\n InputSchema extends BaseSchema,\n In = Output<InputSchema>,\n >(\n this: T,\n _schema: InputSchema,\n fn: (input: In) => unknown,\n ): EncodeColumn<T, InputSchema, In>;\n\n asType<\n T,\n Types extends AsTypeArg<BaseSchema>,\n TypeSchema extends BaseSchema = Types extends { type: BaseSchema }\n ? Types['type']\n : never,\n Type = Output<TypeSchema>,\n >(\n this: T,\n types: Types,\n ): {\n [K in keyof T]: K extends 'type'\n ? Type\n : K extends 'inputType'\n ? Types['input'] extends BaseSchema\n ? Output<Types['input']>\n : Type\n : K extends 'inputSchema'\n ? Types['input'] extends BaseSchema\n ? Types['input']\n : TypeSchema\n : K extends 'outputType'\n ? Types['output'] extends BaseSchema\n ? Output<Types['output']>\n : Type\n : K extends 'outputSchema'\n ? Types['output'] extends BaseSchema\n ? Types['output']\n : TypeSchema\n : K extends 'queryType'\n ? Types['query'] extends BaseSchema\n ? Output<Types['query']>\n : Type\n : K extends 'querySchema'\n ? Types['query'] extends BaseSchema\n ? Types['query']\n : TypeSchema\n : T[K];\n };\n\n dateAsNumber<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, NumberSchema, number>;\n\n dateAsDate<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, DateSchema, Date>;\n\n enum<U extends string, T extends readonly [U, ...U[]]>(\n dataType: string,\n type: T,\n ): EnumColumn<ValibotSchemaConfig, PicklistSchema<T>, U, T>;\n\n array<Item extends ArrayColumnValue>(item: Item): ValibotArrayColumn<Item>;\n\n nullable<T extends ColumnTypeBase>(\n this: T,\n ): NullableColumn<\n T,\n NullableSchema<T['inputSchema']>,\n NullableSchema<T['outputSchema']>,\n NullableSchema<T['querySchema']>\n >;\n\n json<Schema extends BaseSchema = UnknownSchema>(\n schema?: Schema,\n ): ValibotJSONColumn<Schema>;\n\n boolean(): BooleanSchema;\n buffer(): InstanceSchema<typeof Buffer>;\n unknown(): UnknownSchema;\n never(): NeverSchema;\n stringSchema(): StringSchema;\n stringMin(max: number): StringSchema;\n stringMax(max: number): StringSchema;\n stringMinMax(min: number, max: number): StringSchema;\n number(): NumberSchema;\n int(): NumberSchema;\n stringNumberDate(): DateSchema;\n timeInterval(): ObjectSchema<{\n years: OptionalSchema<NumberSchema>;\n months: OptionalSchema<NumberSchema>;\n days: OptionalSchema<NumberSchema>;\n hours: OptionalSchema<NumberSchema>;\n minutes: OptionalSchema<NumberSchema>;\n seconds: OptionalSchema<NumberSchema>;\n }>;\n bit(max: number): StringSchema;\n uuid(): StringSchema;\n\n inputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'inputSchema'>;\n\n outputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'outputSchema'>;\n\n querySchema<T extends ColumnSchemaGetterTableClass>(this: T): QuerySchema<T>;\n\n createSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): CreateSchema<T>;\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): UpdateSchema<T>;\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T): PkeySchema<T>;\n\n error<T extends ColumnTypeBase<ValibotSchemaConfig>>(\n this: T,\n message: string,\n ): T;\n\n smallint(): SmallIntColumnValibot;\n integer(): IntegerColumnValibot;\n real(): RealColumnValibot;\n smallSerial(): SmallSerialColumnValibot;\n serial(): SerialColumnValibot;\n\n bigint(): BigIntColumnValibot;\n decimal(precision?: number, scale?: number): DecimalColumnValibot;\n doublePrecision(): DoublePrecisionColumnValibot;\n bigSerial(): BigSerialColumnValibot;\n money(): MoneyColumnValibot;\n varchar(limit?: number): VarCharColumnValibot;\n text(): TextColumnValibot;\n string(limit?: number): StringColumnValibot;\n citext(): CitextColumnValibot;\n\n date(): DateColumnValibot;\n timestampNoTZ(precision?: number): TimestampNoTzColumnValibot;\n timestamp(precision?: number): TimestampColumnValibot;\n\n geographyPointSchema(): PointSchemaValibot;\n}\n\n// parse a date string to number, with respect to null\nconst parseDateToNumber = (value: unknown) =>\n (value ? Date.parse(value as string) : value) as number;\n\n// parse a date string to date object, with respect to null\nconst parseDateToDate = (value: unknown) =>\n (value ? new Date(value as string) : value) as Date;\n\n(parseDateToNumber as unknown as { hideFromCode: boolean }).hideFromCode = (\n parseDateToDate as unknown as { hideFromCode: boolean }\n).hideFromCode = true;\n\nexport const valibotSchemaConfig: ValibotSchemaConfig = {\n type: undefined as unknown as BaseSchema,\n parse(schema, fn) {\n return Object.assign(Object.create(this), {\n outputSchema: schema,\n parseFn: fn,\n parseItem: fn,\n });\n },\n encode(schema, fn) {\n return Object.assign(Object.create(this), {\n inputSchema: schema,\n encodeFn: fn,\n });\n },\n asType(_types) {\n return this as never;\n },\n dateAsNumber() {\n return this.parse(number([]), parseDateToNumber) as never;\n },\n dateAsDate() {\n return this.parse(date([]), parseDateToDate) as never;\n },\n enum(dataType, type) {\n return new EnumColumn(valibotSchemaConfig, dataType, type, picklist(type));\n },\n array(item) {\n return new ValibotArrayColumn(item);\n },\n nullable() {\n return makeColumnNullable(\n this,\n nullable(this.inputSchema),\n nullable(this.outputSchema),\n nullable(this.querySchema),\n );\n },\n json<Schema extends BaseSchema = UnknownSchema>(schema?: Schema) {\n return new ValibotJSONColumn((schema ?? unknown([])) as Schema);\n },\n boolean: () => boolean([]),\n buffer: () => instance(Buffer, []),\n unknown: () => unknown([]),\n never: () => never(),\n stringSchema: () => string([]),\n stringMin(min) {\n return string([minLength(min)]);\n },\n stringMax(max) {\n return string([maxLength(max)]);\n },\n stringMinMax(min, max) {\n return string([minLength(min), maxLength(max)]);\n },\n number: () => number([]),\n int: () => number([integer()]),\n\n stringNumberDate: () =>\n coerce(date([]), (input) => new Date(input as string)),\n\n timeInterval: () =>\n object(\n {\n years: optional(number()),\n months: optional(number()),\n days: optional(number()),\n hours: optional(number()),\n minutes: optional(number()),\n seconds: optional(number()),\n },\n [],\n ),\n\n bit: (max?: number) =>\n max ? string([maxLength(max), regex(/[10]/g)]) : string([regex(/[10]/g)]),\n\n uuid: () => string([uuid()]),\n\n inputSchema() {\n return mapSchema(this, 'inputSchema');\n },\n\n outputSchema() {\n return mapSchema(this, 'outputSchema');\n },\n\n querySchema() {\n return partial(mapSchema(this, 'querySchema'));\n },\n\n createSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const input = this.inputSchema() as ObjectSchema<ObjectEntries>;\n\n const shape: ObjectEntries = {};\n const { shape: columns } = this.prototype.columns;\n\n for (const key in columns) {\n const column = columns[key];\n if (column.dataType && !column.data.primaryKey) {\n shape[key] = input.entries[key];\n\n if (column.data.isNullable || column.data.default !== undefined) {\n shape[key] = optional(shape[key]);\n }\n }\n }\n\n return object(shape) as CreateSchema<T>;\n },\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n return partial(this.createSchema() as never) as UpdateSchema<T>;\n },\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const keys: string[] = [];\n\n const {\n columns: { shape },\n } = this.prototype;\n for (const key in shape) {\n if (shape[key].data.primaryKey) {\n keys.push(key);\n }\n }\n\n return required(\n pick(this.querySchema() as never, keys as never),\n ) as PkeySchema<T>;\n },\n\n error(message: string) {\n this.inputSchema.message =\n this.outputSchema.message =\n this.querySchema.message =\n message;\n return this;\n },\n\n smallint: () => new SmallIntColumnValibot(valibotSchemaConfig),\n integer: () => new IntegerColumnValibot(valibotSchemaConfig),\n real: () => new RealColumnValibot(valibotSchemaConfig),\n smallSerial: () => new SmallSerialColumnValibot(valibotSchemaConfig),\n serial: () => new SerialColumnValibot(valibotSchemaConfig),\n\n bigint: () => new BigIntColumnValibot(valibotSchemaConfig),\n decimal: (precision, scale) =>\n new DecimalColumnValibot(valibotSchemaConfig, precision, scale),\n doublePrecision: () => new DoublePrecisionColumnValibot(valibotSchemaConfig),\n bigSerial: () => new BigSerialColumnValibot(valibotSchemaConfig),\n money: () => new MoneyColumnValibot(valibotSchemaConfig),\n varchar: (limit) => new VarCharColumnValibot(valibotSchemaConfig, limit),\n text: () => new TextColumnValibot(valibotSchemaConfig),\n string: (limit) => new StringColumnValibot(valibotSchemaConfig, limit),\n citext: () => new CitextColumnValibot(valibotSchemaConfig),\n\n date: () => new DateColumnValibot(valibotSchemaConfig),\n timestampNoTZ: (precision) =>\n new TimestampNoTzColumnValibot(valibotSchemaConfig, precision),\n timestamp: (precision) =>\n new TimestampColumnValibot(valibotSchemaConfig, precision),\n\n geographyPointSchema: () =>\n (pointSchema ??= object({\n srid: optional(number()),\n lon: number(),\n lat: number(),\n })),\n};\n\ntype MapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: ColumnSchemaGetterColumns<T>[K][Key];\n}>;\n\ntype QuerySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: OptionalSchema<\n ColumnSchemaGetterColumns<T>[K]['querySchema']\n >;\n}>;\n\ntype CreateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: ColumnSchemaGetterColumns<T>[K]['data']['isNullable'] extends true\n ? OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>\n : undefined extends ColumnSchemaGetterColumns<T>[K]['data']['default']\n ? ColumnSchemaGetterColumns<T>[K]['inputSchema']\n : OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype UpdateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype PkeySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? K\n : never]: ColumnSchemaGetterColumns<T>[K]['inputSchema'];\n}>;\n\nfunction mapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n>(klass: T, schemaKey: Key): MapSchema<T, Key> {\n const shape: ObjectEntries = {};\n const { shape: columns } = klass.prototype.columns;\n\n for (const key in columns) {\n if (columns[key].dataType) {\n shape[key] = columns[key][schemaKey];\n }\n }\n\n return object(shape) as MapSchema<T, Key>;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/valibot.ts"],"sourcesContent":["import {\n AsTypeArg,\n ColumnSchemaGetterColumns,\n ColumnSchemaGetterTableClass,\n ColumnTypeBase,\n EncodeColumn,\n NullableColumn,\n ParseColumn,\n makeColumnNullable,\n ErrorMessage,\n setDataValue,\n StringTypeData,\n ParseNullColumn,\n} from 'orchid-core';\nimport {\n ArrayColumn,\n ArrayColumnValue,\n BigIntColumn,\n BigSerialColumn,\n CitextColumn,\n ColumnType,\n DateColumn,\n DecimalColumn,\n DoublePrecisionColumn,\n EnumColumn,\n IntegerColumn,\n JSONColumn,\n MoneyColumn,\n RealColumn,\n SerialColumn,\n setColumnEncode,\n setColumnParse,\n setColumnParseNull,\n SmallIntColumn,\n SmallSerialColumn,\n StringColumn,\n TextColumn,\n TimestampColumn,\n TimestampTZColumn,\n VarCharColumn,\n} from 'pqb';\nimport {\n actionIssue,\n actionOutput,\n array,\n ArraySchema,\n BaseSchema,\n BaseTransformation,\n BaseValidation,\n boolean,\n BooleanSchema,\n coerce,\n cuid2,\n date,\n DateSchema,\n email,\n emoji,\n endsWith,\n finite,\n includes,\n instance,\n InstanceSchema,\n integer,\n ip,\n isoDateTime,\n length,\n maxLength,\n maxValue,\n minLength,\n minValue,\n never,\n NeverSchema,\n nullable,\n NullableSchema,\n number,\n NumberSchema,\n object,\n ObjectEntries,\n ObjectSchema,\n optional,\n OptionalSchema,\n Output,\n partial,\n pick,\n picklist,\n PicklistSchema,\n regex,\n required,\n startsWith,\n string,\n stringify,\n StringSchema,\n toLowerCase,\n toTrimmed,\n toUpperCase,\n ulid,\n union,\n unknown,\n UnknownSchema,\n url,\n uuid,\n} from 'valibot';\n\nclass ValibotJSONColumn<Schema extends BaseSchema> extends JSONColumn<\n Output<Schema>,\n ValibotSchemaConfig,\n Schema\n> {\n constructor(schema: Schema) {\n super(valibotSchemaConfig, schema);\n }\n}\n\nfunction applyMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n value: unknown,\n validation: (value: never, params?: string) => BaseValidation,\n params?: ErrorMessage,\n) {\n const cloned = setDataValue(column, key, value, params);\n\n const v = validation(\n value as never,\n typeof params === 'object' ? params.message : params,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\nfunction applySimpleMethod<T extends ColumnTypeBase>(\n column: T,\n key: string,\n validation: (...args: never[]) => BaseValidation | BaseTransformation,\n params?: ErrorMessage,\n ...args: unknown[]\n) {\n const cloned = setDataValue(column, key, true, params);\n\n const v = validation(\n ...(args as never[]),\n (typeof params === 'object' ? params.message : params) as never,\n );\n\n cloned.inputSchema.pipe.push(v);\n cloned.outputSchema.pipe.push(v);\n cloned.querySchema.pipe.push(v);\n\n return cloned;\n}\n\ninterface ArrayMethods<Value> {\n // Require a minimum length (inclusive)\n min<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a maximum length (inclusive)\n max<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a specific length\n length<T extends ColumnTypeBase>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Require a value to be non-empty\n nonEmpty<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst arrayMethods: ArrayMethods<number> = {\n min(value, params) {\n return applyMethod(this, 'min', value, minLength, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxLength, params);\n },\n length(value, params) {\n return applyMethod(this, 'length', value, length, params);\n },\n nonEmpty(params) {\n return applyMethod(this, 'min', 1, minLength, params);\n },\n};\n\ninterface ValibotArrayColumn<Item extends ArrayColumnValue>\n extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n >,\n ArrayMethods<number> {}\n\nclass ValibotArrayColumn<Item extends ArrayColumnValue> extends ArrayColumn<\n ValibotSchemaConfig,\n Item,\n ArraySchema<Item['inputSchema']>,\n ArraySchema<Item['outputSchema']>,\n ArraySchema<Item['querySchema']>\n> {\n constructor(item: Item) {\n super(valibotSchemaConfig, item, array(item.inputSchema, []));\n }\n}\n\nObject.assign(ValibotArrayColumn.prototype, arrayMethods);\n\ninterface NumberMethods {\n lt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n lte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n max<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gt<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n gte<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n min<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n positive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonNegative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n negative<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n nonPositive<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n step<T extends ColumnTypeBase>(\n this: T,\n value: number,\n params?: ErrorMessage,\n ): T;\n int<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n finite<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n safe<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nexport type GtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'gt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function gt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): GtValidation<TInput, TRequirement> {\n return {\n type: 'gt',\n expects: `>${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input > this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n gt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type LtValidation<\n TInput extends string | number | bigint | boolean | Date,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'lt';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function lt<\n TInput extends string | number | bigint | Date,\n TRequirement extends TInput,\n>(\n requirement: TRequirement,\n message?: string,\n): LtValidation<TInput, TRequirement> {\n return {\n type: 'lt',\n expects: `<${\n requirement instanceof Date\n ? requirement.toJSON()\n : stringify(requirement)\n }`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input < this.requirement) {\n return actionOutput(input);\n }\n return actionIssue(\n this,\n lt,\n input,\n 'value',\n input instanceof Date ? input.toJSON() : stringify(input),\n );\n },\n };\n}\n\nexport type StepValidation<\n TInput extends number,\n TRequirement extends TInput,\n> = BaseValidation<TInput> & {\n /**\n * The validation type.\n */\n type: 'step';\n /**\n * The maximum value.\n */\n requirement: TRequirement;\n};\n\nexport function step<TInput extends number, TRequirement extends TInput>(\n requirement: TRequirement,\n message?: string,\n): StepValidation<TInput, TRequirement> {\n return {\n type: 'step',\n expects: `a multiple of ${stringify(requirement)}`,\n async: false,\n message,\n requirement,\n _parse(input) {\n if (input % this.requirement === 0) {\n return actionOutput(input);\n }\n return actionIssue(this, step, input, 'value', stringify(input));\n },\n };\n}\n\nconst numberMethods: NumberMethods = {\n // Require a value to be lower than a given number\n lt(value, params) {\n return applyMethod(this, 'lt', value, lt, params);\n },\n\n // Require a value to be lower than or equal to a given number (the same as `max`)\n lte(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be lower than or equal to a given number\n max(value, params) {\n return applyMethod(this, 'lte', value, maxValue, params);\n },\n\n // Require a value to be greater than a given number\n gt(value, params) {\n return applyMethod(this, 'gt', value, gt, params);\n },\n\n // Require a value to be greater than or equal to a given number (the same as `min`)\n gte(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than or equal to a given number\n min(value, params) {\n return applyMethod(this, 'gte', value, minValue, params);\n },\n\n // Require a value to be greater than 0\n positive(params) {\n return applyMethod(this, 'gt', 0, gt, params);\n },\n\n // Require a value to be greater than or equal to 0\n nonNegative(params) {\n return applyMethod(this, 'gte', 0, minValue, params);\n },\n\n // Require a value to be lower than 0\n negative(params) {\n return applyMethod(this, 'lt', 0, lt, params);\n },\n\n // Require a value to be lower than or equal to 0\n nonPositive(params) {\n return applyMethod(this, 'lte', 0, maxValue, params);\n },\n\n // Require a value to be a multiple of a given number\n step(value, params) {\n return applyMethod(this, 'step', value, step, params);\n },\n\n // Require a value to be an integer\n int(params) {\n return applySimpleMethod(this, 'int', integer, params);\n },\n\n // Exclude `Infinity` from being a valid value\n finite(params) {\n return applySimpleMethod(this, 'finite', finite, params);\n },\n\n // Require the value to be less than or equal to Number.MAX_SAFE_INTEGER\n safe(params) {\n return applySimpleMethod(\n applySimpleMethod(\n this,\n 'safe',\n minValue,\n params,\n Number.MIN_SAFE_INTEGER,\n ),\n 'safe',\n maxValue,\n params,\n Number.MAX_SAFE_INTEGER,\n );\n },\n};\n\ninterface SmallIntColumnValibot\n extends SmallIntColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallIntColumnValibot extends SmallIntColumn<ValibotSchemaConfig> {}\nObject.assign(SmallIntColumnValibot.prototype, numberMethods);\n\ninterface IntegerColumnValibot\n extends IntegerColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass IntegerColumnValibot extends IntegerColumn<ValibotSchemaConfig> {}\nObject.assign(IntegerColumnValibot.prototype, numberMethods);\n\ninterface RealColumnValibot\n extends RealColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass RealColumnValibot extends RealColumn<ValibotSchemaConfig> {}\nObject.assign(RealColumnValibot.prototype, numberMethods);\n\ninterface SmallSerialColumnValibot\n extends SmallSerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SmallSerialColumnValibot extends SmallSerialColumn<ValibotSchemaConfig> {}\nObject.assign(SmallSerialColumnValibot.prototype, numberMethods);\n\ninterface SerialColumnValibot\n extends SerialColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass SerialColumnValibot extends SerialColumn<ValibotSchemaConfig> {}\nObject.assign(SerialColumnValibot.prototype, numberMethods);\n\ninterface StringMethods extends ArrayMethods<number> {\n // Check a value to be a valid email\n email<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid url\n url<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be an emoji\n emoji<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid uuid\n uuid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid cuid2\n cuid2<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Check a value to be a valid ulid\n ulid<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Validate the value over the given regular expression\n regex<T extends ColumnTypeBase>(\n this: T,\n value: RegExp,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to include a given string\n includes<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to start with a given string\n startsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value to end with a given string\n endsWith<T extends ColumnTypeBase, Value extends string>(\n this: T,\n value: Value,\n params?: ErrorMessage,\n ): T;\n\n // Check a value have a valid datetime string\n datetime<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['datetime'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Check a value to be a valid ip address\n ip<T extends ColumnTypeBase>(\n this: T,\n params?: StringTypeData['ip'] & Exclude<ErrorMessage, string>,\n ): T;\n\n // Trim the value during a validation\n trim<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to a lower case during a validation\n toLowerCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n\n // Transform value to an upper case during a validation\n toUpperCase<T extends ColumnTypeBase>(this: T, params?: ErrorMessage): T;\n}\n\nconst stringMethods: StringMethods = {\n ...(arrayMethods as unknown as ArrayMethods<number>),\n\n email(params) {\n return applySimpleMethod(this, 'email', email, params);\n },\n\n url(params) {\n return applySimpleMethod(this, 'url', url, params);\n },\n\n emoji(params) {\n return applySimpleMethod(this, 'emoji', emoji, params);\n },\n\n uuid(params) {\n return applySimpleMethod(this, 'uuid', uuid, params);\n },\n\n cuid2(params) {\n return applySimpleMethod(this, 'cuid2', cuid2, params);\n },\n\n ulid(params) {\n return applySimpleMethod(this, 'ulid', ulid, params);\n },\n\n regex(value, params) {\n return applyMethod(this, 'regex', value, regex, params);\n },\n\n includes(value, params) {\n return applyMethod(this, 'includes', value, includes, params);\n },\n\n startsWith(value, params) {\n return applyMethod(this, 'startsWith', value, startsWith, params);\n },\n\n endsWith(value, params) {\n return applyMethod(this, 'endsWith', value, endsWith, params);\n },\n\n datetime(params) {\n return applySimpleMethod(this, 'datetime', isoDateTime, params);\n },\n\n ip(params = {}) {\n return applySimpleMethod(this, 'ip', ip, params);\n },\n\n trim(params) {\n return applySimpleMethod(this, 'trim', toTrimmed, params);\n },\n\n toLowerCase(params) {\n return applySimpleMethod(this, 'toLowerCase', toLowerCase, params);\n },\n\n toUpperCase(params) {\n return applySimpleMethod(this, 'toUpperCase', toUpperCase, params);\n },\n};\n\ninterface BigIntColumnValibot\n extends BigIntColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigIntColumnValibot extends BigIntColumn<ValibotSchemaConfig> {}\nObject.assign(BigIntColumnValibot.prototype, stringMethods);\n\ninterface DecimalColumnValibot\n extends DecimalColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DecimalColumnValibot extends DecimalColumn<ValibotSchemaConfig> {}\nObject.assign(DecimalColumnValibot.prototype, stringMethods);\n\ninterface DoublePrecisionColumnValibot\n extends DoublePrecisionColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass DoublePrecisionColumnValibot extends DoublePrecisionColumn<ValibotSchemaConfig> {}\nObject.assign(DoublePrecisionColumnValibot.prototype, stringMethods);\n\ninterface BigSerialColumnValibot\n extends BigSerialColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass BigSerialColumnValibot extends BigSerialColumn<ValibotSchemaConfig> {}\nObject.assign(BigSerialColumnValibot.prototype, stringMethods);\n\ninterface MoneyColumnValibot\n extends MoneyColumn<ValibotSchemaConfig>,\n NumberMethods {}\n\nclass MoneyColumnValibot extends MoneyColumn<ValibotSchemaConfig> {}\nObject.assign(MoneyColumnValibot.prototype, numberMethods);\n\ninterface VarCharColumnValibot\n extends VarCharColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass VarCharColumnValibot extends VarCharColumn<ValibotSchemaConfig> {}\nObject.assign(VarCharColumnValibot.prototype, stringMethods);\n\ninterface TextColumnValibot\n extends TextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass TextColumnValibot extends TextColumn<ValibotSchemaConfig> {}\nObject.assign(TextColumnValibot.prototype, stringMethods);\n\ninterface StringColumnValibot\n extends StringColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass StringColumnValibot extends StringColumn<ValibotSchemaConfig> {}\nObject.assign(StringColumnValibot.prototype, stringMethods);\n\ninterface CitextColumnValibot\n extends CitextColumn<ValibotSchemaConfig>,\n StringMethods {}\n\nclass CitextColumnValibot extends CitextColumn<ValibotSchemaConfig> {}\nObject.assign(CitextColumnValibot.prototype, stringMethods);\n\ninterface DateMethods {\n // Require a value to be greater than or equal to a given Date object\n min<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n\n // Require a value to be lower than or equal to a given Date object\n max<T extends ColumnTypeBase>(this: T, value: Date, params?: ErrorMessage): T;\n}\n\nconst dateMethods: DateMethods = {\n min(value, params) {\n return applyMethod(this, 'min', value, minValue, params);\n },\n max(value, params) {\n return applyMethod(this, 'max', value, maxValue, params);\n },\n};\n\ninterface DateColumnValibot\n extends DateColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass DateColumnValibot extends DateColumn<ValibotSchemaConfig> {}\nObject.assign(DateColumnValibot.prototype, dateMethods);\n\ninterface TimestampNoTzColumnValibot\n extends TimestampColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampNoTzColumnValibot extends TimestampColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampNoTzColumnValibot.prototype, dateMethods);\n\ninterface TimestampColumnValibot\n extends TimestampTZColumn<ValibotSchemaConfig>,\n DateMethods {}\n\nclass TimestampColumnValibot extends TimestampTZColumn<ValibotSchemaConfig> {}\nObject.assign(TimestampColumnValibot.prototype, dateMethods);\n\ntype PointSchemaValibot = ObjectSchema<{\n srid: OptionalSchema<NumberSchema>;\n lon: NumberSchema;\n lat: NumberSchema;\n}>;\n\nlet pointSchema: PointSchemaValibot | undefined;\n\nexport interface ValibotSchemaConfig {\n type: BaseSchema;\n\n parse<\n T extends ColumnTypeBase,\n OutputSchema extends BaseSchema,\n Out = Output<OutputSchema>,\n >(\n this: T,\n _schema: OutputSchema,\n fn: (input: T['type']) => Out,\n ): ParseColumn<T, OutputSchema, Out>;\n\n parseNull<\n T extends ColumnTypeBase,\n NullSchema extends BaseSchema,\n NullType = Output<NullSchema>,\n >(\n this: T,\n _schema: NullSchema,\n fn: () => NullType,\n ): ParseNullColumn<T, NullSchema, NullType>;\n\n encode<\n T extends { type: unknown },\n InputSchema extends BaseSchema,\n In = Output<InputSchema>,\n >(\n this: T,\n _schema: InputSchema,\n fn: (input: In) => unknown,\n ): EncodeColumn<T, InputSchema, In>;\n\n asType<\n T,\n Types extends AsTypeArg<BaseSchema>,\n TypeSchema extends BaseSchema = Types extends { type: BaseSchema }\n ? Types['type']\n : never,\n Type = Output<TypeSchema>,\n >(\n this: T,\n types: Types,\n ): {\n [K in keyof T]: K extends 'type'\n ? Type\n : K extends 'inputType'\n ? Types['input'] extends BaseSchema\n ? Output<Types['input']>\n : Type\n : K extends 'inputSchema'\n ? Types['input'] extends BaseSchema\n ? Types['input']\n : TypeSchema\n : K extends 'outputType'\n ? Types['output'] extends BaseSchema\n ? Output<Types['output']>\n : Type\n : K extends 'outputSchema'\n ? Types['output'] extends BaseSchema\n ? Types['output']\n : TypeSchema\n : K extends 'queryType'\n ? Types['query'] extends BaseSchema\n ? Output<Types['query']>\n : Type\n : K extends 'querySchema'\n ? Types['query'] extends BaseSchema\n ? Types['query']\n : TypeSchema\n : T[K];\n };\n\n dateAsNumber<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, NumberSchema, number>;\n\n dateAsDate<T extends ColumnType<ValibotSchemaConfig>>(\n this: T,\n ): ParseColumn<T, DateSchema, Date>;\n\n enum<U extends string, T extends readonly [U, ...U[]]>(\n dataType: string,\n type: T,\n ): EnumColumn<ValibotSchemaConfig, PicklistSchema<T>, U, T>;\n\n array<Item extends ArrayColumnValue>(item: Item): ValibotArrayColumn<Item>;\n\n nullable<T extends ColumnTypeBase>(\n this: T,\n ): NullableColumn<\n T,\n NullableSchema<T['inputSchema']>,\n NullableSchema<T['outputSchema']>,\n NullableSchema<T['querySchema']>\n >;\n\n json<Schema extends BaseSchema = UnknownSchema>(\n schema?: Schema,\n ): ValibotJSONColumn<Schema>;\n\n boolean(): BooleanSchema;\n buffer(): InstanceSchema<typeof Buffer>;\n unknown(): UnknownSchema;\n never(): NeverSchema;\n stringSchema(): StringSchema;\n stringMin(max: number): StringSchema;\n stringMax(max: number): StringSchema;\n stringMinMax(min: number, max: number): StringSchema;\n number(): NumberSchema;\n int(): NumberSchema;\n stringNumberDate(): DateSchema;\n timeInterval(): ObjectSchema<{\n years: OptionalSchema<NumberSchema>;\n months: OptionalSchema<NumberSchema>;\n days: OptionalSchema<NumberSchema>;\n hours: OptionalSchema<NumberSchema>;\n minutes: OptionalSchema<NumberSchema>;\n seconds: OptionalSchema<NumberSchema>;\n }>;\n bit(max: number): StringSchema;\n uuid(): StringSchema;\n\n inputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'inputSchema'>;\n\n outputSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): MapSchema<T, 'outputSchema'>;\n\n querySchema<T extends ColumnSchemaGetterTableClass>(this: T): QuerySchema<T>;\n\n createSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): CreateSchema<T>;\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(\n this: T,\n ): UpdateSchema<T>;\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T): PkeySchema<T>;\n\n error<T extends ColumnTypeBase<ValibotSchemaConfig>>(\n this: T,\n message: string,\n ): T;\n\n smallint(): SmallIntColumnValibot;\n integer(): IntegerColumnValibot;\n real(): RealColumnValibot;\n smallSerial(): SmallSerialColumnValibot;\n serial(): SerialColumnValibot;\n\n bigint(): BigIntColumnValibot;\n decimal(precision?: number, scale?: number): DecimalColumnValibot;\n doublePrecision(): DoublePrecisionColumnValibot;\n bigSerial(): BigSerialColumnValibot;\n money(): MoneyColumnValibot;\n varchar(limit?: number): VarCharColumnValibot;\n text(): TextColumnValibot;\n string(limit?: number): StringColumnValibot;\n citext(): CitextColumnValibot;\n\n date(): DateColumnValibot;\n timestampNoTZ(precision?: number): TimestampNoTzColumnValibot;\n timestamp(precision?: number): TimestampColumnValibot;\n\n geographyPointSchema(): PointSchemaValibot;\n}\n\n// parse a date string to date object, with respect to null\nconst parseDateToDate = (value: unknown) => new Date(value as string);\n\nexport const valibotSchemaConfig: ValibotSchemaConfig = {\n type: undefined as unknown as BaseSchema,\n parse(schema, fn) {\n return setColumnParse(this as never, fn, schema);\n },\n parseNull(schema, fn) {\n return setColumnParseNull(this as never, fn, schema);\n },\n encode(schema, fn) {\n return setColumnEncode(this as never, fn, schema);\n },\n asType(_types) {\n return this as never;\n },\n dateAsNumber() {\n const c = this.parse(number([]), Date.parse as never) as ColumnTypeBase;\n c.data.defaultParse = Date.parse;\n return c as never;\n },\n dateAsDate() {\n const c = this.parse(date([]), parseDateToDate) as ColumnTypeBase;\n c.data.defaultParse = parseDateToDate;\n return c as never;\n },\n enum(dataType, type) {\n return new EnumColumn(valibotSchemaConfig, dataType, type, picklist(type));\n },\n array(item) {\n return new ValibotArrayColumn(item);\n },\n nullable() {\n return makeColumnNullable(\n this,\n nullable(this.inputSchema),\n nullable(\n this.nullSchema\n ? union([this.outputSchema, this.nullSchema])\n : this.outputSchema,\n ),\n nullable(this.querySchema),\n );\n },\n json<Schema extends BaseSchema = UnknownSchema>(schema?: Schema) {\n return new ValibotJSONColumn((schema ?? unknown([])) as Schema);\n },\n boolean: () => boolean([]),\n buffer: () => instance(Buffer, []),\n unknown: () => unknown([]),\n never: () => never(),\n stringSchema: () => string([]),\n stringMin(min) {\n return string([minLength(min)]);\n },\n stringMax(max) {\n return string([maxLength(max)]);\n },\n stringMinMax(min, max) {\n return string([minLength(min), maxLength(max)]);\n },\n number: () => number([]),\n int: () => number([integer()]),\n\n stringNumberDate: () =>\n coerce(date([]), (input) => new Date(input as string)),\n\n timeInterval: () =>\n object(\n {\n years: optional(number()),\n months: optional(number()),\n days: optional(number()),\n hours: optional(number()),\n minutes: optional(number()),\n seconds: optional(number()),\n },\n [],\n ),\n\n bit: (max?: number) =>\n max ? string([maxLength(max), regex(/[10]/g)]) : string([regex(/[10]/g)]),\n\n uuid: () => string([uuid()]),\n\n inputSchema() {\n return mapSchema(this, 'inputSchema');\n },\n\n outputSchema() {\n return mapSchema(this, 'outputSchema');\n },\n\n querySchema() {\n return partial(mapSchema(this, 'querySchema'));\n },\n\n createSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const input = this.inputSchema() as ObjectSchema<ObjectEntries>;\n\n const shape: ObjectEntries = {};\n const { shape: columns } = this.prototype.columns;\n\n for (const key in columns) {\n const column = columns[key];\n if (column.dataType && !column.data.primaryKey) {\n shape[key] = input.entries[key];\n\n if (column.data.isNullable || column.data.default !== undefined) {\n shape[key] = optional(shape[key]);\n }\n }\n }\n\n return object(shape) as CreateSchema<T>;\n },\n\n updateSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n return partial(this.createSchema() as never) as UpdateSchema<T>;\n },\n\n pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n const keys: string[] = [];\n\n const {\n columns: { shape },\n } = this.prototype;\n for (const key in shape) {\n if (shape[key].data.primaryKey) {\n keys.push(key);\n }\n }\n\n return required(\n pick(this.querySchema() as never, keys as never),\n ) as PkeySchema<T>;\n },\n\n error(message: string) {\n this.inputSchema.message =\n this.outputSchema.message =\n this.querySchema.message =\n message;\n return this;\n },\n\n smallint: () => new SmallIntColumnValibot(valibotSchemaConfig),\n integer: () => new IntegerColumnValibot(valibotSchemaConfig),\n real: () => new RealColumnValibot(valibotSchemaConfig),\n smallSerial: () => new SmallSerialColumnValibot(valibotSchemaConfig),\n serial: () => new SerialColumnValibot(valibotSchemaConfig),\n\n bigint: () => new BigIntColumnValibot(valibotSchemaConfig),\n decimal: (precision, scale) =>\n new DecimalColumnValibot(valibotSchemaConfig, precision, scale),\n doublePrecision: () => new DoublePrecisionColumnValibot(valibotSchemaConfig),\n bigSerial: () => new BigSerialColumnValibot(valibotSchemaConfig),\n money: () => new MoneyColumnValibot(valibotSchemaConfig),\n varchar: (limit) => new VarCharColumnValibot(valibotSchemaConfig, limit),\n text: () => new TextColumnValibot(valibotSchemaConfig),\n string: (limit) => new StringColumnValibot(valibotSchemaConfig, limit),\n citext: () => new CitextColumnValibot(valibotSchemaConfig),\n\n date: () => new DateColumnValibot(valibotSchemaConfig),\n timestampNoTZ: (precision) =>\n new TimestampNoTzColumnValibot(valibotSchemaConfig, precision),\n timestamp: (precision) =>\n new TimestampColumnValibot(valibotSchemaConfig, precision),\n\n geographyPointSchema: () =>\n (pointSchema ??= object({\n srid: optional(number()),\n lon: number(),\n lat: number(),\n })),\n};\n\ntype MapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: ColumnSchemaGetterColumns<T>[K][Key];\n}>;\n\ntype QuerySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T>]: OptionalSchema<\n ColumnSchemaGetterColumns<T>[K]['querySchema']\n >;\n}>;\n\ntype CreateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: ColumnSchemaGetterColumns<T>[K]['data']['isNullable'] extends true\n ? OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>\n : undefined extends ColumnSchemaGetterColumns<T>[K]['data']['default']\n ? ColumnSchemaGetterColumns<T>[K]['inputSchema']\n : OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype UpdateSchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? never\n : K]: OptionalSchema<ColumnSchemaGetterColumns<T>[K]['inputSchema']>;\n}>;\n\ntype PkeySchema<T extends ColumnSchemaGetterTableClass> = ObjectSchema<{\n [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n ? K\n : never]: ColumnSchemaGetterColumns<T>[K]['inputSchema'];\n}>;\n\nfunction mapSchema<\n T extends ColumnSchemaGetterTableClass,\n Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n>(klass: T, schemaKey: Key): MapSchema<T, Key> {\n const shape: ObjectEntries = {};\n const { shape: columns } = klass.prototype.columns;\n\n for (const key in columns) {\n if (columns[key].dataType) {\n shape[key] = columns[key][schemaKey];\n }\n }\n\n return object(shape) as MapSchema<T, Key>;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orchid-orm-valibot",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "OrchidORM valibot integration",
|
|
5
5
|
"homepage": "https://orchid-orm.netlify.app/guide/columns-validation-methods.html",
|
|
6
6
|
"repository": {
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"license": "ISC",
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"valibot": "^0.29.0",
|
|
33
|
-
"orchid-core": "0.
|
|
34
|
-
"pqb": "0.
|
|
33
|
+
"orchid-core": "0.20.0",
|
|
34
|
+
"pqb": "0.41.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"test-utils": "0.3.2"
|