Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
14 lines
909 B
Plaintext
14 lines
909 B
Plaintext
import { UnpackList } from "./utils.js";
|
|
import { ItemType, RelationalFields } from "./schema.js";
|
|
import { MergeObjects, Query } from "./query.js";
|
|
|
|
//#region src/types/deep.d.ts
|
|
|
|
/**
|
|
* Deep filter object
|
|
*/
|
|
type QueryDeep<Schema, Item> = UnpackList<Item> extends infer FlatItem ? RelationalFields<Schema, FlatItem> extends never ? never : { [Field in RelationalFields<Schema, FlatItem> as ExtractCollection<Schema, FlatItem[Field]> extends any[] ? Field : never]?: ExtractCollection<Schema, FlatItem[Field]> extends infer CollectionItem ? Query<Schema, CollectionItem> extends infer TQuery ? MergeObjects<QueryDeep<Schema, CollectionItem>, { [Key in keyof Omit<TQuery, 'deep' | 'alias' | 'fields'> as `_${string & Key}`]: TQuery[Key] }> : never : never } : never;
|
|
type ExtractCollection<Schema, Item> = Extract<Item, ItemType<Schema>>;
|
|
//#endregion
|
|
export { QueryDeep };
|
|
//# sourceMappingURL=deep.d.ts.map |