UNPKG

@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
"use strict"; 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;