Package Exports
- @microsoft/api-extractor-model
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@microsoft/api-extractor-model) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@microsoft/api-extractor-model
This library is used with the @microsoft/api-extractor. For documentation and other information about the API Extractor tool, please visit the web site.
The @microsoft/api-extractor-model library is used to read and write the *.api.json data file format, which stores information about the exported API signatures for a TypeScript project.
Example Usage
The following code sample shows how to load example.api.json
, which would be generated by API Extractor
when it analyzes a hypothetical NPM package called example
:
import { ApiModel, ApiPackage } from '@microsoft/api-extractor-model';
const apiModel: ApiModel = new ApiModel();
const apiPackage: ApiPackage = apiModel.loadPackage('example.api.json');
for (const member of apiPackage.members) {
console.log(member.displayName);
}
The ApiModel
is acts as a container for various packages that are loaded and operated on as a group.
For example, a documentation tool may need to resolve @link
references across different packages.
In this case we would load the various packages into the ApiModel
, and then use
the ApiModel.resolveDeclarationReference()
to resolve the @link
targets.
The data structure forms a tree of various classes that start with the Api
prefix. The nesting hierarchy
might look like this:
- ApiModel
- ApiPackage
- ApiEntryPoint
- ApiClass
- ApiMethod
- ApiProperty
- ApiEnum
- ApiEnumMember
- ApiInterface
- ApiMethodSignature
- ApiPropertySignature
- ApiNamespace
- (ApiClass, ApiEnum, ApiInterace, ...)
You can use the ApiItem.members
property to traverse this tree.
Note that the non-abstract classes (e.g. ApiClass
, ApiEnum
, ApiInterface
, etc.) use
TypeScript "mixin" functions (e.g. ApiDeclaredItem
, ApiItemContainerMixin
, etc.) to add various
features that cannot be represented as a normal inheritance chain (since TypeScript does not allow a child class
to extend more than one base class). The "mixin" is a TypeScript merged declaration with three components:
the function that generates a subclass, an interface that describes the members of the subclass, and
a namespace containing static members of the class.
For a complete example that shows how to uset these APIs to generate an API reference web site, see the @microsoft/api-documenter source code.