import { Query, ILens } from './types'; import { Next, MapOver, _, _$Optional } from './utils'; import { FollowPath, NOT_FOUND } from './Follow'; import { Lens } from './Lens'; import { Type, Checked, Optional, A, B, C, $partial, $apply } 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 = MapOver>, $apply<[Data, Self]>>; interface _$Get extends Type<[Query, unknown, unknown?]> { type: Get, B, Optional>>; } type $Get = _$Optional<_$Get, [Q, _, Self]>; interface _$GetMulti extends Type<[Query[], unknown, unknown?]> { type: GetMulti, B, Optional>>; } type $GetMulti = _$Optional<_$GetMulti, [Qs, _, Self]>;