UNPKG

simple-pure-utils

Version:

Funciones puras para manipulación de objetos, arreglos, promesas y observables

76 lines 7.08 kB
"use strict"; 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=