onelang
Version:
OneLang transpiler framework core
46 lines • 1.75 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class SchemaTransformer {
constructor() {
this.transformers = {};
}
log(data) {
console.log(`[SchemaTransformHandler] ${data}`);
}
addTransform(trans) {
this.transformers[trans.name] = trans;
}
ensure(schemaCtx, ...transformNames) {
const schema = schemaCtx.schema;
if (!schema.meta)
schema.meta = {};
if (!schema.meta.transforms)
schema.meta.transforms = {};
for (const transformName of transformNames) {
if (schema.meta.transforms[transformName])
continue;
const transformer = this.transformers[transformName];
if (!transformer) {
this.log(`Transformer "${transformName}" not found!`);
continue;
}
if (transformer.dependencies)
this.ensure(schemaCtx, ...transformer.dependencies);
transformer.transform(schemaCtx);
schema.meta.transforms[transformName] = true;
}
}
}
exports.SchemaTransformer = SchemaTransformer;
SchemaTransformer.instance = new SchemaTransformer();
});
//# sourceMappingURL=SchemaTransformer.js.map