ContainerExposedDependency.js 1.7 KB

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