knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
45 lines (44 loc) • 1.76 kB
JavaScript
import { ResolverFactory } from 'oxc-resolver';
import { DEFAULT_EXTENSIONS } from '../constants.js';
import { timerify } from './Performance.js';
import { toPosix } from './path.js';
const createSyncModuleResolver = (extensions) => {
const resolver = new ResolverFactory({
tsconfig: 'auto',
extensions,
extensionAlias: {
'.js': ['.js', '.ts'],
'.jsx': ['.jsx', '.tsx'],
'.mjs': ['.mjs', '.mts'],
'.cjs': ['.cjs', '.cts'],
},
conditionNames: ['require', 'import', 'node', 'default'],
});
return function resolveSync(specifier, basePath) {
try {
const resolved = resolver.resolveFileSync(basePath, specifier);
if (resolved?.path)
return toPosix(resolved.path);
}
catch (_error) { }
};
};
const resolveModuleSync = createSyncModuleResolver([...DEFAULT_EXTENSIONS, '.json', '.jsonc']);
export const _resolveModuleSync = timerify(resolveModuleSync, 'resolveModuleSync');
export const _createSyncModuleResolver = extensions => timerify(createSyncModuleResolver(extensions), 'resolveModuleSync');
const createSyncResolver = (extensions) => {
const resolver = new ResolverFactory({
extensions,
conditionNames: ['require', 'import', 'node', 'default'],
});
return function resolveSync(specifier, baseDir) {
try {
const resolved = resolver.sync(baseDir, specifier);
if (resolved?.path)
return toPosix(resolved.path);
}
catch (_error) { }
};
};
const resolveSync = createSyncResolver([...DEFAULT_EXTENSIONS, '.d.ts', '.d.mts', '.d.cts', '.json', '.jsonc']);
export const _resolveSync = timerify(resolveSync);