URLContextDependency.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. * Creates an instance of URLContextDependency.
  17. * @param {ContextDependencyOptions} options options
  18. * @param {Range} range range
  19. * @param {Range} valueRange value range
  20. */
  21. constructor(options, range, valueRange) {
  22. super(options);
  23. this.range = range;
  24. this.valueRange = valueRange;
  25. }
  26. get type() {
  27. return "new URL() context";
  28. }
  29. get category() {
  30. return "url";
  31. }
  32. /**
  33. * Serializes this instance into the provided serializer context.
  34. * @param {ObjectSerializerContext} context context
  35. */
  36. serialize(context) {
  37. const { write } = context;
  38. write(this.valueRange);
  39. super.serialize(context);
  40. }
  41. /**
  42. * Restores this instance from the provided deserializer context.
  43. * @param {ObjectDeserializerContext} context context
  44. */
  45. deserialize(context) {
  46. const { read } = context;
  47. this.valueRange = read();
  48. super.deserialize(context);
  49. }
  50. }
  51. makeSerializable(
  52. URLContextDependency,
  53. "webpack/lib/dependencies/URLContextDependency"
  54. );
  55. URLContextDependency.Template = ContextDependencyTemplateAsRequireCall;
  56. module.exports = URLContextDependency;