UNPKG

ravendb

Version:
36 lines 1.45 kB
import { CaseInsensitiveKeysStore } from "./CaseInsensitiveKeysStore.js"; function validateKey(key) { if (!(key && key.toLowerCase)) { throw new Error("Key must be a string."); } } export class CaseInsensitiveStringSet { static create() { const result = new Set(); const origAdd = result.add; const origHas = result.has; const origDelete = result.delete; const originalKeysStore = new 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; } } //# sourceMappingURL=CaseInsensitiveStringSet.js.map