Skip to content

Commit

Permalink
wip 0.10 release
Browse files Browse the repository at this point in the history
  • Loading branch information
andrieshiemstra committed May 16, 2023
1 parent 8ac9114 commit b7fdc36
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 68 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ setinterval = []
setimmediate = []

[dependencies]
#hirofa_utils = "0.6"
hirofa_utils = "0.7"
#hirofa_utils = {path="../utils"}
#hirofa_utils = {git="https://github.com/SreeniIO/utils.git"}
hirofa_utils = {git="https://github.com/HiRoFa/utils"}
#hirofa_utils = {git="https://github.com/HiRoFa/utils"}
backtrace = "0.3.67"
libquickjs-sys = "0.10.0"
lazy_static = "1.4.0"
Expand Down
72 changes: 18 additions & 54 deletions src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,15 +75,15 @@ impl QuickJsRuntimeBuilder {
/// }
///
/// let rt = QuickJsRuntimeBuilder::new()
/// .script_module_loader(Box::new(MyModuleLoader{}))
/// .script_module_loader(MyModuleLoader{})
/// .build();
/// rt.eval_module_sync(None, Script::new("test_module.es", "import {foo} from 'some_module.mes';\nconsole.log('foo = %s', foo);")).ok().unwrap();
/// ```
pub fn script_module_loader<M: ScriptModuleLoader + Send + 'static>(
mut self,
loader: Box<M>,
loader: M,
) -> Self {
self.script_module_loaders.push(loader);
self.script_module_loaders.push(Box::new(loader));
self
}

Expand All @@ -96,14 +96,6 @@ impl QuickJsRuntimeBuilder {
self
}

pub fn runtime_init_hook<H>(mut self, hook: H) -> Self
where
H: FnOnce(&QuickJsRuntimeFacade) -> Result<(), JsError> + Send + 'static,
{
self.runtime_init_hooks.push(Box::new(hook));
self
}

/// add a module loader which can load native functions and proxy classes
/// # Example
/// ```rust
Expand Down Expand Up @@ -148,16 +140,19 @@ impl QuickJsRuntimeBuilder {
/// }
///
/// let rt = QuickJsRuntimeBuilder::new()
/// .native_module_loader(Box::new(MyModuleLoader{}))
/// .native_module_loader(MyModuleLoader{})
/// .build();
///
/// rt.eval_module_sync(None, Script::new("test_native_mod.es", "import {someVal, someFunc, SomeClass} from 'my_module';\nlet i = (someVal + someFunc() + SomeClass.doIt());\nif (i !== 2087){throw Error('i was not 2087');}")).ok().expect("script failed");
/// ```
pub fn native_module_loader<M: NativeModuleLoader + Send + 'static>(
pub fn native_module_loader<S: NativeModuleLoader + Send + 'static>(
mut self,
loader: Box<M>,
) -> Self {
self.native_module_loaders.push(loader);
module_loader: S,
) -> Self
where
Self: Sized,
{
self.native_module_loaders.push(Box::new(module_loader));
self
}

Expand Down Expand Up @@ -202,11 +197,7 @@ impl Default for QuickJsRuntimeBuilder {
}

impl QuickJsRuntimeBuilder {
pub fn js_build(self) -> QuickJsRuntimeFacade {
self.build()
}

pub fn js_runtime_init_hook<
pub fn runtime_facade_init_hook<
H: FnOnce(&QuickJsRuntimeFacade) -> Result<(), JsError> + Send + 'static,
>(
mut self,
Expand All @@ -216,66 +207,39 @@ impl QuickJsRuntimeBuilder {
self
}

pub fn js_realm_adapter_init_hook<
pub fn realm_adapter_init_hook<
H: Fn(&QuickJsRuntimeAdapter, &QuickJsRealmAdapter) -> Result<(), JsError> + Send + 'static,
>(
self,
hook: H,
) -> Self {
self.js_runtime_adapter_init_hook(move |rt| {
self.runtime_adapter_init_hook(move |rt| {
rt.add_context_init_hook(hook)?;
Ok(())
})
}

pub fn js_runtime_adapter_init_hook<
pub fn runtime_adapter_init_hook<
H: FnOnce(&QuickJsRuntimeAdapter) -> Result<(), JsError> + Send + 'static,
>(
self,
hook: H,
) -> Self {
self.runtime_init_hook(|rt| {
self.runtime_facade_init_hook(|rt| {
rt.exe_rt_task_in_event_loop(|rt| {
let _ = hook(rt);
});
Ok(())
})
}

pub fn js_script_pre_processor<S: ScriptPreProcessor + Send + 'static>(
mut self,
preprocessor: S,
) -> Self {
self.script_pre_processors.push(Box::new(preprocessor));
self
}

pub fn js_script_module_loader<S: ScriptModuleLoader + Send + 'static>(
mut self,
module_loader: S,
) -> Self {
self.script_module_loaders.push(Box::new(module_loader));
self
}

pub fn js_compiled_module_loader<S: CompiledModuleLoader + Send + 'static>(
pub fn compiled_module_loader<S: CompiledModuleLoader + Send + 'static>(
mut self,
module_loader: S,
) -> Self {
self.compiled_module_loaders.push(Box::new(module_loader));
self
}

pub fn js_native_module_loader<S: NativeModuleLoader + Send + 'static>(
mut self,
module_loader: S,
) -> Self
where
Self: Sized,
{
self.native_module_loaders.push(Box::new(module_loader));
self
}
}

#[cfg(test)]
Expand Down Expand Up @@ -304,7 +268,7 @@ pub mod tests {
}

let rt = QuickJsRuntimeBuilder::new()
.script_module_loader(Box::new(MyModuleLoader {}))
.script_module_loader(MyModuleLoader {})
.build();
match rt.eval_module_sync(
None,
Expand Down
15 changes: 8 additions & 7 deletions src/facades.rs
Original file line number Diff line number Diff line change
Expand Up @@ -725,6 +725,7 @@ impl QuickJsRuntimeFacade {
/// also to use this you need to build the QuickJsRuntimeFacade with a module loader
/// # example
/// ```rust
/// use futures::executor::block_on;
/// use quickjs_runtime::builder::QuickJsRuntimeBuilder;
/// use quickjs_runtime::jsutils::modules::ScriptModuleLoader;
/// use quickjs_runtime::jsutils::Script;
Expand All @@ -739,13 +740,13 @@ impl QuickJsRuntimeFacade {
/// "export const util = function(a, b, c){return a+b+c;};".to_string()
/// }
/// }
/// let rt = QuickJsRuntimeBuilder::new().script_module_loader(Box::new(TestModuleLoader{})).build();
/// let rt = QuickJsRuntimeBuilder::new().script_module_loader(TestModuleLoader{}).build();
/// let script = Script::new("/opt/files/my_module.js", r#"
/// import {util} from 'other_module.js';\n
/// console.log(util(1, 2, 3));
/// "#);
/// // in real life you would .await this
/// let _res = rt.eval_module_sync(None, script);
/// let _res = block_on(rt.eval_module(None, script));
/// ```
pub fn eval_module(
&self,
Expand Down Expand Up @@ -783,7 +784,7 @@ impl QuickJsRuntimeFacade {
/// "export const util = function(a, b, c){return a+b+c;};".to_string()
/// }
/// }
/// let rt = QuickJsRuntimeBuilder::new().script_module_loader(Box::new(TestModuleLoader{})).build();
/// let rt = QuickJsRuntimeBuilder::new().script_module_loader(TestModuleLoader{}).build();
/// let script = Script::new("/opt/files/my_module.js", r#"
/// import {util} from 'other_module.js';\n
/// console.log(util(1, 2, 3));
Expand Down Expand Up @@ -1073,8 +1074,8 @@ pub mod tests {
QuickJsRuntimeFacade::builder()
.gc_interval(Duration::from_secs(1))
.max_stack_size(128 * 1024)
.script_module_loader(Box::new(TestScriptModuleLoader {}))
.native_module_loader(Box::new(TestNativeModuleLoader {}))
.script_module_loader(TestScriptModuleLoader {})
.native_module_loader(TestNativeModuleLoader {})
.build()
}

Expand Down Expand Up @@ -1358,7 +1359,7 @@ pub mod abstraction_tests {
#[tokio::test]
async fn serde_tests_serialize() {
let rtb: QuickJsRuntimeBuilder = QuickJsRuntimeBuilder::new();
let rt = rtb.js_build();
let rt = rtb.build();

// init my function
rt.eval(
Expand Down Expand Up @@ -1411,7 +1412,7 @@ pub mod abstraction_tests {
#[tokio::test]
async fn serde_tests_value() {
let rtb: QuickJsRuntimeBuilder = QuickJsRuntimeBuilder::new();
let rt = rtb.js_build();
let rt = rtb.build();

// init my function
rt.eval(
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ pub mod tests {

#[test]
fn test_examples() {
let rt = QuickJsRuntimeBuilder::new().js_build();
let rt = QuickJsRuntimeBuilder::new().build();
let outcome = block_on(run_examples(&rt));
if outcome.is_err() {
log::error!("an error occured: {}", outcome.err().unwrap());
Expand Down
2 changes: 1 addition & 1 deletion src/quickjs_utils/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ pub mod tests {
.expect("could not init logger");

let rt = QuickJsRuntimeBuilder::new()
.js_compiled_module_loader(Cml {})
.compiled_module_loader(Cml {})
.build();

let test_script = Script::new(
Expand Down
2 changes: 1 addition & 1 deletion src/quickjs_utils/typedarrays.rs
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ pub mod tests {

//simple_logging::log_to_stderr(log::LevelFilter::max());

let rt = QuickJsRuntimeBuilder::new().js_build();
let rt = QuickJsRuntimeBuilder::new().build();

let res = rt.loop_realm_sync(None, |_rt, realm| {
let obj = realm
Expand Down
4 changes: 2 additions & 2 deletions src/quickjsruntimeadapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,7 @@ pub mod tests {
fn test_script_load() {
log::debug!("testing1");
let rt = QuickJsRuntimeBuilder::new()
.script_module_loader(Box::new(FooScriptModuleLoader {}))
.script_module_loader(FooScriptModuleLoader {})
.build();
rt.exe_rt_task_in_event_loop(|q_js_rt| {
log::debug!("testing2");
Expand All @@ -846,7 +846,7 @@ pub mod tests {
simple_logging::log_to_stderr(LevelFilter::max());
*/
let rt = QuickJsRuntimeBuilder::new().js_build();
let rt = QuickJsRuntimeBuilder::new().build();

rt.exe_task_in_event_loop(|| {
QuickJsRuntimeAdapter::do_with(|rt| {
Expand Down

0 comments on commit b7fdc36

Please sign in to comment.