import { EnumJsonSchemaOf } from './EnumJsonSchemaOf'; import { FromJsonSchema } from './FromJsonSchema'; import { JsonSchema } from './JsonSchema'; import { SchemaBase } from '../generic'; import { StringJsonSchema } from './StringJsonSchema'; export type MapJsonSchema = { readonly type: 'map'; readonly keys: StringJsonSchema | EnumJsonSchemaOf; readonly values: JsonSchema; readonly partial?: boolean; readonly default?: Record; readonly examples?: Record[]; }; export type MapJsonSchemaOf, V, P = false> = SchemaBase & { readonly type: 'map'; readonly keys: K; readonly values: V; readonly partial: P; }; export type FromMapJsonSchema = S['partial'] extends true ? { -readonly [key in S['keys'] extends EnumJsonSchemaOf ? M : string]?: FromJsonSchema; } : { -readonly [key in S['keys'] extends EnumJsonSchemaOf ? M : string]: FromJsonSchema; };