glimmer-analyzer
Version:
Statically analyzes Handlebars templates and components for dependency trees and other information.
54 lines • 4.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const project_1 = require("./project");
exports.Project = project_1.default;
const handlebars_analyzer_1 = require("./handlebars-analyzer");
class Analyzer {
constructor(projectDir) {
this.project = new project_1.default(projectDir);
}
dependenciesForTemplate(componentName) {
let dependencies = handlebars_analyzer_1.discoverTemplateDependencies(componentName, this.project);
return transformSetsToArrays(dependencies);
}
recursiveDependenciesForTemplate(componentName) {
let dependencies = handlebars_analyzer_1.discoverRecursiveTemplateDependencies(componentName, this.project);
return transformSetsToArrays(dependencies);
}
resolutionMapForEntryPoint(templateName, map) {
let dependencies = handlebars_analyzer_1.discoverRecursiveTemplateDependencies(templateName, this.project);
let components = new Set([dependencies.path, ...dependencies.components]);
let helpers = dependencies.helpers;
return filterResolutionMap(map || this.project.map, specifier => {
let [type, path] = specifier.split(':');
switch (type) {
case 'component':
case 'template':
return components.has(path);
case 'helper':
return helpers.has(path);
}
return false;
});
}
}
function filterResolutionMap(map, filter) {
let filteredMap = {};
for (let specifier of Object.keys(map)) {
if (filter(specifier)) {
filteredMap[specifier] = map[specifier];
}
}
return filteredMap;
}
function transformSetsToArrays(dependencies) {
let { path, hasComponentHelper, components, helpers } = dependencies;
return {
path,
hasComponentHelper,
components: Array.from(components),
helpers: Array.from(helpers)
};
}
exports.default = Analyzer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBbUQ7QUE2RTFDLGtCQTdFRixpQkFBTyxDQTZFRTtBQTVFaEIsK0RBSStCO0FBRS9CO0lBR0UsWUFBWSxVQUFrQjtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsYUFBcUI7UUFDM0MsSUFBSSxZQUFZLEdBQUcsa0RBQTRCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RSxNQUFNLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdDQUFnQyxDQUFDLGFBQXFCO1FBQ3BELElBQUksWUFBWSxHQUFHLDJEQUFxQyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEYsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxZQUFvQixFQUFFLEdBQW1CO1FBQ2xFLElBQUksWUFBWSxHQUFHLDJEQUFxQyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckYsSUFBSSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUVuQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVM7WUFDM0QsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXhDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsS0FBSyxXQUFXLENBQUM7Z0JBQ2pCLEtBQUssVUFBVTtvQkFDYixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsS0FBSyxRQUFRO29CQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFTRCw2QkFBNkIsR0FBa0IsRUFBRSxNQUFzQztJQUNyRixJQUFJLFdBQVcsR0FBa0IsRUFBRSxDQUFDO0lBRXBDLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELCtCQUErQixZQUEwQztJQUN2RSxJQUFJLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxZQUFZLENBQUM7SUFFckUsTUFBTSxDQUFDO1FBQ0wsSUFBSTtRQUNKLGtCQUFrQjtRQUNsQixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0tBQzdCLENBQUE7QUFDSCxDQUFDO0FBRUQsa0JBQWUsUUFBUSxDQUFDIn0=