UNPKG

sf-composite-call

Version:

Support for making Salesforce composite call requests with integration for JSforce.

130 lines (129 loc) 6.57 kB
import { CompositeSubrequestQuery } from './CompositeSubrequestQuery'; import { CompositeSubrequestSObject } from './CompositeSubrequestSObject'; import { CompositeSubrequestSObjectCollection } from './CompositeSubrequestSObjectCollection'; import { CompositeSubrequestBody } from './CompositeSubrequest'; declare class JSforceLike { [key: string]: any; requestPost(url: any, body: any): Promise<any>; requestPost(url: any, body: any, fnCallback: (err: Error, response: any) => void): void; } interface CompositeCallOptions { version?: string; allOrNone?: boolean; collateSubrequests?: boolean; jsforceConnection?: JSforceLike; } interface CompositeCallRequest { allOrNone?: boolean; collateSubrequests?: boolean; compositeRequest: CompositeSubrequestBody[]; } interface CompositeCallResponseError { message: string; errorCode: string; fields: string[]; } interface CompositeCallResponseResult { id: string; success: boolean; errors: any[]; } export interface CompositeResponse200<T = CompositeCallResponseResult> { body: T; httpHeaders: { [header: string]: string; }; httpStatusCode: 200; referenceId: string; } export interface CompositeResponseAny { body?: CompositeCallResponseResult | CompositeCallResponseResult[] | CompositeCallResponseError[]; httpHeaders: { [header: string]: string; }; httpStatusCode: 200; referenceId: string; } export declare type CompositeResponse<T = any> = CompositeResponse200<T> | CompositeResponseAny; export interface CompositeCallResponse<T = any> { compositeResponse: Array<CompositeResponse<T>>; } /** * @description Main class for constructing a composite call. Tracks and enforces limits on query and request imposed by Salesforce API. * @param {object} [options] - **Optional.** Options for creating the instance. * @param {string} [options.version] - **Optional.** The version of Salesforce API to use. * @param {boolean} [options.allOrNone] - **Optional.** Used in the request to Salesforce. * See their [documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/requests_composite.htm). * @param {boolean} [options.collateSubrequests] - **Optional.** Used in the request to Salesforce. * See their [documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/requests_composite.htm). * @param {object} [options.jsforceConnection] - **Optional.** This connection enables the `execute()` method for convenience. * Without it, the result of Composite Call will have to be passed to another method to post it to Salesforce. */ export declare class CompositeCall { constructor(options: CompositeCallOptions); version: string; calls: any[]; connection: JSforceLike; options: { allOrNone: boolean; collateSubrequests: boolean; }; limits: { query: number; queryCount: number; total: number; totalCount: number; }; get versionRX(): RegExp; /** * @property {string} url - The versioned url of the composite request. */ get url(): string; /** * @property {object} request - The result of constructing the composite call. * @property {boolean} [request.allOrNone] - **Optional.** Specifies what to do when an error occurs while processing a subrequest. * @property {boolean} [request.collateSubrequests] - **Optional.** Specifies what to do when an error occurs while processing a subrequest. * @property {object[]} request.CompositeSubrequest - Collection of subrequests to execute. */ get request(): CompositeCallRequest; get queryLimitMet(): boolean; get totalLimitMet(): boolean; /** * @description Add a query subrequest instance to the composite request. * @param {string} query - A SOQL query. * @param {string} [referenceId] - **Optional.** The reference ID of the query subrequest. * @param {string} [version] - **Optional.** The version of the Salesforce API to use. Must be less than or equal to the version defined for the Composite Call. * @returns {CompositeSubrequestQuery} - An instance of `CompositeSubrequestQuery`. * @throws {Error} Query limit met. No more queries may be added. * @throws {Error} Total request limit met. No more requests may be added. */ addQuery(query: string, referenceId?: string, version?: string): CompositeSubrequestQuery; /** * @description Add a SObject subrequest instance to the composite request. * @param {string} sobject - A SObject name; may be built-in or custom. * @param {string} [referenceId] - **Optional.** The reference ID of the SObject subrequest. * @param {string} [version] - **Optional.** The version of the Salesforce API to use. Must be less than or equal to the version defined for the Composite Call. * @returns {CompositeSubrequestSObject} - An instance of `CompositeSubrequestSObject`. * @throws {Error} Total request limit met. No more requests may be added. */ addSObject(sobject: string, referenceId?: string, version?: string): CompositeSubrequestSObject; /** * @description Add a SObject Collection subrequest instance to the composite request. * @param {string} [referenceId] - **Optional.** The reference ID of the SObject subrequest. * @param {string} [version] - **Optional.** The version of the Salesforce API to use. Must be less than or equal to the version defined for the Composite Call. * @returns {CompositeSubrequestSObjectCollection} - An instance of `CompositeSubrequestSObjectCollection`. * @throws {Error} Total request limit met. No more requests may be added. */ addSObjectCollection(referenceId?: string, version?: string): CompositeSubrequestSObjectCollection; /** * @description Convenience method for internally clearing previous calls, limits, etc. */ clear(): void; /** * @description Convenience method for integrating with JSforce. * @param {any} [connection] - Optionally pass a JSforce connection instance; used if not defined as part this class instance options. * @returns {Promise<CompositeCallResponse>} - The result of executing the composite call, or undefined if no JSforce connection was given. */ execute<T = any>(connection?: JSforceLike): Promise<CompositeCallResponse<T>>; } export {};