sf-composite-call
Version:
Support for making Salesforce composite call requests with integration for JSforce.
130 lines (129 loc) • 6.57 kB
TypeScript
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 {};