summaryrefslogtreecommitdiff
path: root/runtime/examples/hello_runtime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/examples/hello_runtime.rs')
-rw-r--r--runtime/examples/hello_runtime.rs55
1 files changed, 55 insertions, 0 deletions
diff --git a/runtime/examples/hello_runtime.rs b/runtime/examples/hello_runtime.rs
new file mode 100644
index 000000000..dbe539281
--- /dev/null
+++ b/runtime/examples/hello_runtime.rs
@@ -0,0 +1,55 @@
+// Copyright 2020 the Deno authors. All rights reserved. MIT license.
+
+use deno_core::error::AnyError;
+use deno_core::FsModuleLoader;
+use deno_core::ModuleSpecifier;
+use deno_runtime::permissions::Permissions;
+use deno_runtime::worker::MainWorker;
+use deno_runtime::worker::WorkerOptions;
+use std::path::Path;
+use std::rc::Rc;
+use std::sync::Arc;
+
+fn get_error_class_name(e: &AnyError) -> &'static str {
+ deno_runtime::errors::get_error_class_name(e).unwrap_or("Error")
+}
+
+#[tokio::main]
+async fn main() -> Result<(), AnyError> {
+ let module_loader = Rc::new(FsModuleLoader);
+ let create_web_worker_cb = Arc::new(|_| {
+ todo!("Web workers are not supported in the example");
+ });
+
+ let options = WorkerOptions {
+ apply_source_maps: false,
+ args: vec![],
+ debug_flag: false,
+ unstable: false,
+ ca_filepath: None,
+ user_agent: "hello_runtime".to_string(),
+ seed: None,
+ js_error_create_fn: None,
+ create_web_worker_cb,
+ attach_inspector: false,
+ maybe_inspector_server: None,
+ should_break_on_first_statement: false,
+ module_loader,
+ runtime_version: "x".to_string(),
+ ts_version: "x".to_string(),
+ no_color: false,
+ get_error_class_fn: Some(&get_error_class_name),
+ };
+
+ let js_path =
+ Path::new(env!("CARGO_MANIFEST_DIR")).join("examples/hello_runtime.js");
+ let main_module = ModuleSpecifier::resolve_path(&js_path.to_string_lossy())?;
+ let permissions = Permissions::allow_all();
+
+ let mut worker =
+ MainWorker::from_options(main_module.clone(), permissions, &options);
+ worker.bootstrap(&options);
+ worker.execute_module(&main_module).await?;
+ worker.run_event_loop().await?;
+ Ok(())
+}