@goparrot/geocoder
Version:
TypeScript GeoCoder, node geocoding library, supports google maps, mapquest, here, open street map, tom tom
54 lines • 2.31 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WorldCountryStateUtil = void 0;
const class_transformer_1 = require("class-transformer");
const class_validator_1 = require("class-validator");
const country_states_json_1 = __importDefault(require("../../data/country-states/country-states.json"));
const world_country_state_1 = require("./world-country-state");
const world_country_state_query_1 = require("./world-country-state-query");
class WorldCountryStateUtil {
/**
* Returns result only if all fields matched
*/
static match(state, filters) {
if (state.countryCode.toLowerCase() === filters.countryCode.toLowerCase() &&
((filters.stateCode && state.stateCode.toLowerCase() === filters.stateCode.toLowerCase()) ||
(filters.name && state.name.toLowerCase() === filters.name.toLowerCase()))) {
return true;
}
return false;
}
static async find(_query) {
const query = (0, class_transformer_1.plainToInstance)(world_country_state_query_1.WorldCountryStateQuery, _query);
const keys = Object.keys(query);
// clear undefined/empty values
for (const key of keys) {
if (!query[key]) {
delete query[key];
}
}
try {
await (0, class_validator_1.validateOrReject)(query, {
whitelist: true,
forbidNonWhitelisted: true,
validationError: { target: false, value: false },
});
}
catch (err) {
return;
}
const stateData = country_states_json_1.default.find((plainState) => {
const state = (0, class_transformer_1.plainToInstance)(world_country_state_1.WorldCountryState, plainState);
return WorldCountryStateUtil.match(state, query);
});
if (!stateData) {
return;
}
return (0, class_transformer_1.plainToInstance)(world_country_state_1.WorldCountryState, stateData);
}
}
exports.WorldCountryStateUtil = WorldCountryStateUtil;
//# sourceMappingURL=world-country-state-util.js.map
;