UNPKG

@regionorebrolan/extensions

Version:
187 lines 7.55 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var QueryParameter_1 = __importDefault(require("./QueryParameter")); var QueryValueSet_1 = __importDefault(require("./QueryValueSet")); var ReadCollection_1 = __importDefault(require("./ReadCollection")); var url_search_params_1 = __importDefault(require("core-js/web/url-search-params")); var Utility_1 = __importDefault(require("../Utility")); var QueryCollection = /** @class */ (function (_super) { __extends(QueryCollection, _super); // Constructors function QueryCollection(keyComparer, parameterFactory, changeHandler, query) { var e_1, _a; var _this = this; if (Utility_1.default.isNullOrUndefined(keyComparer)) throw new Error("The key-comparer can not be null or undefined."); if (Utility_1.default.isNullOrUndefined(parameterFactory)) throw new Error("The parameter-factory can not be null or undefined."); _this = _super.call(this) || this; _this._changeHandler = (function () { }); _this._keyComparer = keyComparer; _this._parameterFactory = parameterFactory; try { for (var _b = __values(new url_search_params_1.default(query || "").entries()), _c = _b.next(); !_c.done; _c = _b.next()) { var entry = _c.value; _this.add(entry[0], entry[1].split(QueryValueSet_1.default.valueSeparator)); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } if (changeHandler) _this._changeHandler = changeHandler; return _this; } Object.defineProperty(QueryCollection.prototype, "changeHandler", { // Properties get: function () { return this._changeHandler; }, enumerable: false, configurable: true }); Object.defineProperty(QueryCollection.prototype, "keyComparer", { get: function () { return this._keyComparer; }, enumerable: false, configurable: true }); Object.defineProperty(QueryCollection.prototype, "parameterFactory", { get: function () { return this._parameterFactory; }, enumerable: false, configurable: true }); // Methods QueryCollection.prototype.add = function (key, values) { var added = this.addInternal(key, values); if (added > 0) this.changeHandler(); return added; }; QueryCollection.prototype.addInternal = function (key, values) { var _this = this; var parameterCreated = false; var parameter = this.get(key); if (!parameter) { parameter = this.parameterFactory.create(key); parameterCreated = true; } var added = parameter.values.add(values); if (added > 0 && parameterCreated) { this.items.push(parameter); this.items.sort(function (first, second) { return _this.keyComparer.compare(first.key, second.key); }); } return added; }; QueryCollection.prototype.clear = function () { var count = this.count; this.items.length = 0; if (count > 0) this.changeHandler(); }; QueryCollection.prototype.get = function (key) { var e_2, _a; try { for (var _b = __values(this.items), _c = _b.next(); !_c.done; _c = _b.next()) { var item = _c.value; if (this.keyComparer.equals(key, item.key)) return item; } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } return null; }; QueryCollection.prototype.remove = function (key, values) { var result = this.removeInternal(key, values); if (result[0] || result[1] > 0) this.changeHandler(); return result[1]; }; QueryCollection.prototype.removeInternal = function (key, values) { var keyRemoved = false; var valuesRemoved = 0; for (var i = this.count - 1; i >= 0; i--) { var parameter = this.items[i]; if (this.keyComparer.equals(key, parameter.key)) { valuesRemoved = values ? parameter.values.remove(values) : parameter.values.count; if (!values) { this.items.splice(i, 1); keyRemoved = true; } break; } } return [keyRemoved, valuesRemoved]; }; QueryCollection.prototype.set = function (key, values) { var removeResult = this.removeInternal(key); var added = this.addInternal(key, values); if (added > 0 || removeResult[0] || removeResult[1] > 0) this.changeHandler(); return added; }; QueryCollection.prototype.toString = function () { return this.toUrlString(); }; QueryCollection.prototype.toUrlString = function (encode) { if (encode === void 0) { encode = true; } var parts = []; this.forEach(function (item) { var key = item.key; var valueString = item.values.toString(); if (encode) { key = encodeURIComponent(key); valueString = encodeURIComponent(valueString).replace(/%2C/g, "%2c"); } parts.push(key + QueryParameter_1.default.keyValueSeparator + valueString); }); return (parts.length > 0 ? QueryCollection._questionMark : "") + parts.join(QueryCollection._parameterSeparator); }; QueryCollection._parameterSeparator = "&"; QueryCollection._questionMark = "?"; return QueryCollection; }(ReadCollection_1.default)); exports.default = QueryCollection; //# sourceMappingURL=QueryCollection.js.map