import type { AnyOfSchema, AnySchema, ItemSchema, ListSchema, MapSchema, RecordSchema, ResolveStringSchema, Schema } from '../../schema/index.js'; import type { Extends, If } from '../../types/index.js'; export type CharsToEscape = '[' | ']' | '.'; export type StringToEscape = `${string}${CharsToEscape}${string}`; export type AppendKey = `${PATH}['${KEY}']` | If, never, `${PATH}.${KEY}`>; export type Paths = string & (SCHEMA extends ItemSchema ? ItemSchemaPaths : SCHEMA extends Schema ? SchemaPaths : never); export type SchemaPaths = (SCHEMA extends AnySchema ? AnySchemaPaths : never) | (SCHEMA extends ListSchema ? ListSchemaPaths : never) | (SCHEMA extends MapSchema ? MapSchemaPaths : never) | (SCHEMA extends RecordSchema ? RecordSchemaPaths : never) | (SCHEMA extends AnyOfSchema ? AnyOfSchemaPaths : never); export type ItemSchemaPaths = ItemSchema extends SCHEMA ? string : keyof SCHEMA['attributes'] extends infer SCHEMA_PATH ? SCHEMA_PATH extends string ? `['${SCHEMA_PATH}']` | If, never, SCHEMA_PATH> | SchemaPaths, never, SCHEMA_PATH>> : never : never; type AnySchemaPaths = SCHEMA_PATH extends '' ? string : SCHEMA_PATH | `${SCHEMA_PATH}${'.' | '['}${string}`; type ListSchemaPaths = ListSchema extends SCHEMA ? string : `${SCHEMA_PATH}[${number}]` | SchemaPaths; type MapSchemaPaths = MapSchema extends SCHEMA ? string : { [KEY in keyof SCHEMA['attributes'] & string]: AppendKey | SchemaPaths>; }[keyof SCHEMA['attributes'] & string]; type RecordSchemaPaths> = RecordSchema extends SCHEMA ? string : AppendKey | SchemaPaths>; type AnyOfSchemaPaths = AnyOfSchema extends SCHEMA ? string : AnyOfSchemaPathsRec; type AnyOfSchemaPathsRec = SCHEMAS extends [infer SCHEMAS_HEAD, ...infer SCHEMAS_TAIL] ? SCHEMAS_HEAD extends Schema ? SCHEMAS_TAIL extends Schema[] ? AnyOfSchemaPathsRec> : never : never : RESULTS; export {};