vintrace-sdk 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +241 -0
- package/dist/index.cjs +870 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1239 -0
- package/dist/index.d.ts +1239 -0
- package/dist/index.js +853 -0
- package/dist/index.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client/config.ts","../src/client/errors.ts","../src/validation/index.ts","../src/http/fetch.ts","../src/client/VintraceClient.ts","../src/http/pagination.ts"],"names":["ZodError"],"mappings":"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","file":"index.cjs","sourcesContent":["export interface VintraceClientOptions {\n timeout?: number;\n maxRetries?: number;\n parallelLimit?: number;\n validateRequests?: boolean;\n validateResponses?: boolean;\n}\n\nexport interface VintraceClientConfig {\n baseUrl: string;\n organization: string;\n token: string;\n options?: VintraceClientOptions;\n}\n\nexport const DEFAULT_OPTIONS: Required<VintraceClientOptions> = {\n timeout: 30000,\n maxRetries: 3,\n parallelLimit: 5,\n validateRequests: true,\n validateResponses: true,\n};\n","export class VintraceError extends Error {\n public readonly status: number;\n public readonly correlationId?: string;\n public readonly body?: unknown;\n\n constructor(message: string, status: number, correlationId?: string, body?: unknown) {\n super(message);\n this.name = 'VintraceError';\n this.status = status;\n this.correlationId = correlationId;\n this.body = body;\n Error.captureStackTrace(this, this.constructor);\n }\n}\n\nexport class VintraceAuthenticationError extends VintraceError {\n constructor(message = 'Authentication failed', correlationId?: string, body?: unknown) {\n super(message, 401, correlationId, body);\n this.name = 'VintraceAuthenticationError';\n }\n}\n\nexport class VintraceRateLimitError extends VintraceError {\n public readonly retryAfter?: number;\n\n constructor(\n message = 'Rate limit exceeded',\n retryAfter?: number,\n correlationId?: string,\n body?: unknown\n ) {\n super(message, 429, correlationId, body);\n this.name = 'VintraceRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport class VintraceNotFoundError extends VintraceError {\n constructor(message = 'Resource not found', correlationId?: string, body?: unknown) {\n super(message, 404, correlationId, body);\n this.name = 'VintraceNotFoundError';\n }\n}\n\nexport class VintraceValidationError extends VintraceError {\n constructor(message = 'Validation failed', status = 400, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceValidationError';\n }\n}\n\nexport class VintraceServerError extends VintraceError {\n constructor(message = 'Server error', status: number, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceServerError';\n }\n}\n\nexport class VintraceAggregateError extends VintraceError {\n public readonly errors: VintraceError[];\n\n constructor(errors: VintraceError[]) {\n const message =\n errors.length === 1\n ? errors[0].message\n : `${errors.length} errors occurred: ${errors.map((e) => e.message).join('; ')}`;\n super(\n message,\n errors[0]?.status ?? 0,\n errors[0]?.correlationId,\n errors.map((e) => e.body)\n );\n this.name = 'VintraceAggregateError';\n this.errors = errors;\n }\n}\n\nexport function isRetryableStatus(status: number): boolean {\n return [408, 429, 500, 502, 503, 504].includes(status);\n}\n","import { z, ZodError, ZodType, ZodIssue } from 'zod';\nimport { VintraceError } from '../client/errors';\nimport { VintraceResult } from '../types/result';\n\nexport class VintraceValidationSchemaError extends VintraceError {\n constructor(message: string, public readonly errors: ZodIssue[], correlationId?: string) {\n super(message, 422, correlationId);\n this.name = 'VintraceValidationSchemaError';\n }\n}\n\nexport function validateResponse<T>(\n schema: ZodType<T>,\n data: unknown,\n correlationId?: string\n): VintraceResult<T> {\n try {\n const validated = schema.parse(data);\n return [validated, null];\n } catch (error) {\n if (error instanceof ZodError) {\n const message = error.issues\n .map((e: ZodIssue) => `${e.path.join('.')}: ${e.message}`)\n .join('; ');\n return [null, new VintraceValidationSchemaError(message, error.issues, correlationId)];\n }\n return [null, new VintraceError('Response validation failed', 500, correlationId)];\n }\n}\n\nexport function validateRequest<T>(\n schema: ZodType<T>,\n data: unknown,\n correlationId?: string\n): VintraceResult<T> {\n try {\n const validated = schema.parse(data);\n return [validated, null];\n } catch (error) {\n if (error instanceof ZodError) {\n const message = error.issues\n .map((e: ZodIssue) => `${e.path.join('.')}: ${e.message}`)\n .join('; ');\n return [null, new VintraceValidationSchemaError(message, error.issues, correlationId)];\n }\n return [null, new VintraceError('Request validation failed', 500, correlationId)];\n }\n}\n\nexport { z };\nexport type { ZodType, ZodIssue };\n","import { DEFAULT_OPTIONS } from '../client/config';\nimport {\n VintraceError,\n VintraceAuthenticationError,\n VintraceRateLimitError,\n VintraceNotFoundError,\n VintraceValidationError,\n VintraceServerError,\n isRetryableStatus,\n} from '../client/errors';\nimport { VintraceResult } from '../types/result';\nimport { ZodType } from 'zod';\nimport { validateRequest, validateResponse } from '../validation';\n\nexport interface RequestOptions<T = unknown> {\n timeout?: number;\n maxRetries?: number;\n validateResponse?: boolean;\n validateRequest?: boolean;\n responseSchema?: ZodType<T>;\n requestSchema?: ZodType<unknown>;\n}\n\nfunction generateCorrelationId(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nfunction getRetryAfterFromHeaders(headers: Headers): number | undefined {\n const retryAfter = headers.get('retry-after');\n if (retryAfter) {\n const parsed = parseInt(retryAfter, 10);\n return isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}\n\nexport class VintraceFetchError extends VintraceError {\n constructor(message: string, status: number, correlationId?: string, body?: unknown) {\n super(message, status, correlationId, body);\n this.name = 'VintraceFetchError';\n }\n}\n\nexport async function vintraceFetch<T = unknown>(\n baseUrl: string,\n organization: string,\n token: string,\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n options: RequestOptions = {},\n body?: unknown\n): Promise<VintraceResult<T>> {\n const timeout = options.timeout ?? DEFAULT_OPTIONS.timeout;\n const maxRetries = options.maxRetries ?? DEFAULT_OPTIONS.maxRetries;\n\n const isBodylessMethod = method === 'GET' || method === 'DELETE';\n let url = `${baseUrl}/${organization}/api/${endpoint}`;\n const correlationId = generateCorrelationId();\n\n if (isBodylessMethod && body && typeof body === 'object') {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(body as Record<string, unknown>)) {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n }\n const qs = params.toString();\n if (qs) url = `${url}?${qs}`;\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n 'correlation-id': correlationId,\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n\n if (options.validateRequest && options.requestSchema && body) {\n const [validatedBody, requestError] = validateRequest(options.requestSchema, body, correlationId);\n if (requestError) {\n return [null, requestError];\n }\n body = validatedBody;\n }\n\n try {\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n method,\n headers,\n body: isBodylessMethod ? undefined : body ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n const responseCorrelationId = response.headers.get('correlation-id') || correlationId;\n\n if (!response.ok) {\n let responseBody: unknown;\n const contentType = response.headers.get('content-type');\n try {\n if (contentType?.includes('application/json')) {\n responseBody = await response.json();\n } else {\n responseBody = await response.text();\n }\n } catch {\n // ignore body parse failure\n }\n\n const retryAfter = getRetryAfterFromHeaders(response.headers);\n let error: VintraceError;\n\n if (response.status === 401) {\n error = new VintraceAuthenticationError(\n 'Authentication failed',\n responseCorrelationId,\n responseBody\n );\n } else if (response.status === 404) {\n error = new VintraceNotFoundError(\n 'Resource not found',\n responseCorrelationId,\n responseBody\n );\n } else if (response.status === 429) {\n error = new VintraceRateLimitError(\n 'Rate limit exceeded',\n retryAfter,\n responseCorrelationId,\n responseBody\n );\n } else if (response.status >= 400 && response.status < 500) {\n error = new VintraceValidationError(\n 'Request validation failed',\n response.status,\n responseCorrelationId,\n responseBody\n );\n } else if (response.status >= 500) {\n error = new VintraceServerError(\n 'Server error',\n response.status,\n responseCorrelationId,\n responseBody\n );\n } else {\n error = new VintraceError(\n `Request failed with status ${response.status}`,\n response.status,\n responseCorrelationId,\n responseBody\n );\n }\n\n if (error instanceof VintraceRateLimitError && attempt < maxRetries) {\n const delay = error.retryAfter ?? Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (error instanceof VintraceAuthenticationError) {\n return [null, error];\n }\n if (isRetryableStatus(error.status) && attempt < maxRetries) {\n const delay = Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n\n return [null, error];\n }\n\n if (response.status === 204) {\n return [null, null];\n }\n\n const data = (await response.json()) as T;\n\n if (options.validateResponse && options.responseSchema) {\n const [validatedData, responseError] = validateResponse(\n options.responseSchema,\n data,\n responseCorrelationId\n );\n if (responseError) {\n return [null, responseError];\n }\n return [validatedData as T, null];\n }\n\n return [data, null];\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof VintraceError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n if (attempt < maxRetries) {\n const delay = Math.pow(2, attempt) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n return [null, new VintraceError('Request timeout', 408, correlationId)];\n }\n return [null, new VintraceFetchError(error.message, 0, correlationId)];\n }\n\n return [null, new VintraceFetchError('Unknown error', 0, correlationId)];\n }\n }\n\n return [null, new VintraceError('Max retries exceeded', 0, correlationId)];\n } catch (error) {\n if (error instanceof VintraceError) {\n return [null, error];\n }\n return [\n null,\n new VintraceFetchError(\n error instanceof Error ? error.message : 'Unknown error',\n 0,\n correlationId\n ),\n ];\n }\n}\n","import { VintraceClientConfig, DEFAULT_OPTIONS, VintraceClientOptions } from './config';\nimport { vintraceFetch, RequestOptions } from '../http/fetch';\nimport { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from './errors';\nimport type {\n WorkOrderSearchResponse,\n WorkOrderDetail,\n AssignWorkResponse,\n SubmitWorkOrderStepsResponse,\n SalesOrder,\n SalesOrderResponse,\n SalesOrderUpdateResponse,\n Refund,\n RefundResponse,\n RefundUpdateResponse,\n Party,\n PartyResponse,\n PartyUpdateResponse,\n ProductListResponse,\n ProductResponse,\n ProductUpdateResponse,\n ProductUpdateData,\n ProductAnalysisResponse,\n ProductAnalysisParams,\n ProductCompositionResponse,\n} from '../validation/schemas';\n\nexport interface WorkOrderListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n assignedTo?: 'AVAILABLE_TO_ME' | 'ANYONE' | 'MINE_ONLY' | 'UNASSIGNED';\n workOrderState?: 'ANY' | 'IN_PROGRESS' | 'NOT_STARTED' | 'SUBMITTED' | 'INCOMPLETE';\n fromDate?: string;\n toDate?: string;\n countOnly?: boolean;\n wineryId?: number;\n}\n\nexport interface SalesOrderListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n status?: string;\n customerName?: string;\n startDate?: string;\n endDate?: string;\n invStartDate?: string;\n invEndDate?: string;\n externalTransactionId?: string;\n}\n\nexport interface RefundListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n status?: string;\n customerName?: string;\n startDate?: string;\n endDate?: string;\n salesOrderName?: string;\n}\n\nexport interface PartyListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n category?: 'All' | 'Individuals' | 'Organisations';\n}\n\nexport interface ProductListParams {\n max?: string;\n first?: string;\n startsWith?: string;\n}\n\nexport interface TransactionSearchParams {\n dateFrom?: string;\n dateTo?: string;\n ownerName?: string;\n batchName?: string;\n wineryName?: string;\n}\n\nexport interface IntakeOperationSearchParams {\n modifiedSince?: string;\n operationId?: number;\n processId?: number;\n deliveryDocket?: string;\n intakeDocket?: string;\n externalWeighTag?: string;\n externalSystemBlocksOnly?: boolean;\n externalBlockId?: string;\n blockId?: number;\n blockName?: string;\n vineyardId?: number;\n vineyardName?: string;\n wineryId?: number;\n wineryName?: string;\n growerType?: string;\n growerId?: number;\n growerName?: string;\n ownerId?: number;\n ownerName?: string;\n vintage?: string;\n recordedAfter?: string;\n recordedBefore?: string;\n customAdapter?: string;\n maxResults?: number;\n firstResult?: number;\n}\n\nexport interface SampleOperationSearchParams {\n modifiedSince?: string;\n operationId?: number;\n processId?: number;\n externalSystemBlocksOnly?: boolean;\n externalBlockId?: string;\n blockId?: number;\n blockName?: string;\n vineyardId?: number;\n vineyardName?: string;\n growerId?: number;\n growerName?: string;\n ownerId?: number;\n ownerName?: string;\n vintage?: string;\n recordedAfter?: string;\n recordedBefore?: string;\n customAdapter?: string;\n maxResults?: number;\n firstResult?: number;\n}\n\nexport interface InventoryListParams {\n max?: string;\n first?: string;\n date?: string;\n stockType?: string;\n ownerName?: string;\n showEquivalentType?: string;\n breakoutCosting?: boolean;\n disableCommitHeaders?: boolean;\n}\n\nexport interface SearchListParams {\n type: string;\n first?: string;\n startsWith?: string;\n exactMatch?: boolean;\n}\n\nexport interface MrpStockHistoryParams {\n firstResult: number;\n maxResult: number;\n}\n\nexport interface MrpStockNotesParams {\n firstResult?: number;\n maxResult?: number;\n}\n\nexport interface VesselDetailsReportParams {\n limit?: number;\n offset?: number;\n asAtDate?: number;\n businessUnit?: string;\n batch?: string;\n vessel?: string;\n owner?: string;\n extraFields?: string;\n vesselId?: number;\n productId?: number;\n wineryId?: number;\n wineryName?: string;\n vesselType?: 'TANK' | 'BIN' | 'BARREL' | 'BARREL_GROUP' | 'BIN_GROUP' | 'PRESS' | 'TANKER';\n}\n\nexport class VintraceClient {\n public readonly baseUrl: string;\n public readonly organization: string;\n public readonly token: string;\n public readonly options: Required<VintraceClientOptions>;\n\n public readonly v6: VintraceV6Api;\n public readonly v7: VintraceV7Api;\n\n constructor(config: VintraceClientConfig) {\n this.baseUrl = config.baseUrl;\n this.organization = config.organization;\n this.token = config.token;\n this.options = { ...DEFAULT_OPTIONS, ...config.options };\n\n this.v6 = new VintraceV6Api(this);\n this.v7 = new VintraceV7Api(this);\n }\n\n public request<T>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n options?: RequestOptions,\n body?: unknown\n ): Promise<VintraceResult<T>> {\n return vintraceFetch<T>(\n this.baseUrl,\n this.organization,\n this.token,\n endpoint,\n method,\n {\n timeout: options?.timeout ?? this.options.timeout,\n maxRetries: options?.maxRetries ?? this.options.maxRetries,\n validateRequest: options?.validateRequest ?? this.options.validateRequests,\n validateResponse: options?.validateResponse ?? this.options.validateResponses,\n },\n body\n );\n }\n}\n\nclass VintraceV6Api {\n constructor(private client: VintraceClient) {}\n\n get workOrders() {\n return new WorkOrdersClient(this.client);\n }\n\n get salesOrders() {\n return new SalesOrdersClient(this.client);\n }\n\n get refunds() {\n return new RefundsClient(this.client);\n }\n\n get parties() {\n return new PartiesClient(this.client);\n }\n\n get products() {\n return new ProductsClient(this.client);\n }\n\n get transactions() {\n return new TransactionsClient(this.client);\n }\n\n get intakeOperations() {\n return new IntakeOperationsClient(this.client);\n }\n\n get sampleOperations() {\n return new SampleOperationsClient(this.client);\n }\n\n get blockAssessments() {\n return new BlockAssessmentsClient(this.client);\n }\n\n get mrpStock() {\n return new MrpStockClient(this.client);\n }\n\n get inventory() {\n return new InventoryClient(this.client);\n }\n\n get search() {\n return new SearchClient(this.client);\n }\n\n get productAnalysis() {\n return new ProductAnalysisClient(this.client);\n }\n\n get productComposition() {\n return new ProductCompositionClient(this.client);\n }\n}\n\nclass VintraceV7Api {\n constructor(private client: VintraceClient) {}\n\n get blocks() {\n return new BlocksClient(this.client);\n }\n\n get bookings() {\n return new BookingsClient(this.client);\n }\n\n get vesselDetailsReport() {\n return new VesselDetailsReportClient(this.client);\n }\n}\n\nclass WorkOrdersClient {\n constructor(private client: VintraceClient) {}\n\n getAll(params?: WorkOrderListParams): Promise<VintraceResult<WorkOrderSearchResponse>> {\n return this.client.request<WorkOrderSearchResponse>('v6/workorders/list', 'GET', {}, params);\n }\n\n get(id: string): Promise<VintraceResult<WorkOrderDetail>> {\n return this.client.request<WorkOrderDetail>(`v6/workorders/${id}`, 'GET');\n }\n\n getByCode(code: string): Promise<VintraceResult<WorkOrderDetail>> {\n return this.client.request<WorkOrderDetail>('v6/workorders', 'GET', {}, { code });\n }\n\n getJob(jobId: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/workorders/jobs/${jobId}`, 'GET');\n }\n\n assign(workOrderId: number): Promise<VintraceResult<AssignWorkResponse>> {\n return this.client.request<AssignWorkResponse>('v6/workorders/assign', 'POST', {}, { workOrderId });\n }\n\n submit(data: { jobId: number; submitType?: string; fields?: { fieldId: string; value?: string }[] }): Promise<VintraceResult<SubmitWorkOrderStepsResponse>> {\n return this.client.request<SubmitWorkOrderStepsResponse>('v6/workorders/submit', 'POST', {}, data);\n }\n\n getMany<T>(ids: string[]): Promise<VintraceResult<T[]>> {\n return this.batchGet<T>(ids, (id) => this.get(id) as Promise<VintraceResult<T>>);\n }\n\n private async batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n ): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass SalesOrdersClient {\n constructor(private client: VintraceClient) {}\n\n getAll(params?: SalesOrderListParams): Promise<VintraceResult<SalesOrderResponse>> {\n return this.client.request<SalesOrderResponse>('v6/sales-order/list', 'GET', {}, params);\n }\n\n get(id: string): Promise<VintraceResult<SalesOrder>> {\n return this.client.request<SalesOrder>(`v6/sales-order/${id}`, 'GET');\n }\n\n getByCode(code: string): Promise<VintraceResult<SalesOrder>> {\n return this.client.request<SalesOrder>('v6/sales-order', 'GET', {}, { code });\n }\n\n create(data: Partial<SalesOrder>): Promise<VintraceResult<SalesOrderUpdateResponse>> {\n return this.client.request<SalesOrderUpdateResponse>('v6/sales-order', 'POST', {}, data);\n }\n\n update(id: string, data: Partial<SalesOrder>): Promise<VintraceResult<SalesOrderUpdateResponse>> {\n return this.client.request<SalesOrderUpdateResponse>(`v6/sales-order/${id}`, 'PUT', {}, data);\n }\n\n getMany<T>(ids: string[]): Promise<VintraceResult<T[]>> {\n return this.batchGet<T>(ids, (id) => this.get(id) as Promise<VintraceResult<T>>);\n }\n\n private async batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n ): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass RefundsClient {\n constructor(private client: VintraceClient) {}\n\n getAll(params?: RefundListParams): Promise<VintraceResult<RefundResponse>> {\n return this.client.request<RefundResponse>('v6/refund/list', 'GET', {}, params);\n }\n\n get(id: string): Promise<VintraceResult<Refund>> {\n return this.client.request<Refund>(`v6/refund/${id}`, 'GET');\n }\n\n getByCode(code: string): Promise<VintraceResult<Refund>> {\n return this.client.request<Refund>('v6/refund', 'GET', {}, { code });\n }\n\n create(data: Partial<Refund>): Promise<VintraceResult<RefundUpdateResponse>> {\n return this.client.request<RefundUpdateResponse>('v6/refund', 'POST', {}, data);\n }\n\n update(id: string, data: Partial<Refund>): Promise<VintraceResult<RefundUpdateResponse>> {\n return this.client.request<RefundUpdateResponse>(`v6/refund/${id}`, 'PUT', {}, data);\n }\n\n getMany<T>(ids: string[]): Promise<VintraceResult<T[]>> {\n return this.batchGet<T>(ids, (id) => this.get(id) as Promise<VintraceResult<T>>);\n }\n\n private async batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n ): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass PartiesClient {\n constructor(private client: VintraceClient) {}\n\n getAll(params?: PartyListParams): Promise<VintraceResult<PartyResponse>> {\n return this.client.request<PartyResponse>('v6/party/list', 'GET', {}, params);\n }\n\n get(id: string): Promise<VintraceResult<Party>> {\n return this.client.request<Party>(`v6/party/${id}`, 'GET');\n }\n\n getByName(name: string): Promise<VintraceResult<Party>> {\n return this.client.request<Party>('v6/party', 'GET', {}, { name });\n }\n\n create(data: Partial<Party>): Promise<VintraceResult<PartyUpdateResponse>> {\n return this.client.request<PartyUpdateResponse>('v6/party', 'POST', {}, data);\n }\n\n getMany<T>(ids: string[]): Promise<VintraceResult<T[]>> {\n return this.batchGet<T>(ids, (id) => this.get(id) as Promise<VintraceResult<T>>);\n }\n\n private async batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n ): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass ProductsClient {\n constructor(private client: VintraceClient) {}\n\n getAll(params?: ProductListParams): Promise<VintraceResult<ProductListResponse>> {\n return this.client.request<ProductListResponse>('v6/products/list', 'GET', {}, params);\n }\n\n get(id: string): Promise<VintraceResult<ProductResponse>> {\n return this.client.request<ProductResponse>(`v6/products/${id}`, 'GET');\n }\n\n getMany<T>(ids: string[]): Promise<VintraceResult<T[]>> {\n return this.batchGet<T>(ids, (id) => this.get(id) as Promise<VintraceResult<T>>);\n }\n\n create(data: unknown): Promise<VintraceResult<ProductResponse>> {\n return this.client.request<ProductResponse>('v6/products', 'POST', {}, data);\n }\n\n update(id: string, data: unknown): Promise<VintraceResult<ProductUpdateResponse>> {\n return this.client.request<ProductUpdateResponse>(`v6/products/${id}`, 'PUT', {}, data);\n }\n\n updateFields(data: ProductUpdateData): Promise<VintraceResult<ProductUpdateResponse>> {\n return this.client.request<ProductUpdateResponse>('v6/product-update', 'POST', {}, data);\n }\n\n private async batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n ): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass BlocksClient {\n constructor(private client: VintraceClient) {}\n\n getAll(params?: Record<string, unknown>) {\n return this.client.request<unknown>('v7/harvest/blocks', 'GET', {}, params);\n }\n\n get(id: string) {\n return this.client.request<unknown>(`v7/harvest/blocks/${id}`, 'GET');\n }\n\n getMany<T>(ids: string[]): Promise<VintraceResult<T[]>> {\n return this.batchGet<T>(ids, (id) => this.get(id) as Promise<VintraceResult<T>>);\n }\n\n post(data: unknown) {\n return this.client.request<unknown>('v7/harvest/blocks', 'POST', {}, data);\n }\n\n patch(id: string, data: unknown) {\n return this.client.request<unknown>(`v7/harvest/blocks/${id}`, 'PATCH', {}, data);\n }\n\n private async batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>\n ): Promise<VintraceResult<T[]>> {\n const results = await Promise.allSettled(ids.map((id) => fetchFn(id)));\n const errors: VintraceError[] = [];\n const data: T[] = [];\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass BookingsClient {\n constructor(private client: VintraceClient) {}\n\n post(data: unknown) {\n return this.client.request<unknown>('v7/operation/bookings', 'POST', {}, data);\n }\n\n deactivate(id: string) {\n return this.client.request<unknown>(`v7/operation/bookings/${id}/deactivation`, 'POST');\n }\n}\n\nclass VesselDetailsReportClient {\n constructor(private client: VintraceClient) {}\n\n get(params?: VesselDetailsReportParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v7/report/vessel-details-report', 'GET', {}, params);\n }\n}\n\nclass TransactionsClient {\n constructor(private client: VintraceClient) {}\n\n search(params?: TransactionSearchParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/transaction/search', 'GET', {}, params);\n }\n}\n\nclass IntakeOperationsClient {\n constructor(private client: VintraceClient) {}\n\n search(params?: IntakeOperationSearchParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/intake-operations/search', 'GET', {}, params);\n }\n}\n\nclass SampleOperationsClient {\n constructor(private client: VintraceClient) {}\n\n search(params?: SampleOperationSearchParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/sample-operations/search', 'GET', {}, params);\n }\n}\n\nclass BlockAssessmentsClient {\n constructor(private client: VintraceClient) {}\n\n create(data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/block-assessments/create', 'POST', {}, data);\n }\n}\n\nclass MrpStockClient {\n constructor(private client: VintraceClient) {}\n\n get(id: string, expand?: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}`, 'GET', {}, expand ? { expand } : undefined);\n }\n\n getFields(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/fields`, 'GET');\n }\n\n getDistributions(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/distributions`, 'GET');\n }\n\n getHistoryItems(id: string, params: MrpStockHistoryParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/history-items`, 'GET', {}, params);\n }\n\n getRawComponents(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/raw-components`, 'GET');\n }\n\n getNotes(id: string, params?: MrpStockNotesParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes`, 'GET', {}, params);\n }\n\n postNote(id: string, data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes`, 'POST', {}, data);\n }\n\n getNote(id: string, noteId: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes/${noteId}`, 'GET');\n }\n\n updateNote(id: string, noteId: string, data: unknown): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/notes/${noteId}/updates`, 'POST', {}, data);\n }\n\n getBulkInfo(id: string): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>(`v6/mrp/stock/${id}/bulk-info`, 'GET');\n }\n}\n\nclass InventoryClient {\n constructor(private client: VintraceClient) {}\n\n getAll(params?: InventoryListParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/inventory', 'GET', {}, params);\n }\n}\n\nclass SearchClient {\n constructor(private client: VintraceClient) {}\n\n list(params: SearchListParams): Promise<VintraceResult<unknown>> {\n return this.client.request<unknown>('v6/search/list', 'GET', {}, params);\n }\n}\n\nclass ProductAnalysisClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get analysis data for a product by its numeric ID.\n * The endpoint path matches the `productAnalysisEndpoint` field returned on a Product.\n * e.g. GET v6/product-analysis/{productId}\n */\n get(productId: number, params?: ProductAnalysisParams): Promise<VintraceResult<ProductAnalysisResponse>> {\n return this.client.request<ProductAnalysisResponse>(\n `v6/product-analysis/${productId}`,\n 'GET',\n {},\n params\n );\n }\n\n /**\n * Fetch analysis for multiple product IDs in parallel.\n * Respects the client's `parallelLimit` option (default 5 concurrent).\n * Returns `VintraceAggregateError` if any individual request fails.\n */\n getMany(\n productIds: number[],\n params?: ProductAnalysisParams\n ): Promise<VintraceResult<ProductAnalysisResponse[]>> {\n return this.batchGet(productIds, (id) => this.get(id, params));\n }\n\n private async batchGet(\n ids: number[],\n fetchFn: (id: number) => Promise<VintraceResult<ProductAnalysisResponse>>\n ): Promise<VintraceResult<ProductAnalysisResponse[]>> {\n const limit = this.client.options.parallelLimit;\n const errors: VintraceError[] = [];\n const data: ProductAnalysisResponse[] = [];\n\n for (let i = 0; i < ids.length; i += limit) {\n const chunk = ids.slice(i, i + limit);\n const results = await Promise.allSettled(chunk.map((id) => fetchFn(id)));\n\n for (const result of results) {\n if (result.status === 'fulfilled') {\n const [item, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (item !== null) {\n data.push(item);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [data, null];\n }\n}\n\nclass ProductCompositionClient {\n constructor(private client: VintraceClient) {}\n\n /**\n * Get composition (blend components) for a product by its numeric ID.\n * The endpoint path matches the `productCompositionEndpoint` field returned on a Product.\n * e.g. GET v6/product-composition/{productId}\n */\n get(productId: number): Promise<VintraceResult<ProductCompositionResponse>> {\n return this.client.request<ProductCompositionResponse>(\n `v6/product-composition/${productId}`,\n 'GET'\n );\n }\n}\n","import { VintraceResult } from '../types/result';\nimport { VintraceError, VintraceAggregateError } from '../client/errors';\n\nexport interface PaginatedResponse<T> {\n totalResults: number;\n offset: number;\n limit: number;\n first: string | null;\n previous: string | null;\n next: string | null;\n last: string | null;\n results: T[];\n}\n\nexport interface PaginationOptions {\n limit?: number;\n concurrency?: number;\n}\n\nexport async function* paginate<T>(\n fetchFn: (offset: number, limit: number) => Promise<VintraceResult<PaginatedResponse<T>>>,\n options: PaginationOptions = {}\n): AsyncGenerator<T> {\n const limit = options.limit ?? 100;\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n const [response, error] = await fetchFn(offset, limit);\n\n if (error) {\n throw error;\n }\n\n if (response === null) {\n break;\n }\n\n for (const item of response.results) {\n yield item;\n }\n\n offset += limit;\n hasMore = response.next !== null;\n }\n}\n\nexport async function batchGet<T>(\n ids: string[],\n fetchFn: (id: string) => Promise<VintraceResult<T>>,\n options: { concurrency?: number } = {}\n): Promise<VintraceResult<T[]>> {\n const concurrency = options.concurrency ?? 5;\n const errors: VintraceError[] = [];\n const results: T[] = [];\n\n for (let i = 0; i < ids.length; i += concurrency) {\n const batch = ids.slice(i, i + concurrency);\n const batchResults = await Promise.allSettled(batch.map((id) => fetchFn(id)));\n\n for (const result of batchResults) {\n if (result.status === 'fulfilled') {\n const [data, error] = result.value;\n if (error) {\n errors.push(error);\n } else if (data !== null) {\n results.push(data);\n }\n } else {\n errors.push(new VintraceError(result.reason?.message ?? 'Unknown error', 0));\n }\n }\n }\n\n if (errors.length > 0) {\n return [null, new VintraceAggregateError(errors)];\n }\n\n return [results, null];\n}\n"]}
|