@hedystia/validations 2.0.0 → 2.0.2
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/types.cjs +8 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +12 -0
- package/dist/types.d.mts +12 -0
- package/dist/types.mjs +8 -0
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
package/dist/types.cjs
CHANGED
|
@@ -16,6 +16,13 @@ var BaseSchema = class {
|
|
|
16
16
|
null() {
|
|
17
17
|
return new UnionSchema(this, new NullSchemaType());
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Allows the value to be `null` (alias for {@link null})
|
|
21
|
+
* @returns {UnionSchema<I, O | null>} Schema that also accepts null
|
|
22
|
+
*/
|
|
23
|
+
nullable() {
|
|
24
|
+
return this.null();
|
|
25
|
+
}
|
|
19
26
|
enum(values) {
|
|
20
27
|
return new UnionSchema(...values.map((value) => new LiteralSchema(value)));
|
|
21
28
|
}
|
|
@@ -514,6 +521,7 @@ const h = {
|
|
|
514
521
|
number: () => new NumberSchemaType(),
|
|
515
522
|
boolean: () => new BooleanSchemaType(),
|
|
516
523
|
null: () => new NullSchemaType(),
|
|
524
|
+
nullable: () => new NullSchemaType(),
|
|
517
525
|
any: () => new AnySchemaType(),
|
|
518
526
|
literal: (value) => new LiteralSchema(value),
|
|
519
527
|
object: (schemaDef) => {
|
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\ntype SchemaPrimitive = \"string\" | \"number\" | \"boolean\" | \"any\";\n\ninterface SchemaLike {\n [key: string]: SchemaPrimitive | SchemaLike | BaseSchema<any, any>;\n}\n\ntype Simplify<T> = T extends any ? { [K in keyof T]: T[K] } : never;\n\ntype RequiredKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? never : K;\n}[keyof S];\n\ntype OptionalKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? K : never;\n}[keyof S];\n\ntype SchemaPrimitiveMap = {\n string: string;\n number: number;\n boolean: boolean;\n any: unknown;\n};\n\ntype SchemaType<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends keyof SchemaPrimitiveMap\n ? SchemaPrimitiveMap[S]\n : S extends Record<string, any>\n ? InferSchema<S>\n : unknown;\n\ntype InferObject<S extends SchemaDefinition> = Simplify<\n {\n [K in RequiredKeys<S>]: SchemaType<S[K]>;\n } & {\n [K in OptionalKeys<S>]?: SchemaType<S[K]>;\n }\n>;\n\ntype InferSchema<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends \"string\"\n ? string\n : S extends \"number\"\n ? number\n : S extends \"boolean\"\n ? boolean\n : S extends { [key: string]: any }\n ? {\n [K in keyof S as undefined extends InferSchema<S[K]> ? K : never]?: InferSchema<\n S[K]\n >;\n } & {\n [K in keyof S as undefined extends InferSchema<S[K]> ? never : K]: InferSchema<\n S[K]\n >;\n }\n : unknown;\n\ntype SchemaDefinition = SchemaLike;\n\ninterface Schema<I, O> extends StandardSchemaV1<I, O> {\n optional(): OptionalSchema<I, O | undefined>;\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]>;\n array(): ArraySchema<I, O[]>;\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>>;\n jsonSchema: any;\n readonly inferred: O;\n schema: Schema<I, O>;\n}\n\nexport abstract class BaseSchema<I, O> implements Schema<I, O> {\n abstract readonly \"~standard\": StandardSchemaV1.Props<I, O>;\n jsonSchema: any = {};\n get inferred(): O {\n return null as unknown as O;\n }\n schema: Schema<I, O> = this;\n protected _coerce = false;\n\n coerce(): this {\n this._coerce = true;\n return this;\n }\n\n optional(): OptionalSchema<I, O | undefined> {\n return new OptionalSchema<I, O>(this);\n }\n\n null(): UnionSchema<I, O | null> {\n return new UnionSchema<I, O | null>(this, new NullSchemaType() as any);\n }\n\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]> {\n const literalSchemas = values.map((value) => new LiteralSchema<I, V>(value));\n return new UnionSchema<I, Values[number]>(...literalSchemas);\n }\n\n array(): ArraySchema<I, O[]> {\n return new ArraySchema<I, O[]>(this);\n }\n\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>> {\n return new InstanceOfSchema<I, InstanceType<C>>(this, constructor);\n }\n}\n\nfunction validatePrimitive(schema: SchemaPrimitive, value: unknown): boolean {\n if (typeof value === \"string\" && schema === \"string\") {\n return true;\n }\n if (typeof value === \"number\" && schema === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n if (typeof value === \"boolean\" && schema === \"boolean\") {\n return true;\n }\n return false;\n}\n\nexport class StringSchemaType extends BaseSchema<unknown, string> {\n readonly type: SchemaPrimitive = \"string\";\n private _validateDate = false;\n private _validateUUID = false;\n private _validateRegex = false;\n private _validateEmail = false;\n private _validatePhone = false;\n private _validateDomain = false;\n private _requireHttpOrHttps = false;\n private _minLength?: number;\n private _maxLength?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"string\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n minLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._minLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minLength: n,\n };\n return schema;\n }\n\n maxLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._maxLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maxLength: n,\n };\n return schema;\n }\n\n date(): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._validateDate = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"date\" };\n return schema;\n }\n\n uuid(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateUUID = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"uuid\" };\n return schema;\n }\n\n regex(regex: RegExp): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateRegex = true;\n schema.jsonSchema = { ...this.jsonSchema, pattern: regex.source };\n return schema;\n }\n\n email(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateEmail = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"email\" };\n return schema;\n }\n\n phone(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validatePhone = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"phone\" };\n return schema;\n }\n\n domain(requireHttpOrHttps = true): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateDomain = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"domain\" };\n schema._requireHttpOrHttps = requireHttpOrHttps;\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, string> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"string\") {\n value = String(value);\n }\n\n if (typeof value !== \"string\") {\n return {\n issues: [{ message: `Expected string, received ${typeof value}` }],\n };\n }\n\n if (this._minLength !== undefined && value.length < this._minLength) {\n return { issues: [{ message: `String shorter than ${this._minLength}` }] };\n }\n\n if (this._maxLength !== undefined && value.length > this._maxLength) {\n return { issues: [{ message: `String longer than ${this._maxLength}` }] };\n }\n\n if (this._validateUUID && !this._isValidUUID(value)) {\n return {\n issues: [{ message: \"Invalid UUID format\" }],\n };\n }\n\n if (this._validateRegex && !this._isValidRegex(value)) {\n return {\n issues: [{ message: \"Invalid regex format\" }],\n };\n }\n\n if (this._validateEmail && !this._isValidEmail(value)) {\n return {\n issues: [{ message: \"Invalid email format\" }],\n };\n }\n\n if (this._validatePhone && !this._isValidPhone(value)) {\n return {\n issues: [{ message: \"Invalid phone number format\" }],\n };\n }\n\n if (this._validateDomain && !this._isValidDomain(value)) {\n return {\n issues: [{ message: \"Invalid domain format\" }],\n };\n }\n\n if (this._validateDate && !this._isValidDate(value)) {\n return { issues: [{ message: \"Invalid date format\" }] };\n }\n\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as string,\n },\n };\n\n private _isValidDate(value: string): boolean {\n const date = new Date(value);\n return !Number.isNaN(date.getTime());\n }\n\n private _isValidUUID(value: string): boolean {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(value);\n }\n\n private _isValidRegex(value: string): boolean {\n return new RegExp(this.jsonSchema.pattern!).test(value);\n }\n\n private _isValidEmail(value: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(value);\n }\n\n private _isValidPhone(value: string): boolean {\n const phoneRegex = /^\\+?[0-9]{7,15}$/;\n return phoneRegex.test(value);\n }\n\n private _isValidDomain(value: string): boolean {\n let domainRegex = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n if (this._requireHttpOrHttps) {\n domainRegex = /^https?:\\/\\/[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n }\n return domainRegex.test(value);\n }\n}\n\nexport class NumberSchemaType extends BaseSchema<unknown, number> {\n readonly type: SchemaPrimitive = \"number\";\n private _min?: number;\n private _max?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"number\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n min(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._min = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minimum: n,\n };\n return schema;\n }\n\n max(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._max = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maximum: n,\n };\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, number> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"number\") {\n const coerced = Number(value);\n if (!Number.isNaN(coerced)) {\n value = coerced;\n }\n }\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n return {\n issues: [{ message: `Expected number, received ${typeof value}` }],\n };\n }\n if (this._min !== undefined && value < this._min) {\n return { issues: [{ message: `Number less than ${this._min}` }] };\n }\n if (this._max !== undefined && value > this._max) {\n return { issues: [{ message: `Number greater than ${this._max}` }] };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as number,\n },\n };\n}\n\nexport class BooleanSchemaType extends BaseSchema<unknown, boolean> {\n readonly type: SchemaPrimitive = \"boolean\";\n\n constructor() {\n super();\n this.jsonSchema = { type: \"boolean\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, boolean> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"boolean\") {\n if (value === \"true\" || value === 1 || value === \"1\") {\n value = true;\n } else if (value === \"false\" || value === 0 || value === \"0\") {\n value = false;\n }\n }\n if (typeof value !== \"boolean\") {\n return {\n issues: [{ message: `Expected boolean, received ${typeof value}` }],\n };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as boolean,\n },\n };\n}\n\nexport class AnySchemaType extends BaseSchema<unknown, any> {\n readonly type: SchemaPrimitive = \"any\";\n readonly \"~standard\": StandardSchemaV1.Props<unknown, any> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as any,\n },\n };\n}\n\nexport class LiteralSchema<I, T extends string | number | boolean> extends BaseSchema<I, T> {\n private readonly value: T;\n\n constructor(value: T) {\n super();\n this.value = value;\n this.jsonSchema = {\n const: value,\n type: typeof value as \"string\" | \"number\" | \"boolean\",\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== this.value) {\n return {\n issues: [{ message: `Expected literal value ${this.value}, received ${value}` }],\n };\n }\n return { value: value as T };\n },\n types: {\n input: {} as I,\n output: {} as T,\n },\n };\n}\n\nexport class OptionalSchema<I, O> extends BaseSchema<I, O | undefined> {\n private readonly innerSchema: Schema<I, O>;\n\n constructor(schema: Schema<I, O>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { ...schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O | undefined> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value === undefined || value === null) {\n return { value: undefined };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result;\n },\n types: {\n input: {} as I,\n output: {} as O | undefined,\n },\n };\n}\n\nexport class NullSchemaType extends BaseSchema<unknown, null> {\n readonly type = \"null\";\n constructor() {\n super();\n this.jsonSchema = { type: \"null\" };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, null> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== null) {\n return {\n issues: [\n {\n message: `Expected null, received ${value === undefined ? \"undefined\" : typeof value}`,\n },\n ],\n };\n }\n return { value: null };\n },\n types: {\n input: {} as unknown,\n output: {} as unknown as null,\n },\n };\n}\n\nexport class UnionSchema<I, O> extends BaseSchema<I, O> {\n private readonly schemas: Schema<I, any>[];\n constructor(...schemas: Schema<I, any>[]) {\n super();\n this.schemas = schemas;\n this.jsonSchema = { anyOf: schemas.map((s) => s.jsonSchema) };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n const issuesAccum: StandardSchemaV1.Issue[] = [];\n for (const schema of this.schemas) {\n const result = schema[\"~standard\"].validate(value) as StandardSchemaV1.Result<any>;\n if (!(\"issues\" in result)) {\n return { value: result.value };\n }\n issuesAccum.push(...result.issues!);\n }\n return { issues: issuesAccum };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ArraySchema<I, O extends any[]> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, O[number]>;\n\n constructor(schema: Schema<I, O[number]>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { type: \"array\", items: schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!Array.isArray(value)) {\n return {\n issues: [{ message: `Expected array, received ${typeof value}` }],\n };\n }\n\n const results = value.map((item, index) => {\n const result = this.innerSchema[\"~standard\"].validate(item) as StandardSchemaV1.Result<\n O[number]\n >;\n if (\"issues\" in result) {\n return {\n index,\n issues: result.issues?.map((issue) => ({\n ...issue,\n path: issue.path ? [index, ...issue.path] : [index],\n })),\n };\n }\n return { index, value: result.value };\n });\n\n const errors = results.filter((r) => \"issues\" in r) as {\n index: number;\n issues: StandardSchemaV1.Issue[];\n }[];\n\n if (errors.length > 0) {\n return {\n issues: errors.flatMap((e) => e.issues),\n };\n }\n\n return { value: results.map((r) => (\"value\" in r ? r.value : null)) as O };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class InstanceOfSchema<I, O> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, any>;\n private readonly classConstructor: new (\n ...args: any[]\n ) => any;\n\n constructor(schema: Schema<I, any>, classConstructor: new (...args: any[]) => any) {\n super();\n this.innerSchema = schema;\n this.classConstructor = classConstructor;\n this.jsonSchema = { ...schema.jsonSchema, instanceOf: classConstructor.name };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!(value instanceof this.classConstructor)) {\n return {\n issues: [\n {\n message: `Expected instance of ${this.classConstructor.name}`,\n },\n ],\n };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result as StandardSchemaV1.Result<O>;\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ObjectSchemaType<T extends Record<string, unknown>> extends BaseSchema<unknown, T> {\n readonly definition: SchemaDefinition;\n\n constructor(definition: SchemaDefinition) {\n super();\n this.definition = definition;\n\n const properties: Record<string, any> = {};\n const required: string[] = [];\n\n for (const key in definition) {\n const schemaItem = definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!isOptional) {\n required.push(key);\n }\n\n if (typeof schemaItem === \"string\") {\n properties[key] = { type: schemaItem };\n } else if (schemaItem instanceof BaseSchema) {\n properties[key] = schemaItem.jsonSchema;\n } else if (typeof schemaItem === \"object\" && schemaItem !== null) {\n properties[key] = { type: \"object\", properties: {} };\n }\n }\n\n this.jsonSchema = {\n type: \"object\",\n properties,\n required: required.length > 0 ? required : undefined,\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown): StandardSchemaV1.Result<T> => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {\n issues: [\n {\n message:\n \"Expected object, received \" +\n (value === null ? \"null\" : Array.isArray(value) ? \"array\" : typeof value),\n },\n ],\n };\n }\n\n const obj = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n const issues: StandardSchemaV1.Issue[] = [];\n\n for (const key in this.definition) {\n const schemaItem = this.definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!(key in obj) && !isOptional) {\n issues.push({\n message: `Missing required property: ${key}`,\n path: [key],\n });\n continue;\n }\n\n if (key in obj) {\n if (typeof schemaItem === \"string\" && schemaItem in [\"string\", \"number\", \"boolean\"]) {\n const schemaPrimitive = schemaItem as SchemaPrimitive;\n if (!validatePrimitive(schemaPrimitive, obj[key])) {\n issues.push({\n message: `Invalid type for property ${key}: expected ${schemaPrimitive}`,\n path: [key],\n });\n } else {\n result[key] = obj[key];\n }\n } else if (schemaItem instanceof BaseSchema) {\n const validationResult = schemaItem[\"~standard\"].validate(\n obj[key],\n ) as StandardSchemaV1.Result<any>;\n if (\"issues\" in validationResult) {\n if (validationResult.issues) {\n issues.push(\n ...validationResult.issues.map((issue) => ({\n ...issue,\n path: issue.path ? [key, ...issue.path] : [key],\n })),\n );\n }\n } else {\n result[key] = validationResult.value;\n }\n }\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as T };\n },\n types: {\n input: {} as unknown,\n output: {} as T,\n },\n };\n}\n\nexport type AnySchema = SchemaPrimitive | BaseSchema<any, any> | SchemaDefinition;\n\nfunction toStandard<T>(schema: AnySchema): Schema<unknown, T> {\n let standardSchema: Schema<unknown, T>;\n\n if (schema instanceof BaseSchema) {\n standardSchema = schema as Schema<unknown, T>;\n } else if (typeof schema === \"string\") {\n if (schema === \"string\") {\n standardSchema = new StringSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"number\") {\n standardSchema = new NumberSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"boolean\") {\n standardSchema = new BooleanSchemaType() as unknown as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n } else if (typeof schema === \"object\" && schema !== null && !Array.isArray(schema)) {\n standardSchema = new ObjectSchemaType<any>(schema as SchemaDefinition) as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n\n const z = {\n toJSONSchema: (schema: any) => schema.jsonSchema,\n };\n\n return {\n ...standardSchema,\n inferred: null as unknown as T,\n \"~standard\": standardSchema[\"~standard\"],\n jsonSchema: z.toJSONSchema(standardSchema),\n schema: standardSchema,\n optional: () => new OptionalSchema<unknown, T>(standardSchema),\n enum: standardSchema.enum.bind(standardSchema),\n array: standardSchema.array.bind(standardSchema),\n instanceOf: standardSchema.instanceOf.bind(standardSchema),\n };\n}\n\n/**\n * Create standard schema types\n * @returns {typeof h} Standard schema types\n */\nexport const h = {\n /**\n * Create string schema type\n * @returns {StringSchemaType} String schema type\n */\n string: (): StringSchemaType => new StringSchemaType(),\n /**\n * Create number schema type\n * @returns {NumberSchemaType} Number schema type\n */\n number: (): NumberSchemaType => new NumberSchemaType(),\n /**\n * Create boolean schema type\n * @returns {BooleanSchemaType} Boolean schema type\n */\n boolean: (): BooleanSchemaType => new BooleanSchemaType(),\n /**\n * Create null schema type\n * @returns {NullSchemaType} Null schema type\n */\n null: (): NullSchemaType => new NullSchemaType(),\n\n /**\n * Create any schema type\n * @returns {AnySchemaType} Any schema type\n */\n any: (): AnySchemaType => new AnySchemaType(),\n\n /**\n * Create literal schema type\n * @param {T} value - Literal value\n * @returns {LiteralSchema<unknown, T>} Literal schema type\n */\n literal: <T extends string | number | boolean>(value: T): LiteralSchema<unknown, T> =>\n new LiteralSchema<unknown, T>(value),\n\n /**\n * Create object schema type\n * @param {S} [schemaDef] - Schema definition\n * @returns {ObjectSchemaType<InferObject<S>>} Object schema type\n */\n object: <S extends SchemaDefinition>(schemaDef?: S): ObjectSchemaType<InferObject<S>> => {\n return new ObjectSchemaType(schemaDef || {}) as ObjectSchemaType<InferObject<S>>;\n },\n\n /**\n * Create array schema type\n * @param {S} schema - Schema\n * @returns {ArraySchema<unknown, InferSchema<S>[]>} Array schema type\n */\n array: <S extends AnySchema>(schema: S): ArraySchema<unknown, SchemaType<S>[]> => {\n const base = toStandard<SchemaType<S>>(schema);\n return base.array() as ArraySchema<unknown, SchemaType<S>[]>;\n },\n\n /**\n * Create enum schema type from a list of string, number or boolean values.\n * @param {Values} values - An array of literal values.\n * @returns {UnionSchema<unknown, Values[number]>} A schema that validates against one of the provided literal values.\n */\n enum: <T extends string | number | boolean, Values extends readonly [T, ...T[]]>(\n values: Values,\n ): UnionSchema<unknown, Values[number]> => {\n if (!values || values.length === 0) {\n throw new Error(\"h.enum() requires a non-empty array of values.\");\n }\n const literalSchemas = values.map((val) => h.literal(val));\n return h.options(...literalSchemas) as UnionSchema<unknown, Values[number]>;\n },\n\n /**\n * Create optional schema type\n * @param {S} schema - Schema\n * @returns {OptionalSchema<unknown, InferSchema<S> | undefined>} Optional schema type\n */\n optional: <S extends AnySchema>(\n schema: S,\n ): OptionalSchema<unknown, InferSchema<S> | undefined> => {\n return toStandard<InferSchema<S>>(schema).optional();\n },\n\n /**\n * Create options schema type\n * @param {S} schemas - Schemas\n * @returns {UnionSchema<unknown, InferSchema<S[number]>>} Options schema type\n */\n options: <S extends AnySchema[]>(...schemas: S): UnionSchema<unknown, InferSchema<S[number]>> => {\n const stdSchemas = schemas.map((s) => toStandard<InferSchema<S[number]>>(s).schema);\n return new UnionSchema<unknown, InferSchema<S[number]>>(...stdSchemas);\n },\n\n /**\n * Create instance of schema type\n * @param {C} constructor - Constructor function\n * @returns {InstanceOfSchema<unknown, InstanceType<C>>} Instance of schema type\n */\n instanceOf: <C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<unknown, InstanceType<C>> => {\n const baseSchema = h.object({});\n return baseSchema.instanceOf(constructor);\n },\n\n /**\n * Create date schema type\n * @returns {StringSchemaType} Date schema type\n */\n date: (): StringSchemaType => h.string().date(),\n\n /**\n * Create UUID schema type\n * @returns {StringSchemaType} UUID schema type\n */\n uuid: (): StringSchemaType => h.string().uuid(),\n\n /**\n * Create regex schema type\n * @param {RegExp} regex - Regex\n * @returns {StringSchemaType} Regex schema type\n */\n regex: (regex: RegExp): StringSchemaType => h.string().regex(regex),\n\n /**\n * Create email schema type\n * @returns {StringSchemaType} Email schema type\n */\n email: (): StringSchemaType => h.string().email(),\n\n /**\n * Create phone schema type\n * @returns {StringSchemaType} Phone schema type\n */\n phone: (): StringSchemaType => h.string().phone(),\n\n /** Create domain schema type\n * @param {boolean} requireHttpOrHttps - Require http or https\n * @returns {StringSchemaType} Domain schema type\n */\n domain: (requireHttpOrHttps = true): StringSchemaType => h.string().domain(requireHttpOrHttps),\n\n /**\n * Convert schema to standard schema\n * @param {AnySchema} schema - Schema\n * @returns {Schema<unknown, any>} Standard schema\n */\n toStandard: toStandard,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.cjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\ntype SchemaPrimitive = \"string\" | \"number\" | \"boolean\" | \"any\";\n\ninterface SchemaLike {\n [key: string]: SchemaPrimitive | SchemaLike | BaseSchema<any, any>;\n}\n\ntype Simplify<T> = T extends any ? { [K in keyof T]: T[K] } : never;\n\ntype RequiredKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? never : K;\n}[keyof S];\n\ntype OptionalKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? K : never;\n}[keyof S];\n\ntype SchemaPrimitiveMap = {\n string: string;\n number: number;\n boolean: boolean;\n any: unknown;\n};\n\ntype SchemaType<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends keyof SchemaPrimitiveMap\n ? SchemaPrimitiveMap[S]\n : S extends Record<string, any>\n ? InferSchema<S>\n : unknown;\n\ntype InferObject<S extends SchemaDefinition> = Simplify<\n {\n [K in RequiredKeys<S>]: SchemaType<S[K]>;\n } & {\n [K in OptionalKeys<S>]?: SchemaType<S[K]>;\n }\n>;\n\ntype InferSchema<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends \"string\"\n ? string\n : S extends \"number\"\n ? number\n : S extends \"boolean\"\n ? boolean\n : S extends { [key: string]: any }\n ? {\n [K in keyof S as undefined extends InferSchema<S[K]> ? K : never]?: InferSchema<\n S[K]\n >;\n } & {\n [K in keyof S as undefined extends InferSchema<S[K]> ? never : K]: InferSchema<\n S[K]\n >;\n }\n : unknown;\n\ntype SchemaDefinition = SchemaLike;\n\ninterface Schema<I, O> extends StandardSchemaV1<I, O> {\n optional(): OptionalSchema<I, O | undefined>;\n null(): UnionSchema<I, O | null>;\n nullable(): UnionSchema<I, O | null>;\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]>;\n array(): ArraySchema<I, O[]>;\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>>;\n jsonSchema: any;\n readonly inferred: O;\n schema: Schema<I, O>;\n}\n\nexport abstract class BaseSchema<I, O> implements Schema<I, O> {\n abstract readonly \"~standard\": StandardSchemaV1.Props<I, O>;\n jsonSchema: any = {};\n get inferred(): O {\n return null as unknown as O;\n }\n schema: Schema<I, O> = this;\n protected _coerce = false;\n\n coerce(): this {\n this._coerce = true;\n return this;\n }\n\n optional(): OptionalSchema<I, O | undefined> {\n return new OptionalSchema<I, O>(this);\n }\n\n null(): UnionSchema<I, O | null> {\n return new UnionSchema<I, O | null>(this, new NullSchemaType() as any);\n }\n\n /**\n * Allows the value to be `null` (alias for {@link null})\n * @returns {UnionSchema<I, O | null>} Schema that also accepts null\n */\n nullable(): UnionSchema<I, O | null> {\n return this.null();\n }\n\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]> {\n const literalSchemas = values.map((value) => new LiteralSchema<I, V>(value));\n return new UnionSchema<I, Values[number]>(...literalSchemas);\n }\n\n array(): ArraySchema<I, O[]> {\n return new ArraySchema<I, O[]>(this);\n }\n\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>> {\n return new InstanceOfSchema<I, InstanceType<C>>(this, constructor);\n }\n}\n\nfunction validatePrimitive(schema: SchemaPrimitive, value: unknown): boolean {\n if (typeof value === \"string\" && schema === \"string\") {\n return true;\n }\n if (typeof value === \"number\" && schema === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n if (typeof value === \"boolean\" && schema === \"boolean\") {\n return true;\n }\n return false;\n}\n\nexport class StringSchemaType extends BaseSchema<unknown, string> {\n readonly type: SchemaPrimitive = \"string\";\n private _validateDate = false;\n private _validateUUID = false;\n private _validateRegex = false;\n private _validateEmail = false;\n private _validatePhone = false;\n private _validateDomain = false;\n private _requireHttpOrHttps = false;\n private _minLength?: number;\n private _maxLength?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"string\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n minLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._minLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minLength: n,\n };\n return schema;\n }\n\n maxLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._maxLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maxLength: n,\n };\n return schema;\n }\n\n date(): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._validateDate = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"date\" };\n return schema;\n }\n\n uuid(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateUUID = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"uuid\" };\n return schema;\n }\n\n regex(regex: RegExp): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateRegex = true;\n schema.jsonSchema = { ...this.jsonSchema, pattern: regex.source };\n return schema;\n }\n\n email(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateEmail = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"email\" };\n return schema;\n }\n\n phone(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validatePhone = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"phone\" };\n return schema;\n }\n\n domain(requireHttpOrHttps = true): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateDomain = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"domain\" };\n schema._requireHttpOrHttps = requireHttpOrHttps;\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, string> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"string\") {\n value = String(value);\n }\n\n if (typeof value !== \"string\") {\n return {\n issues: [{ message: `Expected string, received ${typeof value}` }],\n };\n }\n\n if (this._minLength !== undefined && value.length < this._minLength) {\n return { issues: [{ message: `String shorter than ${this._minLength}` }] };\n }\n\n if (this._maxLength !== undefined && value.length > this._maxLength) {\n return { issues: [{ message: `String longer than ${this._maxLength}` }] };\n }\n\n if (this._validateUUID && !this._isValidUUID(value)) {\n return {\n issues: [{ message: \"Invalid UUID format\" }],\n };\n }\n\n if (this._validateRegex && !this._isValidRegex(value)) {\n return {\n issues: [{ message: \"Invalid regex format\" }],\n };\n }\n\n if (this._validateEmail && !this._isValidEmail(value)) {\n return {\n issues: [{ message: \"Invalid email format\" }],\n };\n }\n\n if (this._validatePhone && !this._isValidPhone(value)) {\n return {\n issues: [{ message: \"Invalid phone number format\" }],\n };\n }\n\n if (this._validateDomain && !this._isValidDomain(value)) {\n return {\n issues: [{ message: \"Invalid domain format\" }],\n };\n }\n\n if (this._validateDate && !this._isValidDate(value)) {\n return { issues: [{ message: \"Invalid date format\" }] };\n }\n\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as string,\n },\n };\n\n private _isValidDate(value: string): boolean {\n const date = new Date(value);\n return !Number.isNaN(date.getTime());\n }\n\n private _isValidUUID(value: string): boolean {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(value);\n }\n\n private _isValidRegex(value: string): boolean {\n return new RegExp(this.jsonSchema.pattern!).test(value);\n }\n\n private _isValidEmail(value: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(value);\n }\n\n private _isValidPhone(value: string): boolean {\n const phoneRegex = /^\\+?[0-9]{7,15}$/;\n return phoneRegex.test(value);\n }\n\n private _isValidDomain(value: string): boolean {\n let domainRegex = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n if (this._requireHttpOrHttps) {\n domainRegex = /^https?:\\/\\/[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n }\n return domainRegex.test(value);\n }\n}\n\nexport class NumberSchemaType extends BaseSchema<unknown, number> {\n readonly type: SchemaPrimitive = \"number\";\n private _min?: number;\n private _max?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"number\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n min(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._min = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minimum: n,\n };\n return schema;\n }\n\n max(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._max = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maximum: n,\n };\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, number> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"number\") {\n const coerced = Number(value);\n if (!Number.isNaN(coerced)) {\n value = coerced;\n }\n }\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n return {\n issues: [{ message: `Expected number, received ${typeof value}` }],\n };\n }\n if (this._min !== undefined && value < this._min) {\n return { issues: [{ message: `Number less than ${this._min}` }] };\n }\n if (this._max !== undefined && value > this._max) {\n return { issues: [{ message: `Number greater than ${this._max}` }] };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as number,\n },\n };\n}\n\nexport class BooleanSchemaType extends BaseSchema<unknown, boolean> {\n readonly type: SchemaPrimitive = \"boolean\";\n\n constructor() {\n super();\n this.jsonSchema = { type: \"boolean\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, boolean> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"boolean\") {\n if (value === \"true\" || value === 1 || value === \"1\") {\n value = true;\n } else if (value === \"false\" || value === 0 || value === \"0\") {\n value = false;\n }\n }\n if (typeof value !== \"boolean\") {\n return {\n issues: [{ message: `Expected boolean, received ${typeof value}` }],\n };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as boolean,\n },\n };\n}\n\nexport class AnySchemaType extends BaseSchema<unknown, any> {\n readonly type: SchemaPrimitive = \"any\";\n readonly \"~standard\": StandardSchemaV1.Props<unknown, any> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as any,\n },\n };\n}\n\nexport class LiteralSchema<I, T extends string | number | boolean> extends BaseSchema<I, T> {\n private readonly value: T;\n\n constructor(value: T) {\n super();\n this.value = value;\n this.jsonSchema = {\n const: value,\n type: typeof value as \"string\" | \"number\" | \"boolean\",\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== this.value) {\n return {\n issues: [{ message: `Expected literal value ${this.value}, received ${value}` }],\n };\n }\n return { value: value as T };\n },\n types: {\n input: {} as I,\n output: {} as T,\n },\n };\n}\n\nexport class OptionalSchema<I, O> extends BaseSchema<I, O | undefined> {\n private readonly innerSchema: Schema<I, O>;\n\n constructor(schema: Schema<I, O>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { ...schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O | undefined> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value === undefined || value === null) {\n return { value: undefined };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result;\n },\n types: {\n input: {} as I,\n output: {} as O | undefined,\n },\n };\n}\n\nexport class NullSchemaType extends BaseSchema<unknown, null> {\n readonly type = \"null\";\n constructor() {\n super();\n this.jsonSchema = { type: \"null\" };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, null> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== null) {\n return {\n issues: [\n {\n message: `Expected null, received ${value === undefined ? \"undefined\" : typeof value}`,\n },\n ],\n };\n }\n return { value: null };\n },\n types: {\n input: {} as unknown,\n output: {} as unknown as null,\n },\n };\n}\n\nexport class UnionSchema<I, O> extends BaseSchema<I, O> {\n private readonly schemas: Schema<I, any>[];\n constructor(...schemas: Schema<I, any>[]) {\n super();\n this.schemas = schemas;\n this.jsonSchema = { anyOf: schemas.map((s) => s.jsonSchema) };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n const issuesAccum: StandardSchemaV1.Issue[] = [];\n for (const schema of this.schemas) {\n const result = schema[\"~standard\"].validate(value) as StandardSchemaV1.Result<any>;\n if (!(\"issues\" in result)) {\n return { value: result.value };\n }\n issuesAccum.push(...result.issues!);\n }\n return { issues: issuesAccum };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ArraySchema<I, O extends any[]> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, O[number]>;\n\n constructor(schema: Schema<I, O[number]>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { type: \"array\", items: schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!Array.isArray(value)) {\n return {\n issues: [{ message: `Expected array, received ${typeof value}` }],\n };\n }\n\n const results = value.map((item, index) => {\n const result = this.innerSchema[\"~standard\"].validate(item) as StandardSchemaV1.Result<\n O[number]\n >;\n if (\"issues\" in result) {\n return {\n index,\n issues: result.issues?.map((issue) => ({\n ...issue,\n path: issue.path ? [index, ...issue.path] : [index],\n })),\n };\n }\n return { index, value: result.value };\n });\n\n const errors = results.filter((r) => \"issues\" in r) as {\n index: number;\n issues: StandardSchemaV1.Issue[];\n }[];\n\n if (errors.length > 0) {\n return {\n issues: errors.flatMap((e) => e.issues),\n };\n }\n\n return { value: results.map((r) => (\"value\" in r ? r.value : null)) as O };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class InstanceOfSchema<I, O> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, any>;\n private readonly classConstructor: new (\n ...args: any[]\n ) => any;\n\n constructor(schema: Schema<I, any>, classConstructor: new (...args: any[]) => any) {\n super();\n this.innerSchema = schema;\n this.classConstructor = classConstructor;\n this.jsonSchema = { ...schema.jsonSchema, instanceOf: classConstructor.name };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!(value instanceof this.classConstructor)) {\n return {\n issues: [\n {\n message: `Expected instance of ${this.classConstructor.name}`,\n },\n ],\n };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result as StandardSchemaV1.Result<O>;\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ObjectSchemaType<T extends Record<string, unknown>> extends BaseSchema<unknown, T> {\n readonly definition: SchemaDefinition;\n\n constructor(definition: SchemaDefinition) {\n super();\n this.definition = definition;\n\n const properties: Record<string, any> = {};\n const required: string[] = [];\n\n for (const key in definition) {\n const schemaItem = definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!isOptional) {\n required.push(key);\n }\n\n if (typeof schemaItem === \"string\") {\n properties[key] = { type: schemaItem };\n } else if (schemaItem instanceof BaseSchema) {\n properties[key] = schemaItem.jsonSchema;\n } else if (typeof schemaItem === \"object\" && schemaItem !== null) {\n properties[key] = { type: \"object\", properties: {} };\n }\n }\n\n this.jsonSchema = {\n type: \"object\",\n properties,\n required: required.length > 0 ? required : undefined,\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown): StandardSchemaV1.Result<T> => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {\n issues: [\n {\n message:\n \"Expected object, received \" +\n (value === null ? \"null\" : Array.isArray(value) ? \"array\" : typeof value),\n },\n ],\n };\n }\n\n const obj = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n const issues: StandardSchemaV1.Issue[] = [];\n\n for (const key in this.definition) {\n const schemaItem = this.definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!(key in obj) && !isOptional) {\n issues.push({\n message: `Missing required property: ${key}`,\n path: [key],\n });\n continue;\n }\n\n if (key in obj) {\n if (typeof schemaItem === \"string\" && schemaItem in [\"string\", \"number\", \"boolean\"]) {\n const schemaPrimitive = schemaItem as SchemaPrimitive;\n if (!validatePrimitive(schemaPrimitive, obj[key])) {\n issues.push({\n message: `Invalid type for property ${key}: expected ${schemaPrimitive}`,\n path: [key],\n });\n } else {\n result[key] = obj[key];\n }\n } else if (schemaItem instanceof BaseSchema) {\n const validationResult = schemaItem[\"~standard\"].validate(\n obj[key],\n ) as StandardSchemaV1.Result<any>;\n if (\"issues\" in validationResult) {\n if (validationResult.issues) {\n issues.push(\n ...validationResult.issues.map((issue) => ({\n ...issue,\n path: issue.path ? [key, ...issue.path] : [key],\n })),\n );\n }\n } else {\n result[key] = validationResult.value;\n }\n }\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as T };\n },\n types: {\n input: {} as unknown,\n output: {} as T,\n },\n };\n}\n\nexport type AnySchema = SchemaPrimitive | BaseSchema<any, any> | SchemaDefinition;\n\nfunction toStandard<T>(schema: AnySchema): Schema<unknown, T> {\n let standardSchema: Schema<unknown, T>;\n\n if (schema instanceof BaseSchema) {\n standardSchema = schema as Schema<unknown, T>;\n } else if (typeof schema === \"string\") {\n if (schema === \"string\") {\n standardSchema = new StringSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"number\") {\n standardSchema = new NumberSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"boolean\") {\n standardSchema = new BooleanSchemaType() as unknown as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n } else if (typeof schema === \"object\" && schema !== null && !Array.isArray(schema)) {\n standardSchema = new ObjectSchemaType<any>(schema as SchemaDefinition) as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n\n const z = {\n toJSONSchema: (schema: any) => schema.jsonSchema,\n };\n\n return {\n ...standardSchema,\n inferred: null as unknown as T,\n \"~standard\": standardSchema[\"~standard\"],\n jsonSchema: z.toJSONSchema(standardSchema),\n schema: standardSchema,\n optional: () => new OptionalSchema<unknown, T>(standardSchema),\n enum: standardSchema.enum.bind(standardSchema),\n array: standardSchema.array.bind(standardSchema),\n instanceOf: standardSchema.instanceOf.bind(standardSchema),\n };\n}\n\n/**\n * Create standard schema types\n * @returns {typeof h} Standard schema types\n */\nexport const h = {\n /**\n * Create string schema type\n * @returns {StringSchemaType} String schema type\n */\n string: (): StringSchemaType => new StringSchemaType(),\n /**\n * Create number schema type\n * @returns {NumberSchemaType} Number schema type\n */\n number: (): NumberSchemaType => new NumberSchemaType(),\n /**\n * Create boolean schema type\n * @returns {BooleanSchemaType} Boolean schema type\n */\n boolean: (): BooleanSchemaType => new BooleanSchemaType(),\n /**\n * Create null schema type\n * @returns {NullSchemaType} Null schema type\n */\n null: (): NullSchemaType => new NullSchemaType(),\n /**\n * Create null schema type (alias for {@link h.null})\n * @returns {NullSchemaType} Null schema type\n */\n nullable: (): NullSchemaType => new NullSchemaType(),\n\n /**\n * Create any schema type\n * @returns {AnySchemaType} Any schema type\n */\n any: (): AnySchemaType => new AnySchemaType(),\n\n /**\n * Create literal schema type\n * @param {T} value - Literal value\n * @returns {LiteralSchema<unknown, T>} Literal schema type\n */\n literal: <T extends string | number | boolean>(value: T): LiteralSchema<unknown, T> =>\n new LiteralSchema<unknown, T>(value),\n\n /**\n * Create object schema type\n * @param {S} [schemaDef] - Schema definition\n * @returns {ObjectSchemaType<InferObject<S>>} Object schema type\n */\n object: <S extends SchemaDefinition>(schemaDef?: S): ObjectSchemaType<InferObject<S>> => {\n return new ObjectSchemaType(schemaDef || {}) as ObjectSchemaType<InferObject<S>>;\n },\n\n /**\n * Create array schema type\n * @param {S} schema - Schema\n * @returns {ArraySchema<unknown, InferSchema<S>[]>} Array schema type\n */\n array: <S extends AnySchema>(schema: S): ArraySchema<unknown, SchemaType<S>[]> => {\n const base = toStandard<SchemaType<S>>(schema);\n return base.array() as ArraySchema<unknown, SchemaType<S>[]>;\n },\n\n /**\n * Create enum schema type from a list of string, number or boolean values.\n * @param {Values} values - An array of literal values.\n * @returns {UnionSchema<unknown, Values[number]>} A schema that validates against one of the provided literal values.\n */\n enum: <T extends string | number | boolean, Values extends readonly [T, ...T[]]>(\n values: Values,\n ): UnionSchema<unknown, Values[number]> => {\n if (!values || values.length === 0) {\n throw new Error(\"h.enum() requires a non-empty array of values.\");\n }\n const literalSchemas = values.map((val) => h.literal(val));\n return h.options(...literalSchemas) as UnionSchema<unknown, Values[number]>;\n },\n\n /**\n * Create optional schema type\n * @param {S} schema - Schema\n * @returns {OptionalSchema<unknown, InferSchema<S> | undefined>} Optional schema type\n */\n optional: <S extends AnySchema>(\n schema: S,\n ): OptionalSchema<unknown, InferSchema<S> | undefined> => {\n return toStandard<InferSchema<S>>(schema).optional();\n },\n\n /**\n * Create options schema type\n * @param {S} schemas - Schemas\n * @returns {UnionSchema<unknown, InferSchema<S[number]>>} Options schema type\n */\n options: <S extends AnySchema[]>(...schemas: S): UnionSchema<unknown, InferSchema<S[number]>> => {\n const stdSchemas = schemas.map((s) => toStandard<InferSchema<S[number]>>(s).schema);\n return new UnionSchema<unknown, InferSchema<S[number]>>(...stdSchemas);\n },\n\n /**\n * Create instance of schema type\n * @param {C} constructor - Constructor function\n * @returns {InstanceOfSchema<unknown, InstanceType<C>>} Instance of schema type\n */\n instanceOf: <C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<unknown, InstanceType<C>> => {\n const baseSchema = h.object({});\n return baseSchema.instanceOf(constructor);\n },\n\n /**\n * Create date schema type\n * @returns {StringSchemaType} Date schema type\n */\n date: (): StringSchemaType => h.string().date(),\n\n /**\n * Create UUID schema type\n * @returns {StringSchemaType} UUID schema type\n */\n uuid: (): StringSchemaType => h.string().uuid(),\n\n /**\n * Create regex schema type\n * @param {RegExp} regex - Regex\n * @returns {StringSchemaType} Regex schema type\n */\n regex: (regex: RegExp): StringSchemaType => h.string().regex(regex),\n\n /**\n * Create email schema type\n * @returns {StringSchemaType} Email schema type\n */\n email: (): StringSchemaType => h.string().email(),\n\n /**\n * Create phone schema type\n * @returns {StringSchemaType} Phone schema type\n */\n phone: (): StringSchemaType => h.string().phone(),\n\n /** Create domain schema type\n * @param {boolean} requireHttpOrHttps - Require http or https\n * @returns {StringSchemaType} Domain schema type\n */\n domain: (requireHttpOrHttps = true): StringSchemaType => h.string().domain(requireHttpOrHttps),\n\n /**\n * Convert schema to standard schema\n * @param {AnySchema} schema - Schema\n * @returns {Schema<unknown, any>} Standard schema\n */\n toStandard: toStandard,\n};\n"],"mappings":"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"}
|
package/dist/types.d.cts
CHANGED
|
@@ -22,6 +22,8 @@ type InferSchema<S> = S extends BaseSchema<any, infer O> ? O : S extends "string
|
|
|
22
22
|
type SchemaDefinition = SchemaLike;
|
|
23
23
|
interface Schema<I, O> extends StandardSchemaV1<I, O> {
|
|
24
24
|
optional(): OptionalSchema<I, O | undefined>;
|
|
25
|
+
null(): UnionSchema<I, O | null>;
|
|
26
|
+
nullable(): UnionSchema<I, O | null>;
|
|
25
27
|
enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(values: Values): UnionSchema<I, Values[number]>;
|
|
26
28
|
array(): ArraySchema<I, O[]>;
|
|
27
29
|
instanceOf<C extends new (...args: any[]) => any>(constructor: C): InstanceOfSchema<I, InstanceType<C>>;
|
|
@@ -38,6 +40,11 @@ declare abstract class BaseSchema<I, O> implements Schema<I, O> {
|
|
|
38
40
|
coerce(): this;
|
|
39
41
|
optional(): OptionalSchema<I, O | undefined>;
|
|
40
42
|
null(): UnionSchema<I, O | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Allows the value to be `null` (alias for {@link null})
|
|
45
|
+
* @returns {UnionSchema<I, O | null>} Schema that also accepts null
|
|
46
|
+
*/
|
|
47
|
+
nullable(): UnionSchema<I, O | null>;
|
|
41
48
|
enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(values: Values): UnionSchema<I, Values[number]>;
|
|
42
49
|
array(): ArraySchema<I, O[]>;
|
|
43
50
|
instanceOf<C extends new (...args: any[]) => any>(constructor: C): InstanceOfSchema<I, InstanceType<C>>;
|
|
@@ -154,6 +161,11 @@ declare const h: {
|
|
|
154
161
|
* @returns {NullSchemaType} Null schema type
|
|
155
162
|
*/
|
|
156
163
|
null: () => NullSchemaType;
|
|
164
|
+
/**
|
|
165
|
+
* Create null schema type (alias for {@link h.null})
|
|
166
|
+
* @returns {NullSchemaType} Null schema type
|
|
167
|
+
*/
|
|
168
|
+
nullable: () => NullSchemaType;
|
|
157
169
|
/**
|
|
158
170
|
* Create any schema type
|
|
159
171
|
* @returns {AnySchemaType} Any schema type
|
package/dist/types.d.mts
CHANGED
|
@@ -22,6 +22,8 @@ type InferSchema<S> = S extends BaseSchema<any, infer O> ? O : S extends "string
|
|
|
22
22
|
type SchemaDefinition = SchemaLike;
|
|
23
23
|
interface Schema<I, O> extends StandardSchemaV1<I, O> {
|
|
24
24
|
optional(): OptionalSchema<I, O | undefined>;
|
|
25
|
+
null(): UnionSchema<I, O | null>;
|
|
26
|
+
nullable(): UnionSchema<I, O | null>;
|
|
25
27
|
enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(values: Values): UnionSchema<I, Values[number]>;
|
|
26
28
|
array(): ArraySchema<I, O[]>;
|
|
27
29
|
instanceOf<C extends new (...args: any[]) => any>(constructor: C): InstanceOfSchema<I, InstanceType<C>>;
|
|
@@ -38,6 +40,11 @@ declare abstract class BaseSchema<I, O> implements Schema<I, O> {
|
|
|
38
40
|
coerce(): this;
|
|
39
41
|
optional(): OptionalSchema<I, O | undefined>;
|
|
40
42
|
null(): UnionSchema<I, O | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Allows the value to be `null` (alias for {@link null})
|
|
45
|
+
* @returns {UnionSchema<I, O | null>} Schema that also accepts null
|
|
46
|
+
*/
|
|
47
|
+
nullable(): UnionSchema<I, O | null>;
|
|
41
48
|
enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(values: Values): UnionSchema<I, Values[number]>;
|
|
42
49
|
array(): ArraySchema<I, O[]>;
|
|
43
50
|
instanceOf<C extends new (...args: any[]) => any>(constructor: C): InstanceOfSchema<I, InstanceType<C>>;
|
|
@@ -154,6 +161,11 @@ declare const h: {
|
|
|
154
161
|
* @returns {NullSchemaType} Null schema type
|
|
155
162
|
*/
|
|
156
163
|
null: () => NullSchemaType;
|
|
164
|
+
/**
|
|
165
|
+
* Create null schema type (alias for {@link h.null})
|
|
166
|
+
* @returns {NullSchemaType} Null schema type
|
|
167
|
+
*/
|
|
168
|
+
nullable: () => NullSchemaType;
|
|
157
169
|
/**
|
|
158
170
|
* Create any schema type
|
|
159
171
|
* @returns {AnySchemaType} Any schema type
|
package/dist/types.mjs
CHANGED
|
@@ -16,6 +16,13 @@ var BaseSchema = class {
|
|
|
16
16
|
null() {
|
|
17
17
|
return new UnionSchema(this, new NullSchemaType());
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Allows the value to be `null` (alias for {@link null})
|
|
21
|
+
* @returns {UnionSchema<I, O | null>} Schema that also accepts null
|
|
22
|
+
*/
|
|
23
|
+
nullable() {
|
|
24
|
+
return this.null();
|
|
25
|
+
}
|
|
19
26
|
enum(values) {
|
|
20
27
|
return new UnionSchema(...values.map((value) => new LiteralSchema(value)));
|
|
21
28
|
}
|
|
@@ -514,6 +521,7 @@ const h = {
|
|
|
514
521
|
number: () => new NumberSchemaType(),
|
|
515
522
|
boolean: () => new BooleanSchemaType(),
|
|
516
523
|
null: () => new NullSchemaType(),
|
|
524
|
+
nullable: () => new NullSchemaType(),
|
|
517
525
|
any: () => new AnySchemaType(),
|
|
518
526
|
literal: (value) => new LiteralSchema(value),
|
|
519
527
|
object: (schemaDef) => {
|
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\ntype SchemaPrimitive = \"string\" | \"number\" | \"boolean\" | \"any\";\n\ninterface SchemaLike {\n [key: string]: SchemaPrimitive | SchemaLike | BaseSchema<any, any>;\n}\n\ntype Simplify<T> = T extends any ? { [K in keyof T]: T[K] } : never;\n\ntype RequiredKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? never : K;\n}[keyof S];\n\ntype OptionalKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? K : never;\n}[keyof S];\n\ntype SchemaPrimitiveMap = {\n string: string;\n number: number;\n boolean: boolean;\n any: unknown;\n};\n\ntype SchemaType<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends keyof SchemaPrimitiveMap\n ? SchemaPrimitiveMap[S]\n : S extends Record<string, any>\n ? InferSchema<S>\n : unknown;\n\ntype InferObject<S extends SchemaDefinition> = Simplify<\n {\n [K in RequiredKeys<S>]: SchemaType<S[K]>;\n } & {\n [K in OptionalKeys<S>]?: SchemaType<S[K]>;\n }\n>;\n\ntype InferSchema<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends \"string\"\n ? string\n : S extends \"number\"\n ? number\n : S extends \"boolean\"\n ? boolean\n : S extends { [key: string]: any }\n ? {\n [K in keyof S as undefined extends InferSchema<S[K]> ? K : never]?: InferSchema<\n S[K]\n >;\n } & {\n [K in keyof S as undefined extends InferSchema<S[K]> ? never : K]: InferSchema<\n S[K]\n >;\n }\n : unknown;\n\ntype SchemaDefinition = SchemaLike;\n\ninterface Schema<I, O> extends StandardSchemaV1<I, O> {\n optional(): OptionalSchema<I, O | undefined>;\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]>;\n array(): ArraySchema<I, O[]>;\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>>;\n jsonSchema: any;\n readonly inferred: O;\n schema: Schema<I, O>;\n}\n\nexport abstract class BaseSchema<I, O> implements Schema<I, O> {\n abstract readonly \"~standard\": StandardSchemaV1.Props<I, O>;\n jsonSchema: any = {};\n get inferred(): O {\n return null as unknown as O;\n }\n schema: Schema<I, O> = this;\n protected _coerce = false;\n\n coerce(): this {\n this._coerce = true;\n return this;\n }\n\n optional(): OptionalSchema<I, O | undefined> {\n return new OptionalSchema<I, O>(this);\n }\n\n null(): UnionSchema<I, O | null> {\n return new UnionSchema<I, O | null>(this, new NullSchemaType() as any);\n }\n\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]> {\n const literalSchemas = values.map((value) => new LiteralSchema<I, V>(value));\n return new UnionSchema<I, Values[number]>(...literalSchemas);\n }\n\n array(): ArraySchema<I, O[]> {\n return new ArraySchema<I, O[]>(this);\n }\n\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>> {\n return new InstanceOfSchema<I, InstanceType<C>>(this, constructor);\n }\n}\n\nfunction validatePrimitive(schema: SchemaPrimitive, value: unknown): boolean {\n if (typeof value === \"string\" && schema === \"string\") {\n return true;\n }\n if (typeof value === \"number\" && schema === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n if (typeof value === \"boolean\" && schema === \"boolean\") {\n return true;\n }\n return false;\n}\n\nexport class StringSchemaType extends BaseSchema<unknown, string> {\n readonly type: SchemaPrimitive = \"string\";\n private _validateDate = false;\n private _validateUUID = false;\n private _validateRegex = false;\n private _validateEmail = false;\n private _validatePhone = false;\n private _validateDomain = false;\n private _requireHttpOrHttps = false;\n private _minLength?: number;\n private _maxLength?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"string\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n minLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._minLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minLength: n,\n };\n return schema;\n }\n\n maxLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._maxLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maxLength: n,\n };\n return schema;\n }\n\n date(): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._validateDate = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"date\" };\n return schema;\n }\n\n uuid(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateUUID = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"uuid\" };\n return schema;\n }\n\n regex(regex: RegExp): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateRegex = true;\n schema.jsonSchema = { ...this.jsonSchema, pattern: regex.source };\n return schema;\n }\n\n email(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateEmail = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"email\" };\n return schema;\n }\n\n phone(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validatePhone = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"phone\" };\n return schema;\n }\n\n domain(requireHttpOrHttps = true): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateDomain = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"domain\" };\n schema._requireHttpOrHttps = requireHttpOrHttps;\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, string> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"string\") {\n value = String(value);\n }\n\n if (typeof value !== \"string\") {\n return {\n issues: [{ message: `Expected string, received ${typeof value}` }],\n };\n }\n\n if (this._minLength !== undefined && value.length < this._minLength) {\n return { issues: [{ message: `String shorter than ${this._minLength}` }] };\n }\n\n if (this._maxLength !== undefined && value.length > this._maxLength) {\n return { issues: [{ message: `String longer than ${this._maxLength}` }] };\n }\n\n if (this._validateUUID && !this._isValidUUID(value)) {\n return {\n issues: [{ message: \"Invalid UUID format\" }],\n };\n }\n\n if (this._validateRegex && !this._isValidRegex(value)) {\n return {\n issues: [{ message: \"Invalid regex format\" }],\n };\n }\n\n if (this._validateEmail && !this._isValidEmail(value)) {\n return {\n issues: [{ message: \"Invalid email format\" }],\n };\n }\n\n if (this._validatePhone && !this._isValidPhone(value)) {\n return {\n issues: [{ message: \"Invalid phone number format\" }],\n };\n }\n\n if (this._validateDomain && !this._isValidDomain(value)) {\n return {\n issues: [{ message: \"Invalid domain format\" }],\n };\n }\n\n if (this._validateDate && !this._isValidDate(value)) {\n return { issues: [{ message: \"Invalid date format\" }] };\n }\n\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as string,\n },\n };\n\n private _isValidDate(value: string): boolean {\n const date = new Date(value);\n return !Number.isNaN(date.getTime());\n }\n\n private _isValidUUID(value: string): boolean {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(value);\n }\n\n private _isValidRegex(value: string): boolean {\n return new RegExp(this.jsonSchema.pattern!).test(value);\n }\n\n private _isValidEmail(value: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(value);\n }\n\n private _isValidPhone(value: string): boolean {\n const phoneRegex = /^\\+?[0-9]{7,15}$/;\n return phoneRegex.test(value);\n }\n\n private _isValidDomain(value: string): boolean {\n let domainRegex = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n if (this._requireHttpOrHttps) {\n domainRegex = /^https?:\\/\\/[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n }\n return domainRegex.test(value);\n }\n}\n\nexport class NumberSchemaType extends BaseSchema<unknown, number> {\n readonly type: SchemaPrimitive = \"number\";\n private _min?: number;\n private _max?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"number\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n min(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._min = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minimum: n,\n };\n return schema;\n }\n\n max(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._max = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maximum: n,\n };\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, number> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"number\") {\n const coerced = Number(value);\n if (!Number.isNaN(coerced)) {\n value = coerced;\n }\n }\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n return {\n issues: [{ message: `Expected number, received ${typeof value}` }],\n };\n }\n if (this._min !== undefined && value < this._min) {\n return { issues: [{ message: `Number less than ${this._min}` }] };\n }\n if (this._max !== undefined && value > this._max) {\n return { issues: [{ message: `Number greater than ${this._max}` }] };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as number,\n },\n };\n}\n\nexport class BooleanSchemaType extends BaseSchema<unknown, boolean> {\n readonly type: SchemaPrimitive = \"boolean\";\n\n constructor() {\n super();\n this.jsonSchema = { type: \"boolean\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, boolean> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"boolean\") {\n if (value === \"true\" || value === 1 || value === \"1\") {\n value = true;\n } else if (value === \"false\" || value === 0 || value === \"0\") {\n value = false;\n }\n }\n if (typeof value !== \"boolean\") {\n return {\n issues: [{ message: `Expected boolean, received ${typeof value}` }],\n };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as boolean,\n },\n };\n}\n\nexport class AnySchemaType extends BaseSchema<unknown, any> {\n readonly type: SchemaPrimitive = \"any\";\n readonly \"~standard\": StandardSchemaV1.Props<unknown, any> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as any,\n },\n };\n}\n\nexport class LiteralSchema<I, T extends string | number | boolean> extends BaseSchema<I, T> {\n private readonly value: T;\n\n constructor(value: T) {\n super();\n this.value = value;\n this.jsonSchema = {\n const: value,\n type: typeof value as \"string\" | \"number\" | \"boolean\",\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== this.value) {\n return {\n issues: [{ message: `Expected literal value ${this.value}, received ${value}` }],\n };\n }\n return { value: value as T };\n },\n types: {\n input: {} as I,\n output: {} as T,\n },\n };\n}\n\nexport class OptionalSchema<I, O> extends BaseSchema<I, O | undefined> {\n private readonly innerSchema: Schema<I, O>;\n\n constructor(schema: Schema<I, O>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { ...schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O | undefined> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value === undefined || value === null) {\n return { value: undefined };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result;\n },\n types: {\n input: {} as I,\n output: {} as O | undefined,\n },\n };\n}\n\nexport class NullSchemaType extends BaseSchema<unknown, null> {\n readonly type = \"null\";\n constructor() {\n super();\n this.jsonSchema = { type: \"null\" };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, null> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== null) {\n return {\n issues: [\n {\n message: `Expected null, received ${value === undefined ? \"undefined\" : typeof value}`,\n },\n ],\n };\n }\n return { value: null };\n },\n types: {\n input: {} as unknown,\n output: {} as unknown as null,\n },\n };\n}\n\nexport class UnionSchema<I, O> extends BaseSchema<I, O> {\n private readonly schemas: Schema<I, any>[];\n constructor(...schemas: Schema<I, any>[]) {\n super();\n this.schemas = schemas;\n this.jsonSchema = { anyOf: schemas.map((s) => s.jsonSchema) };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n const issuesAccum: StandardSchemaV1.Issue[] = [];\n for (const schema of this.schemas) {\n const result = schema[\"~standard\"].validate(value) as StandardSchemaV1.Result<any>;\n if (!(\"issues\" in result)) {\n return { value: result.value };\n }\n issuesAccum.push(...result.issues!);\n }\n return { issues: issuesAccum };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ArraySchema<I, O extends any[]> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, O[number]>;\n\n constructor(schema: Schema<I, O[number]>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { type: \"array\", items: schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!Array.isArray(value)) {\n return {\n issues: [{ message: `Expected array, received ${typeof value}` }],\n };\n }\n\n const results = value.map((item, index) => {\n const result = this.innerSchema[\"~standard\"].validate(item) as StandardSchemaV1.Result<\n O[number]\n >;\n if (\"issues\" in result) {\n return {\n index,\n issues: result.issues?.map((issue) => ({\n ...issue,\n path: issue.path ? [index, ...issue.path] : [index],\n })),\n };\n }\n return { index, value: result.value };\n });\n\n const errors = results.filter((r) => \"issues\" in r) as {\n index: number;\n issues: StandardSchemaV1.Issue[];\n }[];\n\n if (errors.length > 0) {\n return {\n issues: errors.flatMap((e) => e.issues),\n };\n }\n\n return { value: results.map((r) => (\"value\" in r ? r.value : null)) as O };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class InstanceOfSchema<I, O> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, any>;\n private readonly classConstructor: new (\n ...args: any[]\n ) => any;\n\n constructor(schema: Schema<I, any>, classConstructor: new (...args: any[]) => any) {\n super();\n this.innerSchema = schema;\n this.classConstructor = classConstructor;\n this.jsonSchema = { ...schema.jsonSchema, instanceOf: classConstructor.name };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!(value instanceof this.classConstructor)) {\n return {\n issues: [\n {\n message: `Expected instance of ${this.classConstructor.name}`,\n },\n ],\n };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result as StandardSchemaV1.Result<O>;\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ObjectSchemaType<T extends Record<string, unknown>> extends BaseSchema<unknown, T> {\n readonly definition: SchemaDefinition;\n\n constructor(definition: SchemaDefinition) {\n super();\n this.definition = definition;\n\n const properties: Record<string, any> = {};\n const required: string[] = [];\n\n for (const key in definition) {\n const schemaItem = definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!isOptional) {\n required.push(key);\n }\n\n if (typeof schemaItem === \"string\") {\n properties[key] = { type: schemaItem };\n } else if (schemaItem instanceof BaseSchema) {\n properties[key] = schemaItem.jsonSchema;\n } else if (typeof schemaItem === \"object\" && schemaItem !== null) {\n properties[key] = { type: \"object\", properties: {} };\n }\n }\n\n this.jsonSchema = {\n type: \"object\",\n properties,\n required: required.length > 0 ? required : undefined,\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown): StandardSchemaV1.Result<T> => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {\n issues: [\n {\n message:\n \"Expected object, received \" +\n (value === null ? \"null\" : Array.isArray(value) ? \"array\" : typeof value),\n },\n ],\n };\n }\n\n const obj = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n const issues: StandardSchemaV1.Issue[] = [];\n\n for (const key in this.definition) {\n const schemaItem = this.definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!(key in obj) && !isOptional) {\n issues.push({\n message: `Missing required property: ${key}`,\n path: [key],\n });\n continue;\n }\n\n if (key in obj) {\n if (typeof schemaItem === \"string\" && schemaItem in [\"string\", \"number\", \"boolean\"]) {\n const schemaPrimitive = schemaItem as SchemaPrimitive;\n if (!validatePrimitive(schemaPrimitive, obj[key])) {\n issues.push({\n message: `Invalid type for property ${key}: expected ${schemaPrimitive}`,\n path: [key],\n });\n } else {\n result[key] = obj[key];\n }\n } else if (schemaItem instanceof BaseSchema) {\n const validationResult = schemaItem[\"~standard\"].validate(\n obj[key],\n ) as StandardSchemaV1.Result<any>;\n if (\"issues\" in validationResult) {\n if (validationResult.issues) {\n issues.push(\n ...validationResult.issues.map((issue) => ({\n ...issue,\n path: issue.path ? [key, ...issue.path] : [key],\n })),\n );\n }\n } else {\n result[key] = validationResult.value;\n }\n }\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as T };\n },\n types: {\n input: {} as unknown,\n output: {} as T,\n },\n };\n}\n\nexport type AnySchema = SchemaPrimitive | BaseSchema<any, any> | SchemaDefinition;\n\nfunction toStandard<T>(schema: AnySchema): Schema<unknown, T> {\n let standardSchema: Schema<unknown, T>;\n\n if (schema instanceof BaseSchema) {\n standardSchema = schema as Schema<unknown, T>;\n } else if (typeof schema === \"string\") {\n if (schema === \"string\") {\n standardSchema = new StringSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"number\") {\n standardSchema = new NumberSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"boolean\") {\n standardSchema = new BooleanSchemaType() as unknown as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n } else if (typeof schema === \"object\" && schema !== null && !Array.isArray(schema)) {\n standardSchema = new ObjectSchemaType<any>(schema as SchemaDefinition) as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n\n const z = {\n toJSONSchema: (schema: any) => schema.jsonSchema,\n };\n\n return {\n ...standardSchema,\n inferred: null as unknown as T,\n \"~standard\": standardSchema[\"~standard\"],\n jsonSchema: z.toJSONSchema(standardSchema),\n schema: standardSchema,\n optional: () => new OptionalSchema<unknown, T>(standardSchema),\n enum: standardSchema.enum.bind(standardSchema),\n array: standardSchema.array.bind(standardSchema),\n instanceOf: standardSchema.instanceOf.bind(standardSchema),\n };\n}\n\n/**\n * Create standard schema types\n * @returns {typeof h} Standard schema types\n */\nexport const h = {\n /**\n * Create string schema type\n * @returns {StringSchemaType} String schema type\n */\n string: (): StringSchemaType => new StringSchemaType(),\n /**\n * Create number schema type\n * @returns {NumberSchemaType} Number schema type\n */\n number: (): NumberSchemaType => new NumberSchemaType(),\n /**\n * Create boolean schema type\n * @returns {BooleanSchemaType} Boolean schema type\n */\n boolean: (): BooleanSchemaType => new BooleanSchemaType(),\n /**\n * Create null schema type\n * @returns {NullSchemaType} Null schema type\n */\n null: (): NullSchemaType => new NullSchemaType(),\n\n /**\n * Create any schema type\n * @returns {AnySchemaType} Any schema type\n */\n any: (): AnySchemaType => new AnySchemaType(),\n\n /**\n * Create literal schema type\n * @param {T} value - Literal value\n * @returns {LiteralSchema<unknown, T>} Literal schema type\n */\n literal: <T extends string | number | boolean>(value: T): LiteralSchema<unknown, T> =>\n new LiteralSchema<unknown, T>(value),\n\n /**\n * Create object schema type\n * @param {S} [schemaDef] - Schema definition\n * @returns {ObjectSchemaType<InferObject<S>>} Object schema type\n */\n object: <S extends SchemaDefinition>(schemaDef?: S): ObjectSchemaType<InferObject<S>> => {\n return new ObjectSchemaType(schemaDef || {}) as ObjectSchemaType<InferObject<S>>;\n },\n\n /**\n * Create array schema type\n * @param {S} schema - Schema\n * @returns {ArraySchema<unknown, InferSchema<S>[]>} Array schema type\n */\n array: <S extends AnySchema>(schema: S): ArraySchema<unknown, SchemaType<S>[]> => {\n const base = toStandard<SchemaType<S>>(schema);\n return base.array() as ArraySchema<unknown, SchemaType<S>[]>;\n },\n\n /**\n * Create enum schema type from a list of string, number or boolean values.\n * @param {Values} values - An array of literal values.\n * @returns {UnionSchema<unknown, Values[number]>} A schema that validates against one of the provided literal values.\n */\n enum: <T extends string | number | boolean, Values extends readonly [T, ...T[]]>(\n values: Values,\n ): UnionSchema<unknown, Values[number]> => {\n if (!values || values.length === 0) {\n throw new Error(\"h.enum() requires a non-empty array of values.\");\n }\n const literalSchemas = values.map((val) => h.literal(val));\n return h.options(...literalSchemas) as UnionSchema<unknown, Values[number]>;\n },\n\n /**\n * Create optional schema type\n * @param {S} schema - Schema\n * @returns {OptionalSchema<unknown, InferSchema<S> | undefined>} Optional schema type\n */\n optional: <S extends AnySchema>(\n schema: S,\n ): OptionalSchema<unknown, InferSchema<S> | undefined> => {\n return toStandard<InferSchema<S>>(schema).optional();\n },\n\n /**\n * Create options schema type\n * @param {S} schemas - Schemas\n * @returns {UnionSchema<unknown, InferSchema<S[number]>>} Options schema type\n */\n options: <S extends AnySchema[]>(...schemas: S): UnionSchema<unknown, InferSchema<S[number]>> => {\n const stdSchemas = schemas.map((s) => toStandard<InferSchema<S[number]>>(s).schema);\n return new UnionSchema<unknown, InferSchema<S[number]>>(...stdSchemas);\n },\n\n /**\n * Create instance of schema type\n * @param {C} constructor - Constructor function\n * @returns {InstanceOfSchema<unknown, InstanceType<C>>} Instance of schema type\n */\n instanceOf: <C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<unknown, InstanceType<C>> => {\n const baseSchema = h.object({});\n return baseSchema.instanceOf(constructor);\n },\n\n /**\n * Create date schema type\n * @returns {StringSchemaType} Date schema type\n */\n date: (): StringSchemaType => h.string().date(),\n\n /**\n * Create UUID schema type\n * @returns {StringSchemaType} UUID schema type\n */\n uuid: (): StringSchemaType => h.string().uuid(),\n\n /**\n * Create regex schema type\n * @param {RegExp} regex - Regex\n * @returns {StringSchemaType} Regex schema type\n */\n regex: (regex: RegExp): StringSchemaType => h.string().regex(regex),\n\n /**\n * Create email schema type\n * @returns {StringSchemaType} Email schema type\n */\n email: (): StringSchemaType => h.string().email(),\n\n /**\n * Create phone schema type\n * @returns {StringSchemaType} Phone schema type\n */\n phone: (): StringSchemaType => h.string().phone(),\n\n /** Create domain schema type\n * @param {boolean} requireHttpOrHttps - Require http or https\n * @returns {StringSchemaType} Domain schema type\n */\n domain: (requireHttpOrHttps = true): StringSchemaType => h.string().domain(requireHttpOrHttps),\n\n /**\n * Convert schema to standard schema\n * @param {AnySchema} schema - Schema\n * @returns {Schema<unknown, any>} Standard schema\n */\n toStandard: toStandard,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\ntype SchemaPrimitive = \"string\" | \"number\" | \"boolean\" | \"any\";\n\ninterface SchemaLike {\n [key: string]: SchemaPrimitive | SchemaLike | BaseSchema<any, any>;\n}\n\ntype Simplify<T> = T extends any ? { [K in keyof T]: T[K] } : never;\n\ntype RequiredKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? never : K;\n}[keyof S];\n\ntype OptionalKeys<S> = {\n [K in keyof S]: S[K] extends OptionalSchema<any, any> ? K : never;\n}[keyof S];\n\ntype SchemaPrimitiveMap = {\n string: string;\n number: number;\n boolean: boolean;\n any: unknown;\n};\n\ntype SchemaType<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends keyof SchemaPrimitiveMap\n ? SchemaPrimitiveMap[S]\n : S extends Record<string, any>\n ? InferSchema<S>\n : unknown;\n\ntype InferObject<S extends SchemaDefinition> = Simplify<\n {\n [K in RequiredKeys<S>]: SchemaType<S[K]>;\n } & {\n [K in OptionalKeys<S>]?: SchemaType<S[K]>;\n }\n>;\n\ntype InferSchema<S> =\n S extends BaseSchema<any, infer O>\n ? O\n : S extends \"string\"\n ? string\n : S extends \"number\"\n ? number\n : S extends \"boolean\"\n ? boolean\n : S extends { [key: string]: any }\n ? {\n [K in keyof S as undefined extends InferSchema<S[K]> ? K : never]?: InferSchema<\n S[K]\n >;\n } & {\n [K in keyof S as undefined extends InferSchema<S[K]> ? never : K]: InferSchema<\n S[K]\n >;\n }\n : unknown;\n\ntype SchemaDefinition = SchemaLike;\n\ninterface Schema<I, O> extends StandardSchemaV1<I, O> {\n optional(): OptionalSchema<I, O | undefined>;\n null(): UnionSchema<I, O | null>;\n nullable(): UnionSchema<I, O | null>;\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]>;\n array(): ArraySchema<I, O[]>;\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>>;\n jsonSchema: any;\n readonly inferred: O;\n schema: Schema<I, O>;\n}\n\nexport abstract class BaseSchema<I, O> implements Schema<I, O> {\n abstract readonly \"~standard\": StandardSchemaV1.Props<I, O>;\n jsonSchema: any = {};\n get inferred(): O {\n return null as unknown as O;\n }\n schema: Schema<I, O> = this;\n protected _coerce = false;\n\n coerce(): this {\n this._coerce = true;\n return this;\n }\n\n optional(): OptionalSchema<I, O | undefined> {\n return new OptionalSchema<I, O>(this);\n }\n\n null(): UnionSchema<I, O | null> {\n return new UnionSchema<I, O | null>(this, new NullSchemaType() as any);\n }\n\n /**\n * Allows the value to be `null` (alias for {@link null})\n * @returns {UnionSchema<I, O | null>} Schema that also accepts null\n */\n nullable(): UnionSchema<I, O | null> {\n return this.null();\n }\n\n enum<V extends O & (string | number | boolean), Values extends readonly [V, ...V[]]>(\n values: Values,\n ): UnionSchema<I, Values[number]> {\n const literalSchemas = values.map((value) => new LiteralSchema<I, V>(value));\n return new UnionSchema<I, Values[number]>(...literalSchemas);\n }\n\n array(): ArraySchema<I, O[]> {\n return new ArraySchema<I, O[]>(this);\n }\n\n instanceOf<C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<I, InstanceType<C>> {\n return new InstanceOfSchema<I, InstanceType<C>>(this, constructor);\n }\n}\n\nfunction validatePrimitive(schema: SchemaPrimitive, value: unknown): boolean {\n if (typeof value === \"string\" && schema === \"string\") {\n return true;\n }\n if (typeof value === \"number\" && schema === \"number\" && !Number.isNaN(value)) {\n return true;\n }\n if (typeof value === \"boolean\" && schema === \"boolean\") {\n return true;\n }\n return false;\n}\n\nexport class StringSchemaType extends BaseSchema<unknown, string> {\n readonly type: SchemaPrimitive = \"string\";\n private _validateDate = false;\n private _validateUUID = false;\n private _validateRegex = false;\n private _validateEmail = false;\n private _validatePhone = false;\n private _validateDomain = false;\n private _requireHttpOrHttps = false;\n private _minLength?: number;\n private _maxLength?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"string\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n minLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._minLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minLength: n,\n };\n return schema;\n }\n\n maxLength(n: number): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._maxLength = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maxLength: n,\n };\n return schema;\n }\n\n date(): StringSchemaType {\n const schema = new StringSchemaType();\n Object.assign(schema, this);\n schema._validateDate = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"date\" };\n return schema;\n }\n\n uuid(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateUUID = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"uuid\" };\n return schema;\n }\n\n regex(regex: RegExp): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateRegex = true;\n schema.jsonSchema = { ...this.jsonSchema, pattern: regex.source };\n return schema;\n }\n\n email(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateEmail = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"email\" };\n return schema;\n }\n\n phone(): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validatePhone = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"phone\" };\n return schema;\n }\n\n domain(requireHttpOrHttps = true): StringSchemaType {\n const schema = new StringSchemaType();\n schema._validateDomain = true;\n schema.jsonSchema = { ...this.jsonSchema, format: \"domain\" };\n schema._requireHttpOrHttps = requireHttpOrHttps;\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, string> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"string\") {\n value = String(value);\n }\n\n if (typeof value !== \"string\") {\n return {\n issues: [{ message: `Expected string, received ${typeof value}` }],\n };\n }\n\n if (this._minLength !== undefined && value.length < this._minLength) {\n return { issues: [{ message: `String shorter than ${this._minLength}` }] };\n }\n\n if (this._maxLength !== undefined && value.length > this._maxLength) {\n return { issues: [{ message: `String longer than ${this._maxLength}` }] };\n }\n\n if (this._validateUUID && !this._isValidUUID(value)) {\n return {\n issues: [{ message: \"Invalid UUID format\" }],\n };\n }\n\n if (this._validateRegex && !this._isValidRegex(value)) {\n return {\n issues: [{ message: \"Invalid regex format\" }],\n };\n }\n\n if (this._validateEmail && !this._isValidEmail(value)) {\n return {\n issues: [{ message: \"Invalid email format\" }],\n };\n }\n\n if (this._validatePhone && !this._isValidPhone(value)) {\n return {\n issues: [{ message: \"Invalid phone number format\" }],\n };\n }\n\n if (this._validateDomain && !this._isValidDomain(value)) {\n return {\n issues: [{ message: \"Invalid domain format\" }],\n };\n }\n\n if (this._validateDate && !this._isValidDate(value)) {\n return { issues: [{ message: \"Invalid date format\" }] };\n }\n\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as string,\n },\n };\n\n private _isValidDate(value: string): boolean {\n const date = new Date(value);\n return !Number.isNaN(date.getTime());\n }\n\n private _isValidUUID(value: string): boolean {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(value);\n }\n\n private _isValidRegex(value: string): boolean {\n return new RegExp(this.jsonSchema.pattern!).test(value);\n }\n\n private _isValidEmail(value: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(value);\n }\n\n private _isValidPhone(value: string): boolean {\n const phoneRegex = /^\\+?[0-9]{7,15}$/;\n return phoneRegex.test(value);\n }\n\n private _isValidDomain(value: string): boolean {\n let domainRegex = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n if (this._requireHttpOrHttps) {\n domainRegex = /^https?:\\/\\/[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/;\n }\n return domainRegex.test(value);\n }\n}\n\nexport class NumberSchemaType extends BaseSchema<unknown, number> {\n readonly type: SchemaPrimitive = \"number\";\n private _min?: number;\n private _max?: number;\n\n constructor() {\n super();\n this.jsonSchema = { type: \"number\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n min(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._min = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n minimum: n,\n };\n return schema;\n }\n\n max(n: number): NumberSchemaType {\n const schema = new NumberSchemaType();\n Object.assign(schema, this);\n schema._max = n;\n schema.jsonSchema = {\n ...this.jsonSchema,\n maximum: n,\n };\n return schema;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, number> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"number\") {\n const coerced = Number(value);\n if (!Number.isNaN(coerced)) {\n value = coerced;\n }\n }\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n return {\n issues: [{ message: `Expected number, received ${typeof value}` }],\n };\n }\n if (this._min !== undefined && value < this._min) {\n return { issues: [{ message: `Number less than ${this._min}` }] };\n }\n if (this._max !== undefined && value > this._max) {\n return { issues: [{ message: `Number greater than ${this._max}` }] };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as number,\n },\n };\n}\n\nexport class BooleanSchemaType extends BaseSchema<unknown, boolean> {\n readonly type: SchemaPrimitive = \"boolean\";\n\n constructor() {\n super();\n this.jsonSchema = { type: \"boolean\" };\n }\n\n primitive(): SchemaPrimitive {\n return this.type;\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, boolean> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (this._coerce && typeof value !== \"boolean\") {\n if (value === \"true\" || value === 1 || value === \"1\") {\n value = true;\n } else if (value === \"false\" || value === 0 || value === \"0\") {\n value = false;\n }\n }\n if (typeof value !== \"boolean\") {\n return {\n issues: [{ message: `Expected boolean, received ${typeof value}` }],\n };\n }\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as boolean,\n },\n };\n}\n\nexport class AnySchemaType extends BaseSchema<unknown, any> {\n readonly type: SchemaPrimitive = \"any\";\n readonly \"~standard\": StandardSchemaV1.Props<unknown, any> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n return { value };\n },\n types: {\n input: {} as unknown,\n output: {} as any,\n },\n };\n}\n\nexport class LiteralSchema<I, T extends string | number | boolean> extends BaseSchema<I, T> {\n private readonly value: T;\n\n constructor(value: T) {\n super();\n this.value = value;\n this.jsonSchema = {\n const: value,\n type: typeof value as \"string\" | \"number\" | \"boolean\",\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== this.value) {\n return {\n issues: [{ message: `Expected literal value ${this.value}, received ${value}` }],\n };\n }\n return { value: value as T };\n },\n types: {\n input: {} as I,\n output: {} as T,\n },\n };\n}\n\nexport class OptionalSchema<I, O> extends BaseSchema<I, O | undefined> {\n private readonly innerSchema: Schema<I, O>;\n\n constructor(schema: Schema<I, O>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { ...schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O | undefined> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value === undefined || value === null) {\n return { value: undefined };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result;\n },\n types: {\n input: {} as I,\n output: {} as O | undefined,\n },\n };\n}\n\nexport class NullSchemaType extends BaseSchema<unknown, null> {\n readonly type = \"null\";\n constructor() {\n super();\n this.jsonSchema = { type: \"null\" };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, null> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (value !== null) {\n return {\n issues: [\n {\n message: `Expected null, received ${value === undefined ? \"undefined\" : typeof value}`,\n },\n ],\n };\n }\n return { value: null };\n },\n types: {\n input: {} as unknown,\n output: {} as unknown as null,\n },\n };\n}\n\nexport class UnionSchema<I, O> extends BaseSchema<I, O> {\n private readonly schemas: Schema<I, any>[];\n constructor(...schemas: Schema<I, any>[]) {\n super();\n this.schemas = schemas;\n this.jsonSchema = { anyOf: schemas.map((s) => s.jsonSchema) };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n const issuesAccum: StandardSchemaV1.Issue[] = [];\n for (const schema of this.schemas) {\n const result = schema[\"~standard\"].validate(value) as StandardSchemaV1.Result<any>;\n if (!(\"issues\" in result)) {\n return { value: result.value };\n }\n issuesAccum.push(...result.issues!);\n }\n return { issues: issuesAccum };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ArraySchema<I, O extends any[]> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, O[number]>;\n\n constructor(schema: Schema<I, O[number]>) {\n super();\n this.innerSchema = schema;\n this.jsonSchema = { type: \"array\", items: schema.jsonSchema };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!Array.isArray(value)) {\n return {\n issues: [{ message: `Expected array, received ${typeof value}` }],\n };\n }\n\n const results = value.map((item, index) => {\n const result = this.innerSchema[\"~standard\"].validate(item) as StandardSchemaV1.Result<\n O[number]\n >;\n if (\"issues\" in result) {\n return {\n index,\n issues: result.issues?.map((issue) => ({\n ...issue,\n path: issue.path ? [index, ...issue.path] : [index],\n })),\n };\n }\n return { index, value: result.value };\n });\n\n const errors = results.filter((r) => \"issues\" in r) as {\n index: number;\n issues: StandardSchemaV1.Issue[];\n }[];\n\n if (errors.length > 0) {\n return {\n issues: errors.flatMap((e) => e.issues),\n };\n }\n\n return { value: results.map((r) => (\"value\" in r ? r.value : null)) as O };\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class InstanceOfSchema<I, O> extends BaseSchema<I, O> {\n private readonly innerSchema: Schema<I, any>;\n private readonly classConstructor: new (\n ...args: any[]\n ) => any;\n\n constructor(schema: Schema<I, any>, classConstructor: new (...args: any[]) => any) {\n super();\n this.innerSchema = schema;\n this.classConstructor = classConstructor;\n this.jsonSchema = { ...schema.jsonSchema, instanceOf: classConstructor.name };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown) => {\n if (!(value instanceof this.classConstructor)) {\n return {\n issues: [\n {\n message: `Expected instance of ${this.classConstructor.name}`,\n },\n ],\n };\n }\n\n const result = this.innerSchema[\"~standard\"].validate(value);\n return result as StandardSchemaV1.Result<O>;\n },\n types: {\n input: {} as I,\n output: {} as O,\n },\n };\n}\n\nexport class ObjectSchemaType<T extends Record<string, unknown>> extends BaseSchema<unknown, T> {\n readonly definition: SchemaDefinition;\n\n constructor(definition: SchemaDefinition) {\n super();\n this.definition = definition;\n\n const properties: Record<string, any> = {};\n const required: string[] = [];\n\n for (const key in definition) {\n const schemaItem = definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!isOptional) {\n required.push(key);\n }\n\n if (typeof schemaItem === \"string\") {\n properties[key] = { type: schemaItem };\n } else if (schemaItem instanceof BaseSchema) {\n properties[key] = schemaItem.jsonSchema;\n } else if (typeof schemaItem === \"object\" && schemaItem !== null) {\n properties[key] = { type: \"object\", properties: {} };\n }\n }\n\n this.jsonSchema = {\n type: \"object\",\n properties,\n required: required.length > 0 ? required : undefined,\n };\n }\n\n readonly \"~standard\": StandardSchemaV1.Props<unknown, T> = {\n version: 1,\n vendor: \"h-schema\",\n validate: (value: unknown): StandardSchemaV1.Result<T> => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {\n issues: [\n {\n message:\n \"Expected object, received \" +\n (value === null ? \"null\" : Array.isArray(value) ? \"array\" : typeof value),\n },\n ],\n };\n }\n\n const obj = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n const issues: StandardSchemaV1.Issue[] = [];\n\n for (const key in this.definition) {\n const schemaItem = this.definition[key];\n const isOptional = schemaItem instanceof OptionalSchema;\n\n if (!(key in obj) && !isOptional) {\n issues.push({\n message: `Missing required property: ${key}`,\n path: [key],\n });\n continue;\n }\n\n if (key in obj) {\n if (typeof schemaItem === \"string\" && schemaItem in [\"string\", \"number\", \"boolean\"]) {\n const schemaPrimitive = schemaItem as SchemaPrimitive;\n if (!validatePrimitive(schemaPrimitive, obj[key])) {\n issues.push({\n message: `Invalid type for property ${key}: expected ${schemaPrimitive}`,\n path: [key],\n });\n } else {\n result[key] = obj[key];\n }\n } else if (schemaItem instanceof BaseSchema) {\n const validationResult = schemaItem[\"~standard\"].validate(\n obj[key],\n ) as StandardSchemaV1.Result<any>;\n if (\"issues\" in validationResult) {\n if (validationResult.issues) {\n issues.push(\n ...validationResult.issues.map((issue) => ({\n ...issue,\n path: issue.path ? [key, ...issue.path] : [key],\n })),\n );\n }\n } else {\n result[key] = validationResult.value;\n }\n }\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as T };\n },\n types: {\n input: {} as unknown,\n output: {} as T,\n },\n };\n}\n\nexport type AnySchema = SchemaPrimitive | BaseSchema<any, any> | SchemaDefinition;\n\nfunction toStandard<T>(schema: AnySchema): Schema<unknown, T> {\n let standardSchema: Schema<unknown, T>;\n\n if (schema instanceof BaseSchema) {\n standardSchema = schema as Schema<unknown, T>;\n } else if (typeof schema === \"string\") {\n if (schema === \"string\") {\n standardSchema = new StringSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"number\") {\n standardSchema = new NumberSchemaType() as unknown as Schema<unknown, T>;\n } else if (schema === \"boolean\") {\n standardSchema = new BooleanSchemaType() as unknown as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n } else if (typeof schema === \"object\" && schema !== null && !Array.isArray(schema)) {\n standardSchema = new ObjectSchemaType<any>(schema as SchemaDefinition) as Schema<unknown, T>;\n } else {\n throw new Error(\"Invalid schema type provided to toStandard\");\n }\n\n const z = {\n toJSONSchema: (schema: any) => schema.jsonSchema,\n };\n\n return {\n ...standardSchema,\n inferred: null as unknown as T,\n \"~standard\": standardSchema[\"~standard\"],\n jsonSchema: z.toJSONSchema(standardSchema),\n schema: standardSchema,\n optional: () => new OptionalSchema<unknown, T>(standardSchema),\n enum: standardSchema.enum.bind(standardSchema),\n array: standardSchema.array.bind(standardSchema),\n instanceOf: standardSchema.instanceOf.bind(standardSchema),\n };\n}\n\n/**\n * Create standard schema types\n * @returns {typeof h} Standard schema types\n */\nexport const h = {\n /**\n * Create string schema type\n * @returns {StringSchemaType} String schema type\n */\n string: (): StringSchemaType => new StringSchemaType(),\n /**\n * Create number schema type\n * @returns {NumberSchemaType} Number schema type\n */\n number: (): NumberSchemaType => new NumberSchemaType(),\n /**\n * Create boolean schema type\n * @returns {BooleanSchemaType} Boolean schema type\n */\n boolean: (): BooleanSchemaType => new BooleanSchemaType(),\n /**\n * Create null schema type\n * @returns {NullSchemaType} Null schema type\n */\n null: (): NullSchemaType => new NullSchemaType(),\n /**\n * Create null schema type (alias for {@link h.null})\n * @returns {NullSchemaType} Null schema type\n */\n nullable: (): NullSchemaType => new NullSchemaType(),\n\n /**\n * Create any schema type\n * @returns {AnySchemaType} Any schema type\n */\n any: (): AnySchemaType => new AnySchemaType(),\n\n /**\n * Create literal schema type\n * @param {T} value - Literal value\n * @returns {LiteralSchema<unknown, T>} Literal schema type\n */\n literal: <T extends string | number | boolean>(value: T): LiteralSchema<unknown, T> =>\n new LiteralSchema<unknown, T>(value),\n\n /**\n * Create object schema type\n * @param {S} [schemaDef] - Schema definition\n * @returns {ObjectSchemaType<InferObject<S>>} Object schema type\n */\n object: <S extends SchemaDefinition>(schemaDef?: S): ObjectSchemaType<InferObject<S>> => {\n return new ObjectSchemaType(schemaDef || {}) as ObjectSchemaType<InferObject<S>>;\n },\n\n /**\n * Create array schema type\n * @param {S} schema - Schema\n * @returns {ArraySchema<unknown, InferSchema<S>[]>} Array schema type\n */\n array: <S extends AnySchema>(schema: S): ArraySchema<unknown, SchemaType<S>[]> => {\n const base = toStandard<SchemaType<S>>(schema);\n return base.array() as ArraySchema<unknown, SchemaType<S>[]>;\n },\n\n /**\n * Create enum schema type from a list of string, number or boolean values.\n * @param {Values} values - An array of literal values.\n * @returns {UnionSchema<unknown, Values[number]>} A schema that validates against one of the provided literal values.\n */\n enum: <T extends string | number | boolean, Values extends readonly [T, ...T[]]>(\n values: Values,\n ): UnionSchema<unknown, Values[number]> => {\n if (!values || values.length === 0) {\n throw new Error(\"h.enum() requires a non-empty array of values.\");\n }\n const literalSchemas = values.map((val) => h.literal(val));\n return h.options(...literalSchemas) as UnionSchema<unknown, Values[number]>;\n },\n\n /**\n * Create optional schema type\n * @param {S} schema - Schema\n * @returns {OptionalSchema<unknown, InferSchema<S> | undefined>} Optional schema type\n */\n optional: <S extends AnySchema>(\n schema: S,\n ): OptionalSchema<unknown, InferSchema<S> | undefined> => {\n return toStandard<InferSchema<S>>(schema).optional();\n },\n\n /**\n * Create options schema type\n * @param {S} schemas - Schemas\n * @returns {UnionSchema<unknown, InferSchema<S[number]>>} Options schema type\n */\n options: <S extends AnySchema[]>(...schemas: S): UnionSchema<unknown, InferSchema<S[number]>> => {\n const stdSchemas = schemas.map((s) => toStandard<InferSchema<S[number]>>(s).schema);\n return new UnionSchema<unknown, InferSchema<S[number]>>(...stdSchemas);\n },\n\n /**\n * Create instance of schema type\n * @param {C} constructor - Constructor function\n * @returns {InstanceOfSchema<unknown, InstanceType<C>>} Instance of schema type\n */\n instanceOf: <C extends new (...args: any[]) => any>(\n constructor: C,\n ): InstanceOfSchema<unknown, InstanceType<C>> => {\n const baseSchema = h.object({});\n return baseSchema.instanceOf(constructor);\n },\n\n /**\n * Create date schema type\n * @returns {StringSchemaType} Date schema type\n */\n date: (): StringSchemaType => h.string().date(),\n\n /**\n * Create UUID schema type\n * @returns {StringSchemaType} UUID schema type\n */\n uuid: (): StringSchemaType => h.string().uuid(),\n\n /**\n * Create regex schema type\n * @param {RegExp} regex - Regex\n * @returns {StringSchemaType} Regex schema type\n */\n regex: (regex: RegExp): StringSchemaType => h.string().regex(regex),\n\n /**\n * Create email schema type\n * @returns {StringSchemaType} Email schema type\n */\n email: (): StringSchemaType => h.string().email(),\n\n /**\n * Create phone schema type\n * @returns {StringSchemaType} Phone schema type\n */\n phone: (): StringSchemaType => h.string().phone(),\n\n /** Create domain schema type\n * @param {boolean} requireHttpOrHttps - Require http or https\n * @returns {StringSchemaType} Domain schema type\n */\n domain: (requireHttpOrHttps = true): StringSchemaType => h.string().domain(requireHttpOrHttps),\n\n /**\n * Convert schema to standard schema\n * @param {AnySchema} schema - Schema\n * @returns {Schema<unknown, any>} Standard schema\n */\n toStandard: toStandard,\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED