Skip to content

Commit adb8bd7

Browse files
committed
feat(util): importXResolverCompat
1 parent 3727767 commit adb8bd7

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ import type {
7171
PluginFlatBaseConfig,
7272
PluginFlatConfig,
7373
} from './types'
74+
import { importXResolverCompat } from './utils'
7475

7576
const rules = {
7677
'no-unresolved': noUnresolved,
@@ -181,4 +182,5 @@ export = {
181182
configs,
182183
flatConfigs,
183184
rules,
185+
importXResolverCompat
184186
}

src/utils/resolve.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import stableHash from 'stable-hash'
55

66
import type {
77
ImportSettings,
8+
LegacyResolver,
89
NewResolver,
910
PluginSettings,
1011
RuleContext,
@@ -74,7 +75,8 @@ function isNamedResolver(resolver: unknown): resolver is { name: string } {
7475
typeof resolver === 'object' &&
7576
resolver &&
7677
'name' in resolver &&
77-
typeof resolver.name === 'string'
78+
typeof resolver.name === 'string' &&
79+
resolver.name
7880
)
7981
}
8082

@@ -233,3 +235,26 @@ export function resolve(p: string, context: RuleContext) {
233235
}
234236
}
235237
}
238+
239+
export function importXResolverCompat(resolver: LegacyResolver | NewResolver, resolverOptions: unknown = {}): NewResolver {
240+
// Somehow the resolver is already using v3 interface
241+
if (isValidNewResolver(resolver)) {
242+
return resolver
243+
}
244+
245+
return {
246+
// deliberately not providing the name, because we can't get the name from legacy resolvers
247+
// By omitting the name, the log will use identifiable name like `settings['import-x/resolver-next'][0]`
248+
// name: 'import-x-resolver-compat',
249+
interfaceVersion: 3,
250+
resolve: (modulePath, sourceFile) => {
251+
const resolved = resolveWithLegacyResolver(
252+
resolver,
253+
resolverOptions,
254+
modulePath,
255+
sourceFile,
256+
)
257+
return resolved
258+
},
259+
}
260+
}

0 commit comments

Comments
 (0)