UNPKG

simple-pure-utils

Version:

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

69 lines 6.64 kB
/**Codifica el valor de un query parameter*/ export 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); } /**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 */ export 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; } /** * Pega los parametros ya codificados a una URL con el separador ?. Si parameters esta vacio devuelve la URL original tal cual */ export function appendEncodedUrlParameters(url, paramStr) { return paramStr ? (url + "?" + paramStr) : url; } /**Determina si una URL es absoluta */ export 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 } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3VybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSw0Q0FBNEM7QUFDNUMsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFNBQTZCO0lBQ2pFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxJQUFJLEdBQUcsR0FBa0IsSUFBSSxDQUFDO0lBQzlCLElBQUksSUFBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxRQUFRLEVBQUU7UUFDM0QsR0FBRyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUM5QjtJQUVELElBQUksU0FBUyxZQUFZLElBQUksRUFBRTtRQUMzQixHQUFHLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ2pDO0lBRUQsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO0tBQ3pGO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsdUJBQXVCLENBQWdDLGFBQXNCO0lBQ2xGLDZDQUE2QztJQUM3QyxNQUFNLFNBQVMsR0FBRyxNQUFNO1NBQ25CLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDcEIsb0NBQW9DO1NBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELHNFQUFzRTtTQUNyRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEYsMkRBQTJEO1NBQzFELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7U0FDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBMkIsRUFBRSxDQUFDLENBQUMsQ0FDaEU7SUFDTCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQWdDLGFBQXNCO0lBQ3JGLE1BQU0sU0FBUyxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1SCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBR0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsR0FBVyxFQUFFLFFBQWdCO0lBRXBFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNuRCxDQUFDO0FBRUQsc0NBQXNDO0FBQ3RDLE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBRztJQUM3QiwwR0FBMEc7SUFFMUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUUsQ0FBQyx3Q0FBd0M7SUFDdEYsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7S0FBRSxDQUFDLG1DQUFtQztJQUNwRixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztLQUFFLENBQUMsc0VBQXNFO0lBQ3JILElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0tBQUUsQ0FBQyxtREFBbUQ7SUFDbEcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztLQUFFLENBQUMsMkRBQTJEO0lBQ3RILElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7S0FBRSxDQUFDLG9EQUFvRDtJQUNoSCxPQUFPLEtBQUssQ0FBQyxDQUFDLGlDQUFpQztBQUNuRCxDQUFDIn0=