simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
76 lines • 7.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isUrlAbsolute = exports.appendEncodedUrlParameters = exports.encodeUrlParameters = exports.encodeUrlParameterValue = void 0;
/**Codifica el valor de un query parameter*/
function encodeUrlParameterValue(parameter) {
const type = typeof (parameter);
let str = null;
if (type == "number" || type == "boolean" || type == "string") {
str = parameter.toString();
}
if (parameter instanceof Date) {
str = parameter.toISOString();
}
if (str == null) {
throw new Error("All URL parameters must be a number, boolean, string, Date or null");
}
return encodeURIComponent(str);
}
exports.encodeUrlParameterValue = encodeUrlParameterValue;
/**Convierte un UrlParameters a un arreglo de key-values */
function urlParamsToKeyValuePair(urlParameters) {
//Aplanamos los key values que sean arreglos:
const keyValues = Object
.keys(urlParameters)
//Extraemos las claves y los valores
.map(x => ({ key: x, value: urlParameters[x] }))
//Todos los dejamos como arreglo o si no, en un arreglo de un elemento
.map(x => ({ key: x.key, array: Array.isArray(x.value) ? x.value : [x.value] }))
//Creamos key values repetidos por cada value en el arreglo
.map(x => x.array.map(y => ({ key: x.key, value: y })))
.reduce((a, b) => a.concat(b), [])
.filter(x => x.value != null)
.map(x => ({ key: x.key, value: x.value }));
return keyValues;
}
/**Devuelve una cadena con todos los parametros url, separador por &. El caracter ? inicial no se devuelve por esta función. Si no hay ningun
* parámetro que devolver se devuelve una cadena vacia
*/
function encodeUrlParameters(urlParameters) {
const keyValues = urlParamsToKeyValuePair(urlParameters);
const paramsStr = keyValues.filter(x => x.value != null).map(x => x.key + "=" + encodeUrlParameterValue(x.value)).join("&");
return paramsStr;
}
exports.encodeUrlParameters = encodeUrlParameters;
/**
* Pega los parametros ya codificados a una URL con el separador ?. Si parameters esta vacio devuelve la URL original tal cual
*/
function appendEncodedUrlParameters(url, paramStr) {
return paramStr ? (url + "?" + paramStr) : url;
}
exports.appendEncodedUrlParameters = appendEncodedUrlParameters;
/**Determina si una URL es absoluta */
function isUrlAbsolute(url) {
//Origen: https://stackoverflow.com/questions/10687099/how-to-test-if-a-url-string-is-absolute-or-relative
if (url.indexOf('//') === 0) {
return true;
} // URL is protocol-relative (= absolute)
if (url.indexOf('://') === -1) {
return false;
} // URL has no protocol (= relative)
if (url.indexOf('.') === -1) {
return false;
} // URL does not contain a dot, i.e. no TLD (= relative, possibly REST)
if (url.indexOf('/') === -1) {
return false;
} // URL does not contain a single slash (= relative)
if (url.indexOf(':') > url.indexOf('/')) {
return false;
} // The first colon comes after the first slash (= relative)
if (url.indexOf('://') < url.indexOf('.')) {
return true;
} // Protocol is defined before first dot (= absolute)
return false; // Anything else must be relative
}
exports.isUrlAbsolute = isUrlAbsolute;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3VybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSw0Q0FBNEM7QUFDNUMsU0FBZ0IsdUJBQXVCLENBQUMsU0FBNkI7SUFDakUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLElBQUksR0FBRyxHQUFrQixJQUFJLENBQUM7SUFDOUIsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxTQUFTLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtRQUMzRCxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQzlCO0lBRUQsSUFBSSxTQUFTLFlBQVksSUFBSSxFQUFFO1FBQzNCLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDakM7SUFFRCxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7S0FDekY7SUFFRCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFoQkQsMERBZ0JDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsdUJBQXVCLENBQWdDLGFBQXNCO0lBQ2xGLDZDQUE2QztJQUM3QyxNQUFNLFNBQVMsR0FBRyxNQUFNO1NBQ25CLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDcEIsb0NBQW9DO1NBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELHNFQUFzRTtTQUNyRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEYsMkRBQTJEO1NBQzFELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7U0FDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBMkIsRUFBRSxDQUFDLENBQUMsQ0FDaEU7SUFDTCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBZ0MsYUFBc0I7SUFDckYsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVILE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUM7QUFKRCxrREFJQztBQUdEOztHQUVHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsR0FBVyxFQUFFLFFBQWdCO0lBRXBFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNuRCxDQUFDO0FBSEQsZ0VBR0M7QUFFRCxzQ0FBc0M7QUFDdEMsU0FBZ0IsYUFBYSxDQUFDLEdBQUc7SUFDN0IsMEdBQTBHO0lBRTFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQztLQUFFLENBQUMsd0NBQXdDO0lBQ3RGLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0tBQUUsQ0FBQyxtQ0FBbUM7SUFDcEYsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7S0FBRSxDQUFDLHNFQUFzRTtJQUNySCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztLQUFFLENBQUMsbURBQW1EO0lBQ2xHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7S0FBRSxDQUFDLDJEQUEyRDtJQUN0SCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUUsQ0FBQyxvREFBb0Q7SUFDaEgsT0FBTyxLQUFLLENBQUMsQ0FBQyxpQ0FBaUM7QUFDbkQsQ0FBQztBQVZELHNDQVVDIn0=
;