HotModuleReplacementRuntimeModule.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const RuntimeGlobals = require("../RuntimeGlobals");
  7. const RuntimeModule = require("../RuntimeModule");
  8. const Template = require("../Template");
  9. /** @import Compilation from "../Compilation" */
  10. class HotModuleReplacementRuntimeModule extends RuntimeModule {
  11. constructor() {
  12. super("hot module replacement", RuntimeModule.STAGE_BASIC);
  13. }
  14. /**
  15. * Generates runtime code for this runtime module.
  16. * @returns {string | null} runtime code
  17. */
  18. generate() {
  19. const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
  20. return Template.getFunctionContent(
  21. require("./HotModuleReplacement.runtime")
  22. )
  23. .replace(
  24. "Object.prototype.hasOwnProperty.call(require, name)",
  25. runtimeTemplate.objectHasOwn("require", "name")
  26. )
  27. .replace(
  28. /\$interceptModuleExecution\$/g,
  29. RuntimeGlobals.interceptModuleExecution
  30. )
  31. .replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
  32. .replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
  33. .replace(/\$hmrDownloadManifest\$/g, RuntimeGlobals.hmrDownloadManifest)
  34. .replace(
  35. /\$hmrInvalidateModuleHandlers\$/g,
  36. RuntimeGlobals.hmrInvalidateModuleHandlers
  37. )
  38. .replace(
  39. /\$hmrDownloadUpdateHandlers\$/g,
  40. RuntimeGlobals.hmrDownloadUpdateHandlers
  41. );
  42. }
  43. }
  44. module.exports = HotModuleReplacementRuntimeModule;