@tririga/tri-bundler
Version:
A tool for bundling Polymer 3 TRIRIGA UX views.
67 lines (61 loc) • 1.86 kB
JavaScript
"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;