@vitejs/plugin-react 4.3.4 → 4.4.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/dist/index.cjs +106 -102
- package/dist/index.d.cts +10 -1
- package/dist/index.d.mts +10 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.mjs +106 -97
- package/dist/refresh-runtime.js +647 -0
- package/package.json +16 -5
- package/dist/refreshUtils.js +0 -93
package/dist/refreshUtils.js
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
function debounce(fn, delay) {
|
2
|
-
let handle
|
3
|
-
return () => {
|
4
|
-
clearTimeout(handle)
|
5
|
-
handle = setTimeout(fn, delay)
|
6
|
-
}
|
7
|
-
}
|
8
|
-
|
9
|
-
/* eslint-disable no-undef */
|
10
|
-
const hooks = []
|
11
|
-
window.__registerBeforePerformReactRefresh = (cb) => {
|
12
|
-
hooks.push(cb)
|
13
|
-
}
|
14
|
-
const enqueueUpdate = debounce(async () => {
|
15
|
-
if (hooks.length) await Promise.all(hooks.map((cb) => cb()))
|
16
|
-
exports.performReactRefresh()
|
17
|
-
}, 16)
|
18
|
-
|
19
|
-
// Taken from https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/lib/runtime/RefreshUtils.js#L141
|
20
|
-
// This allows to resister components not detected by SWC like styled component
|
21
|
-
function registerExportsForReactRefresh(filename, moduleExports) {
|
22
|
-
for (const key in moduleExports) {
|
23
|
-
if (key === '__esModule') continue
|
24
|
-
const exportValue = moduleExports[key]
|
25
|
-
if (exports.isLikelyComponentType(exportValue)) {
|
26
|
-
// 'export' is required to avoid key collision when renamed exports that
|
27
|
-
// shadow a local component name: https://github.com/vitejs/vite-plugin-react/issues/116
|
28
|
-
// The register function has an identity check to not register twice the same component,
|
29
|
-
// so this is safe to not used the same key here.
|
30
|
-
exports.register(exportValue, filename + ' export ' + key)
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
function validateRefreshBoundaryAndEnqueueUpdate(id, prevExports, nextExports) {
|
36
|
-
const ignoredExports = window.__getReactRefreshIgnoredExports?.({ id }) ?? []
|
37
|
-
if (
|
38
|
-
predicateOnExport(
|
39
|
-
ignoredExports,
|
40
|
-
prevExports,
|
41
|
-
(key) => key in nextExports,
|
42
|
-
) !== true
|
43
|
-
) {
|
44
|
-
return 'Could not Fast Refresh (export removed)'
|
45
|
-
}
|
46
|
-
if (
|
47
|
-
predicateOnExport(
|
48
|
-
ignoredExports,
|
49
|
-
nextExports,
|
50
|
-
(key) => key in prevExports,
|
51
|
-
) !== true
|
52
|
-
) {
|
53
|
-
return 'Could not Fast Refresh (new export)'
|
54
|
-
}
|
55
|
-
|
56
|
-
let hasExports = false
|
57
|
-
const allExportsAreComponentsOrUnchanged = predicateOnExport(
|
58
|
-
ignoredExports,
|
59
|
-
nextExports,
|
60
|
-
(key, value) => {
|
61
|
-
hasExports = true
|
62
|
-
if (exports.isLikelyComponentType(value)) return true
|
63
|
-
return prevExports[key] === nextExports[key]
|
64
|
-
},
|
65
|
-
)
|
66
|
-
if (hasExports && allExportsAreComponentsOrUnchanged === true) {
|
67
|
-
enqueueUpdate()
|
68
|
-
} else {
|
69
|
-
return `Could not Fast Refresh ("${allExportsAreComponentsOrUnchanged}" export is incompatible). Learn more at https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#consistent-components-exports`
|
70
|
-
}
|
71
|
-
}
|
72
|
-
|
73
|
-
function predicateOnExport(ignoredExports, moduleExports, predicate) {
|
74
|
-
for (const key in moduleExports) {
|
75
|
-
if (key === '__esModule') continue
|
76
|
-
if (ignoredExports.includes(key)) continue
|
77
|
-
const desc = Object.getOwnPropertyDescriptor(moduleExports, key)
|
78
|
-
if (desc && desc.get) return key
|
79
|
-
if (!predicate(key, moduleExports[key])) return key
|
80
|
-
}
|
81
|
-
return true
|
82
|
-
}
|
83
|
-
|
84
|
-
// Hides vite-ignored dynamic import so that Vite can skip analysis if no other
|
85
|
-
// dynamic import is present (https://github.com/vitejs/vite/pull/12732)
|
86
|
-
function __hmr_import(module) {
|
87
|
-
return import(/* @vite-ignore */ module)
|
88
|
-
}
|
89
|
-
|
90
|
-
exports.__hmr_import = __hmr_import
|
91
|
-
exports.registerExportsForReactRefresh = registerExportsForReactRefresh
|
92
|
-
exports.validateRefreshBoundaryAndEnqueueUpdate =
|
93
|
-
validateRefreshBoundaryAndEnqueueUpdate
|