fix(diffing-broccoli-plugin): wrapped trees are always stable
This commit is contained in:
parent
7aa9751054
commit
7611f92f5b
|
@ -53,6 +53,12 @@ interface BroccoliTree {
|
|||
inputTree?: BroccoliTree;
|
||||
inputTrees?: BroccoliTree[];
|
||||
|
||||
/**
|
||||
* Trees which implement the rebuild api are wrapped automatically for api compat,
|
||||
* and `newStyleTree` keeps a reference to the original unwrapped tree.
|
||||
*/
|
||||
newStyleTree?: BroccoliTree;
|
||||
|
||||
/**
|
||||
* Description or name of the plugin used for reporting.
|
||||
*
|
||||
|
|
|
@ -62,7 +62,6 @@ class DiffingPluginWrapper implements BroccoliTree {
|
|||
this.description = this.pluginClass.name;
|
||||
}
|
||||
|
||||
|
||||
private calculateDiff(firstRun: boolean): (DiffResult | DiffResult[]) {
|
||||
// TODO(caitp): optionally log trees based on environment variable or
|
||||
// command line option. It may be worth logging for trees where elapsed
|
||||
|
@ -146,6 +145,11 @@ class DiffingPluginWrapper implements BroccoliTree {
|
|||
// Ignore all DiffingPlugins as they are already stable, for others we don't know for sure
|
||||
// so we need to stabilize them.
|
||||
// Since it's not safe to use instanceof operator in node, we are checking the constructor.name.
|
||||
return (tree.constructor['name'] === 'DiffingPluginWrapper') ? tree : stabilizeTree(tree);
|
||||
//
|
||||
// New-styler/rebuild trees should always be stable.
|
||||
let isNewStyleTree = !!(tree['newStyleTree'] || typeof tree.rebuild === 'function' ||
|
||||
tree['isReadAPICompatTree'] || tree.constructor['name'] === 'Funnel');
|
||||
|
||||
return isNewStyleTree ? tree : stabilizeTree(tree);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue