| 21 | } |
| 22 | |
| 23 | pub async fn start() -> Result<(), AnyError> { |
| 24 | let module_loader = Rc::new(FsModuleLoader); |
| 25 | let create_web_worker_cb = Arc::new(|_| { |
| 26 | todo!("Web workers are not supported"); |
| 27 | }); |
| 28 | |
| 29 | let options = WorkerOptions { |
| 30 | bootstrap: BootstrapOptions { |
| 31 | apply_source_maps: false, |
| 32 | args: vec![], |
| 33 | cpu_count: 1, |
| 34 | debug_flag: false, |
| 35 | enable_testing_features: false, |
| 36 | location: Some(ModuleSpecifier::parse("https://desktop.deno.land").unwrap()), |
| 37 | no_color: false, |
| 38 | runtime_version: "0.0.1".to_string(), |
| 39 | ts_version: "4.4.3".to_string(), |
| 40 | unstable: true, |
| 41 | }, |
| 42 | extensions: vec![ |
| 43 | event_loop::init(), |
| 44 | window::init(), |
| 45 | // Will be integrated into deno_webgpu later. |
| 46 | // https://github.com/gfx-rs/wgpu/pull/2279 |
| 47 | surface::init(), |
| 48 | // Some ops deno_runtime depends on |
| 49 | // But aren't there (implemented in CLI) |
| 50 | // https://github.com/denoland/deno/issues/12918 |
| 51 | extra::init(), |
| 52 | ], |
| 53 | unsafely_ignore_certificate_errors: None, |
| 54 | root_cert_store: None, |
| 55 | user_agent: "deno_desktop".to_string(), |
| 56 | seed: None, |
| 57 | js_error_create_fn: None, |
| 58 | create_web_worker_cb, |
| 59 | maybe_inspector_server: None, |
| 60 | should_break_on_first_statement: false, |
| 61 | module_loader, |
| 62 | get_error_class_fn: Some(&get_error_class_name), |
| 63 | origin_storage_dir: None, |
| 64 | blob_store: BlobStore::default(), |
| 65 | broadcast_channel: InMemoryBroadcastChannel::default(), |
| 66 | shared_array_buffer_store: None, |
| 67 | compiled_wasm_module_store: None, |
| 68 | }; |
| 69 | |
| 70 | let path = std::env::args().nth(1).unwrap_or(String::from("test.js")); |
| 71 | let js_path = Path::new(env!("CARGO_MANIFEST_DIR")).join(path); |
| 72 | let main_module = deno_runtime::deno_core::resolve_path(&js_path.to_string_lossy())?; |
| 73 | let permissions = Permissions::allow_all(); |
| 74 | |
| 75 | let mut worker = MainWorker::bootstrap_from_options(main_module.clone(), permissions, options); |
| 76 | |
| 77 | worker |
| 78 | .js_runtime |
| 79 | .execute_script("deno_desktop:core.js", include_str!("core.js"))?; |
| 80 | |