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