forked from vercel/next.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreact-channel-require-hook.js
More file actions
24 lines (21 loc) · 914 Bytes
/
react-channel-require-hook.js
File metadata and controls
24 lines (21 loc) · 914 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const mod = require('module')
const reactDir = 'react'
const reactDomDir = 'react-dom'
const hookPropertyMap = new Map([
['react', reactDir],
['react/package.json', `${reactDir}/package.json`],
['react/jsx-runtime', `${reactDir}/jsx-runtime`],
['react/jsx-dev-runtime', `${reactDir}/jsx-dev-runtime`],
['react-dom', `${reactDomDir}`],
['react-dom/package.json', `${reactDomDir}/package.json`],
['react-dom/client', `${reactDomDir}/client`],
['react-dom/server', `${reactDomDir}/server`],
['react-dom/server.browser', `${reactDomDir}/server.browser`],
['react-dom/server.edge', `${reactDomDir}/server.edge`],
])
const resolveFilename = mod._resolveFilename
mod._resolveFilename = function (request, parent, isMain, options) {
const hookResolved = hookPropertyMap.get(request)
if (hookResolved) request = hookResolved
return resolveFilename.call(mod, request, parent, isMain, options)
}