Summary
I am trying to run API Extractor on declarations that include a re-export of default from a .d.cts file that uses export =.
API Extractor throws an internal error instead of analyzing the export.
The failure is reproducible in a minimal project with only two declaration files.
Repro steps
- Create a clean repro folder and files:
mkdir api-extractor-export-equals-repro
cd api-extractor-export-equals-repro
package.json
{
"name": "api-extractor-export-equals-repro",
"version": "0.0.0",
"private": true,
"devDependencies": {
"@microsoft/api-extractor": "7.57.6",
"typescript": "5.9.3"
}
}
tsconfig.json
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"strict": true,
"skipLibCheck": true
},
"include": ["./**/*"]
}
api-extractor.json
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"mainEntryPointFilePath": "<projectFolder>/index.d.ts",
"bundledPackages": [],
"compiler": {
"tsconfigFilePath": "<projectFolder>/tsconfig.json"
},
"apiReport": {
"enabled": false,
"reportFolder": "<projectFolder>/etc"
},
"docModel": {
"enabled": false
},
"dtsRollup": {
"enabled": false
},
"tsdocMetadata": {
"enabled": false
},
"messages": {
"compilerMessageReporting": {
"default": { "logLevel": "warning" }
},
"extractorMessageReporting": {
"default": { "logLevel": "warning" }
},
"tsdocMessageReporting": {
"default": { "logLevel": "warning" }
}
}
}
index.d.ts
export { default as ar } from "./ar.cjs";
ar.d.cts
import type * as errors from "./errors.cjs";
declare function _default(): { localeError: errors.Error };
export = _default;
errors.d.cts
export interface Error {
code: string;
}
- Install and run:
npm install
npx api-extractor run --diagnostics --local --config ./api-extractor.json
Expected result: API Extractor should analyze the export successfully (or emit a normal diagnostic if unsupported), but should not crash with an internal error.
Actual result: API Extractor throws:
ERROR: Internal Error: Unable to analyze the export "default" in
.../ar.d.cts
You have encountered a software defect. Please consider reporting the issue to the maintainers of this application.
(Also prints: Analysis will use the bundled TypeScript version 5.9.3.)
Details
This looks like a default re-export resolution bug for .d.cts modules that use export =.
In this repro:
index.d.ts uses export { default as ar } from "./ar.cjs"
- target declaration
ar.d.cts uses export = _default
TypeScript models export = differently from default, and API Extractor appears to throw while resolving this path instead of mapping/handling it.
I also observed the same failure with @microsoft/api-extractor@7.57.7.
Standard questions
Please answer these questions to help us investigate your issue more quickly:
| Question |
Answer |
@microsoft/api-extractor version? |
7.57.6 (also reproducible on 7.57.7) |
| Operating system? |
Mac (Darwin) |
| API Extractor scenario? |
rollups (.d.ts) |
| Would you consider contributing a PR? |
Yes |
| TypeScript compiler version? |
5.9.3 (bundled by API Extractor in diagnostics output) |
Node.js version (node -v)? |
v24.13.0 |
Summary
I am trying to run API Extractor on declarations that include a re-export of
defaultfrom a.d.ctsfile that usesexport =.API Extractor throws an internal error instead of analyzing the export.
The failure is reproducible in a minimal project with only two declaration files.
Repro steps
mkdir api-extractor-export-equals-repro cd api-extractor-export-equals-repropackage.json{ "name": "api-extractor-export-equals-repro", "version": "0.0.0", "private": true, "devDependencies": { "@microsoft/api-extractor": "7.57.6", "typescript": "5.9.3" } }tsconfig.json{ "compilerOptions": { "target": "ES2022", "module": "NodeNext", "moduleResolution": "NodeNext", "strict": true, "skipLibCheck": true }, "include": ["./**/*"] }api-extractor.json{ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", "mainEntryPointFilePath": "<projectFolder>/index.d.ts", "bundledPackages": [], "compiler": { "tsconfigFilePath": "<projectFolder>/tsconfig.json" }, "apiReport": { "enabled": false, "reportFolder": "<projectFolder>/etc" }, "docModel": { "enabled": false }, "dtsRollup": { "enabled": false }, "tsdocMetadata": { "enabled": false }, "messages": { "compilerMessageReporting": { "default": { "logLevel": "warning" } }, "extractorMessageReporting": { "default": { "logLevel": "warning" } }, "tsdocMessageReporting": { "default": { "logLevel": "warning" } } } }index.d.tsar.d.ctserrors.d.ctsExpected result: API Extractor should analyze the export successfully (or emit a normal diagnostic if unsupported), but should not crash with an internal error.
Actual result: API Extractor throws:
(Also prints:
Analysis will use the bundled TypeScript version 5.9.3.)Details
This looks like a
defaultre-export resolution bug for.d.ctsmodules that useexport =.In this repro:
index.d.tsusesexport { default as ar } from "./ar.cjs"ar.d.ctsusesexport = _defaultTypeScript models
export =differently fromdefault, and API Extractor appears to throw while resolving this path instead of mapping/handling it.I also observed the same failure with
@microsoft/api-extractor@7.57.7.Standard questions
Please answer these questions to help us investigate your issue more quickly:
@microsoft/api-extractorversion?node -v)?