Skip to content

[api-extractor] Internal Error: "Unable to analyze the export \"default\"" when re-exporting default from .d.cts module that uses export = #5694

@phobetron

Description

@phobetron

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

  1. 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;
}
  1. 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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Needs triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions