rushstack icon indicating copy to clipboard operation
rushstack copied to clipboard

[api-extractor] Re-exported `import *` namespaces produce malformed .d.ts rollups (with `bundledPackages`)

Open Josmithr opened this issue 1 year ago • 4 comments

Summary

See this repo for a repro of the issue: https://github.com/Josmithr/api-extractor-playground/tree/re-export-module-namespace

The repo contains 2 packages, package-a and package-b. package-b depends on package-a, and both are configured with API-Extractor.

In this scenario, package-a contains a single root export, which is a "namespace" generated via:

package-a/src/index.ts

import * as A from './NamespaceModule.js';
export { A };

It's type rollup, generated by API-Extractor looks like this:

package-a/dist/rollup.d.ts

declare namespace A {
	export { Foo, bar, Baz };
}
export { A };

/** @public */
declare const bar = 5;

/** @public */
declare interface Baz {
	value: string;
}

/** @public */
declare class Foo {}

export {};

package-b also contains a single root export, which is simply a re-export of namespace A from package-a. It is also configured with package-a specified in its bundledPackages. Its export looks like this:

package-b/src/index.ts

export { A } from 'package-a';

I would expect package-b's type roll-up to look identical to that of package-a, but instead, a malformed rollup is generated:

package-b/dist/rollup.d.ts with bundledPackages

export declare namespace A {
	{
		Foo, bar, Baz;
	}
}

export {};

package-b/dist/rollup.d.ts WITHOUT bundledPackages

import { A } from "package-a";
export { A }

Notice that the necessary imports are missing for Foo, bar, and Baz.

Standard questions

Please answer these questions to help us investigate your issue more quickly:

Question Answer
@microsoft/api-extractor version? 7.47.0
Operating system? Linux (GitHub Codespace)
API Extractor scenario? reporting (.api.md) / rollups (.d.ts) / docs (.api.json)
Would you consider contributing a PR? Yes
TypeScript compiler version? 5.5.2
Node.js version (node -v)? 20.12.1

Josmithr avatar Jun 25 '24 18:06 Josmithr