Skip to content

Commit 4c04e4c

Browse files
authoredApr 22, 2025
fix: should redirect import_require_clause statement in dts (#945)
1 parent 33e9243 commit 4c04e4c

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed
 

‎packages/plugin-dts/src/utils.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ export async function redirectDtsImports(
214214
const matcher: NapiConfig = {
215215
rule: {
216216
any: [
217+
// import foo from 'bar'
217218
{
218219
kind: 'import_statement',
219220
has: {
@@ -224,6 +225,21 @@ export async function redirectDtsImports(
224225
},
225226
},
226227
},
228+
// import foo = require('bar')
229+
{
230+
kind: 'import_statement',
231+
has: {
232+
kind: 'import_require_clause',
233+
has: {
234+
field: 'source',
235+
has: {
236+
pattern: '$IMP',
237+
kind: 'string_fragment',
238+
},
239+
},
240+
},
241+
},
242+
// export { foo } from 'bar'
227243
{
228244
kind: 'export_statement',
229245
has: {
@@ -234,6 +250,7 @@ export async function redirectDtsImports(
234250
},
235251
},
236252
},
253+
// require('foo') / import('foo')
237254
{
238255
any: [{ pattern: 'require($A)' }, { pattern: 'import($A)' }],
239256
has: {

‎tests/integration/redirect/dts.test.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ test('redirect.dts.path: true with redirect.dts.extension: false - default', asy
2424
import type { Baz } from './';
2525
import type { LoggerOptions } from './types';
2626
import { defaultOptions } from './types.js';
27-
export { type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
27+
import sources = require('./logger');
28+
export { sources, type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
2829
export type { Foo } from './types';
2930
export type { Bar } from './types';
3031
export * from './foo';
@@ -71,7 +72,8 @@ test('redirect.dts.path: false with redirect.dts.extension: false', async () =>
7172
import type { Baz } from 'self-entry';
7273
import type { LoggerOptions } from './types';
7374
import { defaultOptions } from './types.js';
74-
export { type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
75+
import sources = require('@src/logger');
76+
export { sources, type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
7577
export type { Foo } from '@src/types';
7678
export type { Bar } from 'types';
7779
export * from './foo';
@@ -118,7 +120,8 @@ test('redirect.dts.path: true with redirect.dts.extension: true', async () => {
118120
import type { Baz } from './index.js';
119121
import type { LoggerOptions } from './types.js';
120122
import { defaultOptions } from './types.js';
121-
export { type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
123+
import sources = require('./logger.js');
124+
export { sources, type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
122125
export type { Foo } from './types.js';
123126
export type { Bar } from './types.js';
124127
export * from './foo/index.js';
@@ -165,7 +168,8 @@ test('redirect.dts.path: false with dts.redirect.extension: true', async () => {
165168
import type { Baz } from 'self-entry';
166169
import type { LoggerOptions } from './types.js';
167170
import { defaultOptions } from './types.js';
168-
export { type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
171+
import sources = require('@src/logger');
172+
export { sources, type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
169173
export type { Foo } from '@src/types';
170174
export type { Bar } from 'types';
171175
export * from './foo/index.js';
@@ -219,7 +223,8 @@ test('redirect.dts.extension: true with dts.autoExtension: true', async () => {
219223
import type { Baz } from './index.mjs';
220224
import type { LoggerOptions } from './types.mjs';
221225
import { defaultOptions } from './types.mjs';
222-
export { type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
226+
import sources = require('./logger.mjs');
227+
export { sources, type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
223228
export type { Foo } from './types.mjs';
224229
export type { Bar } from './types.mjs';
225230
export * from './foo/index.mjs';
@@ -233,7 +238,8 @@ test('redirect.dts.extension: true with dts.autoExtension: true', async () => {
233238
import type { Baz } from './index.js';
234239
import type { LoggerOptions } from './types.js';
235240
import { defaultOptions } from './types.js';
236-
export { type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
241+
import sources = require('./logger.js');
242+
export { sources, type Baz as self, logRequest, logger, type LoggerOptions, defaultOptions, };
237243
export type { Foo } from './types.js';
238244
export type { Bar } from './types.js';
239245
export * from './foo/index.js';

‎tests/integration/redirect/dts/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import { logger } from 'rslog';
33
import type { Baz } from 'self-entry';
44
import type { LoggerOptions } from './types';
55
import { defaultOptions } from './types.js';
6+
import sources = require('@src/logger');
67

78
export {
9+
sources,
810
type Baz as self,
911
logRequest,
1012
logger,

0 commit comments

Comments
 (0)
Failed to load comments.