ModuleRequest.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright (c) 2021-2022, David Tuin <davidot@serenityos.org>
  3. * Copyright (c) 2023, networkException <networkexception@serenityos.org>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include <AK/DeprecatedFlyString.h>
  9. #include <AK/Vector.h>
  10. #include <LibJS/Module.h>
  11. namespace JS {
  12. struct ModuleWithSpecifier {
  13. ByteString specifier; // [[Specifier]]
  14. GC::Ref<Module> module; // [[Module]]
  15. };
  16. // https://tc39.es/proposal-import-attributes/#importattribute-record
  17. struct ImportAttribute {
  18. ByteString key;
  19. ByteString value;
  20. bool operator==(ImportAttribute const&) const = default;
  21. };
  22. // https://tc39.es/proposal-import-attributes/#modulerequest-record
  23. struct ModuleRequest {
  24. ModuleRequest() = default;
  25. explicit ModuleRequest(DeprecatedFlyString specifier)
  26. : module_specifier(move(specifier))
  27. {
  28. }
  29. ModuleRequest(DeprecatedFlyString specifier, Vector<ImportAttribute> attributes);
  30. void add_attribute(ByteString key, ByteString value)
  31. {
  32. attributes.empend(move(key), move(value));
  33. }
  34. DeprecatedFlyString module_specifier; // [[Specifier]]
  35. Vector<ImportAttribute> attributes; // [[Attributes]]
  36. bool operator==(ModuleRequest const&) const = default;
  37. };
  38. }