@tririga/tri-polymer-upgrade
Version:
A tool for converting TRIRIGA UX views from Polymer 1 to Polymer 3
90 lines (79 loc) • 2.99 kB
JavaScript
;
const log = require("loglevel");
const path = require("path");
const PackageScanner = require("./scanner/package-scanner.js");
const ElementConverter = require("./converter/element-converter.js");
const ElementSerializer = require("./serializer/element-serializer.js");
const BehaviorConverter = require("./converter/behavior-converter.js");
const BehaviorSerializer = require("./serializer/behavior-serializer.js");
const DomNodesConverter = require("./converter/dom-nodes-converter.js");
const DomNodesSerializer = require("./serializer/dom-nodes-serializer.js");
const { moveFile } = require("./util/utils");
class TriPolymerUpgrade {
constructor(packageDir, outputDir) {
this.packageDir = path.normalize(packageDir);
this.outputDir = path.normalize(outputDir);
this.elementConverter = new ElementConverter();
this.elementSerializer = new ElementSerializer(this.outputDir);
this.behaviorConverter = new BehaviorConverter();
this.behaviorSerializer = new BehaviorSerializer(this.outputDir);
this.domNodesConverter = new DomNodesConverter();
this.domNodesSerializer = new DomNodesSerializer(this.outputDir);
}
async run() {
// First pass
log.setLevel("error");
await this._convert();
// Second pass
log.setLevel("info");
await this._convert(true);
}
async _convert(serialize) {
let packageScanner = await this._scanPackage();
await this._convertBehaviors(packageScanner, serialize);
await this._convertElements(packageScanner, serialize);
await this._convertDocsWithDomNodes(packageScanner, serialize);
if (serialize) {
await this._copyJsFiles(packageScanner);
}
}
async _scanPackage() {
let packageScanner = new PackageScanner(this.packageDir);
await packageScanner.scan();
return packageScanner
}
async _convertElements(packageScanner, serialize) {
let elements = await packageScanner.getElements();
for (let i = 0; i < elements.length; i++) {
await this.elementConverter.convert(elements[i]);
if (serialize) {
await this.elementSerializer.serialize(elements[i]);
}
}
}
async _convertBehaviors(packageScanner, serialize) {
let behaviors = await packageScanner.getBehaviors();
for (let i = 0; i < behaviors.length; i++) {
await this.behaviorConverter.convert(behaviors[i]);
if (serialize) {
await this.behaviorSerializer.serialize(behaviors[i]);
}
}
}
async _copyJsFiles(packageScanner) {
let jsFiles = await packageScanner.getJsFiles();
for (let i = 0; i < jsFiles.length; i++) {
await moveFile(jsFiles[i].url, this.packageDir, this.outputDir);
}
}
async _convertDocsWithDomNodes(packageScanner, serialize) {
let documentsWithDomNodes = await packageScanner.getDocumentsWithDomNodes();
for (let i = 0; i < documentsWithDomNodes.length; i++) {
await this.domNodesConverter.convert(documentsWithDomNodes[i]);
if (serialize) {
await this.domNodesSerializer.serialize(documentsWithDomNodes[i]);
}
}
}
};
module.exports = TriPolymerUpgrade;