URLContextDependency.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Haijie Xie @hai-x
  4. */
  5. "use strict";
  6. const makeSerializable = require("../util/makeSerializable");
  7. const ContextDependency = require("./ContextDependency");
  8. const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
  9. /** @typedef {import("../ContextModule").ContextOptions} ContextOptions */
  10. /** @typedef {import("../javascript/JavascriptParser").Range} Range */
  11. /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
  12. /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
  13. /** @typedef {ContextOptions & { request: string }} ContextDependencyOptions */
  14. class URLContextDependency extends ContextDependency {
  15. /**
  16. * @param {ContextDependencyOptions} options options
  17. * @param {Range} range range
  18. * @param {Range} valueRange value range
  19. */
  20. constructor(options, range, valueRange) {
  21. super(options);
  22. this.range = range;
  23. this.valueRange = valueRange;
  24. }
  25. get type() {
  26. return "new URL() context";
  27. }
  28. get category() {
  29. return "url";
  30. }
  31. /**
  32. * @param {ObjectSerializerContext} context context
  33. */
  34. serialize(context) {
  35. const { write } = context;
  36. write(this.valueRange);
  37. super.serialize(context);
  38. }
  39. /**
  40. * @param {ObjectDeserializerContext} context context
  41. */
  42. deserialize(context) {
  43. const { read } = context;
  44. this.valueRange = read();
  45. super.deserialize(context);
  46. }
  47. }
  48. makeSerializable(
  49. URLContextDependency,
  50. "webpack/lib/dependencies/URLContextDependency"
  51. );
  52. URLContextDependency.Template = ContextDependencyTemplateAsRequireCall;
  53. module.exports = URLContextDependency;