@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
44 lines (43 loc) • 940 B
JavaScript
import { Emitter } from "./emitter.js";
export class Dictionary extends Emitter {
#entries;
#allowRevoke;
static define(dict, key, value) {
dict.#entries.set(key, value);
dict.emit("define", key, value);
return value;
}
constructor(allowRevoke) {
super();
this.#entries = /* @__PURE__ */ new Map();
this.#allowRevoke = Boolean(allowRevoke);
}
revoke(key) {
if (!this.#allowRevoke) {
throw new Error("Entry revoking is not allowed");
}
this.#entries.delete(key);
this.emit("revoke", key);
}
isDefined(key) {
return this.#entries.has(key);
}
has(key) {
return this.#entries.has(key);
}
get(key) {
return this.#entries.get(key);
}
get names() {
return [...this.#entries.keys()];
}
get keys() {
return this.#entries.keys();
}
get values() {
return this.#entries.values();
}
get entries() {
return this.#entries.entries();
}
}