2020-04-18 19:55:10 +02:00
|
|
|
import RefreshRuntime from 'react-refresh/runtime'
|
|
|
|
import RefreshHelpers from './internal/helpers'
|
|
|
|
|
|
|
|
export type RefreshRuntimeGlobals = {
|
|
|
|
$RefreshReg$: (type: unknown, id: string) => void
|
|
|
|
$RefreshSig$: () => (type: unknown) => unknown
|
|
|
|
$RefreshInterceptModuleExecution$: (moduleId: string) => () => void
|
|
|
|
$RefreshHelpers$: typeof RefreshHelpers
|
|
|
|
}
|
|
|
|
|
|
|
|
declare const self: Window & RefreshRuntimeGlobals
|
|
|
|
|
|
|
|
// Hook into ReactDOM initialization
|
|
|
|
RefreshRuntime.injectIntoGlobalHook(self)
|
|
|
|
|
|
|
|
// noop fns to prevent runtime errors during initialization
|
|
|
|
self.$RefreshReg$ = () => {}
|
2020-05-18 21:24:37 +02:00
|
|
|
self.$RefreshSig$ = () => (type) => type
|
2020-04-18 19:55:10 +02:00
|
|
|
|
|
|
|
// Register global helpers
|
|
|
|
self.$RefreshHelpers$ = RefreshHelpers
|
|
|
|
|
|
|
|
// Register a helper for module execution interception
|
2020-05-18 21:24:37 +02:00
|
|
|
self.$RefreshInterceptModuleExecution$ = function (webpackModuleId) {
|
2020-04-18 19:55:10 +02:00
|
|
|
const prevRefreshReg = self.$RefreshReg$
|
|
|
|
const prevRefreshSig = self.$RefreshSig$
|
|
|
|
|
|
|
|
self.$RefreshReg$ = (type, id) => {
|
|
|
|
RefreshRuntime.register(type, webpackModuleId + ' ' + id)
|
|
|
|
}
|
|
|
|
self.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform
|
|
|
|
|
|
|
|
// Modeled after `useEffect` cleanup pattern:
|
|
|
|
// https://reactjs.org/docs/hooks-effect.html#effects-with-cleanup
|
|
|
|
return () => {
|
|
|
|
self.$RefreshReg$ = prevRefreshReg
|
|
|
|
self.$RefreshSig$ = prevRefreshSig
|
|
|
|
}
|
|
|
|
}
|