UNPKG

@shipengine/connect-carrier-api

Version:

This is the typescript/javascript definitions for carrier api

41 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildAppDeployment = void 0; const fs_1 = require("fs"); const metadata_1 = require("./metadata"); const native_rating_data_validator_1 = require("./native-rating-data-validator"); // This creates an object that is only used by the Connect CLI const buildAppDeployment = (definition) => { return { id: definition.Metadata.Id, getSupportedCountries: () => { const countries = []; const rootCountries = definition.Metadata.Carriers.flatMap((c) => c.DefaultSupportedCountries?.flatMap((sc) => sc.FromCountry)); const serviceCountries = definition.Metadata.Carriers.flatMap((c) => c.ShippingServices?.flatMap((s) => s.SupportedCountries).flatMap((sc) => sc?.FromCountry)); countries.push(...rootCountries); countries.push(...serviceCountries); return [...new Set(countries)].filter((c) => c !== undefined); }, validate: () => { const results = metadata_1.CarrierAppMetadataSchema.validate(definition.Metadata, { allowUnknown: true, abortEarly: false, }); if (results.error) { return results.error.details.map((detail) => `${detail.message}`); } const nativeRatingCarriers = definition.Metadata.Carriers.filter((carrier) => carrier.NativeRating && carrier.NativeRating.Path && (0, fs_1.existsSync)(carrier.NativeRating.Path)); const validationErrors = nativeRatingCarriers .map(native_rating_data_validator_1.validateRatingData) .filter(native_rating_data_validator_1.isDataValidationError) .flat(); if (validationErrors.length > 0) { return validationErrors.map((error) => `${error.message} \n Duplicate Keys: ${error.duplicateKeys?.join(', ')}`); } }, }; }; exports.buildAppDeployment = buildAppDeployment; //# sourceMappingURL=build-app-deployment.js.map