From bba0ed3185f30218e015ccd32cc0c8ae14ebba01 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Thu, 29 Nov 2018 15:40:04 -0500 Subject: Add ESM support to libdeno Introduces deno_execute_mod() for executing ES modules. --- libdeno/internal.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'libdeno/internal.h') diff --git a/libdeno/internal.h b/libdeno/internal.h index 91e06bead..d8316ce6b 100644 --- a/libdeno/internal.h +++ b/libdeno/internal.h @@ -20,6 +20,7 @@ class DenoIsolate { snapshot_creator_(nullptr), global_import_buf_ptr_(nullptr), recv_cb_(config.recv_cb), + resolve_cb_(config.resolve_cb), next_req_id_(0), user_data_(nullptr) { array_buffer_allocator_ = v8::ArrayBuffer::Allocator::NewDefaultAllocator(); @@ -40,6 +41,9 @@ class DenoIsolate { } void AddIsolate(v8::Isolate* isolate); + void RegisterModule(const char* filename, v8::Local module); + void ResolveOk(const char* filename, const char* source); + void ClearModules(); v8::Isolate* isolate_; v8::ArrayBuffer::Allocator* array_buffer_allocator_; @@ -48,9 +52,17 @@ class DenoIsolate { v8::SnapshotCreator* snapshot_creator_; void* global_import_buf_ptr_; deno_recv_cb recv_cb_; + deno_resolve_cb resolve_cb_; int32_t next_req_id_; void* user_data_; + // identity hash -> filename + std::map module_filename_map_; + // filename -> Module + std::map> module_map_; + // Set by deno_resolve_ok + v8::Persistent resolve_module_; + v8::Persistent context_; std::map> async_data_map_; std::map> pending_promise_map_; @@ -121,6 +133,8 @@ void DeleteDataRef(DenoIsolate* d, int32_t req_id); bool Execute(v8::Local context, const char* js_filename, const char* js_source); +bool ExecuteMod(v8::Local context, const char* js_filename, + const char* js_source); } // namespace deno -- cgit v1.2.3