UNPKG

jsforce

Version:

Salesforce API Library for JavaScript

77 lines (68 loc) 1.81 kB
import { SObjectDefinition, Schema } from './schema'; import { StringKeys } from './util'; /** * */ type FieldPath_3<SO extends SObjectDefinition> = | '*' | Array<StringKeys<SO['Fields']>>; type FieldPath_2< SO extends SObjectDefinition, PSOR extends SO['ParentReferences'] = SO['ParentReferences'] > = | '*' | StringKeys<SO['Fields']> | { [K in StringKeys<PSOR>]?: | '*' | Array<FieldPath_3<Extract<PSOR[K], SObjectDefinition>>>; }; type FieldPath_1< SO extends SObjectDefinition, PSOR extends SO['ParentReferences'] = SO['ParentReferences'] > = | '*' | StringKeys<SO['Fields']> | { [K in StringKeys<PSOR>]?: | '*' | Array<FieldPath_2<Extract<PSOR[K], SObjectDefinition>>>; }; type FieldPathSpecifier_< S extends Schema, N extends string, SO extends SObjectDefinition = S['SObjects'][N], PSOR extends SO['ParentReferences'] = SO['ParentReferences'] > = | '*' | StringKeys<SO['Fields']> | { [K in StringKeys<PSOR>]?: | '*' | Array<FieldPath_1<Extract<PSOR[K], SObjectDefinition>>>; }; export type FieldPathSpecifier< S extends Schema, N extends string > = FieldPathSpecifier_<S, N>; export type FieldProjectionConfigObject = { [name: string]: 1 | true | FieldProjectionConfig | undefined; }; export type FieldProjectionConfig = string | null | FieldProjectionConfigObject; export type FieldPathScopedProjection< S extends Schema, N extends string, FPS extends FieldPathSpecifier<S, N> > = FPS extends { [name: string]: any } ? { [K in StringKeys<FPS>]: FPS[K] extends '*' ? '*' : FPS[K] extends Array<infer U> ? U extends FieldProjectionConfig ? U : never : never; } : FPS extends string ? FPS : never;