Browse Source

LibJS: Add ModuleWithSpecifier for LoadedModules

This patch adds ModuleWithSpecifier as the record type to be used in
the LoadedModules field of Realm, Script and Cyclic Module Records.
networkException 1 year ago
parent
commit
d60e8c9df5

+ 1 - 0
Userland/Libraries/LibJS/Forward.h

@@ -222,6 +222,7 @@ enum class DeclarationKind;
 struct AlreadyResolved;
 struct AlreadyResolved;
 struct JobCallback;
 struct JobCallback;
 struct ModuleRequest;
 struct ModuleRequest;
+struct ModuleWithSpecifier;
 
 
 // Not included in JS_ENUMERATE_NATIVE_OBJECTS due to missing distinct prototype
 // Not included in JS_ENUMERATE_NATIVE_OBJECTS due to missing distinct prototype
 class ProxyObject;
 class ProxyObject;

+ 7 - 0
Userland/Libraries/LibJS/Runtime/ModuleRequest.h

@@ -1,5 +1,6 @@
 /*
 /*
  * Copyright (c) 2021-2022, David Tuin <davidot@serenityos.org>
  * Copyright (c) 2021-2022, David Tuin <davidot@serenityos.org>
+ * Copyright (c) 2023, networkException <networkexception@serenityos.org>
  *
  *
  * SPDX-License-Identifier: BSD-2-Clause
  * SPDX-License-Identifier: BSD-2-Clause
  */
  */
@@ -8,9 +9,15 @@
 
 
 #include <AK/DeprecatedFlyString.h>
 #include <AK/DeprecatedFlyString.h>
 #include <AK/Vector.h>
 #include <AK/Vector.h>
+#include <LibJS/Module.h>
 
 
 namespace JS {
 namespace JS {
 
 
+struct ModuleWithSpecifier {
+    DeprecatedString specifier;  // [[Specifier]]
+    NonnullGCPtr<Module> module; // [[Module]]
+};
+
 // 2.9 ModuleRequest Records, https://tc39.es/proposal-import-assertions/#sec-modulerequest-record
 // 2.9 ModuleRequest Records, https://tc39.es/proposal-import-assertions/#sec-modulerequest-record
 struct ModuleRequest {
 struct ModuleRequest {
     struct Assertion {
     struct Assertion {