summaryrefslogtreecommitdiff
path: root/cli/ops/runtime_compiler.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops/runtime_compiler.rs')
-rw-r--r--cli/ops/runtime_compiler.rs84
1 files changed, 42 insertions, 42 deletions
diff --git a/cli/ops/runtime_compiler.rs b/cli/ops/runtime_compiler.rs
index 3aaaf019d..a5991dabf 100644
--- a/cli/ops/runtime_compiler.rs
+++ b/cli/ops/runtime_compiler.rs
@@ -1,19 +1,23 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-use super::dispatch_json::{Deserialize, JsonOp, Value};
+use super::dispatch_json::{Deserialize, Value};
use crate::futures::FutureExt;
use crate::state::State;
use crate::tsc::runtime_bundle;
use crate::tsc::runtime_compile;
use crate::tsc::runtime_transpile;
+use deno_core::BufVec;
use deno_core::CoreIsolate;
use deno_core::ErrBox;
-use deno_core::ZeroCopyBuf;
+use deno_core::ResourceTable;
+use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
pub fn init(i: &mut CoreIsolate, s: &Rc<State>) {
- i.register_op("op_compile", s.stateful_json_op(op_compile));
- i.register_op("op_transpile", s.stateful_json_op(op_transpile));
+ let t = &CoreIsolate::state(i).borrow().resource_table.clone();
+
+ i.register_op("op_compile", s.stateful_json_op_async(t, op_compile));
+ i.register_op("op_transpile", s.stateful_json_op_async(t, op_transpile));
}
#[derive(Deserialize, Debug)]
@@ -25,40 +29,37 @@ struct CompileArgs {
options: Option<String>,
}
-fn op_compile(
- state: &Rc<State>,
+async fn op_compile(
+ state: Rc<State>,
+ _resource_table: Rc<RefCell<ResourceTable>>,
args: Value,
- _zero_copy: &mut [ZeroCopyBuf],
-) -> Result<JsonOp, ErrBox> {
+ _data: BufVec,
+) -> Result<Value, ErrBox> {
state.check_unstable("Deno.compile");
let args: CompileArgs = serde_json::from_value(args)?;
let global_state = state.global_state.clone();
let permissions = state.permissions.borrow().clone();
- let fut = async move {
- let fut = if args.bundle {
- runtime_bundle(
- &global_state,
- permissions,
- &args.root_name,
- &args.sources,
- &args.options,
- )
- .boxed_local()
- } else {
- runtime_compile(
- &global_state,
- permissions,
- &args.root_name,
- &args.sources,
- &args.options,
- )
- .boxed_local()
- };
-
- fut.await
- }
- .boxed_local();
- Ok(JsonOp::Async(fut))
+ let fut = if args.bundle {
+ runtime_bundle(
+ &global_state,
+ permissions,
+ &args.root_name,
+ &args.sources,
+ &args.options,
+ )
+ .boxed_local()
+ } else {
+ runtime_compile(
+ &global_state,
+ permissions,
+ &args.root_name,
+ &args.sources,
+ &args.options,
+ )
+ .boxed_local()
+ };
+ let result = fut.await?;
+ Ok(result)
}
#[derive(Deserialize, Debug)]
@@ -67,19 +68,18 @@ struct TranspileArgs {
options: Option<String>,
}
-fn op_transpile(
- state: &Rc<State>,
+async fn op_transpile(
+ state: Rc<State>,
+ _resource_table: Rc<RefCell<ResourceTable>>,
args: Value,
- _zero_copy: &mut [ZeroCopyBuf],
-) -> Result<JsonOp, ErrBox> {
+ _data: BufVec,
+) -> Result<Value, ErrBox> {
state.check_unstable("Deno.transpile");
let args: TranspileArgs = serde_json::from_value(args)?;
let global_state = state.global_state.clone();
let permissions = state.permissions.borrow().clone();
- let fut = async move {
+ let result =
runtime_transpile(&global_state, permissions, &args.sources, &args.options)
- .await
- }
- .boxed_local();
- Ok(JsonOp::Async(fut))
+ .await?;
+ Ok(result)
}