diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-12-29 14:30:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-29 14:30:08 +0100 |
commit | 42081994902bab89e24c5f7cd9adf12a158ed5f5 (patch) | |
tree | c12facbabb6973063ebe4877fcdea574d96ce5a7 /cli/ops | |
parent | 6d017d42aaa5a04002af4c224dc8c3997e39293a (diff) |
cleanup(cli): use op Extensions (#13223)
Enabling op-middleware for overrides in lieu of imperative .replace_op() etc...
Impacts #13219, #12938, #13122
Diffstat (limited to 'cli/ops')
-rw-r--r-- | cli/ops/errors.rs | 14 | ||||
-rw-r--r-- | cli/ops/mod.rs | 28 | ||||
-rw-r--r-- | cli/ops/runtime_compiler.rs | 9 | ||||
-rw-r--r-- | cli/ops/testing.rs | 31 |
4 files changed, 62 insertions, 20 deletions
diff --git a/cli/ops/errors.rs b/cli/ops/errors.rs index 14d21ee84..92843f577 100644 --- a/cli/ops/errors.rs +++ b/cli/ops/errors.rs @@ -6,18 +6,24 @@ use crate::proc_state::ProcState; use crate::source_maps::get_orig_position; use crate::source_maps::CachedMaps; use deno_core::error::AnyError; +use deno_core::op_sync; use deno_core::serde_json; use deno_core::serde_json::json; use deno_core::serde_json::Value; +use deno_core::Extension; use deno_core::OpState; use serde::Deserialize; use serde::Serialize; use std::collections::HashMap; -pub fn init(rt: &mut deno_core::JsRuntime) { - super::reg_sync(rt, "op_apply_source_map", op_apply_source_map); - super::reg_sync(rt, "op_format_diagnostic", op_format_diagnostic); - super::reg_sync(rt, "op_format_file_name", op_format_file_name); +pub fn init() -> Extension { + Extension::builder() + .ops(vec![ + ("op_apply_source_map", op_sync(op_apply_source_map)), + ("op_format_diagnostic", op_sync(op_format_diagnostic)), + ("op_format_file_name", op_sync(op_format_file_name)), + ]) + .build() } #[derive(Deserialize)] diff --git a/cli/ops/mod.rs b/cli/ops/mod.rs index a3df77fac..3584bdbef 100644 --- a/cli/ops/mod.rs +++ b/cli/ops/mod.rs @@ -1,7 +1,29 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -pub mod errors; -pub mod runtime_compiler; +use crate::proc_state::ProcState; +use deno_core::Extension; + +mod errors; +mod runtime_compiler; pub mod testing; -pub use deno_runtime::ops::{reg_async, reg_sync}; +pub fn cli_exts(ps: ProcState, enable_compiler: bool) -> Vec<Extension> { + if enable_compiler { + vec![ + init_proc_state(ps), + errors::init(), + runtime_compiler::init(), + ] + } else { + vec![init_proc_state(ps), errors::init()] + } +} + +fn init_proc_state(ps: ProcState) -> Extension { + Extension::builder() + .state(move |state| { + state.put(ps.clone()); + Ok(()) + }) + .build() +} diff --git a/cli/ops/runtime_compiler.rs b/cli/ops/runtime_compiler.rs index 46aaafd09..11504edd5 100644 --- a/cli/ops/runtime_compiler.rs +++ b/cli/ops/runtime_compiler.rs @@ -15,13 +15,14 @@ use deno_core::anyhow::Context; use deno_core::error::custom_error; use deno_core::error::generic_error; use deno_core::error::AnyError; +use deno_core::op_async; use deno_core::parking_lot::RwLock; use deno_core::resolve_url_or_path; use deno_core::serde_json; use deno_core::serde_json::Value; +use deno_core::Extension; use deno_core::ModuleSpecifier; use deno_core::OpState; -use deno_graph; use deno_runtime::permissions::Permissions; use import_map::ImportMap; use serde::Deserialize; @@ -32,8 +33,10 @@ use std::collections::HashSet; use std::rc::Rc; use std::sync::Arc; -pub fn init(rt: &mut deno_core::JsRuntime) { - super::reg_async(rt, "op_emit", op_emit); +pub fn init() -> Extension { + Extension::builder() + .ops(vec![("op_emit", op_async(op_emit))]) + .build() } #[derive(Debug, Deserialize)] diff --git a/cli/ops/testing.rs b/cli/ops/testing.rs index cf6d7b244..928fb5a20 100644 --- a/cli/ops/testing.rs +++ b/cli/ops/testing.rs @@ -1,7 +1,8 @@ use crate::tools::test::TestEvent; use deno_core::error::generic_error; use deno_core::error::AnyError; -use deno_core::JsRuntime; +use deno_core::op_sync; +use deno_core::Extension; use deno_core::ModuleSpecifier; use deno_core::OpState; use deno_runtime::permissions::create_child_permissions; @@ -10,15 +11,25 @@ use deno_runtime::permissions::Permissions; use std::sync::mpsc::Sender; use uuid::Uuid; -pub fn init(rt: &mut JsRuntime) { - super::reg_sync(rt, "op_pledge_test_permissions", op_pledge_test_permissions); - super::reg_sync( - rt, - "op_restore_test_permissions", - op_restore_test_permissions, - ); - super::reg_sync(rt, "op_get_test_origin", op_get_test_origin); - super::reg_sync(rt, "op_dispatch_test_event", op_dispatch_test_event); +pub fn init(sender: Sender<TestEvent>) -> Extension { + Extension::builder() + .ops(vec![ + ( + "op_pledge_test_permissions", + op_sync(op_pledge_test_permissions), + ), + ( + "op_restore_test_permissions", + op_sync(op_restore_test_permissions), + ), + ("op_get_test_origin", op_sync(op_get_test_origin)), + ("op_dispatch_test_event", op_sync(op_dispatch_test_event)), + ]) + .state(move |state| { + state.put(sender.clone()); + Ok(()) + }) + .build() } #[derive(Clone)] |