@hedystia/validations 2.0.10 → 2.0.12
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 +48 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +28 -14
- package/dist/types.d.mts +28 -14
- package/dist/types.mjs +48 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +2 -2
package/dist/types.cjs
CHANGED
|
@@ -136,6 +136,10 @@ var StringSchemaType = class StringSchemaType extends BaseSchema {
|
|
|
136
136
|
"~standard" = {
|
|
137
137
|
version: 1,
|
|
138
138
|
vendor: "h-schema",
|
|
139
|
+
jsonSchema: {
|
|
140
|
+
input: () => this.jsonSchema,
|
|
141
|
+
output: () => this.jsonSchema
|
|
142
|
+
},
|
|
139
143
|
validate: (value) => {
|
|
140
144
|
if (this._coerce && typeof value !== "string") value = String(value);
|
|
141
145
|
if (typeof value !== "string") return { issues: [{ message: `Expected string, received ${typeof value}` }] };
|
|
@@ -210,6 +214,10 @@ var NumberSchemaType = class NumberSchemaType extends BaseSchema {
|
|
|
210
214
|
"~standard" = {
|
|
211
215
|
version: 1,
|
|
212
216
|
vendor: "h-schema",
|
|
217
|
+
jsonSchema: {
|
|
218
|
+
input: () => this.jsonSchema,
|
|
219
|
+
output: () => this.jsonSchema
|
|
220
|
+
},
|
|
213
221
|
validate: (value) => {
|
|
214
222
|
if (this._coerce && typeof value !== "number") {
|
|
215
223
|
const coerced = Number(value);
|
|
@@ -238,6 +246,10 @@ var BooleanSchemaType = class extends BaseSchema {
|
|
|
238
246
|
"~standard" = {
|
|
239
247
|
version: 1,
|
|
240
248
|
vendor: "h-schema",
|
|
249
|
+
jsonSchema: {
|
|
250
|
+
input: () => this.jsonSchema,
|
|
251
|
+
output: () => this.jsonSchema
|
|
252
|
+
},
|
|
241
253
|
validate: (value) => {
|
|
242
254
|
if (this._coerce && typeof value !== "boolean") {
|
|
243
255
|
if (value === "true" || value === 1 || value === "1") value = true;
|
|
@@ -257,6 +269,10 @@ var AnySchemaType = class extends BaseSchema {
|
|
|
257
269
|
"~standard" = {
|
|
258
270
|
version: 1,
|
|
259
271
|
vendor: "h-schema",
|
|
272
|
+
jsonSchema: {
|
|
273
|
+
input: () => ({}),
|
|
274
|
+
output: () => ({})
|
|
275
|
+
},
|
|
260
276
|
validate: (value) => {
|
|
261
277
|
return { value };
|
|
262
278
|
},
|
|
@@ -279,6 +295,10 @@ var LiteralSchema = class extends BaseSchema {
|
|
|
279
295
|
"~standard" = {
|
|
280
296
|
version: 1,
|
|
281
297
|
vendor: "h-schema",
|
|
298
|
+
jsonSchema: {
|
|
299
|
+
input: () => this.jsonSchema,
|
|
300
|
+
output: () => this.jsonSchema
|
|
301
|
+
},
|
|
282
302
|
validate: (value) => {
|
|
283
303
|
if (value !== this.value) return { issues: [{ message: `Expected literal value ${this.value}, received ${value}` }] };
|
|
284
304
|
return { value };
|
|
@@ -299,6 +319,10 @@ var OptionalSchema = class extends BaseSchema {
|
|
|
299
319
|
"~standard" = {
|
|
300
320
|
version: 1,
|
|
301
321
|
vendor: "h-schema",
|
|
322
|
+
jsonSchema: {
|
|
323
|
+
input: () => this.jsonSchema,
|
|
324
|
+
output: () => this.jsonSchema
|
|
325
|
+
},
|
|
302
326
|
validate: (value) => {
|
|
303
327
|
if (value === void 0 || value === null) return { value: void 0 };
|
|
304
328
|
return this.innerSchema["~standard"].validate(value);
|
|
@@ -318,6 +342,10 @@ var NullSchemaType = class extends BaseSchema {
|
|
|
318
342
|
"~standard" = {
|
|
319
343
|
version: 1,
|
|
320
344
|
vendor: "h-schema",
|
|
345
|
+
jsonSchema: {
|
|
346
|
+
input: () => this.jsonSchema,
|
|
347
|
+
output: () => this.jsonSchema
|
|
348
|
+
},
|
|
321
349
|
validate: (value) => {
|
|
322
350
|
if (value !== null) return { issues: [{ message: `Expected null, received ${value === void 0 ? "undefined" : typeof value}` }] };
|
|
323
351
|
return { value: null };
|
|
@@ -338,6 +366,10 @@ var UnionSchema = class extends BaseSchema {
|
|
|
338
366
|
"~standard" = {
|
|
339
367
|
version: 1,
|
|
340
368
|
vendor: "h-schema",
|
|
369
|
+
jsonSchema: {
|
|
370
|
+
input: () => this.jsonSchema,
|
|
371
|
+
output: () => this.jsonSchema
|
|
372
|
+
},
|
|
341
373
|
validate: (value) => {
|
|
342
374
|
const issuesAccum = [];
|
|
343
375
|
for (const schema of this.schemas) {
|
|
@@ -366,6 +398,10 @@ var ArraySchema = class extends BaseSchema {
|
|
|
366
398
|
"~standard" = {
|
|
367
399
|
version: 1,
|
|
368
400
|
vendor: "h-schema",
|
|
401
|
+
jsonSchema: {
|
|
402
|
+
input: () => this.jsonSchema,
|
|
403
|
+
output: () => this.jsonSchema
|
|
404
|
+
},
|
|
369
405
|
validate: (value) => {
|
|
370
406
|
if (!Array.isArray(value)) return { issues: [{ message: `Expected array, received ${typeof value}` }] };
|
|
371
407
|
const results = value.map((item, index) => {
|
|
@@ -407,6 +443,10 @@ var InstanceOfSchema = class extends BaseSchema {
|
|
|
407
443
|
"~standard" = {
|
|
408
444
|
version: 1,
|
|
409
445
|
vendor: "h-schema",
|
|
446
|
+
jsonSchema: {
|
|
447
|
+
input: () => this.jsonSchema,
|
|
448
|
+
output: () => this.jsonSchema
|
|
449
|
+
},
|
|
410
450
|
validate: (value) => {
|
|
411
451
|
if (!(value instanceof this.classConstructor)) return { issues: [{ message: `Expected instance of ${this.classConstructor.name}` }] };
|
|
412
452
|
return this.innerSchema["~standard"].validate(value);
|
|
@@ -443,6 +483,10 @@ var ObjectSchemaType = class extends BaseSchema {
|
|
|
443
483
|
"~standard" = {
|
|
444
484
|
version: 1,
|
|
445
485
|
vendor: "h-schema",
|
|
486
|
+
jsonSchema: {
|
|
487
|
+
input: () => this.jsonSchema,
|
|
488
|
+
output: () => this.jsonSchema
|
|
489
|
+
},
|
|
446
490
|
validate: (value) => {
|
|
447
491
|
if (typeof value !== "object" || value === null || Array.isArray(value)) return { issues: [{ message: "Expected object, received " + (value === null ? "null" : Array.isArray(value) ? "array" : typeof value) }] };
|
|
448
492
|
const obj = value;
|
|
@@ -550,7 +594,10 @@ const h = {
|
|
|
550
594
|
email: () => h.string().email(),
|
|
551
595
|
phone: () => h.string().phone(),
|
|
552
596
|
domain: (requireHttpOrHttps = true) => h.string().domain(requireHttpOrHttps),
|
|
553
|
-
toStandard
|
|
597
|
+
toStandard,
|
|
598
|
+
getJsonSchema: (schema, options = {}) => {
|
|
599
|
+
return toStandard(schema)["~standard"].jsonSchema.output({ target: options.target ?? "draft-2020-12" });
|
|
600
|
+
}
|
|
554
601
|
};
|
|
555
602
|
//#endregion
|
|
556
603
|
exports.AnySchemaType = AnySchemaType;
|
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 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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"}
|
|
1
|
+
{"version":3,"file":"types.cjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { StandardJSONSchemaV1, 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\ntype CombinedStandardProps<I, O> = StandardSchemaV1.Props<I, O> & {\n readonly jsonSchema: StandardJSONSchemaV1.Converter;\n};\n\ninterface Schema<I, O> {\n readonly \"~standard\": CombinedStandardProps<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\": CombinedStandardProps<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\": CombinedStandardProps<unknown, string> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, number> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, boolean> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, any> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => ({}),\n output: () => ({}),\n },\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\": CombinedStandardProps<I, T> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O | undefined> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, null> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, T> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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 /**\n * Get JSON Schema from a validation schema\n * @param {AnySchema} schema - Schema to convert\n * @param {Object} [options] - JSON Schema options\n * @param {string} [options.target] - Target JSON Schema draft version\n * @returns {Record<string, unknown>} JSON Schema object\n */\n getJsonSchema: (\n schema: AnySchema,\n options: { target?: string } = {},\n ): Record<string, unknown> => {\n const std = toStandard(schema);\n return std[\"~standard\"].jsonSchema.output({\n target: (options.target ?? \"draft-2020-12\") as StandardJSONSchemaV1.Target,\n });\n },\n};\n"],"mappings":"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"}
|
package/dist/types.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StandardSchemaV1 } from "./node_modules/.bun/@standard-schema_spec@1.1.0/node_modules/@standard-schema/spec/dist/index.cjs";
|
|
1
|
+
import { StandardJSONSchemaV1, StandardSchemaV1 } from "./node_modules/.bun/@standard-schema_spec@1.1.0/node_modules/@standard-schema/spec/dist/index.cjs";
|
|
2
2
|
|
|
3
3
|
//#region src/types.d.ts
|
|
4
4
|
type SchemaPrimitive = "string" | "number" | "boolean" | "any";
|
|
@@ -20,7 +20,11 @@ type InferSchema<S> = S extends BaseSchema<any, infer O> ? O : S extends "string
|
|
|
20
20
|
[key: string]: any;
|
|
21
21
|
} ? { [K in keyof S as undefined extends InferSchema<S[K]> ? K : never]?: InferSchema<S[K]> } & { [K in keyof S as undefined extends InferSchema<S[K]> ? never : K]: InferSchema<S[K]> } : unknown;
|
|
22
22
|
type SchemaDefinition = SchemaLike;
|
|
23
|
-
|
|
23
|
+
type CombinedStandardProps<I, O> = StandardSchemaV1.Props<I, O> & {
|
|
24
|
+
readonly jsonSchema: StandardJSONSchemaV1.Converter;
|
|
25
|
+
};
|
|
26
|
+
interface Schema<I, O> {
|
|
27
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
24
28
|
optional(): OptionalSchema<I, O | undefined>;
|
|
25
29
|
null(): UnionSchema<I, O | null>;
|
|
26
30
|
nullable(): UnionSchema<I, O | null>;
|
|
@@ -32,7 +36,7 @@ interface Schema<I, O> extends StandardSchemaV1<I, O> {
|
|
|
32
36
|
schema: Schema<I, O>;
|
|
33
37
|
}
|
|
34
38
|
declare abstract class BaseSchema<I, O> implements Schema<I, O> {
|
|
35
|
-
abstract readonly "~standard":
|
|
39
|
+
abstract readonly "~standard": CombinedStandardProps<I, O>;
|
|
36
40
|
jsonSchema: any;
|
|
37
41
|
get inferred(): O;
|
|
38
42
|
schema: Schema<I, O>;
|
|
@@ -70,7 +74,7 @@ declare class StringSchemaType extends BaseSchema<unknown, string> {
|
|
|
70
74
|
email(): StringSchemaType;
|
|
71
75
|
phone(): StringSchemaType;
|
|
72
76
|
domain(requireHttpOrHttps?: boolean): StringSchemaType;
|
|
73
|
-
readonly "~standard":
|
|
77
|
+
readonly "~standard": CombinedStandardProps<unknown, string>;
|
|
74
78
|
private _isValidDate;
|
|
75
79
|
private _isValidUUID;
|
|
76
80
|
private _isValidRegex;
|
|
@@ -86,53 +90,53 @@ declare class NumberSchemaType extends BaseSchema<unknown, number> {
|
|
|
86
90
|
primitive(): SchemaPrimitive;
|
|
87
91
|
min(n: number): NumberSchemaType;
|
|
88
92
|
max(n: number): NumberSchemaType;
|
|
89
|
-
readonly "~standard":
|
|
93
|
+
readonly "~standard": CombinedStandardProps<unknown, number>;
|
|
90
94
|
}
|
|
91
95
|
declare class BooleanSchemaType extends BaseSchema<unknown, boolean> {
|
|
92
96
|
readonly type: SchemaPrimitive;
|
|
93
97
|
constructor();
|
|
94
98
|
primitive(): SchemaPrimitive;
|
|
95
|
-
readonly "~standard":
|
|
99
|
+
readonly "~standard": CombinedStandardProps<unknown, boolean>;
|
|
96
100
|
}
|
|
97
101
|
declare class AnySchemaType extends BaseSchema<unknown, any> {
|
|
98
102
|
readonly type: SchemaPrimitive;
|
|
99
|
-
readonly "~standard":
|
|
103
|
+
readonly "~standard": CombinedStandardProps<unknown, any>;
|
|
100
104
|
}
|
|
101
105
|
declare class LiteralSchema<I, T extends string | number | boolean> extends BaseSchema<I, T> {
|
|
102
106
|
private readonly value;
|
|
103
107
|
constructor(value: T);
|
|
104
|
-
readonly "~standard":
|
|
108
|
+
readonly "~standard": CombinedStandardProps<I, T>;
|
|
105
109
|
}
|
|
106
110
|
declare class OptionalSchema<I, O> extends BaseSchema<I, O | undefined> {
|
|
107
111
|
private readonly innerSchema;
|
|
108
112
|
constructor(schema: Schema<I, O>);
|
|
109
|
-
readonly "~standard":
|
|
113
|
+
readonly "~standard": CombinedStandardProps<I, O | undefined>;
|
|
110
114
|
}
|
|
111
115
|
declare class NullSchemaType extends BaseSchema<unknown, null> {
|
|
112
116
|
readonly type = "null";
|
|
113
117
|
constructor();
|
|
114
|
-
readonly "~standard":
|
|
118
|
+
readonly "~standard": CombinedStandardProps<unknown, null>;
|
|
115
119
|
}
|
|
116
120
|
declare class UnionSchema<I, O> extends BaseSchema<I, O> {
|
|
117
121
|
private readonly schemas;
|
|
118
122
|
constructor(...schemas: Schema<I, any>[]);
|
|
119
|
-
readonly "~standard":
|
|
123
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
120
124
|
}
|
|
121
125
|
declare class ArraySchema<I, O extends any[]> extends BaseSchema<I, O> {
|
|
122
126
|
private readonly innerSchema;
|
|
123
127
|
constructor(schema: Schema<I, O[number]>);
|
|
124
|
-
readonly "~standard":
|
|
128
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
125
129
|
}
|
|
126
130
|
declare class InstanceOfSchema<I, O> extends BaseSchema<I, O> {
|
|
127
131
|
private readonly innerSchema;
|
|
128
132
|
private readonly classConstructor;
|
|
129
133
|
constructor(schema: Schema<I, any>, classConstructor: new (...args: any[]) => any);
|
|
130
|
-
readonly "~standard":
|
|
134
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
131
135
|
}
|
|
132
136
|
declare class ObjectSchemaType<T extends Record<string, unknown>> extends BaseSchema<unknown, T> {
|
|
133
137
|
readonly definition: SchemaDefinition;
|
|
134
138
|
constructor(definition: SchemaDefinition);
|
|
135
|
-
readonly "~standard":
|
|
139
|
+
readonly "~standard": CombinedStandardProps<unknown, T>;
|
|
136
140
|
}
|
|
137
141
|
type AnySchema = SchemaPrimitive | BaseSchema<any, any> | SchemaDefinition;
|
|
138
142
|
declare function toStandard<T>(schema: AnySchema): Schema<unknown, T>;
|
|
@@ -250,6 +254,16 @@ declare const h: {
|
|
|
250
254
|
* @returns {Schema<unknown, any>} Standard schema
|
|
251
255
|
*/
|
|
252
256
|
toStandard: typeof toStandard;
|
|
257
|
+
/**
|
|
258
|
+
* Get JSON Schema from a validation schema
|
|
259
|
+
* @param {AnySchema} schema - Schema to convert
|
|
260
|
+
* @param {Object} [options] - JSON Schema options
|
|
261
|
+
* @param {string} [options.target] - Target JSON Schema draft version
|
|
262
|
+
* @returns {Record<string, unknown>} JSON Schema object
|
|
263
|
+
*/
|
|
264
|
+
getJsonSchema: (schema: AnySchema, options?: {
|
|
265
|
+
target?: string;
|
|
266
|
+
}) => Record<string, unknown>;
|
|
253
267
|
};
|
|
254
268
|
//#endregion
|
|
255
269
|
export { AnySchema, AnySchemaType, ArraySchema, BaseSchema, BooleanSchemaType, InstanceOfSchema, LiteralSchema, NullSchemaType, NumberSchemaType, ObjectSchemaType, OptionalSchema, StringSchemaType, UnionSchema, h };
|
package/dist/types.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StandardSchemaV1 } from "./node_modules/.bun/@standard-schema_spec@1.1.0/node_modules/@standard-schema/spec/dist/index.mjs";
|
|
1
|
+
import { StandardJSONSchemaV1, StandardSchemaV1 } from "./node_modules/.bun/@standard-schema_spec@1.1.0/node_modules/@standard-schema/spec/dist/index.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/types.d.ts
|
|
4
4
|
type SchemaPrimitive = "string" | "number" | "boolean" | "any";
|
|
@@ -20,7 +20,11 @@ type InferSchema<S> = S extends BaseSchema<any, infer O> ? O : S extends "string
|
|
|
20
20
|
[key: string]: any;
|
|
21
21
|
} ? { [K in keyof S as undefined extends InferSchema<S[K]> ? K : never]?: InferSchema<S[K]> } & { [K in keyof S as undefined extends InferSchema<S[K]> ? never : K]: InferSchema<S[K]> } : unknown;
|
|
22
22
|
type SchemaDefinition = SchemaLike;
|
|
23
|
-
|
|
23
|
+
type CombinedStandardProps<I, O> = StandardSchemaV1.Props<I, O> & {
|
|
24
|
+
readonly jsonSchema: StandardJSONSchemaV1.Converter;
|
|
25
|
+
};
|
|
26
|
+
interface Schema<I, O> {
|
|
27
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
24
28
|
optional(): OptionalSchema<I, O | undefined>;
|
|
25
29
|
null(): UnionSchema<I, O | null>;
|
|
26
30
|
nullable(): UnionSchema<I, O | null>;
|
|
@@ -32,7 +36,7 @@ interface Schema<I, O> extends StandardSchemaV1<I, O> {
|
|
|
32
36
|
schema: Schema<I, O>;
|
|
33
37
|
}
|
|
34
38
|
declare abstract class BaseSchema<I, O> implements Schema<I, O> {
|
|
35
|
-
abstract readonly "~standard":
|
|
39
|
+
abstract readonly "~standard": CombinedStandardProps<I, O>;
|
|
36
40
|
jsonSchema: any;
|
|
37
41
|
get inferred(): O;
|
|
38
42
|
schema: Schema<I, O>;
|
|
@@ -70,7 +74,7 @@ declare class StringSchemaType extends BaseSchema<unknown, string> {
|
|
|
70
74
|
email(): StringSchemaType;
|
|
71
75
|
phone(): StringSchemaType;
|
|
72
76
|
domain(requireHttpOrHttps?: boolean): StringSchemaType;
|
|
73
|
-
readonly "~standard":
|
|
77
|
+
readonly "~standard": CombinedStandardProps<unknown, string>;
|
|
74
78
|
private _isValidDate;
|
|
75
79
|
private _isValidUUID;
|
|
76
80
|
private _isValidRegex;
|
|
@@ -86,53 +90,53 @@ declare class NumberSchemaType extends BaseSchema<unknown, number> {
|
|
|
86
90
|
primitive(): SchemaPrimitive;
|
|
87
91
|
min(n: number): NumberSchemaType;
|
|
88
92
|
max(n: number): NumberSchemaType;
|
|
89
|
-
readonly "~standard":
|
|
93
|
+
readonly "~standard": CombinedStandardProps<unknown, number>;
|
|
90
94
|
}
|
|
91
95
|
declare class BooleanSchemaType extends BaseSchema<unknown, boolean> {
|
|
92
96
|
readonly type: SchemaPrimitive;
|
|
93
97
|
constructor();
|
|
94
98
|
primitive(): SchemaPrimitive;
|
|
95
|
-
readonly "~standard":
|
|
99
|
+
readonly "~standard": CombinedStandardProps<unknown, boolean>;
|
|
96
100
|
}
|
|
97
101
|
declare class AnySchemaType extends BaseSchema<unknown, any> {
|
|
98
102
|
readonly type: SchemaPrimitive;
|
|
99
|
-
readonly "~standard":
|
|
103
|
+
readonly "~standard": CombinedStandardProps<unknown, any>;
|
|
100
104
|
}
|
|
101
105
|
declare class LiteralSchema<I, T extends string | number | boolean> extends BaseSchema<I, T> {
|
|
102
106
|
private readonly value;
|
|
103
107
|
constructor(value: T);
|
|
104
|
-
readonly "~standard":
|
|
108
|
+
readonly "~standard": CombinedStandardProps<I, T>;
|
|
105
109
|
}
|
|
106
110
|
declare class OptionalSchema<I, O> extends BaseSchema<I, O | undefined> {
|
|
107
111
|
private readonly innerSchema;
|
|
108
112
|
constructor(schema: Schema<I, O>);
|
|
109
|
-
readonly "~standard":
|
|
113
|
+
readonly "~standard": CombinedStandardProps<I, O | undefined>;
|
|
110
114
|
}
|
|
111
115
|
declare class NullSchemaType extends BaseSchema<unknown, null> {
|
|
112
116
|
readonly type = "null";
|
|
113
117
|
constructor();
|
|
114
|
-
readonly "~standard":
|
|
118
|
+
readonly "~standard": CombinedStandardProps<unknown, null>;
|
|
115
119
|
}
|
|
116
120
|
declare class UnionSchema<I, O> extends BaseSchema<I, O> {
|
|
117
121
|
private readonly schemas;
|
|
118
122
|
constructor(...schemas: Schema<I, any>[]);
|
|
119
|
-
readonly "~standard":
|
|
123
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
120
124
|
}
|
|
121
125
|
declare class ArraySchema<I, O extends any[]> extends BaseSchema<I, O> {
|
|
122
126
|
private readonly innerSchema;
|
|
123
127
|
constructor(schema: Schema<I, O[number]>);
|
|
124
|
-
readonly "~standard":
|
|
128
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
125
129
|
}
|
|
126
130
|
declare class InstanceOfSchema<I, O> extends BaseSchema<I, O> {
|
|
127
131
|
private readonly innerSchema;
|
|
128
132
|
private readonly classConstructor;
|
|
129
133
|
constructor(schema: Schema<I, any>, classConstructor: new (...args: any[]) => any);
|
|
130
|
-
readonly "~standard":
|
|
134
|
+
readonly "~standard": CombinedStandardProps<I, O>;
|
|
131
135
|
}
|
|
132
136
|
declare class ObjectSchemaType<T extends Record<string, unknown>> extends BaseSchema<unknown, T> {
|
|
133
137
|
readonly definition: SchemaDefinition;
|
|
134
138
|
constructor(definition: SchemaDefinition);
|
|
135
|
-
readonly "~standard":
|
|
139
|
+
readonly "~standard": CombinedStandardProps<unknown, T>;
|
|
136
140
|
}
|
|
137
141
|
type AnySchema = SchemaPrimitive | BaseSchema<any, any> | SchemaDefinition;
|
|
138
142
|
declare function toStandard<T>(schema: AnySchema): Schema<unknown, T>;
|
|
@@ -250,6 +254,16 @@ declare const h: {
|
|
|
250
254
|
* @returns {Schema<unknown, any>} Standard schema
|
|
251
255
|
*/
|
|
252
256
|
toStandard: typeof toStandard;
|
|
257
|
+
/**
|
|
258
|
+
* Get JSON Schema from a validation schema
|
|
259
|
+
* @param {AnySchema} schema - Schema to convert
|
|
260
|
+
* @param {Object} [options] - JSON Schema options
|
|
261
|
+
* @param {string} [options.target] - Target JSON Schema draft version
|
|
262
|
+
* @returns {Record<string, unknown>} JSON Schema object
|
|
263
|
+
*/
|
|
264
|
+
getJsonSchema: (schema: AnySchema, options?: {
|
|
265
|
+
target?: string;
|
|
266
|
+
}) => Record<string, unknown>;
|
|
253
267
|
};
|
|
254
268
|
//#endregion
|
|
255
269
|
export { AnySchema, AnySchemaType, ArraySchema, BaseSchema, BooleanSchemaType, InstanceOfSchema, LiteralSchema, NullSchemaType, NumberSchemaType, ObjectSchemaType, OptionalSchema, StringSchemaType, UnionSchema, h };
|
package/dist/types.mjs
CHANGED
|
@@ -136,6 +136,10 @@ var StringSchemaType = class StringSchemaType extends BaseSchema {
|
|
|
136
136
|
"~standard" = {
|
|
137
137
|
version: 1,
|
|
138
138
|
vendor: "h-schema",
|
|
139
|
+
jsonSchema: {
|
|
140
|
+
input: () => this.jsonSchema,
|
|
141
|
+
output: () => this.jsonSchema
|
|
142
|
+
},
|
|
139
143
|
validate: (value) => {
|
|
140
144
|
if (this._coerce && typeof value !== "string") value = String(value);
|
|
141
145
|
if (typeof value !== "string") return { issues: [{ message: `Expected string, received ${typeof value}` }] };
|
|
@@ -210,6 +214,10 @@ var NumberSchemaType = class NumberSchemaType extends BaseSchema {
|
|
|
210
214
|
"~standard" = {
|
|
211
215
|
version: 1,
|
|
212
216
|
vendor: "h-schema",
|
|
217
|
+
jsonSchema: {
|
|
218
|
+
input: () => this.jsonSchema,
|
|
219
|
+
output: () => this.jsonSchema
|
|
220
|
+
},
|
|
213
221
|
validate: (value) => {
|
|
214
222
|
if (this._coerce && typeof value !== "number") {
|
|
215
223
|
const coerced = Number(value);
|
|
@@ -238,6 +246,10 @@ var BooleanSchemaType = class extends BaseSchema {
|
|
|
238
246
|
"~standard" = {
|
|
239
247
|
version: 1,
|
|
240
248
|
vendor: "h-schema",
|
|
249
|
+
jsonSchema: {
|
|
250
|
+
input: () => this.jsonSchema,
|
|
251
|
+
output: () => this.jsonSchema
|
|
252
|
+
},
|
|
241
253
|
validate: (value) => {
|
|
242
254
|
if (this._coerce && typeof value !== "boolean") {
|
|
243
255
|
if (value === "true" || value === 1 || value === "1") value = true;
|
|
@@ -257,6 +269,10 @@ var AnySchemaType = class extends BaseSchema {
|
|
|
257
269
|
"~standard" = {
|
|
258
270
|
version: 1,
|
|
259
271
|
vendor: "h-schema",
|
|
272
|
+
jsonSchema: {
|
|
273
|
+
input: () => ({}),
|
|
274
|
+
output: () => ({})
|
|
275
|
+
},
|
|
260
276
|
validate: (value) => {
|
|
261
277
|
return { value };
|
|
262
278
|
},
|
|
@@ -279,6 +295,10 @@ var LiteralSchema = class extends BaseSchema {
|
|
|
279
295
|
"~standard" = {
|
|
280
296
|
version: 1,
|
|
281
297
|
vendor: "h-schema",
|
|
298
|
+
jsonSchema: {
|
|
299
|
+
input: () => this.jsonSchema,
|
|
300
|
+
output: () => this.jsonSchema
|
|
301
|
+
},
|
|
282
302
|
validate: (value) => {
|
|
283
303
|
if (value !== this.value) return { issues: [{ message: `Expected literal value ${this.value}, received ${value}` }] };
|
|
284
304
|
return { value };
|
|
@@ -299,6 +319,10 @@ var OptionalSchema = class extends BaseSchema {
|
|
|
299
319
|
"~standard" = {
|
|
300
320
|
version: 1,
|
|
301
321
|
vendor: "h-schema",
|
|
322
|
+
jsonSchema: {
|
|
323
|
+
input: () => this.jsonSchema,
|
|
324
|
+
output: () => this.jsonSchema
|
|
325
|
+
},
|
|
302
326
|
validate: (value) => {
|
|
303
327
|
if (value === void 0 || value === null) return { value: void 0 };
|
|
304
328
|
return this.innerSchema["~standard"].validate(value);
|
|
@@ -318,6 +342,10 @@ var NullSchemaType = class extends BaseSchema {
|
|
|
318
342
|
"~standard" = {
|
|
319
343
|
version: 1,
|
|
320
344
|
vendor: "h-schema",
|
|
345
|
+
jsonSchema: {
|
|
346
|
+
input: () => this.jsonSchema,
|
|
347
|
+
output: () => this.jsonSchema
|
|
348
|
+
},
|
|
321
349
|
validate: (value) => {
|
|
322
350
|
if (value !== null) return { issues: [{ message: `Expected null, received ${value === void 0 ? "undefined" : typeof value}` }] };
|
|
323
351
|
return { value: null };
|
|
@@ -338,6 +366,10 @@ var UnionSchema = class extends BaseSchema {
|
|
|
338
366
|
"~standard" = {
|
|
339
367
|
version: 1,
|
|
340
368
|
vendor: "h-schema",
|
|
369
|
+
jsonSchema: {
|
|
370
|
+
input: () => this.jsonSchema,
|
|
371
|
+
output: () => this.jsonSchema
|
|
372
|
+
},
|
|
341
373
|
validate: (value) => {
|
|
342
374
|
const issuesAccum = [];
|
|
343
375
|
for (const schema of this.schemas) {
|
|
@@ -366,6 +398,10 @@ var ArraySchema = class extends BaseSchema {
|
|
|
366
398
|
"~standard" = {
|
|
367
399
|
version: 1,
|
|
368
400
|
vendor: "h-schema",
|
|
401
|
+
jsonSchema: {
|
|
402
|
+
input: () => this.jsonSchema,
|
|
403
|
+
output: () => this.jsonSchema
|
|
404
|
+
},
|
|
369
405
|
validate: (value) => {
|
|
370
406
|
if (!Array.isArray(value)) return { issues: [{ message: `Expected array, received ${typeof value}` }] };
|
|
371
407
|
const results = value.map((item, index) => {
|
|
@@ -407,6 +443,10 @@ var InstanceOfSchema = class extends BaseSchema {
|
|
|
407
443
|
"~standard" = {
|
|
408
444
|
version: 1,
|
|
409
445
|
vendor: "h-schema",
|
|
446
|
+
jsonSchema: {
|
|
447
|
+
input: () => this.jsonSchema,
|
|
448
|
+
output: () => this.jsonSchema
|
|
449
|
+
},
|
|
410
450
|
validate: (value) => {
|
|
411
451
|
if (!(value instanceof this.classConstructor)) return { issues: [{ message: `Expected instance of ${this.classConstructor.name}` }] };
|
|
412
452
|
return this.innerSchema["~standard"].validate(value);
|
|
@@ -443,6 +483,10 @@ var ObjectSchemaType = class extends BaseSchema {
|
|
|
443
483
|
"~standard" = {
|
|
444
484
|
version: 1,
|
|
445
485
|
vendor: "h-schema",
|
|
486
|
+
jsonSchema: {
|
|
487
|
+
input: () => this.jsonSchema,
|
|
488
|
+
output: () => this.jsonSchema
|
|
489
|
+
},
|
|
446
490
|
validate: (value) => {
|
|
447
491
|
if (typeof value !== "object" || value === null || Array.isArray(value)) return { issues: [{ message: "Expected object, received " + (value === null ? "null" : Array.isArray(value) ? "array" : typeof value) }] };
|
|
448
492
|
const obj = value;
|
|
@@ -550,7 +594,10 @@ const h = {
|
|
|
550
594
|
email: () => h.string().email(),
|
|
551
595
|
phone: () => h.string().phone(),
|
|
552
596
|
domain: (requireHttpOrHttps = true) => h.string().domain(requireHttpOrHttps),
|
|
553
|
-
toStandard
|
|
597
|
+
toStandard,
|
|
598
|
+
getJsonSchema: (schema, options = {}) => {
|
|
599
|
+
return toStandard(schema)["~standard"].jsonSchema.output({ target: options.target ?? "draft-2020-12" });
|
|
600
|
+
}
|
|
554
601
|
};
|
|
555
602
|
//#endregion
|
|
556
603
|
export { AnySchemaType, ArraySchema, BaseSchema, BooleanSchemaType, InstanceOfSchema, LiteralSchema, NullSchemaType, NumberSchemaType, ObjectSchemaType, OptionalSchema, StringSchemaType, UnionSchema, h };
|
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 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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"}
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { StandardJSONSchemaV1, 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\ntype CombinedStandardProps<I, O> = StandardSchemaV1.Props<I, O> & {\n readonly jsonSchema: StandardJSONSchemaV1.Converter;\n};\n\ninterface Schema<I, O> {\n readonly \"~standard\": CombinedStandardProps<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\": CombinedStandardProps<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\": CombinedStandardProps<unknown, string> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, number> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, boolean> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, any> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => ({}),\n output: () => ({}),\n },\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\": CombinedStandardProps<I, T> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O | undefined> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, null> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<I, O> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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\": CombinedStandardProps<unknown, T> = {\n version: 1,\n vendor: \"h-schema\",\n jsonSchema: {\n input: () => this.jsonSchema,\n output: () => this.jsonSchema,\n },\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 /**\n * Get JSON Schema from a validation schema\n * @param {AnySchema} schema - Schema to convert\n * @param {Object} [options] - JSON Schema options\n * @param {string} [options.target] - Target JSON Schema draft version\n * @returns {Record<string, unknown>} JSON Schema object\n */\n getJsonSchema: (\n schema: AnySchema,\n options: { target?: string } = {},\n ): Record<string, unknown> => {\n const std = toStandard(schema);\n return std[\"~standard\"].jsonSchema.output({\n target: (options.target ?? \"draft-2020-12\") as StandardJSONSchemaV1.Target,\n });\n },\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hedystia/validations",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.12",
|
|
4
4
|
"description": "Next-gen TypeScript framework for building type-safe APIs at lightspeed",
|
|
5
5
|
"homepage": "https://docs.hedystia.com/validations/start",
|
|
6
6
|
"devDependencies": {
|
|
7
|
-
"@standard-schema/spec": "
|
|
7
|
+
"@standard-schema/spec": "1.1.0",
|
|
8
8
|
"@types/bun": "^1.3.3"
|
|
9
9
|
},
|
|
10
10
|
"peerDependencies": {
|