Skip to content

Commit e2d9916

Browse files
authored
build(api-markdown-documenter): Build and output ESM (only) (#20096)
Updates the package to target ESM (exclusively) instead of CommonJS. Since this package is an internal build tool, it's safe to make this change, and will allow future updates which leverage ESM-only libraries. Used `ts2esm` to translate imports.
1 parent 2cbd137 commit e2d9916

File tree

147 files changed

+615
-554
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+615
-554
lines changed

tools/api-markdown-documenter/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Build output
22
dist
3+
lib
34
*.tsbuildinfo
45

56
# npm dependencies

tools/api-markdown-documenter/.prettierignore

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package-lock.json
33

44
# Build output
55
dist/*
6+
lib/*
67

78
# Test output
89
src/**/test/snapshots/*

tools/api-markdown-documenter/CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
## 0.14.0
44

5+
- Updated the package to emit ESM only.
56
- Fixed a bug where [inline tags](https://tsdoc.org/pages/spec/tag_kinds/#inline-tags) (other than `{@link}` and `{@inheritDoc}`, which are handled specially by API-Extractor) were not handled and resulted in errors being logged to the console.
67
Such tags are now handled in the following way:
78
- [{@label}](https://tsdoc.org/pages/tags/label/) tags are simply omitted from the output (they are intended as metadata, not documentation content).
89
- Other custom inline tags are emitted as italicized text.
910

1011
### ⚠ BREAKING CHANGES
1112

13+
- The package now outputs ESM only.
14+
Consumers will have to migrate accordingly.
1215
- `DocumentationNode` now has a required `isEmpty` property.
1316
Implementations will need to provide this.
1417

Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
22
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3-
"extends": "../../common/build/build-common/api-extractor-base.json"
3+
"extends": "../../common/build/build-common/api-extractor-base.esm.primary.json",
4+
"tsdocMetadata": {
5+
"enabled": true,
6+
"tsdocMetadataFilePath": "<projectFolder>/lib/tsdoc-metadata.json"
7+
}
48
}

tools/api-markdown-documenter/package.json

+15-6
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,17 @@
1111
"license": "MIT",
1212
"author": "Microsoft and contributors",
1313
"sideEffects": false,
14-
"main": "dist/index.js",
15-
"types": "dist/index.d.ts",
14+
"type": "module",
15+
"exports": {
16+
".": {
17+
"import": "./lib/index.js",
18+
"types": "./lib/api-markdown-documenter-public.d.ts"
19+
},
20+
"./beta": {
21+
"import": "./lib/index.js",
22+
"types": "./lib/api-markdown-documenter-beta.d.ts"
23+
}
24+
},
1625
"scripts": {
1726
"api": "fluid-build . --task api",
1827
"build": "concurrently npm:build:compile npm:lint && npm run build:readme && npm run build:docs",
@@ -23,7 +32,7 @@
2332
"build:tsc": "npm run tsc",
2433
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
2534
"ci:build:docs": "api-extractor run && copyfiles -u 1 \"./_api-extractor-temp/doc-models/*\" ../../_api-extractor-temp/",
26-
"clean": "rimraf --glob _api-extractor-temp nyc dist \"**/*.tsbuildinfo\" \"**/*.build.log\"",
35+
"clean": "rimraf --glob _api-extractor-temp nyc dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\"",
2736
"eslint": "eslint src",
2837
"eslint:fix": "eslint src --fix",
2938
"format": "npm run prettier:fix",
@@ -37,7 +46,7 @@
3746
"rebuild": "npm run clean && npm run build",
3847
"test": "npm run test:mocha",
3948
"test:coverage": "c8 npm test:mocha",
40-
"test:mocha": "mocha \"dist/**/test/**/*.test.js\" --reporter-option maxDiffSize=100000",
49+
"test:mocha": "mocha \"lib/**/test/**/*.test.js\" --reporter-option maxDiffSize=100000",
4150
"test:mocha:verbose": "cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha",
4251
"test:verbose": "npm run test:mocha:verbose",
4352
"tsc": "tsc"
@@ -47,12 +56,12 @@
4756
"cache-dir": "nyc/.cache",
4857
"exclude": [
4958
"src/**/test/**/*.*ts",
50-
"dist/**/test/**/*.*js"
59+
"lib/**/test/**/*.*js"
5160
],
5261
"exclude-after-remap": false,
5362
"include": [
5463
"src/**/*.*ts",
55-
"dist/**/*.*js"
64+
"lib/**/*.*js"
5665
],
5766
"report-dir": "nyc/report",
5867
"reporter": [

tools/api-markdown-documenter/src/ApiItemUtilitiesModule.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export {
1313
getHeadingForApiItem,
1414
getLinkForApiItem,
1515
shouldItemBeIncluded,
16-
} from "./api-item-transforms";
16+
} from "./api-item-transforms/index.js";
1717
export {
1818
getDefaultValueBlock,
1919
getDeprecatedBlock,
@@ -29,4 +29,4 @@ export {
2929
isOptional,
3030
isReadonly,
3131
isStatic,
32-
} from "./utilities";
32+
} from "./utilities/index.js";

tools/api-markdown-documenter/src/ConfigurationBase.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
33
* Licensed under the MIT License.
44
*/
5-
import { type Logger } from "./Logging";
5+
import { type Logger } from "./Logging.js";
66

77
/**
88
* Common base interface for configuration interfaces.

tools/api-markdown-documenter/src/HtmlRendererModule.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
export {
1111
renderApiModelAsHtml as renderApiModel,
1212
renderDocumentsAsHtml as renderDocuments,
13-
} from "./RenderHtml";
13+
} from "./RenderHtml.js";
1414
export {
1515
renderDocumentAsHtml as renderDocument,
1616
renderNodeAsHtml as renderNode,
1717
renderNodesAsHtml as renderNodes,
18-
} from "./renderers";
18+
} from "./renderers/index.js";

tools/api-markdown-documenter/src/LayoutUtilitiesModule.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ export {
2020
createSummaryParagraph,
2121
createThrowsSection,
2222
createTypeParametersSection,
23-
} from "./api-item-transforms";
23+
} from "./api-item-transforms/index.js";

tools/api-markdown-documenter/src/LoadModel.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
import { type DocComment, type DocInheritDocTag } from "@microsoft/tsdoc";
1515
import { FileSystem } from "@rushstack/node-core-library";
1616

17-
import { type Logger } from "./Logging";
17+
import { type Logger } from "./Logging.js";
1818

1919
/**
2020
* Reads API reports generated by {@link https://api-extractor.com/ | API-Extractor} (.api.json files)

tools/api-markdown-documenter/src/MarkdownRendererModule.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
export {
1111
renderApiModelAsMarkdown as renderApiModel,
1212
renderDocumentsAsMarkdown as renderDocuments,
13-
} from "./RenderMarkdown";
13+
} from "./RenderMarkdown.js";
1414
export {
1515
renderDocumentAsMarkdown as renderDocument,
1616
renderNodeAsMarkdown as renderNode,
1717
renderNodesAsMarkdown as renderNodes,
18-
} from "./renderers";
18+
} from "./renderers/index.js";

tools/api-markdown-documenter/src/RenderHtml.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ import * as Path from "node:path";
66

77
import { FileSystem, NewlineKind } from "@rushstack/node-core-library";
88

9-
import { type ApiItemTransformationConfiguration, transformApiModel } from "./api-item-transforms";
10-
import { type DocumentNode } from "./documentation-domain";
11-
import { type Logger } from "./Logging";
12-
import { type HtmlRenderConfiguration, renderDocumentAsHtml } from "./renderers";
13-
import { type FileSystemConfiguration } from "./FileSystemConfiguration";
9+
import {
10+
type ApiItemTransformationConfiguration,
11+
transformApiModel,
12+
} from "./api-item-transforms/index.js";
13+
import { type DocumentNode } from "./documentation-domain/index.js";
14+
import { type Logger } from "./Logging.js";
15+
import { type HtmlRenderConfiguration, renderDocumentAsHtml } from "./renderers/index.js";
16+
import { type FileSystemConfiguration } from "./FileSystemConfiguration.js";
1417

1518
/**
1619
* Renders the provided model and its contents, and writes each document to a file on disk.

tools/api-markdown-documenter/src/RenderMarkdown.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@ import * as Path from "node:path";
66

77
import { FileSystem, NewlineKind } from "@rushstack/node-core-library";
88

9-
import { type ApiItemTransformationConfiguration, transformApiModel } from "./api-item-transforms";
10-
import { type DocumentNode } from "./documentation-domain";
11-
import { type Logger } from "./Logging";
12-
import { type MarkdownRenderConfiguration, renderDocumentAsMarkdown } from "./renderers";
13-
import { type FileSystemConfiguration } from "./FileSystemConfiguration";
9+
import {
10+
type ApiItemTransformationConfiguration,
11+
transformApiModel,
12+
} from "./api-item-transforms/index.js";
13+
import { type DocumentNode } from "./documentation-domain/index.js";
14+
import { type Logger } from "./Logging.js";
15+
import { type MarkdownRenderConfiguration, renderDocumentAsMarkdown } from "./renderers/index.js";
16+
import { type FileSystemConfiguration } from "./FileSystemConfiguration.js";
1417

1518
/**
1619
* Renders the provided model and its contents, and writes each document to a file on disk.

tools/api-markdown-documenter/src/api-item-transforms/ApiItemTransformUtilities.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ import * as Path from "node:path";
66

77
import { type ApiItem, ApiItemKind, ReleaseTag } from "@microsoft/api-extractor-model";
88

9-
import { type Heading } from "../Heading";
10-
import { type Link } from "../Link";
11-
import { getQualifiedApiItemName, getReleaseTag } from "../utilities";
9+
import { type Heading } from "../Heading.js";
10+
import { type Link } from "../Link.js";
11+
import { getQualifiedApiItemName, getReleaseTag } from "../utilities/index.js";
1212
import {
1313
type ApiItemTransformationConfiguration,
1414
type DocumentBoundaries,
1515
type HierarchyBoundaries,
16-
} from "./configuration";
16+
} from "./configuration/index.js";
1717

1818
/**
1919
* This module contains `ApiItem`-related utilities for use in transformation logic.

tools/api-markdown-documenter/src/api-item-transforms/TransformApiItem.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ import {
2222
type ApiVariable,
2323
} from "@microsoft/api-extractor-model";
2424

25-
import { type DocumentNode, type SectionNode } from "../documentation-domain";
26-
import { doesItemRequireOwnDocument, shouldItemBeIncluded } from "./ApiItemTransformUtilities";
27-
import { createDocument } from "./Utilities";
28-
import { type ApiItemTransformationConfiguration } from "./configuration";
29-
import { createBreadcrumbParagraph, wrapInSection } from "./helpers";
25+
import { type DocumentNode, type SectionNode } from "../documentation-domain/index.js";
26+
import { doesItemRequireOwnDocument, shouldItemBeIncluded } from "./ApiItemTransformUtilities.js";
27+
import { createDocument } from "./Utilities.js";
28+
import { type ApiItemTransformationConfiguration } from "./configuration/index.js";
29+
import { createBreadcrumbParagraph, wrapInSection } from "./helpers/index.js";
3030

3131
/**
3232
* Creates a {@link DocumentNode} for the specified `apiItem`.

tools/api-markdown-documenter/src/api-item-transforms/TransformApiModel.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import {
99
type ApiPackage,
1010
} from "@microsoft/api-extractor-model";
1111

12-
import { type DocumentNode, type SectionNode } from "../documentation-domain";
13-
import { createDocument } from "./Utilities";
12+
import { type DocumentNode, type SectionNode } from "../documentation-domain/index.js";
13+
import { createDocument } from "./Utilities.js";
1414
import {
1515
type ApiItemTransformationConfiguration,
1616
getApiItemTransformationConfigurationWithDefaults,
17-
} from "./configuration";
18-
import { doesItemRequireOwnDocument, shouldItemBeIncluded } from "./ApiItemTransformUtilities";
19-
import { createBreadcrumbParagraph, createEntryPointList, wrapInSection } from "./helpers";
20-
import { apiItemToDocument, apiItemToSections } from "./TransformApiItem";
17+
} from "./configuration/index.js";
18+
import { doesItemRequireOwnDocument, shouldItemBeIncluded } from "./ApiItemTransformUtilities.js";
19+
import { createBreadcrumbParagraph, createEntryPointList, wrapInSection } from "./helpers/index.js";
20+
import { apiItemToDocument, apiItemToSections } from "./TransformApiItem.js";
2121

2222
/**
2323
* Renders the provided model and its contents to a series of {@link DocumentNode}s.

tools/api-markdown-documenter/src/api-item-transforms/TsdocNodeTransforms.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
type DocInlineTag,
2020
} from "@microsoft/tsdoc";
2121

22-
import { type Link } from "../Link";
22+
import { type Link } from "../Link.js";
2323
import {
2424
CodeSpanNode,
2525
type DocumentationNode,
@@ -32,10 +32,10 @@ import {
3232
type SingleLineDocumentationNode,
3333
SingleLineSpanNode,
3434
SpanNode,
35-
} from "../documentation-domain";
36-
import { type ConfigurationBase } from "../ConfigurationBase";
37-
import { getTsdocNodeTransformationOptions } from "./Utilities";
38-
import { type ApiItemTransformationConfiguration } from "./configuration";
35+
} from "../documentation-domain/index.js";
36+
import { type ConfigurationBase } from "../ConfigurationBase.js";
37+
import { getTsdocNodeTransformationOptions } from "./Utilities.js";
38+
import { type ApiItemTransformationConfiguration } from "./configuration/index.js";
3939

4040
/**
4141
* Library of transformations from {@link https://github.com/microsoft/tsdoc/blob/main/tsdoc/src/nodes/DocNode.ts| DocNode}s

tools/api-markdown-documenter/src/api-item-transforms/Utilities.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ import {
1010
} from "@microsoft/api-extractor-model";
1111
import { type DocDeclarationReference } from "@microsoft/tsdoc";
1212

13-
import { DocumentNode, type SectionNode } from "../documentation-domain";
14-
import { type Link } from "../Link";
15-
import { getDocumentPathForApiItem, getLinkForApiItem } from "./ApiItemTransformUtilities";
16-
import { type TsdocNodeTransformOptions } from "./TsdocNodeTransforms";
17-
import { type ApiItemTransformationConfiguration } from "./configuration";
18-
import { wrapInSection } from "./helpers";
13+
import { DocumentNode, type SectionNode } from "../documentation-domain/index.js";
14+
import { type Link } from "../Link.js";
15+
import { getDocumentPathForApiItem, getLinkForApiItem } from "./ApiItemTransformUtilities.js";
16+
import { type TsdocNodeTransformOptions } from "./TsdocNodeTransforms.js";
17+
import { type ApiItemTransformationConfiguration } from "./configuration/index.js";
18+
import { wrapInSection } from "./helpers/index.js";
1919

2020
/**
2121
* Creates a {@link DocumentNode} representing the provided API item.

tools/api-markdown-documenter/src/api-item-transforms/configuration/Configuration.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
*/
55
import { type ApiModel } from "@microsoft/api-extractor-model";
66

7-
import { type ConfigurationBase } from "../../ConfigurationBase";
8-
import { defaultConsoleLogger } from "../../Logging";
7+
import { type ConfigurationBase } from "../../ConfigurationBase.js";
8+
import { defaultConsoleLogger } from "../../Logging.js";
99
import {
1010
type DocumentationSuiteOptions,
1111
getDocumentationSuiteOptionsWithDefaults,
12-
} from "./DocumentationSuiteOptions";
12+
} from "./DocumentationSuiteOptions.js";
1313
import {
1414
type ApiItemTransformationOptions,
1515
getApiItemTransformationOptionsWithDefaults,
16-
} from "./TransformationOptions";
16+
} from "./TransformationOptions.js";
1717

1818
/**
1919
* API Item transformation configuration.

tools/api-markdown-documenter/src/api-item-transforms/configuration/DocumentationSuiteOptions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
releaseTagToString,
2020
getSafeFilenameForName,
2121
getConciseSignature,
22-
} from "../../utilities";
22+
} from "../../utilities/index.js";
2323

2424
/**
2525
* List of item kinds for which separate documents should be generated.

tools/api-markdown-documenter/src/api-item-transforms/configuration/TransformationOptions.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import {
2323
type ApiVariable,
2424
} from "@microsoft/api-extractor-model";
2525

26-
import { type SectionNode } from "../../documentation-domain";
27-
import * as DefaultTransformationImplementations from "../default-implementations";
28-
import { type ApiItemTransformationConfiguration } from "./Configuration";
26+
import { type SectionNode } from "../../documentation-domain/index.js";
27+
import * as DefaultTransformationImplementations from "../default-implementations/index.js";
28+
import { type ApiItemTransformationConfiguration } from "./Configuration.js";
2929

3030
/**
3131
* Signature for a function which generates one or more {@link SectionNode}s describing an

tools/api-markdown-documenter/src/api-item-transforms/configuration/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66
export {
77
type ApiItemTransformationConfiguration,
88
getApiItemTransformationConfigurationWithDefaults,
9-
} from "./Configuration";
9+
} from "./Configuration.js";
1010
export {
1111
// Consumers should not use this, it exists externally for documentation purposes only.
1212
type DefaultDocumentationSuiteOptions,
1313
type DocumentBoundaries,
1414
type DocumentationSuiteOptions,
1515
getDocumentationSuiteOptionsWithDefaults,
1616
type HierarchyBoundaries,
17-
} from "./DocumentationSuiteOptions";
17+
} from "./DocumentationSuiteOptions.js";
1818
export {
1919
type ApiItemTransformationOptions,
2020
getApiItemTransformationOptionsWithDefaults,
2121
type TransformApiItemWithChildren,
2222
type TransformApiItemWithoutChildren,
23-
} from "./TransformationOptions";
23+
} from "./TransformationOptions.js";

tools/api-markdown-documenter/src/api-item-transforms/default-implementations/CreateDefaultLayout.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
*/
55
import { type ApiItem, ReleaseTag } from "@microsoft/api-extractor-model";
66

7-
import { type SectionNode } from "../../documentation-domain";
8-
import { doesItemRequireOwnDocument, getHeadingForApiItem } from "../ApiItemTransformUtilities";
9-
import { type ApiItemTransformationConfiguration } from "../configuration";
7+
import { type SectionNode } from "../../documentation-domain/index.js";
8+
import { doesItemRequireOwnDocument, getHeadingForApiItem } from "../ApiItemTransformUtilities.js";
9+
import { type ApiItemTransformationConfiguration } from "../configuration/index.js";
1010
import {
1111
alphaWarningSpan,
1212
betaWarningSpan,
@@ -18,8 +18,8 @@ import {
1818
createSummaryParagraph,
1919
createThrowsSection,
2020
wrapInSection,
21-
} from "../helpers";
22-
import { getReleaseTag } from "../../utilities";
21+
} from "../helpers/index.js";
22+
import { getReleaseTag } from "../../utilities/index.js";
2323

2424
/**
2525
* Default content layout for all API items.

0 commit comments

Comments
 (0)