kist
Version:
Lightweight Package Pipeline Processor with Plugin Architecture
21 lines • 780 B
JavaScript
export class AbstractSingleton {
constructor() {
const className = this.constructor.name;
if (AbstractSingleton._instances.has(className)) {
throw new Error(`${className} is a singleton and has already been instantiated.`);
}
AbstractSingleton._instances.set(className, this);
}
static getInstance() {
const className = this.name;
if (!AbstractSingleton._instances.has(className)) {
AbstractSingleton._instances.set(className, new this());
}
return AbstractSingleton._instances.get(className);
}
static clearInstance() {
AbstractSingleton._instances.delete(this.name);
}
}
AbstractSingleton._instances = new Map();
//# sourceMappingURL=AbstractSingleton.js.map