@jsforce/jsforce-node
Version:
Salesforce API Library for JavaScript
134 lines (133 loc) • 3.62 kB
TypeScript
/// <reference types="node" />
import Connection from '../connection';
import { HttpRequest, Schema } from '../types';
/**
*
*/
export type ChatterRequestParams = Omit<HttpRequest, 'body'> & {
body?: string | object | null;
};
export type BatchRequestParams = {
method: string;
url: string;
richInput?: any;
};
type BatchRequestTupple<S extends Schema, RT extends any[]> = {
[K in keyof RT]: Request<S, RT[K]>;
};
type BatchResultTupple<RT extends any[]> = {
[K in keyof RT]: {
statusCode: number;
result: RT[K];
};
};
export type BatchResponse<RT extends any[]> = {
hasErrors: boolean;
results: BatchResultTupple<RT>;
};
/**
* A class representing chatter API request
*/
declare class Request<S extends Schema, R> {
_chatter: Chatter<S>;
_request: ChatterRequestParams;
_promise: Promise<R> | undefined;
constructor(chatter: Chatter<S>, request: ChatterRequestParams);
/**
* Retrieve parameters in batch request form
*/
batchParams(): {
richInput?: string | object | null | undefined;
method: import("../types").HttpMethods;
url: string;
};
/**
* Retrieve parameters in batch request form
*
* @method Chatter~Request#promise
* @returns {Promise.<Chatter~RequestResult>}
*/
promise(): Promise<R>;
/**
* Returns Node.js Stream object for request
*
* @method Chatter~Request#stream
* @returns {stream.Stream}
*/
stream(): import("stream").Duplex;
/**
* Promise/A+ interface
* http://promises-aplus.github.io/promises-spec/
*
* Delegate to deferred promise, return promise instance for batch result
*/
then<U>(onResolve?: (value: R) => U | PromiseLike<U>, onReject?: (e: any) => U | PromiseLike<U>): Promise<U>;
}
export declare class Resource<S extends Schema, R> extends Request<S, R> {
_url: string;
/**
*
*/
constructor(chatter: Chatter<S>, url: string, queryParams?: {
[name: string]: string | number | boolean | null;
} | null);
/**
* Create a new resource
*/
create<R1 = any>(data: string | object | null): Request<S, R1>;
/**
* Retrieve resource content
*/
retrieve<R1 = R>(): Request<S, R1>;
/**
* Update specified resource
*/
update<R1 = any>(data: object): Request<S, R1>;
/**
* Delete specified resource
*/
destroy(): Request<S, void>;
/**
* Synonym of Resource#destroy()
*/
delete: () => Request<S, void>;
/**
* Synonym of Resource#destroy()
*/
del: () => Request<S, void>;
}
/**
* API class for Chatter REST API call
*/
export declare class Chatter<S extends Schema> {
_conn: Connection<S>;
/**
*
*/
constructor(conn: Connection<S>);
/**
* Sending request to API endpoint
* @private
*/
_request<R>(req_: ChatterRequestParams): import("../util/promise").StreamPromise<R>;
/**
* Convert path to site root relative url
* @private
*/
_normalizeUrl(url: string): string;
/**
* Make a request for chatter API resource
*/
request<R = unknown>(req: ChatterRequestParams): Request<S, R>;
/**
* Make a resource request to chatter API
*/
resource<R = unknown>(url: string, queryParams?: {
[name: string]: string | number | boolean | null;
} | null): Resource<S, R>;
/**
* Make a batch request to chatter API
*/
batch<RT extends any[]>(requests: BatchRequestTupple<S, RT>): Promise<BatchResponse<RT>>;
}
export default Chatter;