Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/module_wrap.h')
-rw-r--r--src/module_wrap.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/module_wrap.h b/src/module_wrap.h
new file mode 100644
index 00000000000..c669834c6f3
--- /dev/null
+++ b/src/module_wrap.h
@@ -0,0 +1,58 @@
+#ifndef SRC_MODULE_WRAP_H_
+#define SRC_MODULE_WRAP_H_
+
+#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
+
+#include <map>
+#include <string>
+#include <vector>
+#include "node_url.h"
+#include "base-object.h"
+#include "base-object-inl.h"
+
+namespace node {
+namespace loader {
+
+node::url::URL Resolve(std::string specifier, node::url::URL* base,
+ bool read_pkg_json = false);
+
+class ModuleWrap : public BaseObject {
+ public:
+ static const std::string EXTENSIONS[];
+ static void Initialize(v8::Local<v8::Object> target,
+ v8::Local<v8::Value> unused,
+ v8::Local<v8::Context> context);
+
+ private:
+ ModuleWrap(node::Environment* env,
+ v8::Local<v8::Object> object,
+ v8::Local<v8::Module> module,
+ v8::Local<v8::String> url);
+ ~ModuleWrap();
+
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Link(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Instantiate(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void Evaluate(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static void GetUrl(v8::Local<v8::String> property,
+ const v8::PropertyCallbackInfo<v8::Value>& info);
+ static void Resolve(const v8::FunctionCallbackInfo<v8::Value>& args);
+ static v8::MaybeLocal<v8::Module> ResolveCallback(
+ v8::Local<v8::Context> context,
+ v8::Local<v8::String> specifier,
+ v8::Local<v8::Module> referrer);
+
+ v8::Persistent<v8::Module> module_;
+ v8::Persistent<v8::String> url_;
+ bool linked_ = false;
+ std::map<std::string, v8::Persistent<v8::Promise>*> resolve_cache_;
+
+ static std::map<int, std::vector<ModuleWrap*>*> module_map_;
+};
+
+} // namespace loader
+} // namespace node
+
+#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
+
+#endif // SRC_MODULE_WRAP_H_