AMDRuntimeModules.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. */
  4. "use strict";
  5. const RuntimeGlobals = require("../RuntimeGlobals");
  6. const RuntimeModule = require("../RuntimeModule");
  7. const Template = require("../Template");
  8. /** @import { AmdOptions } from "./AMDPlugin" */
  9. class AMDDefineRuntimeModule extends RuntimeModule {
  10. constructor() {
  11. super("amd define");
  12. }
  13. /**
  14. * Returns true, if the runtime module should get it's own scope.
  15. * When false, `generate()` must emit complete statements ending with `;`
  16. * so a following runtime IIFE is not parsed as a call (ASI).
  17. * @returns {boolean} true, if the runtime module should get it's own scope
  18. */
  19. shouldIsolate() {
  20. return false;
  21. }
  22. /**
  23. * Generates runtime code for this runtime module.
  24. * @returns {string | null} runtime code
  25. */
  26. generate() {
  27. return Template.asString([
  28. `${RuntimeGlobals.amdDefine} = function () {`,
  29. Template.indent("throw new Error('define cannot be used indirect');"),
  30. "};"
  31. ]);
  32. }
  33. }
  34. class AMDOptionsRuntimeModule extends RuntimeModule {
  35. /**
  36. * Returns true, if the runtime module should get it's own scope.
  37. * When false, `generate()` must emit complete statements ending with `;`
  38. * so a following runtime IIFE is not parsed as a call (ASI).
  39. * @returns {boolean} true, if the runtime module should get it's own scope
  40. */
  41. shouldIsolate() {
  42. return false;
  43. }
  44. /**
  45. * Creates an instance of AMDOptionsRuntimeModule.
  46. * @param {AmdOptions} options the AMD options
  47. */
  48. constructor(options) {
  49. super("amd options");
  50. this.options = options;
  51. }
  52. /**
  53. * Generates runtime code for this runtime module.
  54. * @returns {string | null} runtime code
  55. */
  56. generate() {
  57. return Template.asString([
  58. `${RuntimeGlobals.amdOptions} = ${JSON.stringify(this.options)};`
  59. ]);
  60. }
  61. }
  62. module.exports.AMDDefineRuntimeModule = AMDDefineRuntimeModule;
  63. module.exports.AMDOptionsRuntimeModule = AMDOptionsRuntimeModule;