UNPKG

@tririga/tri-bundler

Version:

A tool for bundling Polymer 3 TRIRIGA UX views.

67 lines (61 loc) 1.86 kB
"use strict"; const ComponentExporter = require("./component-exporter"); const Tririga = require("../tririga"); function UxExporter(user, password, url, basicuser, basicpassword, viewName, component, outputDir) { // TODO argument validation this.user = user; this.password = password; this.url = url.endsWith("/") ? url.splice(0, url.length - 1) : url; this.basicuser = basicuser, this.basicpassword = basicpassword, this.viewName = viewName; this.component = component; this.outputDir = outputDir.endsWith("/") ? outputDir : outputDir + "/"; } UxExporter.prototype.export = function(callback) { var tririga = new Tririga({ url: this.url, user: this.user, password: this.password, basicuser: this.basicuser, basicpassword: this.basicpassword }); tririga.login(async (error) => { if (error) { callback(error); } else { var viewComponentUrl = "/" + this.viewName + "/" + this.component; let queue = [viewComponentUrl]; var completed = []; this._processComponent(queue, completed, callback, tririga); } }); }; UxExporter.prototype._processComponent = function(queue, completed, callback, tririga) { if (queue.length == 0) { tririga.logout(); if (callback) { callback(); } return; } var me = this; var componentUrl = queue.pop(); var componentExporter = new ComponentExporter(componentUrl, this.outputDir, tririga); componentExporter.export(function(componentUrls) { completed.push(componentUrl); componentUrls.forEach((componentUrl) => { if (completed.indexOf(componentUrl) >= 0) { return; } if (queue.indexOf(componentUrl) >= 0) { return; } queue.push(componentUrl); }); me._processComponent(queue, completed, callback, tririga); }); }; module.exports = UxExporter;