JavascriptModule.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. */
  4. "use strict";
  5. const NormalModule = require("../NormalModule");
  6. const makeSerializable = require("../util/makeSerializable");
  7. /** @import { BuildMeta } from "../Module" */
  8. /**
  9. * @import {
  10. * NormalModuleBuildInfo,
  11. * NormalModuleCreateData
  12. * } from "../NormalModule"
  13. */
  14. /**
  15. * Defines the build info properties specific to javascript modules.
  16. * @typedef {object} KnownJavascriptModuleBuildInfo
  17. * @property {string=} moduleConcatenationBailout using in CommonJs
  18. * @property {boolean=} needCreateRequire using in APIPlugin
  19. * @property {boolean=} usingPublicPathOverride module reassigns `__webpack_public_path__` at runtime, using in APIPlugin
  20. * @property {Set<string>=} pureFunctions names of locally declared functions known to be free of side effects
  21. * @property {boolean=} inlineExports whether this module was parsed with `optimization.inlineExports` enabled (gates inlining of its exports)
  22. * @property {boolean=} usesTopLevelUsingDeclaration module scope holds a `using`/`await using` declaration, so its resources must be disposed when the module finished evaluating
  23. */
  24. /** @typedef {NormalModuleBuildInfo & KnownJavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
  25. /**
  26. * Defines the build meta properties specific to javascript modules.
  27. * @typedef {object} KnownJavascriptModuleBuildMeta
  28. * @property {boolean=} strictHarmonyModule
  29. * @property {boolean=} treatAsCommonJs
  30. */
  31. /** @typedef {BuildMeta & KnownJavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
  32. /**
  33. * Module class for all `javascript/*` modules. JavaScript-specific properties should live here instead of `NormalModule`.
  34. */
  35. class JavascriptModule extends NormalModule {
  36. /**
  37. * @param {NormalModuleCreateData} options options object
  38. */
  39. constructor(options) {
  40. super(options);
  41. // Redeclared with the javascript specific shape
  42. /** @type {JavascriptModuleBuildInfo | undefined} */
  43. this.buildInfo = undefined;
  44. /** @type {JavascriptModuleBuildMeta | undefined} */
  45. this.buildMeta = undefined;
  46. }
  47. }
  48. makeSerializable(JavascriptModule, "webpack/lib/javascript/JavascriptModule");
  49. module.exports = JavascriptModule;