flamegraph
Version:
Generates flamegraphs with Node.js or in the browser
41 lines (31 loc) • 997 B
JavaScript
;
var xtend = require('xtend')
, contextify = require('./contextify')
, svgTemplate = require('./svg-template')
, defaultOpts = require('./default-opts')
function narrowify(context, opts) {
function processNode(n) {
n.class = n.narrow ? 'hidden' : '';
}
function filterNode(n) {
return !n.narrow;
}
if (opts.removenarrows) context.nodes = context.nodes.filter(filterNode);
else context.nodes.forEach(processNode);
}
var go = module.exports =
/**
* Creates a context from a call graph that has been collapsed (`stackcollapse-*`) and renders svg from it.
*
* @name flamegraph::svg
* @function
* @param {Array.<string>} collapsedLines callgraph that has been collapsed
* @param {Object} opts options
* @return {string} svg
*/
function svg(processedCpuProfile, opts) {
opts = xtend(defaultOpts, opts);
var context = contextify(processedCpuProfile, opts)
narrowify(context, opts);
return svgTemplate(context);
}