161 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/// <reference path="../typings/es6-promise/es6-promise.d.ts" />
 | 
						|
 | 
						|
 | 
						|
interface BroccoliTree {
 | 
						|
  /**
 | 
						|
   * Contains the fs path for the input tree when the plugin takes only one input tree.
 | 
						|
   *
 | 
						|
   * For plugins that take multiple trees see the `inputPaths` property.
 | 
						|
   *
 | 
						|
   * This property is set just before the first rebuild and doesn't change afterwards.
 | 
						|
   */
 | 
						|
  inputPath: string;
 | 
						|
 | 
						|
  /**
 | 
						|
   * Contains the array of fs paths for input trees.
 | 
						|
   *
 | 
						|
   * For plugins that take only one input tree, it might be more convenient to use the `inputPath`
 | 
						|
   *property instead.
 | 
						|
   *
 | 
						|
   * This property is set just before the first rebuild and doesn't change afterwards, unless
 | 
						|
   * plugins themselves change it.
 | 
						|
   *
 | 
						|
   * If the inputPath is outside of broccoli's temp directory, then it's lifetime is not managed by
 | 
						|
   *the builder.
 | 
						|
   * If the inputPath is within broccoli's temp directory it is an outputPath (and output directory)
 | 
						|
   *of another plugin.
 | 
						|
   * This means that while the `outputPath` doesn't change, the underlying directory is frequently
 | 
						|
   *recreated.
 | 
						|
   */
 | 
						|
  inputPaths?: string[];
 | 
						|
 | 
						|
  /**
 | 
						|
   * Contains the fs paths for the output trees.
 | 
						|
   *
 | 
						|
   * This property is set just before the first rebuild and doesn't change afterwards, unless the
 | 
						|
   * plugins themselves change it.
 | 
						|
   *
 | 
						|
   * The underlying directory is also created by the builder just before the first rebuild.
 | 
						|
   * This directory is destroyed and recreated upon each rebuild.
 | 
						|
   */
 | 
						|
  outputPath?: string;
 | 
						|
 | 
						|
  /**
 | 
						|
   * Contains the fs paths for a cache directory available to the plugin.
 | 
						|
   *
 | 
						|
   * This property is set just before the first rebuild and doesn't change afterwards.
 | 
						|
   *
 | 
						|
   * The underlying directory is also created by the builder just before the first rebuild.
 | 
						|
   * The lifetime of the directory is associated with the lifetime of the plugin.
 | 
						|
   */
 | 
						|
  cachePath?: string;
 | 
						|
 | 
						|
  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.
 | 
						|
   *
 | 
						|
   * If missing `tree.constructor.name` is usually used instead.
 | 
						|
   */
 | 
						|
  description?: string;
 | 
						|
 | 
						|
  rebuild(): (Promise<any>| void);
 | 
						|
  cleanup(): void;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
interface OldBroccoliTree {
 | 
						|
  read?(readTree: (tree: BroccoliTree) => Promise<string>): (Promise<string>| string);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
interface BroccoliBuilder {
 | 
						|
  /**
 | 
						|
   * Triggers a build and returns a promise for the build result
 | 
						|
   */
 | 
						|
  build(): Promise<BuildResult>;
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * Cleans up the whole build tree by calling `.cleanup()` method on all trees that are part of the
 | 
						|
   * pipeline.
 | 
						|
   */
 | 
						|
  cleanup(): Promise<any>;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
interface BuildResult {
 | 
						|
  /**
 | 
						|
   * Directory that contains result of the build.
 | 
						|
   *
 | 
						|
   * This directory will contains symlinks, so it is not safe to just use it as is.
 | 
						|
   *
 | 
						|
   * Use `copy-dereference` npm package to create a safe-to-use replica of the build artifacts.
 | 
						|
   */
 | 
						|
  directory: string;
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * The DAG (graph) of all trees in the build pipeline.
 | 
						|
   */
 | 
						|
  graph: BroccoliNode;
 | 
						|
 | 
						|
  /**
 | 
						|
   * Total time it took to make the build.
 | 
						|
   */
 | 
						|
  totalTime: number;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
interface BroccoliNode {
 | 
						|
  ///**
 | 
						|
  // * Id of the current node
 | 
						|
  // */
 | 
						|
  // id: number; //only in master
 | 
						|
 | 
						|
  /**
 | 
						|
   * Time spent processing the current node during a single rebuild.
 | 
						|
   */
 | 
						|
  selfTime: number;
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * Time spent processing the current node and its subtrees during a single rebuild.
 | 
						|
   */
 | 
						|
  totalTime: number;
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * Tree associated with the current node.
 | 
						|
   */
 | 
						|
  tree: BroccoliTree;
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * Child nodes with references to trees that are input for the tree of the current node.
 | 
						|
   */
 | 
						|
  subtrees: BroccoliNode[];
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * Parent nodes with references to trees that are consume the output of processing the current
 | 
						|
   * tree.
 | 
						|
   */
 | 
						|
  parents: BroccoliNode[];
 | 
						|
 | 
						|
 | 
						|
  /**
 | 
						|
   * Path to the directory containing the output of processing the current tree.
 | 
						|
   */
 | 
						|
  directory: string;
 | 
						|
}
 |