| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| |
| const NullDependency = require("./NullDependency"); |
| |
| class HarmonyInitDependency extends NullDependency { |
| constructor(originModule) { |
| super(); |
| this.originModule = originModule; |
| } |
| |
| get type() { |
| return "harmony init"; |
| } |
| } |
| |
| module.exports = HarmonyInitDependency; |
| |
| HarmonyInitDependency.Template = class HarmonyInitDependencyTemplate { |
| apply(dep, source, runtime, dependencyTemplates) { |
| const module = dep.originModule; |
| const list = []; |
| for (const dependency of module.dependencies) { |
| const template = dependencyTemplates.get(dependency.constructor); |
| if ( |
| template && |
| typeof template.harmonyInit === "function" && |
| typeof template.getHarmonyInitOrder === "function" |
| ) { |
| const order = template.getHarmonyInitOrder(dependency); |
| if (!isNaN(order)) { |
| list.push({ |
| order, |
| listOrder: list.length, |
| dependency, |
| template |
| }); |
| } |
| } |
| } |
| |
| list.sort((a, b) => { |
| const x = a.order - b.order; |
| if (x) return x; |
| return a.listOrder - b.listOrder; |
| }); |
| |
| for (const item of list) { |
| item.template.harmonyInit( |
| item.dependency, |
| source, |
| runtime, |
| dependencyTemplates |
| ); |
| } |
| } |
| }; |