UNPKG

@heuristical/trackit

Version:

This module allows you to connect to many shipping carriers like UPS and FedEx and download tracking data for your packages in a common schema

146 lines 5.78 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ShipperClient = exports.STATUS_TYPES = void 0; /* eslint-disable standard/no-callback-literal, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS101: Remove unnecessary use of Array.from * DS102: Remove unnecessary code created because of implicit returns * DS206: Consider reworking classes to avoid initClass * DS207: Consider shorter variations of null checks * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ const change_case_1 = require("change-case"); const request_1 = __importDefault(require("request")); const date_fns_1 = require("date-fns"); // import moment from 'moment-timezone'; var STATUS_TYPES; (function (STATUS_TYPES) { STATUS_TYPES[STATUS_TYPES["UNKNOWN"] = 0] = "UNKNOWN"; STATUS_TYPES[STATUS_TYPES["SHIPPING"] = 1] = "SHIPPING"; STATUS_TYPES[STATUS_TYPES["EN_ROUTE"] = 2] = "EN_ROUTE"; STATUS_TYPES[STATUS_TYPES["OUT_FOR_DELIVERY"] = 3] = "OUT_FOR_DELIVERY"; STATUS_TYPES[STATUS_TYPES["DELIVERED"] = 4] = "DELIVERED"; STATUS_TYPES[STATUS_TYPES["DELAYED"] = 5] = "DELAYED"; })(STATUS_TYPES = exports.STATUS_TYPES || (exports.STATUS_TYPES = {})); class ShipperClient { presentPostalCode(rawCode) { rawCode = rawCode != null ? rawCode.trim() : undefined; if (/^\d{9}$/.test(rawCode)) { return `${rawCode.slice(0, 5)}-${rawCode.slice(5)}`; } else { return rawCode; } } presentLocationString(location) { const newFields = []; for (let field of Array.from((location === null || location === void 0 ? void 0 : location.split(',')) || [])) { field = field.trim(); if (field.length > 2) { field = change_case_1.titleCase(field); } newFields.push(field); } return newFields.join(', '); } presentLocation({ city, stateCode, countryCode, postalCode }) { let address; if (city != null ? city.length : undefined) { city = change_case_1.titleCase(city); } if (stateCode != null ? stateCode.length : undefined) { stateCode = stateCode.trim(); if (stateCode.length > 3) { stateCode = change_case_1.titleCase(stateCode); } if (city != null ? city.length : undefined) { city = city.trim(); address = `${city}, ${stateCode}`; } else { address = stateCode; } } else { address = city; } postalCode = this.presentPostalCode(postalCode); if (countryCode != null ? countryCode.length : undefined) { countryCode = countryCode.trim(); if (countryCode.length > 3) { countryCode = change_case_1.titleCase(countryCode); } if ((address != null ? address.length : undefined)) { address = countryCode !== 'US' ? `${address}, ${countryCode}` : address; } else { address = countryCode; } } if (postalCode != null ? postalCode.length : undefined) { address = (address != null) ? `${address} ${postalCode}` : postalCode; } return address; } presentResponse(response, requestData, cb) { return this.validateResponse(response, (err, shipment) => { let adjustedEta; if ((err != null) || (shipment == null)) { return cb(err); } const { activities, status } = this.getActivitiesAndStatus(shipment); const eta = this.getEta(shipment); if (eta && date_fns_1.startOfDay(eta) === eta) { adjustedEta = date_fns_1.endOfDay(eta); } if (adjustedEta === null) { adjustedEta = eta; } const presentedResponse = { eta: adjustedEta || eta, service: this.getService(shipment), weight: this.getWeight(shipment), destination: this.getDestination(shipment), activities, status, raw: undefined, request: undefined }; if ((requestData != null ? requestData.raw : undefined) != null) { if (requestData.raw) { presentedResponse.raw = response; } } else { if (this.options != null ? this.options.raw : undefined) { presentedResponse.raw = response; } } presentedResponse.request = requestData; return cb(null, presentedResponse); }); } requestData(requestData, cb) { const opts = this.requestOptions(requestData); opts.timeout = (requestData != null ? requestData.timeout : undefined) || (this.options != null ? this.options.timeout : undefined); return request_1.default(opts, (err, response, body) => { if ((body == null) || (err != null)) { return cb(err); } if (response.statusCode !== 200) { return cb(`response status ${response.statusCode}`); } return this.presentResponse(body, requestData, cb); }); } } exports.ShipperClient = ShipperClient; //# sourceMappingURL=shipper.js.map