import { Query, ILens } from './types.js'; import { Next, _, _$Optional } from './utils.js'; import { FollowPath, NOT_FOUND } from './Follow.js'; import { Lens } from './Lens.js'; import { Type, Optional, B, C } from 'free-types-core'; export { Get, GetMulti, $Get, $GetMulti }; type Get = _Get, Data, Self>; type _Get> = F extends NOT_FOUND ? never : Next extends L['path']['length'] ? F : _Get>; type GetMulti = { [K in keyof Qs]: Qs[K] extends infer Q extends Query ? Get : never; }; interface _$Get extends Type<[Query, unknown, unknown?]> { type: this[0] extends infer Q extends Query ? Get, Optional>> : never; } type $Get = _$Optional<_$Get, [Q, _, Self]>; interface _$GetMulti extends Type<[Query[], unknown, unknown?]> { type: this[0] extends infer Qs extends Query[] ? GetMulti, Optional>> : never; } type $GetMulti = _$Optional<_$GetMulti, [Qs, _, Self]>;