UNPKG

@discoveryjs/discovery

Version:

Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards

44 lines (43 loc) 940 B
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(); } }