UNPKG

uribuilder

Version:
63 lines (61 loc) 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var instanceOf_1 = require("./instanceOf"); var UriQueryBuilder = (function () { function UriQueryBuilder(model) { this.model = model || {}; } UriQueryBuilder.parse = function (query) { var result = new UriQueryBuilder(); if (query.indexOf('?') > -1) { query = query.split('?', 2)[1]; } if (query.indexOf('#') > -1) { query = query.split('#', 2)[0]; } for (var _i = 0, _a = query.split('&'); _i < _a.length; _i++) { var keyValue = _a[_i]; var pair = keyValue.split('=', 2).map(function (x) { return decodeURIComponent(x); }); var value = +pair[1]; if (isNaN(value)) { value = pair[1]; } if (result.model.hasOwnProperty(pair[0])) { // is array if (instanceOf_1.is(result.model[pair[0]], Array)) { result.model[pair[0]].push(value); } else { result.model[pair[0]] = [result.model[pair[0]]]; result.model[pair[0]].push(value); } } else { result.model[pair[0]] = value; } } return result; }; UriQueryBuilder.prototype.toString = function () { var keyValueList = []; for (var key in this.model) { if (!this.model.hasOwnProperty(key)) { continue; } var value = this.model[key]; if (instanceOf_1.is(value, Boolean) || instanceOf_1.is(value, Number) || instanceOf_1.is(value, String)) { keyValueList.push(encodeURIComponent(key) + "=" + encodeURIComponent(value.toString())); } else if (instanceOf_1.is(value, Array)) { for (var _i = 0, _a = value; _i < _a.length; _i++) { var valueItem = _a[_i]; keyValueList.push(encodeURIComponent(key) + "=" + encodeURIComponent(valueItem.toString())); } } } return keyValueList.join('&'); }; return UriQueryBuilder; }()); exports.UriQueryBuilder = UriQueryBuilder; //# sourceMappingURL=uriQueryBuilder.js.map