summaryrefslogtreecommitdiff
path: root/core/libdeno.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-06-10 15:27:34 -0400
committerGitHub <noreply@github.com>2019-06-10 15:27:34 -0400
commite0436975211202afadb1a8ccd7d5154694162f38 (patch)
treea4e864991a109071b32e79ae5ab9624c1228b0a4 /core/libdeno.rs
parent88b0c8756eef96c8adaff1005d00aae52bd2272c (diff)
Expose dynamic import in core (#2472)
Diffstat (limited to 'core/libdeno.rs')
-rw-r--r--core/libdeno.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/core/libdeno.rs b/core/libdeno.rs
index 046caaef6..84f21e89e 100644
--- a/core/libdeno.rs
+++ b/core/libdeno.rs
@@ -192,10 +192,24 @@ type deno_recv_cb = unsafe extern "C" fn(
zero_copy_buf: deno_pinned_buf,
);
+/// Called when dynamic import is called in JS: import('foo')
+/// Embedder must call deno_dyn_import() with the specified id and
+/// the module.
+#[allow(non_camel_case_types)]
+type deno_dyn_import_cb = unsafe extern "C" fn(
+ user_data: *mut c_void,
+ specifier: *const c_char,
+ referrer: *const c_char,
+ id: deno_dyn_import_id,
+);
+
#[allow(non_camel_case_types)]
pub type deno_mod = i32;
#[allow(non_camel_case_types)]
+pub type deno_dyn_import_id = i32;
+
+#[allow(non_camel_case_types)]
type deno_resolve_cb = unsafe extern "C" fn(
user_data: *mut c_void,
specifier: *const c_char,
@@ -208,6 +222,7 @@ pub struct deno_config<'a> {
pub load_snapshot: Snapshot2<'a>,
pub shared: deno_buf,
pub recv_cb: deno_recv_cb,
+ pub dyn_import_cb: deno_dyn_import_cb,
}
#[cfg(not(windows))]
@@ -292,6 +307,14 @@ extern "C" {
id: deno_mod,
);
+ /// Call exactly once for every deno_dyn_import_cb.
+ pub fn deno_dyn_import(
+ i: *const isolate,
+ user_data: *const c_void,
+ id: deno_dyn_import_id,
+ mod_id: deno_mod,
+ );
+
pub fn deno_snapshot_new(i: *const isolate) -> Snapshot1<'static>;
#[allow(dead_code)]