beyond
Version:
The Full Stack Universal Typescript Framework
70 lines (59 loc) • 1.98 kB
JavaScript
const DynamicProcessor = global.utils.DynamicProcessor();
module.exports = class extends DynamicProcessor {
get dp() {
return 'application.template.application.processor';
}
#distribution;
#language;
#instance;
get instance() {
return this.#instance;
}
#valid;
get valid() {
return this.#valid;
}
constructor(config, distribution, language) {
super();
this.#distribution = distribution;
this.#language = language;
super.setup(new Map([
['config', {child: config}],
['global.processors', {child: global.processors}]
]));
}
_process() {
const config = this.children.get('config').child;
this.#valid = config.valid;
if (!config.valid) {
this.#instance?.destroy();
this.#instance = undefined;
return;
}
const {path, value} = config;
if (value?.processor === this.#instance?.name) {
this.#instance?.configure(value);
return;
}
this.#instance?.destroy();
if (!value?.processor) {
this.#instance = undefined;
return;
}
const meta = global.processors.get(value.processor);
const Processor = meta.Processor ? meta.Processor : global.ProcessorBase;
this.#instance = new Processor(value.processor, {
watcher: config.application.watcher,
bundle: {
path: path,
id: `application//${config.application.id}//template.application`,
type: 'template/application',
container: {is: 'application'}
},
distribution: this.#distribution,
language: this.#language,
application: config.application
});
this.#instance.configure(value);
}
}