ravendb
Version:
RavenDB client for Node.js
36 lines • 1.45 kB
JavaScript
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