UNPKG

8.31 kBTypeScriptView Raw
1import * as stream from 'stream';
2
3import { SObjectCreateOptions } from './create-options';
4import { DescribeSObjectResult } from './describe-result';
5import { Query } from './query';
6import { Record, RecordReference } from './record';
7import { RecordResult } from './record-result';
8import { Connection, RestApiOptions, Callback } from './connection';
9import { SalesforceId } from './salesforce-id';
10import { Batch, BatchResultInfo } from './batch';
11import { QuickAction, QuickActionInfo } from './quick-action';
12
13export class SObject<T> {
14 record(id: SalesforceId): RecordReference<T>;
15 retrieve(id: SalesforceId, callback?: Callback<Record<T>>): Promise<Record<T>>;
16 retrieve(id: SalesforceId, options?: object, callback?: Callback<Record<T>>): Promise<Record<T>>;
17 retrieve(ids: SalesforceId[], callback?: Callback<Array<Record<T>>>): Promise<Array<Record<T>>>;
18 retrieve(ids: SalesforceId[], options?: object, callback?: Callback<Array<Record<T>>>): Promise<Array<Record<T>>>;
19 // Should update require that the record Id field be provided?
20 update(record: Partial<T>, callback?: Callback<RecordResult>): Promise<RecordResult>;
21 update(record: Partial<T>, options?: RestApiOptions, callback?: Callback<RecordResult>): Promise<RecordResult>;
22 update(records: Array<Partial<T>>, callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
23 update(records: Array<Partial<T>>, options?: RestApiOptions, callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
24 // should input really be optional? the documentation says so, but how can you actually update without it?
25 updateBulk(input?: Record[] | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
26 updated(start: string | Date, end: string | Date, callback?: Callback<UpdatedRecordsInfo>): Promise<UpdatedRecordsInfo>;
27 upsert(records: Record<T>, extIdField: string, callback?: Callback<RecordResult>): Promise<RecordResult>;
28 upsert(records: Record<T>, extIdField: string, options?: RestApiOptions, callback?: Callback<RecordResult>): Promise<RecordResult>;
29 upsert(records: Array<Record<T>>, extIdField: string, callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
30 upsert(records: Array<Record<T>>, extIdField: string, options?: RestApiOptions, callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
31 upsertBulk(input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[] | BatchResultInfo[]>): Batch;
32
33 find<T>(query?: object | string, callback?: Callback<Array<Record<T>>>): Query<Array<Record<T>>>;
34 find<T>(query?: object | string, fields?: Object | string[] | string, callback?: Callback<Array<Record<T>>>): Query<Array<Record<T>>>;
35 find<T>(query?: object | string, fields?: Object | string[] | string, options?: FindOptions, callback?: Callback<Array<Record<T>>>): Query<Array<Record<T>>>;
36
37 findOne<T>(query?: object | string, callback?: Callback<Record<T>>): Query<Record<T> | null>;
38 findOne<T>(query?: object | string, fields?: Object | string[] | string, callback?: Callback<Record<T>>): Query<Record<T> | null>;
39 findOne<T>(query?: object | string, fields?: Object | string[] | string, options?: FindOptions, callback?: Callback<Record<T>>): Query<Record<T> | null>;
40
41 approvalLayouts$: {
42 /** Returns a value from the cache if it exists, otherwise calls SObject.approvalLayouts */
43 (callback?: Callback<ApprovalLayoutInfo>): ApprovalLayoutInfo;
44 clear(): void;
45 }
46 approvalLayouts(callback?: Callback<ApprovalLayoutInfo>): Promise<ApprovalLayoutInfo>;
47 bulkload(operation: string, options?: { extIdField?: string | undefined }, input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
48 compactLayouts$: {
49 /** Returns a value from the cache if it exists, otherwise calls SObject.compactLayouts */
50 (callback?: Callback<CompactLayoutInfo>): CompactLayoutInfo;
51 clear(): void;
52 }
53 compactLayouts(callback?: Callback<CompactLayoutInfo>): Promise<CompactLayoutInfo>;
54 count(conditions?: object | string, callback?: Callback<number>): Query<number>;
55 create(record: T, options?: RestApiOptions, callback?: Callback<RecordResult>): Promise<RecordResult>;
56 create(record: T, callback?: Callback<RecordResult>): Promise<RecordResult>;
57 create(record: Array<T>, options?: RestApiOptions, callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
58 create(record: Array<T>, callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
59 createBulk(input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
60 del(id: string, callback?: Callback<RecordResult>): Promise<RecordResult>;
61 del(ids: string[], callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
62 destroy(id: string, callback?: Callback<RecordResult>): Promise<RecordResult>;
63 destroy(ids: string[], callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
64 delete(id: string, callback?: Callback<RecordResult>): Promise<RecordResult>;
65 delete(ids: string[], callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
66 deleteBulk(input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
67 destroyBulk(input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
68 destroyHardBulk(input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
69 deleted(start: Date | string, end: Date | string, callback?: Callback<DeletedRecordsInfo>): Promise<DeletedRecordsInfo>;
70 deleteHardBulk(input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
71 describe(callback?: Callback<DescribeSObjectResult>): Promise<DescribeSObjectResult>;
72 describe$: {
73 /** Returns a value from the cache if it exists, otherwise calls SObject.describe */
74 (callback?: Callback<DescribeSObjectResult>): DescribeSObjectResult;
75 clear(): void;
76 }
77 insert(record: Record<T>, callback?: Callback<RecordResult>): Promise<RecordResult>;
78 insert(records: Array<Record<T>>, callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
79 insertBulk(input?: Array<Record<T>> | stream.Stream | string, callback?: Callback<RecordResult[]>): Batch;
80 /** Returns a value from the cache if it exists, otherwise calls SObject.layouts */
81 layouts$: {
82 (layoutName?: string, callback?: Callback<LayoutInfo>): LayoutInfo;
83 clear(): void;
84 }
85 layouts(layoutName?: string, callback?: Callback<LayoutInfo>): Promise<LayoutInfo>;
86 listview(id: string): ListView;
87 listviews(callback?: Callback<ListViewsInfo>): Promise<ListViewsInfo>;
88 quickAction(actionName: string): QuickAction;
89 quickActions(callback?: Callback<QuickActionInfo[]>): Promise<QuickActionInfo[]>;
90 recent(callback?: Callback<RecordResult[]>): Promise<RecordResult[]>;
91 select(callback?: Callback<T[]>): Query<T[]>;
92 // TODO:use a typed pluck to turn `fields` into a subset of T's fields so that the output is slimmed down appropriately
93 select(fields?: {[P in keyof T]: boolean} | Array<(keyof T)> | (keyof T), callback?: Callback<Array<Partial<T>>>): Query<Array<Partial<T>>>;
94}
95
96export interface FindOptions {
97 limit?: number | undefined;
98 offset?: number | undefined;
99 skip?: number | undefined;
100}
101
102export interface UpdatedRecordsInfo {
103 latestDateCovered: string;
104 ids: string[];
105}
106
107export interface ApprovalLayoutInfo {
108 approvalLayouts: Object[];
109}
110
111export interface CompactLayoutInfo {
112 compactLayouts: Object[];
113 defaultCompactLayoutId: string;
114 recordTypeCompactLayoutMappings: Object[];
115}
116
117export interface DeletedRecordsInfo {
118 earliestDateAvailable: string;
119 latestDateCovered: string;
120 deletedRecords: DeletedRecord[];
121}
122
123export interface DeletedRecord {
124 id: string,
125 deletedDate: string,
126}
127
128export interface LayoutInfo {
129 layouts: Object[];
130 recordTypeMappings: Object[];
131}
132
133export class ListView {
134 constructor(connection: Connection, type: string, id: SalesforceId)
135}
136
137export class ListViewsInfo { }
138// TODO: Remove this export
139export { QuickAction } // for compatibility if anyone had imported it from this file