UNPKG

ravendb

Version:
40 lines 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CaseInsensitiveStringSet = void 0; const CaseInsensitiveKeysStore_js_1 = require("./CaseInsensitiveKeysStore.js"); function validateKey(key) { if (!(key && key.toLowerCase)) { throw new Error("Key must be a string."); } } class CaseInsensitiveStringSet { static create() { const result = new Set(); const origAdd = result.add; const origHas = result.has; const origDelete = result.delete; const originalKeysStore = new CaseInsensitiveKeysStore_js_1.CaseInsensitiveKeysStore(); result.add = function (...args) { const [key, ...rest] = args; validateKey(key); const lowerKey = originalKeysStore.setKey(key); return origAdd.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; const lowerKey = originalKeysStore.deleteKey(key); return origDelete.call(result, lowerKey, ...rest); }; result.entries = () => [...originalKeysStore.getKeys()] .map(x => [x, x])[Symbol.iterator](); result[Symbol.iterator] = () => [...originalKeysStore.getKeys()][Symbol.iterator](); return result; } } exports.CaseInsensitiveStringSet = CaseInsensitiveStringSet; //# sourceMappingURL=CaseInsensitiveStringSet.js.map