FallbackDependency.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const Dependency = require("../Dependency");
  7. const makeSerializable = require("../util/makeSerializable");
  8. /** @typedef {import("./RemoteModule").ExternalRequests} ExternalRequests */
  9. /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
  10. /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
  11. class FallbackDependency extends Dependency {
  12. /**
  13. * Creates an instance of FallbackDependency.
  14. * @param {ExternalRequests} requests requests
  15. */
  16. constructor(requests) {
  17. super();
  18. /** @type {ExternalRequests} */
  19. this.requests = requests;
  20. }
  21. /**
  22. * Returns an identifier to merge equal requests.
  23. * @returns {string | null} an identifier to merge equal requests
  24. */
  25. getResourceIdentifier() {
  26. return `fallback ${this.requests.join(" ")}`;
  27. }
  28. get type() {
  29. return "fallback";
  30. }
  31. get category() {
  32. return "esm";
  33. }
  34. /**
  35. * Serializes this instance into the provided serializer context.
  36. * @param {ObjectSerializerContext} context context
  37. */
  38. serialize(context) {
  39. const { write } = context;
  40. write(this.requests);
  41. super.serialize(context);
  42. }
  43. /**
  44. * Restores this instance from the provided deserializer context.
  45. * @param {ObjectDeserializerContext} context context
  46. * @returns {FallbackDependency} deserialize fallback dependency
  47. */
  48. static deserialize(context) {
  49. const { read } = context;
  50. const obj = new FallbackDependency(read());
  51. obj.deserialize(context);
  52. return obj;
  53. }
  54. }
  55. makeSerializable(
  56. FallbackDependency,
  57. "webpack/lib/container/FallbackDependency"
  58. );
  59. module.exports = FallbackDependency;