Skip to content

Populated

Populated<TCollectionSlug, TPopulate> = TCollectionSlug extends keyof DocumentBySlug ? { [K in keyof DocumentBySlug[TCollectionSlug]]: K extends keyof TPopulate ? K extends string ? RelationshipTargetOf<TCollectionSlug, K> extends infer Target ? Target extends CollectionSlug ? Target extends keyof DocumentBySlug ? TPopulate[K] extends { populate: infer NestedPopulate } ? NestedPopulate extends PopulateShape<Target> ? Populated<(...), (...)>[] : (...)[(...)][] : DocumentBySlug[Target][] : DocumentBySlug[TCollectionSlug][K] : DocumentBySlug[TCollectionSlug][K] : DocumentBySlug[TCollectionSlug][K] : DocumentBySlug[TCollectionSlug][K] : DocumentBySlug[TCollectionSlug][K] } : never

Defined in: packages/core/src/api/types.ts:386

Result type of a populated query — Doc<TCollectionSlug> with each key listed in TPopulate replaced from Id<TargetSlug>[] to Doc<TargetSlug>[]. Recurses if the populate value has a nested populate field (D12: unbounded nesting).

Keys not in TPopulate keep their original Id[] type. Non-relationship keys are left untouched.

TCollectionSlug extends CollectionSlug

TPopulate extends PopulateShape<TCollectionSlug>