UNPKG

@configurator/ravendb

Version:
63 lines 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CaseInsensitiveKeysMap = void 0; const TypeUtil_1 = require("../Utility/TypeUtil"); const CaseInsensitiveKeysStore_1 = require("./CaseInsensitiveKeysStore"); function validateKey(key) { if (TypeUtil_1.TypeUtil.isNullOrUndefined(key) || TypeUtil_1.TypeUtil.isString(key)) { return; } throw Error("Key must be a string."); } class CaseInsensitiveKeysMap { static create() { const result = new Map(); const origSet = result.set; const origGet = result.get; const origHas = result.has; const origDelete = result.delete; const originalKeysStore = new CaseInsensitiveKeysStore_1.CaseInsensitiveKeysStore(); result["keysCaseSensitive"] = false; result.set = function (...args) { const [key, ...rest] = args; validateKey(key); const lowerKey = originalKeysStore.setKey(key); return origSet.call(result, lowerKey, ...rest); }; result.get = function (...args) { const [key, ...rest] = args; const lowerKey = originalKeysStore.normalizeKey(key); return origGet.call(result, lowerKey, ...rest); }; result.has = function (...args) { const [key, ...rest] = args; const lowerKey = originalKeysStore.normalizeKey(key); return origHas.call(result, lowerKey, ...rest); }; result.delete = function (...args) { const [key, ...rest] = args; validateKey(key); const lowerKey = originalKeysStore.deleteKey(key); return origDelete.call(result, lowerKey, ...rest); }; const origEntries = result.entries; result.entries = function () { return Array.from(origEntries.call(result)) .reduce((reduced, next) => { const actualKey = originalKeysStore.getKey(next[0]); return [...reduced, [actualKey, next[1]]]; }, [])[Symbol.iterator](); }; result[Symbol.iterator] = function () { return Array.from(origEntries.call(result)) .reduce((reduced, next) => { const actualKey = originalKeysStore.getKey(next[0]); return [...reduced, [actualKey, next[1]]]; }, [])[Symbol.iterator](); }; return result; } } exports.CaseInsensitiveKeysMap = CaseInsensitiveKeysMap; //# sourceMappingURL=CaseInsensitiveKeysMap.js.map