UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 1.28 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.asUrl=exports.urlLiteral=exports.decodeUrlQuery=exports.encodeUrlQuery=void 0;const from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),Iterable_1=require("../Iterable"),Object_1=require("./Object");function encodeUrlQuery(e){return(0,Iterable_1.join)((0,from_1.from)(Object.entries(e)).pipe((0,map_1.map)(e=>e.map(String)),(0,map_1.map)(e=>e.map(encodeURIComponent)),(0,map_1.map)(e=>e.join("="))),"&")}function decodeUrlQuery(e){return(0,Object_1.fromEntries)((0,from_1.from)(e.split("&")).pipe((0,map_1.map)(e=>e.split("=")),(0,map_1.map)(e=>e.map(decodeURIComponent)),(0,map_1.map)(([e,...r])=>[e,r.join("=")])))}exports.encodeUrlQuery=encodeUrlQuery,exports.decodeUrlQuery=decodeUrlQuery;const urlLiteralSymbol=Symbol("url-literal");function urlLiteral(e){return{[urlLiteralSymbol]:e}}function asUrl(e,...r){const t=[e[0]];for(let o=0;o<r.length;o++){const l=r[o],i=e[o+1],n=isLiteral(l)?l[urlLiteralSymbol]:encodeURIComponent(String(l));t.push(n,i)}return t.join("")}function isLiteral(e){return(0,Object_1.isObject)(e)&&urlLiteralSymbol in e&&"string"==typeof e[urlLiteralSymbol]}exports.urlLiteral=urlLiteral,exports.asUrl=asUrl;