diff options
| author | Ryan Dahl <ry@tinyclouds.org> | 2019-06-10 15:27:34 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-10 15:27:34 -0400 |
| commit | e0436975211202afadb1a8ccd7d5154694162f38 (patch) | |
| tree | a4e864991a109071b32e79ae5ab9624c1228b0a4 /core/libdeno.rs | |
| parent | 88b0c8756eef96c8adaff1005d00aae52bd2272c (diff) | |
Expose dynamic import in core (#2472)
Diffstat (limited to 'core/libdeno.rs')
| -rw-r--r-- | core/libdeno.rs | 23 |
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)] |
