Files
khalij-pay/node_modules/@vitejs/plugin-react/dist/refreshUtils.js
2025-10-23 21:52:07 +03:30

59 lines
1.9 KiB
JavaScript

function debounce(fn, delay) {
let handle
return () => {
clearTimeout(handle)
handle = setTimeout(fn, delay)
}
}
/* eslint-disable no-undef */
const enqueueUpdate = debounce(exports.performReactRefresh, 16)
// Taken from https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/lib/runtime/RefreshUtils.js#L141
// This allows to resister components not detected by SWC like styled component
function registerExportsForReactRefresh(filename, moduleExports) {
for (const key in moduleExports) {
if (key === '__esModule') continue
const exportValue = moduleExports[key]
if (exports.isLikelyComponentType(exportValue)) {
exports.register(exportValue, filename + ' ' + key)
}
}
}
function validateRefreshBoundaryAndEnqueueUpdate(prevExports, nextExports) {
if (!predicateOnExport(prevExports, (key) => !!nextExports[key])) {
return 'Could not Fast Refresh (export removed)'
}
let hasExports = false
const allExportsAreComponentsOrUnchanged = predicateOnExport(
nextExports,
(key, value) => {
hasExports = true
if (exports.isLikelyComponentType(value)) return true
if (!prevExports[key]) return false
return prevExports[key] === nextExports[key]
},
)
if (hasExports && allExportsAreComponentsOrUnchanged) {
enqueueUpdate()
} else {
return 'Could not Fast Refresh. Learn more at https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#consistent-components-exports'
}
}
function predicateOnExport(moduleExports, predicate) {
for (const key in moduleExports) {
if (key === '__esModule') continue
const desc = Object.getOwnPropertyDescriptor(moduleExports, key)
if (desc && desc.get) return false
if (!predicate(key, moduleExports[key])) return false
}
return true
}
exports.registerExportsForReactRefresh = registerExportsForReactRefresh
exports.validateRefreshBoundaryAndEnqueueUpdate =
validateRefreshBoundaryAndEnqueueUpdate