massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / node_modules / ajv / dist / types / json-schema.d.ts
index e3c258d35c63a53e9560873427c2f1b045a2a7d3..78ec842fa84017f3ced3c5b088c16cdd4b636f41 100644 (file)
@@ -1,6 +1,9 @@
-export declare type SomeJSONSchema = JSONSchemaType<Known, true>;
-export declare type PartialSchema<T> = Partial<JSONSchemaType<T, true>>;
-declare type JSONType<T extends string, _partial extends boolean> = _partial extends true ? T | undefined : T;
+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;
@@ -15,16 +18,23 @@ interface StringKeywords {
     pattern?: string;
     format?: string;
 }
-export declare type JSONSchemaType<T, _partial extends boolean = false> = (((T extends number ? {
-    type: JSONType<"number" | "integer", _partial>;
+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", _partial>;
+    type: JSONType<"string", IsPartial>;
 } & StringKeywords : T extends boolean ? {
-    type: "boolean";
-} : T extends [any, ...any[]] ? {
-    type: JSONType<"array", _partial>;
+    type: JSONType<"boolean", IsPartial>;
+} : T extends readonly [any, ...any[]] ? {
+    type: JSONType<"array", IsPartial>;
     items: {
-        readonly [K in keyof T]-?: JSONSchemaType<T[K]> & Nullable<T[K]>;
+        readonly [K in keyof T]-?: UncheckedJSONSchemaType<T[K], false> & Nullable<T[K]>;
     } & {
         length: T["length"];
     };
@@ -34,9 +44,9 @@ export declare type JSONSchemaType<T, _partial extends boolean = false> = (((T e
 } | {
     additionalItems: false;
 }) : T extends readonly any[] ? {
-    type: JSONType<"array", _partial>;
-    items: JSONSchemaType<T[0]>;
-    contains?: PartialSchema<T[0]>;
+    type: JSONType<"array", IsPartial>;
+    items: UncheckedJSONSchemaType<T[0], false>;
+    contains?: UncheckedPartialSchema<T[0]>;
     minItems?: number;
     maxItems?: number;
     minContains?: number;
@@ -44,67 +54,66 @@ export declare type JSONSchemaType<T, _partial extends boolean = false> = (((T e
     uniqueItems?: true;
     additionalItems?: never;
 } : T extends Record<string, any> ? {
-    type: JSONType<"object", _partial>;
-    required: _partial extends true ? Readonly<(keyof T)[]> : Readonly<RequiredMembers<T>[]>;
-    additionalProperties?: boolean | JSONSchemaType<T[string]>;
-    unevaluatedProperties?: boolean | JSONSchemaType<T[string]>;
-    properties?: _partial extends true ? Partial<PropertiesSchema<T>> : PropertiesSchema<T>;
-    patternProperties?: {
-        [Pattern in string]?: JSONSchemaType<T[string]>;
+    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";
     };
-    propertyNames?: JSONSchemaType<string>;
     dependencies?: {
-        [K in keyof T]?: Readonly<(keyof T)[]> | PartialSchema<T>;
+        [K in keyof T]?: Readonly<(keyof T)[]> | UncheckedPartialSchema<T>;
     };
     dependentRequired?: {
         [K in keyof T]?: Readonly<(keyof T)[]>;
     };
     dependentSchemas?: {
-        [K in keyof T]?: PartialSchema<T>;
+        [K in keyof T]?: UncheckedPartialSchema<T>;
     };
     minProperties?: number;
     maxProperties?: number;
-} : T extends null ? {
+} & (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<PartialSchema<T>[]>;
-    anyOf?: Readonly<PartialSchema<T>[]>;
-    oneOf?: Readonly<PartialSchema<T>[]>;
-    if?: PartialSchema<T>;
-    then?: PartialSchema<T>;
-    else?: PartialSchema<T>;
-    not?: PartialSchema<T>;
-}) | {
-    anyOf: readonly JSONSchemaType<T, _partial>[];
-} | {
-    oneOf: readonly JSONSchemaType<T, _partial>[];
-} | ({
-    type: (T extends number ? JSONType<"number" | "integer", _partial> : T extends string ? JSONType<"string", _partial> : T extends boolean ? JSONType<"boolean", _partial> : never)[];
-} & (T extends number ? NumberKeywords : T extends string ? StringKeywords : T extends boolean ? unknown : 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?: {
-        [Key in string]?: JSONSchemaType<Known, true>;
-    };
-    definitions?: {
-        [Key in string]?: JSONSchemaType<Known, true>;
-    };
+    $defs?: Record<string, UncheckedJSONSchemaType<Known, true>>;
+    definitions?: Record<string, UncheckedJSONSchemaType<Known, true>>;
 };
-declare type Known = KnownRecord | [Known, ...Known[]] | Known[] | number | string | boolean | null;
-interface KnownRecord extends Record<string, Known> {
-}
-export declare type PropertiesSchema<T> = {
-    [K in keyof T]-?: (JSONSchemaType<T[K]> & Nullable<T[K]>) | {
+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 RequiredMembers<T> = {
+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?: never;
+    const?: null;
     enum?: Readonly<(T | null)[]>;
     default?: T | null;
 } : {