diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-01-30 17:21:31 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-30 17:21:31 -0500 |
commit | 00597ffde1ebb05a6c60ea7e09e6578c11f92820 (patch) | |
tree | 849b6b22c07ed38a4b424c363c06435ea2de4fa9 /src/libdeno.rs | |
parent | 7d278a0383ce634f4fa3dd792e9b202582a6fde1 (diff) |
Refactor libdeno ES module interface. (#1624)
Allows for future asynchronous module loading.
Add support for import.meta.url
Fixes #1496
Diffstat (limited to 'src/libdeno.rs')
-rw-r--r-- | src/libdeno.rs | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/src/libdeno.rs b/src/libdeno.rs index f8f8a61e0..ac1655bb3 100644 --- a/src/libdeno.rs +++ b/src/libdeno.rs @@ -2,6 +2,7 @@ use libc::c_char; use libc::c_int; use libc::c_void; +use libc::size_t; use std::ops::{Deref, DerefMut}; use std::ptr::null; @@ -111,11 +112,14 @@ type deno_recv_cb = unsafe extern "C" fn( ); #[allow(non_camel_case_types)] +pub type deno_mod = i32; + +#[allow(non_camel_case_types)] type deno_resolve_cb = unsafe extern "C" fn( user_data: *mut c_void, specifier: *const c_char, - referrer: *const c_char, -); + referrer: deno_mod, +) -> deno_mod; #[repr(C)] pub struct deno_config { @@ -123,7 +127,6 @@ pub struct deno_config { pub load_snapshot: deno_buf, pub shared: deno_buf, pub recv_cb: deno_recv_cb, - pub resolve_cb: deno_resolve_cb, } extern "C" { @@ -146,16 +149,34 @@ extern "C" { js_filename: *const c_char, js_source: *const c_char, ) -> c_int; - pub fn deno_execute_mod( + + // Modules + + pub fn deno_mod_new( + i: *const isolate, + name: *const c_char, + source: *const c_char, + ) -> deno_mod; + + pub fn deno_mod_imports_len(i: *const isolate, id: deno_mod) -> size_t; + + pub fn deno_mod_imports_get( + i: *const isolate, + id: deno_mod, + index: size_t, + ) -> *const c_char; + + pub fn deno_mod_instantiate( i: *const isolate, user_data: *const c_void, - js_filename: *const c_char, - js_source: *const c_char, - resolve_only: i32, - ) -> c_int; - pub fn deno_resolve_ok( + id: deno_mod, + resolve_cb: deno_resolve_cb, + ); + + pub fn deno_mod_evaluate( i: *const isolate, - js_filename: *const c_char, - js_source: *const c_char, + user_data: *const c_void, + id: deno_mod, ); + } |