const _ = require('lodash'); const non_admin_fields = ['number', 'street', 'query', 'category']; function hasAnyNonAdminFields(parsed_text) { return !_.isEmpty( _.intersection( _.keys(parsed_text), non_admin_fields)); } function _sanitize( raw, clean ){ // error & warning messages const messages = { errors: [], warnings: [] }; // bail early if analysis isn't admin-only if (_.isUndefined(clean.parsed_text) || hasAnyNonAdminFields(clean.parsed_text)) { return messages; } // the analysis is admin-only, so add errors or warnings if geonames was requested if (_.isEqual(clean.sources, ['geonames'])) { // if requested sources is only geonames, return an error messages.errors.push('input contains only administrative area data, ' + 'no results will be returned when sources=geonames'); } else if (_.includes(clean.sources, 'geonames')) { // if there are other sources besides geonames, return an warning messages.warnings.push('input contains only administrative area data, ' + 'geonames results will not be returned'); } return messages; } module.exports = () => ({ sanitize: _sanitize });