unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
46 lines • 1.44 kB
JavaScript
export class FakeUnknownFlagsStore {
constructor() {
this.unknownFlagMap = new Map();
}
getKey(flag) {
return `${flag.name}:${flag.appName}:${flag.environment}`;
}
async insert(flags) {
this.unknownFlagMap.clear();
for (const flag of flags) {
this.unknownFlagMap.set(this.getKey(flag), flag);
}
}
async getAll({ limit, orderBy } = {}) {
const flags = Array.from(this.unknownFlagMap.values());
if (orderBy) {
flags.sort((a, b) => {
for (const { column, order } of orderBy) {
if (a[column] < b[column])
return order === 'asc' ? -1 : 1;
if (a[column] > b[column])
return order === 'asc' ? 1 : -1;
}
return 0;
});
}
if (!limit)
return flags;
return flags.slice(0, limit);
}
async clear(hoursAgo) {
const cutoff = Date.now() - hoursAgo * 60 * 60 * 1000;
for (const [key, flag] of this.unknownFlagMap.entries()) {
if (flag.seenAt.getTime() < cutoff) {
this.unknownFlagMap.delete(key);
}
}
}
async deleteAll() {
this.unknownFlagMap.clear();
}
async count() {
return this.unknownFlagMap.size;
}
}
//# sourceMappingURL=fake-unknown-flags-store.js.map