UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

127 lines 5.17 kB
'use strict';var lang_1 = require('angular2/src/facade/lang'); var collection_1 = require('angular2/src/facade/collection'); function paramParser(rawParams) { if (rawParams === void 0) { rawParams = ''; } var map = new collection_1.Map(); if (rawParams.length > 0) { var params = rawParams.split('&'); params.forEach(function (param) { var split = param.split('='); var key = split[0]; var val = split[1]; var list = lang_1.isPresent(map.get(key)) ? map.get(key) : []; list.push(val); map.set(key, list); }); } return map; } /** * Map-like representation of url search parameters, based on * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard, * with several extensions for merging URLSearchParams objects: * - setAll() * - appendAll() * - replaceAll() */ var URLSearchParams = (function () { function URLSearchParams(rawParams) { if (rawParams === void 0) { rawParams = ''; } this.rawParams = rawParams; this.paramsMap = paramParser(rawParams); } URLSearchParams.prototype.clone = function () { var clone = new URLSearchParams(); clone.appendAll(this); return clone; }; URLSearchParams.prototype.has = function (param) { return this.paramsMap.has(param); }; URLSearchParams.prototype.get = function (param) { var storedParam = this.paramsMap.get(param); if (collection_1.isListLikeIterable(storedParam)) { return collection_1.ListWrapper.first(storedParam); } else { return null; } }; URLSearchParams.prototype.getAll = function (param) { var mapParam = this.paramsMap.get(param); return lang_1.isPresent(mapParam) ? mapParam : []; }; URLSearchParams.prototype.set = function (param, val) { var mapParam = this.paramsMap.get(param); var list = lang_1.isPresent(mapParam) ? mapParam : []; collection_1.ListWrapper.clear(list); list.push(val); this.paramsMap.set(param, list); }; // A merge operation // For each name-values pair in `searchParams`, perform `set(name, values[0])` // // E.g: "a=[1,2,3], c=[8]" + "a=[4,5,6], b=[7]" = "a=[4], c=[8], b=[7]" // // TODO(@caitp): document this better URLSearchParams.prototype.setAll = function (searchParams) { var _this = this; searchParams.paramsMap.forEach(function (value, param) { var mapParam = _this.paramsMap.get(param); var list = lang_1.isPresent(mapParam) ? mapParam : []; collection_1.ListWrapper.clear(list); list.push(value[0]); _this.paramsMap.set(param, list); }); }; URLSearchParams.prototype.append = function (param, val) { var mapParam = this.paramsMap.get(param); var list = lang_1.isPresent(mapParam) ? mapParam : []; list.push(val); this.paramsMap.set(param, list); }; // A merge operation // For each name-values pair in `searchParams`, perform `append(name, value)` // for each value in `values`. // // E.g: "a=[1,2], c=[8]" + "a=[3,4], b=[7]" = "a=[1,2,3,4], c=[8], b=[7]" // // TODO(@caitp): document this better URLSearchParams.prototype.appendAll = function (searchParams) { var _this = this; searchParams.paramsMap.forEach(function (value, param) { var mapParam = _this.paramsMap.get(param); var list = lang_1.isPresent(mapParam) ? mapParam : []; for (var i = 0; i < value.length; ++i) { list.push(value[i]); } _this.paramsMap.set(param, list); }); }; // A merge operation // For each name-values pair in `searchParams`, perform `delete(name)`, // followed by `set(name, values)` // // E.g: "a=[1,2,3], c=[8]" + "a=[4,5,6], b=[7]" = "a=[4,5,6], c=[8], b=[7]" // // TODO(@caitp): document this better URLSearchParams.prototype.replaceAll = function (searchParams) { var _this = this; searchParams.paramsMap.forEach(function (value, param) { var mapParam = _this.paramsMap.get(param); var list = lang_1.isPresent(mapParam) ? mapParam : []; collection_1.ListWrapper.clear(list); for (var i = 0; i < value.length; ++i) { list.push(value[i]); } _this.paramsMap.set(param, list); }); }; URLSearchParams.prototype.toString = function () { var paramsList = []; this.paramsMap.forEach(function (values, k) { values.forEach(function (v) { return paramsList.push(k + '=' + v); }); }); return paramsList.join('&'); }; URLSearchParams.prototype.delete = function (param) { this.paramsMap.delete(param); }; return URLSearchParams; })(); exports.URLSearchParams = URLSearchParams; //# sourceMappingURL=url_search_params.js.map