esdoc-plugin-dependency-graphs
Version:
A plugin for ESDoc that adds interactive D3 powered dependency graphs for source code including linking JSPM / NPM managed code and packages.
108 lines (82 loc) • 4.27 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _underscore = require('underscore');
var _underscore2 = _interopRequireDefault(_underscore);
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
// Stores the path to generated graphs.
var docGraphPath = void 0;
var GraphPackageDep = function () {
function GraphPackageDep() {
_classCallCheck(this, GraphPackageDep);
}
_createClass(GraphPackageDep, [{
key: 'onHandleConfig',
value: function onHandleConfig(ev) {
docGraphPath = '' + ev.data.config.destination + _path2.default.sep + 'graphs' + _path2.default.sep;
}
/**
* The search data file must have JSPM package paths replaced with normalized versions.
*/
}, {
key: 'onComplete',
value: function onComplete() {
var docGraphPackagePath = docGraphPath + 'jspm_packages' + _path2.default.sep;
// Ensure graphs directory exists.
_fsExtra2.default.ensureDirSync(docGraphPackagePath);
var d3Graph = _fsExtra2.default.readFileSync(_path2.default.resolve(__dirname, '../template/html/d3-graph.js'), 'utf8');
var styleCSS = _fsExtra2.default.readFileSync(_path2.default.resolve(__dirname, '../template/html/style.css'), 'utf8');
var indexHTML = _fsExtra2.default.readFileSync(_path2.default.resolve(__dirname, '../template/html/index.html'), 'utf8');
var tableSorter = _fsExtra2.default.readFileSync(_path2.default.resolve(__dirname, '../template/html/jquery-tablesorter.js'), 'utf8');
var rootPackageName = global.$$esdoc_plugin_jspm.rootPackageName;
var _global$$$esdoc_plugi = global.$$esdoc_plugin_jspm_package_graph;
var packageGraphAll = _global$$$esdoc_plugi.packageGraphAll;
var packageGraphDev = _global$$$esdoc_plugi.packageGraphDev;
var packageGraphMain = _global$$$esdoc_plugi.packageGraphMain;
var graphPackageDataAll = {
maxLevel: packageGraphAll.maxLevel,
directed: true,
multigraph: false,
graph: [],
nodes: packageGraphAll.nodes,
links: packageGraphAll.links
};
var graphPackageDataDev = {
maxLevel: packageGraphDev.maxLevel,
directed: true,
multigraph: false,
graph: [],
nodes: packageGraphDev.nodes,
links: packageGraphDev.links
};
var graphPackageDataMain = {
maxLevel: packageGraphMain.maxLevel,
directed: true,
multigraph: false,
graph: [],
nodes: packageGraphMain.nodes,
links: packageGraphMain.links
};
var data = {
css: styleCSS,
packageDataAll: JSON.stringify(graphPackageDataAll),
packageDataDev: JSON.stringify(graphPackageDataDev),
packageDataMain: JSON.stringify(graphPackageDataMain),
js: tableSorter,
js2: d3Graph,
maxPackageLevel: graphPackageDataAll.maxLevel,
title: rootPackageName
};
_fsExtra2.default.writeFileSync(docGraphPackagePath + 'index.html', _underscore2.default.template(indexHTML)(data));
}
}]);
return GraphPackageDep;
}();
exports.default = GraphPackageDep;