import type { ResolvedBinarySchema } from '../binary/index.js'; import type { ResolvedBooleanSchema } from '../boolean/index.js'; import type { ResolvedNullSchema } from '../null/index.js'; import type { ResolvedNumberSchema } from '../number/index.js'; import type { ResolvedStringSchema } from '../string/index.js'; import type { Schema } from './schema.js'; export type Extension = { type: Schema['type'] | '*'; value: unknown; }; export type ExtendedValue = '*' extends TYPE ? EXTENSIONS['value'] : EXTENSIONS extends infer EXTENSION ? EXTENSION extends Extension ? EXTENSION['type'] extends infer EXTENSION_TYPE ? EXTENSION_TYPE extends TYPE | '*' ? EXTENSION['value'] : never : never : never : never; export type NullUnextendedValue = ResolvedNullSchema; export type NullExtendedValue = ExtendedValue | NullUnextendedValue; export type BooleanUnextendedValue = ResolvedBooleanSchema; export type BooleanExtendedValue = ExtendedValue | BooleanUnextendedValue; export type NumberUnextendedValue = ResolvedNumberSchema; export type NumberExtendedValue = ExtendedValue | NumberUnextendedValue; export type StringUnextendedValue = ResolvedStringSchema; export type StringExtendedValue = ExtendedValue | StringUnextendedValue; export type BinaryUnextendedValue = ResolvedBinarySchema; export type BinaryExtendedAttributeValue = ExtendedValue | BinaryUnextendedValue; export type SetUnextendedValue = Set>; export type SetExtendedValue = ExtendedValue | SetUnextendedValue; export type ListUnextendedValue = SchemaExtendedValue[]; export type ListExtendedValue = ExtendedValue | ListUnextendedValue; export type MapUnextendedValue = { [key: string]: SchemaExtendedValue; }; export type MapExtendedValue = ExtendedValue | MapUnextendedValue; export type RecordUnextendedValue = { [key: string]: SchemaExtendedValue | undefined; }; export type RecordExtendedValue = ExtendedValue | RecordUnextendedValue; export type ItemUnextendedValue = { [key: string]: SchemaExtendedValue | undefined; }; export type ItemExtendedValue = ExtendedValue | ItemUnextendedValue; export type SchemaUnextendedValue = NullUnextendedValue | BooleanUnextendedValue | NumberUnextendedValue | StringUnextendedValue | BinaryUnextendedValue | SetUnextendedValue | ListUnextendedValue | MapUnextendedValue | RecordUnextendedValue | ItemUnextendedValue; export type SchemaExtendedValue = NullExtendedValue | BooleanExtendedValue | NumberExtendedValue | StringExtendedValue | BinaryExtendedAttributeValue | SetExtendedValue | ListExtendedValue | MapExtendedValue | RecordExtendedValue | ItemExtendedValue;