AsyncWebAssemblyGenerator.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const Generator = require("../Generator");
  7. const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypesConstants");
  8. /** @typedef {import("webpack-sources").Source} Source */
  9. /** @typedef {import("../Generator").GenerateContext} GenerateContext */
  10. /** @typedef {import("../Module").SourceTypes} SourceTypes */
  11. /** @typedef {import("../NormalModule")} NormalModule */
  12. /**
  13. * @typedef {object} AsyncWebAssemblyGeneratorOptions
  14. * @property {boolean} [mangleImports] mangle imports
  15. */
  16. class AsyncWebAssemblyGenerator extends Generator {
  17. /**
  18. * @param {AsyncWebAssemblyGeneratorOptions} options options
  19. */
  20. constructor(options) {
  21. super();
  22. this.options = options;
  23. }
  24. /**
  25. * @param {NormalModule} module fresh module
  26. * @returns {SourceTypes} available types (do not mutate)
  27. */
  28. getTypes(module) {
  29. return WEBASSEMBLY_TYPES;
  30. }
  31. /**
  32. * @param {NormalModule} module the module
  33. * @param {string=} type source type
  34. * @returns {number} estimate size of the module
  35. */
  36. getSize(module, type) {
  37. const originalSource = module.originalSource();
  38. if (!originalSource) {
  39. return 0;
  40. }
  41. return originalSource.size();
  42. }
  43. /**
  44. * @param {NormalModule} module module for which the code should be generated
  45. * @param {GenerateContext} generateContext context for generate
  46. * @returns {Source | null} generated code
  47. */
  48. generate(module, generateContext) {
  49. return /** @type {Source} */ (module.originalSource());
  50. }
  51. }
  52. module.exports = AsyncWebAssemblyGenerator;