#ifndef SRC_MODULE_WRAP_H_
#define SRC_MODULE_WRAP_H_
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
#include
#include
#include
#include "base_object.h"
namespace node {
class Environment;
namespace loader {
enum ScriptType : int {
kScript,
kModule,
kFunction,
};
enum HostDefinedOptions : int {
kType = 8,
kID = 9,
kLength = 10,
};
class ModuleWrap : public BaseObject {
public:
static void Initialize(v8::Local target,
v8::Local unused,
v8::Local context,
void* priv);
static void HostInitializeImportMetaObjectCallback(
v8::Local context,
v8::Local module,
v8::Local meta);
void MemoryInfo(MemoryTracker* tracker) const override {
tracker->TrackField("url", url_);
tracker->TrackField("resolve_cache", resolve_cache_);
}
inline uint32_t id() { return id_; }
static ModuleWrap* GetFromID(node::Environment*, uint32_t id);
SET_MEMORY_INFO_NAME(ModuleWrap)
SET_SELF_SIZE(ModuleWrap)
private:
ModuleWrap(Environment* env,
v8::Local object,
v8::Local module,
v8::Local url);
~ModuleWrap() override;
static void New(const v8::FunctionCallbackInfo& args);
static void Link(const v8::FunctionCallbackInfo& args);
static void Instantiate(const v8::FunctionCallbackInfo& args);
static void Evaluate(const v8::FunctionCallbackInfo& args);
static void GetNamespace(const v8::FunctionCallbackInfo& args);
static void GetStatus(const v8::FunctionCallbackInfo& args);
static void GetError(const v8::FunctionCallbackInfo& args);
static void GetStaticDependencySpecifiers(
const v8::FunctionCallbackInfo& args);
static void SetImportModuleDynamicallyCallback(
const v8::FunctionCallbackInfo& args);
static void SetInitializeImportMetaObjectCallback(
const v8::FunctionCallbackInfo& args);
static v8::MaybeLocal SyntheticModuleEvaluationStepsCallback(
v8::Local context, v8::Local module);
static void SetSyntheticExport(
const v8::FunctionCallbackInfo& args);
static void CreateCachedData(const v8::FunctionCallbackInfo& args);
static v8::MaybeLocal ResolveCallback(
v8::Local context,
v8::Local specifier,
v8::Local referrer);
static ModuleWrap* GetFromModule(node::Environment*, v8::Local);
v8::Global synthetic_evaluation_steps_;
bool synthetic_ = false;
v8::Global module_;
v8::Global url_;
bool linked_ = false;
std::unordered_map> resolve_cache_;
v8::Global context_;
uint32_t id_;
};
} // namespace loader
} // namespace node
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
#endif // SRC_MODULE_WRAP_H_