123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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;
|