UNPKG

@commercelayer/sdk-utils

Version:
103 lines (99 loc) 4.02 kB
import { HeadersObj, ResourceId, ResourceCreate, ResourceUpdate, Resource, ListResponse, ApiError, ResourceTypeLock, QueryParams, ResourcesConfig, SdkError, CreatableResourceType, UpdatableResourceType, DeletableResourceType, ListableResourceType, QueryParamsList, RetrievableResourceType } from '@commercelayer/sdk'; type ApiEnv = 'live' | 'test'; type RateLimitHeader = { count?: number; period?: number; interval: number; limit: number; remaining: number; }; type RateLimitInfo = { limit: number; interval: number; delay: number; requests?: number; }; declare const headerRateLimits: (headers?: HeadersObj) => RateLimitHeader; declare const computeRateLimits: (rateLimit: RateLimitHeader, resourceType: string | Task, allRequests?: number | Task[], env?: ApiEnv) => RateLimitInfo; type TaskOperation = 'retrieve' | 'list' | 'create' | 'update' | 'delete'; type TaskResourceParam = ResourceId | ResourceCreate | ResourceUpdate; type TaskResourceResult = Resource | ListResponse<Resource>; type TaskResult = TaskResourceResult | undefined; declare class InvalidTokenError extends Error { readonly cause: ApiError; constructor(error: ApiError); } type SuccessCallback = (output: TaskResult, task: Task) => Promise<void> | void; type FailureCallback = (error: SdkError, task: Task) => Promise<boolean> | boolean; type TokenCallback = (error: InvalidTokenError, task: Task) => Promise<string> | string; type PrepareResourceResult = TaskResourceParam | undefined; type PrepareResourceCallback = (resource: TaskResourceParam, last: TaskResourceResult) => Promise<PrepareResourceResult> | PrepareResourceResult; type TemplateTask = Partial<Task>; type CreateTask = CRUDTask & { resourceType: CreatableResourceType; operation: 'create'; resource: ResourceCreate; }; type UpdateTask = CRUDTask & { resourceType: UpdatableResourceType; operation: 'update'; resource: ResourceUpdate; }; type DeleteTask = CRUDTask & { resourceType: DeletableResourceType; operation: 'delete'; resource: ResourceId; }; type ListTask = { resourceType: ListableResourceType; operation: 'list'; params?: QueryParamsList; }; type RetrieveTask = CRUDTask & { resourceType: RetrievableResourceType; operation: 'retrieve'; resource: ResourceId; }; type CRUDTask = { resourceType: ResourceTypeLock; operation: 'create' | 'retrieve' | 'update' | 'delete'; resource: Record<string, any>; prepareResource?: PrepareResourceCallback; }; type Task = { label?: string; resourceType: ResourceTypeLock; operation: TaskOperation; params?: QueryParams; options?: ResourcesConfig; executed?: boolean; onSuccess?: { callback?: SuccessCallback; result?: TaskResult; }; onFailure?: { error?: SdkError; haltOnError?: boolean; errorHandler?: FailureCallback; }; } & (CreateTask | UpdateTask | DeleteTask | ListTask | RetrieveTask); type BatchResult = { startedAt: Date; finishedAt?: Date; }; type BatchOptions = { haltOnError?: boolean; refreshToken?: TokenCallback; }; type Batch = { tasks: Task[]; rateLimits?: Partial<Record<ResourceTypeLock, Partial<Record<TaskOperation, RateLimitInfo>>>>; running?: boolean; runningTask?: string; options?: BatchOptions; }; declare const executeBatch: (batch: Batch) => Promise<BatchResult>; declare const batch: { execute: (batch: Batch) => Promise<BatchResult>; }; export { type Batch as B, type FailureCallback as F, InvalidTokenError as I, type PrepareResourceResult as P, type RateLimitHeader as R, type SuccessCallback as S, type Task as T, type BatchOptions as a, batch as b, type TaskResult as c, type TemplateTask as d, executeBatch as e, type RateLimitInfo as f, computeRateLimits as g, headerRateLimits as h, type TaskOperation as i, type TaskResourceParam as j, type TaskResourceResult as k, type TokenCallback as l, type PrepareResourceCallback as m, type BatchResult as n };