1. @microsoft/api-extractor-model
A helper library for loading and saving the .api.json files created by API Extractor
@microsoft/api-extractor-model
Package: @microsoft/api-extractor-model
Created by: microsoft
Last modified: Mon, 06 May 2024 15:11:44 GMT
Version: 7.28.15
License: MIT
Downloads: 4,212,843
Repository: https://github.com/microsoft/rushstack

Install

npm install @microsoft/api-extractor-model
yarn add @microsoft/api-extractor-model

@microsoft/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://api.rushstack.io/pages/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 '@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, 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.

API Extractor is part of the Rush Stack family of projects.

RELATED POST

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin