@confluentinc/schemaregistry
Version:
Node.js client for Confluent Schema Registry
111 lines (110 loc) • 3.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RuleRegistry = void 0;
/**
* RuleRegistry is used to register and fetch rule executors and actions.
*/
class RuleRegistry {
constructor() {
this.ruleExecutors = new Map();
this.ruleActions = new Map();
this.ruleOverrides = new Map();
}
/**
* registerExecutor is used to register a new rule executor.
* @param ruleExecutor - the rule executor to register
*/
registerExecutor(ruleExecutor) {
this.ruleExecutors.set(ruleExecutor.type(), ruleExecutor);
}
/**
* getExecutor fetches a rule executor by a given name.
* @param name - the name of the rule executor to fetch
*/
getExecutor(name) {
return this.ruleExecutors.get(name);
}
/**
* getExecutors fetches all rule executors
*/
getExecutors() {
return Array.from(this.ruleExecutors.values());
}
/**
* registerAction is used to register a new rule action.
* @param ruleAction - the rule action to register
*/
registerAction(ruleAction) {
this.ruleActions.set(ruleAction.type(), ruleAction);
}
/**
* getAction fetches a rule action by a given name.
* @param name - the name of the rule action to fetch
*/
getAction(name) {
return this.ruleActions.get(name);
}
/**
* getActions fetches all rule actions
*/
getActions() {
return Array.from(this.ruleActions.values());
}
/**
* registerOverride is used to register a new rule override.
* @param ruleOverride - the rule override to register
*/
registerOverride(ruleOverride) {
this.ruleOverrides.set(ruleOverride.type, ruleOverride);
}
/**
* getOverride fetches a rule override by a given name.
* @param name - the name of the rule override to fetch
*/
getOverride(name) {
return this.ruleOverrides.get(name);
}
/**
* getOverrides fetches all rule overrides
*/
getOverrides() {
return Array.from(this.ruleOverrides.values());
}
/**
* clear clears all registered rules
*/
clear() {
this.ruleExecutors.clear();
this.ruleActions.clear();
this.ruleOverrides.clear();
}
/**
* getGlobalInstance fetches the global instance of the rule registry
*/
static getGlobalInstance() {
return RuleRegistry.globalInstance;
}
/**
* registerRuleExecutor is used to register a new rule executor globally.
* @param ruleExecutor - the rule executor to register
*/
static registerRuleExecutor(ruleExecutor) {
RuleRegistry.globalInstance.registerExecutor(ruleExecutor);
}
/**
* registerRuleAction is used to register a new rule action globally.
* @param ruleAction - the rule action to register
*/
static registerRuleAction(ruleAction) {
RuleRegistry.globalInstance.registerAction(ruleAction);
}
/**
* registerRuleOverride is used to register a new rule override globally.
* @param ruleOverride - the rule override to register
*/
static registerRuleOverride(ruleOverride) {
RuleRegistry.globalInstance.registerOverride(ruleOverride);
}
}
exports.RuleRegistry = RuleRegistry;
RuleRegistry.globalInstance = new RuleRegistry();