UNPKG

jsforce

Version:

Salesforce API Library for JavaScript

89 lines (74 loc) 2.35 kB
import { StringKeys } from './util'; /** * */ export type DateString = string & { __DateBrand: never }; export type BlobString = string & { __BlobBrand: never }; export type Address = { city: string | null; country: string | null; geocodeAccuracy: string | null; latitude: number | null; longitude: number | null; postalCode: string | null; state: string | null; street: string | null; }; export type SObjectFieldType = | number | boolean | DateString | BlobString | string | Address; export type SObjectDefinition<N extends string = string> = { Name: N; Fields: { [name: string]: SObjectFieldType | null }; ParentReferences: { [name: string]: SObjectDefinition | null }; ChildRelationships: { [name: string]: SObjectDefinition }; } export type Schema = { SObjects: { [name: string]: SObjectDefinition }; } /** * */ export type SObjectNames<S extends Schema> = StringKeys<S['SObjects']>; export type SObjectFieldNames< S extends Schema, N extends SObjectNames<S> > = StringKeys<S['SObjects'][N]['Fields']>; export type ParentReferenceNames< S extends Schema, N extends SObjectNames<S> > = StringKeys<S['SObjects'][N]['ParentReferences']>; type ParentReferenceSObjectName_< S extends Schema, N extends SObjectNames<S>, PRN extends ParentReferenceNames<S, N>, PSO extends SObjectDefinition = NonNullable< S['SObjects'][N]['ParentReferences'][PRN] >, SK extends keyof S['SObjects'] = keyof S['SObjects'] > = Extract<SK extends PSO['Name'] ? SK : never, string>; export type ParentReferenceSObjectName< S extends Schema, N extends SObjectNames<S>, PRN extends ParentReferenceNames<S, N> > = ParentReferenceSObjectName_<S, N, PRN>; export type ChildRelationshipNames< S extends Schema, N extends SObjectNames<S> > = StringKeys<S['SObjects'][N]['ChildRelationships']>; type ChildRelationshipSObjectName_< S extends Schema, N extends SObjectNames<S>, CRN extends ChildRelationshipNames<S, N>, CSO extends SObjectDefinition = S['SObjects'][N]['ChildRelationships'][CRN], SK extends keyof S['SObjects'] = keyof S['SObjects'] > = Extract<SK extends CSO['Name'] ? SK : never, string>; export type ChildRelationshipSObjectName< S extends Schema, N extends SObjectNames<S>, CRN extends ChildRelationshipNames<S, N> > = ChildRelationshipSObjectName_<S, N, CRN>;