import { getAuthorization } from "./add-ons/heroku-applink.js"; import { HttpResponseError } from "./utils/request.js"; type QueryOperation = "query" | "queryAll"; export declare function init(): { addons: { applink: { getAuthorization: typeof getAuthorization; }; }; dataCloud: { parseDataActionEvent: typeof parseDataActionEvent; }; salesforce: { parseRequest: typeof parseRequest; }; }; export declare function parseRequest(headers: any, body: any, log: any): { event: InvocationEvent; context: Context; logger: Logger; }; export declare function parseDataActionEvent(payload: any): DataCloudActionEvent; export { HttpResponseError }; export interface InvocationEvent { readonly data: A; readonly dataContentType?: string; readonly id: string; readonly time?: string; } export interface Context { readonly id: string; readonly org?: Org; } export interface Org { readonly apiVersion: string; readonly dataApi: DataApi; readonly dataCloudApi?: DataCloudApi; readonly domainUrl: string; readonly id: string; readonly namespace: string; readonly user: User; request(fullUrlOrUrlPart: string, opts: any, json: boolean): any; } export interface RecordQueryResult { readonly done: boolean; readonly totalSize: number; readonly records: QueriedRecord[]; readonly nextRecordsUrl?: string; } export type Record = { readonly type: string; readonly fields: { [key: string]: unknown; }; readonly binaryFields?: { [key: string]: Buffer; }; }; export type QueriedRecord = Record & { readonly subQueryResults: { [sObjectName: string]: RecordQueryResult; }; }; export interface RecordModificationResult { readonly id: string; } export interface ReferenceId { toString(): string; toApiString(): string; } export type RecordForCreate = { type: string; fields: { [key: string]: unknown; }; binaryFields?: { [key: string]: Buffer; }; }; export type RecordForUpdate = { type: string; fields: { id: string; [key: string]: unknown; }; binaryFields?: { [key: string]: Buffer; }; }; export interface UnitOfWork { registerCreate(record: RecordForCreate): ReferenceId; registerUpdate(record: RecordForUpdate): ReferenceId; registerDelete(type: string, id: string): ReferenceId; } export interface DataApi { readonly accessToken: string; query(soql: string): Promise; queryMore(recordQueryResult: RecordQueryResult): Promise; create(record: RecordForCreate): Promise; update(update: RecordForUpdate): Promise; delete(type: string, id: string): Promise; newUnitOfWork(): UnitOfWork; commitUnitOfWork(unitOfWork: UnitOfWork): Promise>; } export interface User { readonly id: string; readonly username: string; } export interface Logger { error(message: string): void; warn(message: string): void; info(message: string): void; debug(message: string): void; trace(message: string): void; } export interface BulkApi { abort(jobReference: IngestJobReference | QueryJobReference): Promise; createDataTableBuilder(columns: [string, ...string[]]): DataTableBuilder; delete(jobReference: IngestJobReference | QueryJobReference): Promise; formatNullValue(): string; formatDate(value: Date): string; formatDateTime(value: Date): string; getFailedResults(jobReference: IngestJobReference): Promise; getInfo(jobReference: IngestJobReference | QueryJobReference): Promise; getMoreQueryResults(queryJobResults: QueryJobResults, getQueryJobResultsOptions?: GetQueryJobResultsOptions): Promise; getQueryResults(jobReference: QueryJobReference, getQueryJobResultsOptions?: GetQueryJobResultsOptions): Promise; getSuccessfulResults(jobReference: IngestJobReference): Promise; getUnprocessedRecords(jobReference: IngestJobReference): Promise; ingest(ingestJobOptions: IngestJobOptions): Promise>; query(options: QueryJobOptions): Promise; splitDataTable(dataTable: DataTable): DataTable[]; } export interface IngestJobOptions { dataTable: DataTable; object: string; operation: IngestJobOperation; externalIdFieldName?: string; assignmentRuleId?: string; } export interface QueryJobOptions { soql: string; operation?: QueryJobOperation; } export interface IngestJobReference { id: string; type: "ingestJob"; } export interface QueryJobReference { id: string; type: "queryJob"; } export interface GetQueryJobResultsOptions { maxRecords: number; } interface JobInfo { apexProcessingTime?: number; apiActiveProcessingTime?: number; apiVersion: number; columnDelimiter: "COMMA"; concurrencyMode: "Parallel"; contentType: "CSV"; contentUrl?: string; createdById: string; createdDate: string; id: string; jobType: "V2Ingest" | "V2Query"; lineEnding: "LF"; object: string; operation: IngestJobOperation | QueryOperation; retries?: number; state: IngestJobState | QueryJobState; systemModstamp: string; totalProcessingTime?: number; assignmentRuleId?: string; externalIdFieldName?: string; numberRecordsFailed?: number; numberRecordsProcessed?: number; } export interface IngestJobInfo extends JobInfo { jobType: "V2Ingest"; operation: IngestJobOperation; state: IngestJobState; assignmentRuleId?: string; externalIdFieldName?: string; numberRecordsFailed?: number; numberRecordsProcessed?: number; } export interface QueryJobInfo extends JobInfo { jobType: "V2Query"; operation: QueryJobOperation; state: QueryJobState; } export type IngestJobState = "Open" | "UploadComplete" | "InProgress" | "Aborted" | "JobComplete" | "Failed"; export type QueryJobState = "UploadComplete" | "InProgress" | "Aborted" | "JobComplete" | "Failed"; export type IngestJobOperation = "insert" | "delete" | "hardDelete" | "update" | "upsert"; export type QueryJobOperation = "query" | "queryAll"; export interface QueryJobResults { readonly dataTable: DataTable; readonly done: boolean; readonly locator?: string; readonly numberOfRecords: number; readonly jobReference: QueryJobReference; } export interface DataTable extends Array> { columns: [string, ...string[]]; } export type DataTableFieldValueExtractor = (data: T, columnName: string) => string; export interface DataTableBuilder { addRow(row: string[] | Map): DataTableBuilder; addRow(value: T, fieldValueExtractor: DataTableFieldValueExtractor): any; addRows(rows: Array>): DataTableBuilder; addRows(values: Array, fieldValueExtractor: DataTableFieldValueExtractor): DataTableBuilder; build(): DataTable; } export interface IngestJobFailure { error: BulkApiError; unprocessedRecords: DataTable; jobReference?: IngestJobReference; } export interface BulkApiError extends Error { errorCode: string; } export interface DataCloudActionEventSchema { schemaId: string; schema: string; } export interface DataObjectDataChgEvent { ActionDeveloperName: string; EventCreationDateTime: string; EventPrompt: string; EventPublishDateTime: string; EventSchemaVersion: string; EventType: string; EventUuid: string; Offset: string; PayloadCurrentValue: string; PayloadPrevValue: string; PayloadMetadata: string; ReplayId: string; SourceObjectDeveloperName: string; } export interface DataCloudActionEvent { creationDateTime: string; count: number; schemas: DataCloudActionEventSchema[]; events: DataObjectDataChgEvent[]; } export interface DataCloudQuery { sql: string; } export interface DataCloudQueryResponse { data: Array; startTime: string; endTime: string; rowCount: number; queryId: string; nextBatchId: string; done: boolean; metadata: any; } export interface DataCloudUpsertResponse { accepted: boolean; } export interface DataCloudApi { query(sql: DataCloudQuery): Promise; queryNextBatch(nextBatchId: string): Promise; upsert(name: string, objectName: string, data: any): Promise; }