ModuleTypeConstants.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Sean Larkin @TheLarkInn
  4. */
  5. "use strict";
  6. /**
  7. * @type {Readonly<"javascript/auto">}
  8. */
  9. const JAVASCRIPT_MODULE_TYPE_AUTO = "javascript/auto";
  10. /**
  11. * @type {Readonly<"javascript/dynamic">}
  12. */
  13. const JAVASCRIPT_MODULE_TYPE_DYNAMIC = "javascript/dynamic";
  14. /**
  15. * @type {Readonly<"javascript/esm">}
  16. * This is the module type used for _strict_ ES Module syntax. This means that all legacy formats
  17. * that webpack supports (CommonJS, AMD, SystemJS) are not supported.
  18. */
  19. const JAVASCRIPT_MODULE_TYPE_ESM = "javascript/esm";
  20. /**
  21. * @type {Readonly<"json">}
  22. * This is the module type used for JSON files. JSON files are always parsed as ES Module.
  23. */
  24. const JSON_MODULE_TYPE = "json";
  25. /**
  26. * @type {Readonly<"webassembly/async">}
  27. * This is the module type used for WebAssembly modules. In webpack 5 they are always treated as async modules.
  28. *
  29. */
  30. const WEBASSEMBLY_MODULE_TYPE_ASYNC = "webassembly/async";
  31. /**
  32. * @type {Readonly<"webassembly/sync">}
  33. * This is the module type used for WebAssembly modules. In webpack 4 they are always treated as sync modules.
  34. * There is a legacy option to support this usage in webpack 5 and up.
  35. */
  36. const WEBASSEMBLY_MODULE_TYPE_SYNC = "webassembly/sync";
  37. /**
  38. * @type {Readonly<"css">}
  39. * This is the module type used for CSS files.
  40. */
  41. const CSS_MODULE_TYPE = "css";
  42. /**
  43. * @type {Readonly<"css/global">}
  44. * This is the module type used for CSS modules files where you need to use `:local` in selector list to hash classes.
  45. */
  46. const CSS_MODULE_TYPE_GLOBAL = "css/global";
  47. /**
  48. * @type {Readonly<"css/module">}
  49. * This is the module type used for CSS modules files, by default all classes are hashed.
  50. */
  51. const CSS_MODULE_TYPE_MODULE = "css/module";
  52. /**
  53. * @type {Readonly<"css/auto">}
  54. * This is the module type used for CSS files, the module will be parsed as CSS modules if it's filename contains `.module.` or `.modules.`.
  55. */
  56. const CSS_MODULE_TYPE_AUTO = "css/auto";
  57. /**
  58. * @type {Readonly<"asset">}
  59. * This is the module type used for automatically choosing between `asset/inline`, `asset/resource` based on asset size limit (8096).
  60. */
  61. const ASSET_MODULE_TYPE = "asset";
  62. /**
  63. * @type {Readonly<"asset/inline">}
  64. * This is the module type used for assets that are inlined as a data URI. This is the equivalent of `url-loader`.
  65. */
  66. const ASSET_MODULE_TYPE_INLINE = "asset/inline";
  67. /**
  68. * @type {Readonly<"asset/resource">}
  69. * This is the module type used for assets that are copied to the output directory. This is the equivalent of `file-loader`.
  70. */
  71. const ASSET_MODULE_TYPE_RESOURCE = "asset/resource";
  72. /**
  73. * @type {Readonly<"asset/source">}
  74. * This is the module type used for assets that are imported as source code. This is the equivalent of `raw-loader`.
  75. */
  76. const ASSET_MODULE_TYPE_SOURCE = "asset/source";
  77. /**
  78. * @type {Readonly<"asset/raw-data-url">}
  79. * TODO: Document what this asset type is for. See css-loader tests for its usage.
  80. */
  81. const ASSET_MODULE_TYPE_RAW_DATA_URL = "asset/raw-data-url";
  82. /**
  83. * @type {Readonly<"runtime">}
  84. * This is the module type used for the webpack runtime abstractions.
  85. */
  86. const WEBPACK_MODULE_TYPE_RUNTIME = "runtime";
  87. /**
  88. * @type {Readonly<"fallback-module">}
  89. * This is the module type used for the ModuleFederation feature's FallbackModule class.
  90. * TODO: Document this better.
  91. */
  92. const WEBPACK_MODULE_TYPE_FALLBACK = "fallback-module";
  93. /**
  94. * @type {Readonly<"remote-module">}
  95. * This is the module type used for the ModuleFederation feature's RemoteModule class.
  96. * TODO: Document this better.
  97. */
  98. const WEBPACK_MODULE_TYPE_REMOTE = "remote-module";
  99. /**
  100. * @type {Readonly<"provide-module">}
  101. * This is the module type used for the ModuleFederation feature's ProvideModule class.
  102. * TODO: Document this better.
  103. */
  104. const WEBPACK_MODULE_TYPE_PROVIDE = "provide-module";
  105. /**
  106. * @type {Readonly<"consume-shared-module">}
  107. * This is the module type used for the ModuleFederation feature's ConsumeSharedModule class.
  108. */
  109. const WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE = "consume-shared-module";
  110. /**
  111. * @type {Readonly<"lazy-compilation-proxy">}
  112. * Module type used for `experiments.lazyCompilation` feature. See `LazyCompilationPlugin` for more information.
  113. */
  114. const WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY = "lazy-compilation-proxy";
  115. /** @typedef {"javascript/auto" | "javascript/dynamic" | "javascript/esm"} JavaScriptModuleTypes */
  116. /** @typedef {"json"} JSONModuleType */
  117. /** @typedef {"webassembly/async" | "webassembly/sync"} WebAssemblyModuleTypes */
  118. /** @typedef {"css" | "css/global" | "css/module"} CSSModuleTypes */
  119. /** @typedef {"asset" | "asset/inline" | "asset/resource" | "asset/source" | "asset/raw-data-url"} AssetModuleTypes */
  120. /** @typedef {"runtime" | "fallback-module" | "remote-module" | "provide-module" | "consume-shared-module" | "lazy-compilation-proxy"} WebpackModuleTypes */
  121. /** @typedef {string} UnknownModuleTypes */
  122. /** @typedef {JavaScriptModuleTypes | JSONModuleType | WebAssemblyModuleTypes | CSSModuleTypes | AssetModuleTypes | WebpackModuleTypes | UnknownModuleTypes} ModuleTypes */
  123. exports.ASSET_MODULE_TYPE = ASSET_MODULE_TYPE;
  124. exports.ASSET_MODULE_TYPE_RAW_DATA_URL = ASSET_MODULE_TYPE_RAW_DATA_URL;
  125. exports.ASSET_MODULE_TYPE_SOURCE = ASSET_MODULE_TYPE_SOURCE;
  126. exports.ASSET_MODULE_TYPE_RESOURCE = ASSET_MODULE_TYPE_RESOURCE;
  127. exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
  128. exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
  129. exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
  130. exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
  131. exports.JSON_MODULE_TYPE = JSON_MODULE_TYPE;
  132. exports.WEBASSEMBLY_MODULE_TYPE_ASYNC = WEBASSEMBLY_MODULE_TYPE_ASYNC;
  133. exports.WEBASSEMBLY_MODULE_TYPE_SYNC = WEBASSEMBLY_MODULE_TYPE_SYNC;
  134. exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
  135. exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
  136. exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
  137. exports.CSS_MODULE_TYPE_AUTO = CSS_MODULE_TYPE_AUTO;
  138. exports.WEBPACK_MODULE_TYPE_RUNTIME = WEBPACK_MODULE_TYPE_RUNTIME;
  139. exports.WEBPACK_MODULE_TYPE_FALLBACK = WEBPACK_MODULE_TYPE_FALLBACK;
  140. exports.WEBPACK_MODULE_TYPE_REMOTE = WEBPACK_MODULE_TYPE_REMOTE;
  141. exports.WEBPACK_MODULE_TYPE_PROVIDE = WEBPACK_MODULE_TYPE_PROVIDE;
  142. exports.WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE =
  143. WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE;
  144. exports.WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY =
  145. WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY;