/**
* @fileoverview A collection of utilities for performing static analysis on
* and transforming apps' html files.
*/
var Promise = require('es6-promise').Promise;
var jsdom = require('jsdom');
function load(filename) {
return new Promise(function(resolve, reject) {
jsdom.env(filename, function(errors, window) {
if (errors && errors.length) {
return reject(errors[0]);
}
return resolve(new HTMLTransformer(window));
});
});
};
function HTMLTransformer(window) {
this.window = window;
}
HTMLTransformer.prototype = {
getSharedDependencies: function() {
var doc = this.window.document;
var links = getSharedElements(doc, 'link');
var scripts = getSharedElements(doc, 'script');
var commented = flatmap(getComments(doc), getSharedElementsFromComment);
return links.concat(scripts).concat(commented);
}
};
function getSharedElements(doc, selector) {
return querySelectorAll(doc, selector).map(getShared).filter(function(x) {
return !!x;
});
}
function getSharedElementsFromComment(comment) {
var sharedLink = //;
var sharedScript = /