UNPKG

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