| declare type StrictNullChecksWrapper<Name extends string, Type> = undefined extends null ? `strictNullChecks must be true in tsconfig to use ${Name}` : Type; |
| declare type UnionToIntersection<U> = (U extends any ? (_: U) => void : never) extends (_: infer I) => void ? I : never; |
| export declare type SomeJSONSchema = UncheckedJSONSchemaType<Known, true>; |
| declare type UncheckedPartialSchema<T> = Partial<UncheckedJSONSchemaType<T, true>>; |
| export declare type PartialSchema<T> = StrictNullChecksWrapper<"PartialSchema", UncheckedPartialSchema<T>>; |
| declare type JSONType<T extends string, IsPartial extends boolean> = IsPartial extends true ? T | undefined : T; |
| interface NumberKeywords { |
| minimum?: number; |
| maximum?: number; |
| exclusiveMinimum?: number; |
| exclusiveMaximum?: number; |
| multipleOf?: number; |
| format?: string; |
| } |
| interface StringKeywords { |
| minLength?: number; |
| maxLength?: number; |
| pattern?: string; |
| format?: string; |
| } |
| declare type UncheckedJSONSchemaType<T, IsPartial extends boolean> = (// these two unions allow arbitrary unions of types |
| { |
| anyOf: readonly UncheckedJSONSchemaType<T, IsPartial>[]; |
| } | { |
| oneOf: readonly UncheckedJSONSchemaType<T, IsPartial>[]; |
| } | ({ |
| type: readonly (T extends number ? JSONType<"number" | "integer", IsPartial> : T extends string ? JSONType<"string", IsPartial> : T extends boolean ? JSONType<"boolean", IsPartial> : never)[]; |
| } & UnionToIntersection<T extends number ? NumberKeywords : T extends string ? StringKeywords : T extends boolean ? {} : never>) | ((T extends number ? { |
| type: JSONType<"number" | "integer", IsPartial>; |
| } & NumberKeywords : T extends string ? { |
| type: JSONType<"string", IsPartial>; |
| } & StringKeywords : T extends boolean ? { |
| type: JSONType<"boolean", IsPartial>; |
| } : T extends readonly [any, ...any[]] ? { |
| type: JSONType<"array", IsPartial>; |
| items: { |
| readonly [K in keyof T]-?: UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>; |
| } & { |
| length: T["length"]; |
| }; |
| minItems: T["length"]; |
| } & ({ |
| maxItems: T["length"]; |
| } | { |
| additionalItems: false; |
| }) : T extends readonly any[] ? { |
| type: JSONType<"array", IsPartial>; |
| items: UncheckedJSONSchemaType<T[0], false>; |
| contains?: UncheckedPartialSchema<T[0]>; |
| minItems?: number; |
| maxItems?: number; |
| minContains?: number; |
| maxContains?: number; |
| uniqueItems?: true; |
| additionalItems?: never; |
| } : T extends Record<string, any> ? { |
| type: JSONType<"object", IsPartial>; |
| additionalProperties?: boolean | UncheckedJSONSchemaType<T[string], false>; |
| unevaluatedProperties?: boolean | UncheckedJSONSchemaType<T[string], false>; |
| properties?: IsPartial extends true ? Partial<UncheckedPropertiesSchema<T>> : UncheckedPropertiesSchema<T>; |
| patternProperties?: Record<string, UncheckedJSONSchemaType<T[string], false>>; |
| propertyNames?: Omit<UncheckedJSONSchemaType<string, false>, "type"> & { |
| type?: "string"; |
| }; |
| dependencies?: { |
| [K in keyof T]?: Readonly<(keyof T)[]> | UncheckedPartialSchema<T>; |
| }; |
| dependentRequired?: { |
| [K in keyof T]?: Readonly<(keyof T)[]>; |
| }; |
| dependentSchemas?: { |
| [K in keyof T]?: UncheckedPartialSchema<T>; |
| }; |
| minProperties?: number; |
| maxProperties?: number; |
| } & (IsPartial extends true ? { |
| required: Readonly<(keyof T)[]>; |
| } : [UncheckedRequiredMembers<T>] extends [never] ? { |
| required?: Readonly<UncheckedRequiredMembers<T>[]>; |
| } : { |
| required: Readonly<UncheckedRequiredMembers<T>[]>; |
| }) : T extends null ? { |
| type: JSONType<"null", IsPartial>; |
| nullable: true; |
| } : never) & { |
| allOf?: Readonly<UncheckedPartialSchema<T>[]>; |
| anyOf?: Readonly<UncheckedPartialSchema<T>[]>; |
| oneOf?: Readonly<UncheckedPartialSchema<T>[]>; |
| if?: UncheckedPartialSchema<T>; |
| then?: UncheckedPartialSchema<T>; |
| else?: UncheckedPartialSchema<T>; |
| not?: UncheckedPartialSchema<T>; |
| })) & { |
| [keyword: string]: any; |
| $id?: string; |
| $ref?: string; |
| $defs?: Record<string, UncheckedJSONSchemaType<Known, true>>; |
| definitions?: Record<string, UncheckedJSONSchemaType<Known, true>>; |
| }; |
| export declare type JSONSchemaType<T> = StrictNullChecksWrapper<"JSONSchemaType", UncheckedJSONSchemaType<T, false>>; |
| declare type Known = { |
| [key: string]: Known; |
| } | [Known, ...Known[]] | Known[] | number | string | boolean | null; |
| declare type UncheckedPropertiesSchema<T> = { |
| [K in keyof T]-?: (UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>) | { |
| $ref: string; |
| }; |
| }; |
| export declare type PropertiesSchema<T> = StrictNullChecksWrapper<"PropertiesSchema", UncheckedPropertiesSchema<T>>; |
| declare type UncheckedRequiredMembers<T> = { |
| [K in keyof T]-?: undefined extends T[K] ? never : K; |
| }[keyof T]; |
| export declare type RequiredMembers<T> = StrictNullChecksWrapper<"RequiredMembers", UncheckedRequiredMembers<T>>; |
| declare type Nullable<T> = undefined extends T ? { |
| nullable: true; |
| const?: null; |
| enum?: Readonly<(T | null)[]>; |
| default?: T | null; |
| } : { |
| const?: T; |
| enum?: Readonly<T[]>; |
| default?: T; |
| }; |
| export {}; |