@shipengine/connect-carrier-api
Version:
This is the typescript/javascript definitions for carrier api
41 lines • 2.1 kB
JavaScript
;
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