# `broccoli-node-api` TypeScript types for the [Broccoli Node Api](https://github.com/broccolijs/broccoli/blob/master/docs/node-api.md) - [`broccoli-node-api`](#broccoli-node-api) - [Exports](#exports) - [Node](#node) - [InputNode](#inputnode) - [NodeCommon](#nodecommon) - [NodeMap](#nodemap) - [TransformNode](#transformnode) - [SourceNode](#sourcenode) - [FeatureSet](#featureset) - [NodeInfo](#nodeinfo) - [NodeType](#nodetype) - [NodeInfoMap](#nodeinfomap) - [NodeInfoCommon](#nodeinfocommon) - [TransformNodeInfo](#transformnodeinfo) - [CallbackObject](#callbackobject) - [SourceNodeInfo](#sourcenodeinfo) ## Exports ### Node ```ts type Node = TransformNode | SourceNode; ``` [Node Documentation](https://github.com/broccolijs/broccoli/blob/master/docs/node-api.md#part-2-node-api-specification) --- ### InputNode ```ts type InputNode = Node | string; ``` --- ### NodeCommon ```ts interface NodeCommon { __broccoliFeatures__: FeatureSet; __broccoliGetInfo__: (builderFeatures: FeatureSet) => T; } ``` --- ### NodeMap ```ts interface NodeMap = { transform: TransformNode; source: SourceNode; }; ``` --- ### TransformNode ```ts interface TransformNode extends NodeCommon {} ``` --- ### SourceNode ```ts interface SourceNode extends NodeCommon {} ``` --- ### FeatureSet ```ts interface FeatureSet { [feature: string]: boolean; } ``` --- ### NodeInfo ```ts type NodeInfo = TransformNodeInfo | SourceNodeInfo; ``` [NodeInfo Documentation](https://github.com/broccolijs/broccoli/blob/master/docs/node-api.md#the-nodeinfo-object) --- ### NodeType ```ts type NodeType = "transform" | "source"; ``` --- ### NodeInfoMap ```ts interface NodeInfoMap = { transform: TransformNodeInfo; source: SourceNodeInfo; }; ``` --- ### NodeInfoCommon ```ts interface NodeInfoCommon { nodeType: T; name: string; annotation: string | null | undefined; instantiationStack: string; } ``` --- ### TransformNodeInfo ```ts interface TransformNodeInfo extends NodeInfoCommon<"transform"> { inputNodes: Node[]; setup( features: FeatureSet, options: { inputPaths: string[]; outputPath: string; cachePath: string } ): void; getCallbackObject(): CallbackObject; persistentOutput: boolean; needsCache: boolean; volatile: boolean; trackInputChanges: boolean; } ``` [TransformNodeInfo Documentation](https://github.com/broccolijs/broccoli/blob/master/docs/node-api.md#transform-nodes) --- ### CallbackObject ```ts interface CallbackObject { build(buildChangeObject?: BuildChangeObject): Promise | void; } ``` --- ### BuildChangeObject ```ts interface BuildChangeObject { changedNodes: boolean[]; } ``` --- ### SourceNodeInfo ```ts interface SourceNodeInfo extends NodeInfoCommon<"source"> { sourceDirectory: string; watched: boolean; } ``` [SourceNodeInfo Documentation](https://github.com/broccolijs/broccoli/blob/master/docs/node-api.md#source-nodes)