UNPKG

@shipengine/connect-carrier-api

Version:

This is the typescript/javascript definitions for carrier api

52 lines (48 loc) 1.7 kB
import { DocumentDpi, DocumentTemplate, getDocuments, GetDocumentsRequest, } from '@shipengine/connect-runtime'; import { LabelPackage } from './models/labels/label-package'; import { CreateLabelRequest } from './requests'; import { CreateLabelResponse } from './responses'; export const getCustoms = async ( carrierName: string, request: CreateLabelRequest | GetDocumentsRequest, ): Promise<CreateLabelResponse> => { const requestWithCarrierName: GetDocumentsRequest = Object.assign( { document_dpi: DocumentDpi.Dpi_203 }, request, { carrier_name: carrierName, metadata: { carrier_code: 'customs' } }, ); return await getDocuments(requestWithCarrierName, <DocumentTemplate>{ api_code: 'customs' }); }; export const combineDocuments = ( labelsResponse: CreateLabelResponse, customsResponse: CreateLabelResponse, ): CreateLabelResponse => { if (customsResponse?.documents) { //concat documents labelsResponse.documents = labelsResponse?.documents?.concat(customsResponse?.documents); const mergeByTrackingNumber = ( labelPackages: LabelPackage[], customsPackages: LabelPackage[], ) => labelPackages.map((labels) => { const customs = customsPackages.find( (customs) => labels.tracking_number === customs.tracking_number, ); if (customs?.documents) { labels.documents = labels.documents?.concat(customs.documents); } return labels; }); if (labelsResponse.packages && customsResponse.packages) labelsResponse.packages = mergeByTrackingNumber( labelsResponse.packages, customsResponse.packages, ); } return labelsResponse; };