-
-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy patheslint-typescript6.cjs
More file actions
36 lines (32 loc) · 1.25 KB
/
Copy patheslint-typescript6.cjs
File metadata and controls
36 lines (32 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// TypeScript 7 is a native CLI and intentionally has no JavaScript compiler
// API yet. ESLint's TypeScript parser still requires that API, so route only
// its `typescript` imports to the official side-by-side TypeScript 6 package.
const Module = require('node:module')
const path = require('node:path')
const { pathToFileURL } = require('node:url')
const originalResolveFilename = Module._resolveFilename
const typescript6Package =
require.resolve('@typescript/typescript6/package.json')
const typescript6Directory = path.dirname(typescript6Package)
function resolveTypeScript6(request) {
if (request === 'typescript') {
return path.join(typescript6Directory, 'lib', 'typescript.js')
}
if (request.startsWith('typescript/')) {
return path.join(typescript6Directory, request.slice('typescript/'.length))
}
}
Module.registerHooks({
resolve(specifier, context, nextResolve) {
const resolved = resolveTypeScript6(specifier)
return resolved
? { shortCircuit: true, url: pathToFileURL(resolved).href }
: nextResolve(specifier, context)
},
})
Module._resolveFilename = function resolveFilename(request, parent, ...rest) {
return (
resolveTypeScript6(request) ??
originalResolveFilename.call(this, request, parent, ...rest)
)
}