mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-24 09:25:15 +00:00
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
const RuntimeGlobals = require('webpack/lib/RuntimeGlobals');
|
|
const RuntimeModule = require('webpack/lib/RuntimeModule');
|
|
const Template = require('webpack/lib/Template');
|
|
const { refreshGlobal } = require('../globals');
|
|
const getRefreshGlobal = require('../utils/getRefreshGlobal');
|
|
|
|
class ReactRefreshRuntimeModule extends RuntimeModule {
|
|
constructor() {
|
|
// Second argument is the `stage` for this runtime module -
|
|
// we'll use the same stage as Webpack's HMR runtime module for safety.
|
|
super('react refresh', 5);
|
|
}
|
|
|
|
/**
|
|
* @returns {string} runtime code
|
|
*/
|
|
generate() {
|
|
const { runtimeTemplate } = this.compilation;
|
|
return Template.asString([
|
|
`${RuntimeGlobals.interceptModuleExecution}.push(${runtimeTemplate.basicFunction('options', [
|
|
`${runtimeTemplate.supportsConst() ? 'const' : 'var'} originalFactory = options.factory;`,
|
|
`options.factory = ${runtimeTemplate.basicFunction(
|
|
'moduleObject, moduleExports, webpackRequire',
|
|
[
|
|
`${refreshGlobal}.init();`,
|
|
'try {',
|
|
Template.indent(
|
|
'originalFactory.call(this, moduleObject, moduleExports, webpackRequire);'
|
|
),
|
|
'} finally {',
|
|
Template.indent(`${refreshGlobal}.cleanup(options.id);`),
|
|
'}',
|
|
]
|
|
)}`,
|
|
])})`,
|
|
'',
|
|
getRefreshGlobal(runtimeTemplate),
|
|
]);
|
|
}
|
|
}
|
|
|
|
module.exports = ReactRefreshRuntimeModule;
|