@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
35 lines (34 loc) • 1.07 kB
JavaScript
export class SerializerRegistry {
static serializers = [];
static get size() {
return this.serializers.length;
}
static register(...extension) {
for (const ext of extension) {
if (!ext.dialect)
throw new TypeError('A SerializerExtension must contain "dialect" property');
this.serializers.push(ext);
}
}
static forEach(callback, thisArg) {
return this.serializers.forEach(callback, thisArg);
}
static items() {
return this.serializers.values();
}
static unRegister(...extensions) {
this.serializers = this.serializers.filter(x => !extensions.includes(x));
}
static getAll(dialect) {
return this.serializers.filter(x => x.dialect === dialect);
}
static get(index) {
return this.serializers[index];
}
static findDialect(dialect) {
return this.serializers.find(x => x.dialect === dialect);
}
static has(extension) {
return !!this.serializers.find(x => x === extension);
}
}