37 lines
860 B
JavaScript
37 lines
860 B
JavaScript
export default class RegistryBase {
|
|
constructor() {
|
|
this._registryMap = new Map();
|
|
}
|
|
entries() {
|
|
return this._registryMap.entries();
|
|
}
|
|
getAll(key) {
|
|
this.ensure(key);
|
|
return this._registryMap.get(key);
|
|
}
|
|
get(key) {
|
|
this.ensure(key);
|
|
const value = this._registryMap.get(key);
|
|
return value[value.length - 1] || null;
|
|
}
|
|
set(key, value) {
|
|
this.ensure(key);
|
|
this._registryMap.get(key).push(value);
|
|
}
|
|
setAll(key, value) {
|
|
this._registryMap.set(key, value);
|
|
}
|
|
has(key) {
|
|
this.ensure(key);
|
|
return this._registryMap.get(key).length > 0;
|
|
}
|
|
clear() {
|
|
this._registryMap.clear();
|
|
}
|
|
ensure(key) {
|
|
if (!this._registryMap.has(key)) {
|
|
this._registryMap.set(key, []);
|
|
}
|
|
}
|
|
}
|