* fix(ExceptText): don't display import("d..-types/v10"). in return type * Squashed 'packages/api-extractor-model/' content from commit 39ecb196c git-subtree-dir: packages/api-extractor-model git-subtree-split: 39ecb196ca210bdf84ba6c9cadb1bb93571849d7 * Squashed 'packages/api-extractor/' content from commit 341ad6c51 git-subtree-dir: packages/api-extractor git-subtree-split: 341ad6c51b01656d4f73b74ad4bdb3095f9262c4 * feat(api-extractor): add api-extractor and -model * fix: package.json docs script * fix(SourcLink): use <> instead of function syntax * fix: make packages private * fix: rest params showing in docs, added labels * fix: missed two files * feat: merge docs.json from docgen and docs.api.json * fix: cpy-cli & pnpm-lock * fix: increase icon size * fix: icon size again * feat: run both docs on mainlib * chore: website fixes * fix: more website fixes * fix: tests and dev database script * chore: comment out old docs * fix: increase max fetch cache * fix: env should always be a string * fix: try to reapply patches * fix: remove prepare for docgen * fix: temporary cosmetic fixes * fix: horizontal scroll * feat: generate index for new docs --------- Co-authored-by: Noel <buechler.noel@outlook.com>
2.8 KiB
@discordjs/api-extractor-model
Use this library to read and write *.api.json files as defined by the API Extractor tool. These files are used to generate a documentation website for your TypeScript package. The files store the API signatures and doc comments that were extracted from your package.
API documentation for this package: https://rushstack.io/pages/api/api-extractor-model/
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 '@discordjs/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, ApiInterface, ...)
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 project that uses these APIs to generate an API reference web site, see the @microsoft/api-documenter source code.
Links
- CHANGELOG.md - Find out what's new in the latest version
- API Reference
API Extractor is part of the Rush Stack family of projects.