update deno (#2361)

This commit is contained in:
Aiden McClelland
2023-07-18 11:59:00 -06:00
committed by GitHub
parent 825e18a551
commit 1982ce796f
11 changed files with 2104 additions and 1852 deletions

View File

@@ -8,35 +8,13 @@ edition = "2021"
[dependencies]
async-trait = "0.1.56"
dashmap = "5.3.4"
deno_core = "=0.136.0"
deno_ast = { version = "=0.15.0", features = ["transpiling"] }
dprint-swc-ext = "=0.1.1"
deno_core = "0.195.0"
deno_ast = { version = "0.27.2", features = ["transpiling"] }
embassy_container_init = { path = "../embassy_container_init" }
reqwest = { version = "0.11.11" }
swc_atoms = "=0.2.11"
swc_common = "=0.18.7"
swc_config = "=0.1.1"
swc_config_macro = "=0.1.0"
swc_ecma_ast = "=0.78.1"
swc_ecma_codegen = "=0.108.6"
swc_ecma_codegen_macros = "=0.7.0"
swc_ecma_parser = "=0.104.2"
swc_ecma_transforms = "=0.154.0"
swc_ecma_transforms_base = "=0.85.4"
swc_ecma_transforms_classes = "=0.73.0"
swc_ecma_transforms_macros = "=0.3.0"
swc_ecma_transforms_proposal = "=0.107.0"
swc_ecma_transforms_react = "=0.114.1"
swc_ecma_transforms_typescript = "=0.117.2"
swc_ecma_utils = "=0.85.1"
swc_ecma_visit = "=0.64.0"
swc_ecmascript = "=0.157.0"
swc_eq_ignore_macros = "=0.1.0"
swc_macros_common = "=0.3.5"
swc_visit = "=0.3.0"
swc_visit_macros = "=0.3.1"
sha2 = "0.10.2"
itertools = "0.10.5"
lazy_static = "1.4.0"
models = { path = "../models" }
helpers = { path = "../helpers" }
serde = { version = "1.0", features = ["derive", "rc"] }

View File

@@ -94,7 +94,7 @@ const metadata = async (
const removeFile = (
{ volumeId = requireParam("volumeId"), path = requireParam("path") } = requireParam("options"),
) => Deno.core.opAsync("remove_file", volumeId, path);
const isSandboxed = () => Deno.core.opSync("is_sandboxed");
const isSandboxed = () => Deno.core.ops["is_sandboxed"]();
const writeJsonFile = (
{
@@ -193,10 +193,10 @@ const diskUsage = async ({
return { used, total }
}
const currentFunction = Deno.core.opSync("current_function");
const input = Deno.core.opSync("get_input");
const variable_args = Deno.core.opSync("get_variable_args");
const setState = (x) => Deno.core.opSync("set_value", x);
const currentFunction = Deno.core.ops.current_function();
const input = Deno.core.ops.get_input();
const variable_args = Deno.core.ops.get_variable_args();
const setState = (x) => Deno.core.ops.set_value(x);
const effects = {
chmod,
chown,

View File

@@ -7,8 +7,9 @@ use std::time::SystemTime;
use deno_core::anyhow::{anyhow, bail};
use deno_core::error::AnyError;
use deno_core::{
resolve_import, Extension, JsRuntime, ModuleLoader, ModuleSource, ModuleSourceFuture,
ModuleSpecifier, ModuleType, OpDecl, RuntimeOptions, Snapshot,
resolve_import, Extension, FastString, JsRuntime, ModuleLoader, ModuleSource,
ModuleSourceFuture, ModuleSpecifier, ModuleType, OpDecl, ResolutionKind, RuntimeOptions,
Snapshot,
};
use embassy_container_init::ProcessGroupId;
use helpers::{script_dir, spawn_local, Rsync, UnixRpcClient};
@@ -18,6 +19,12 @@ use serde_json::Value;
use tokio::io::AsyncReadExt;
use tokio::sync::Mutex;
lazy_static::lazy_static! {
static ref DENO_GLOBAL_JS: ModuleSpecifier = "file:///deno_global.js".parse().unwrap();
static ref LOAD_MODULE_JS: ModuleSpecifier = "file:///loadModule.js".parse().unwrap();
static ref EMBASSY_JS: ModuleSpecifier = "file:///embassy.js".parse().unwrap();
}
pub trait PathForVolumeId: Send + Sync {
fn path_for(
&self,
@@ -29,8 +36,8 @@ pub trait PathForVolumeId: Send + Sync {
fn readonly(&self, volume_id: &VolumeId) -> bool;
}
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
pub struct JsCode(String);
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct JsCode(Arc<str>);
#[derive(Debug, Clone, Copy)]
pub enum JsError {
@@ -118,7 +125,7 @@ impl ModuleLoader for ModsLoader {
&self,
specifier: &str,
referrer: &str,
_is_main: bool,
_is_main: ResolutionKind,
) -> Result<ModuleSpecifier, AnyError> {
if referrer.contains("embassy") {
bail!("Embassy.js cannot import anything else");
@@ -130,38 +137,30 @@ impl ModuleLoader for ModsLoader {
fn load(
&self,
module_specifier: &ModuleSpecifier,
maybe_referrer: Option<ModuleSpecifier>,
maybe_referrer: Option<&ModuleSpecifier>,
is_dyn_import: bool,
) -> Pin<Box<ModuleSourceFuture>> {
let module_specifier = module_specifier.as_str().to_owned();
let module = match &*module_specifier {
"file:///deno_global.js" => Ok(ModuleSource {
module_url_specified: "file:///deno_global.js".to_string(),
module_url_found: "file:///deno_global.js".to_string(),
code: "const old_deno = Deno; Deno = null; export default old_deno"
.as_bytes()
.to_vec()
.into_boxed_slice(),
module_type: ModuleType::JavaScript,
}),
"file:///loadModule.js" => Ok(ModuleSource {
module_url_specified: "file:///loadModule.js".to_string(),
module_url_found: "file:///loadModule.js".to_string(),
code: include_str!("./artifacts/loadModule.js")
.as_bytes()
.to_vec()
.into_boxed_slice(),
module_type: ModuleType::JavaScript,
}),
"file:///embassy.js" => Ok(ModuleSource {
module_url_specified: "file:///embassy.js".to_string(),
module_url_found: "file:///embassy.js".to_string(),
code: self.code.0.as_bytes().to_vec().into_boxed_slice(),
module_type: ModuleType::JavaScript,
}),
"file:///deno_global.js" => Ok(ModuleSource::new(
ModuleType::JavaScript,
FastString::Static("const old_deno = Deno; Deno = null; export default old_deno"),
&*DENO_GLOBAL_JS,
)),
"file:///loadModule.js" => Ok(ModuleSource::new(
ModuleType::JavaScript,
FastString::Static(include_str!("./artifacts/loadModule.js")),
&*LOAD_MODULE_JS,
)),
"file:///embassy.js" => Ok(ModuleSource::new(
ModuleType::JavaScript,
self.code.0.clone().into(),
&*EMBASSY_JS,
)),
x => Err(anyhow!("Not allowed to import: {}", x)),
};
Box::pin(async move {
let module = module.and_then(|m| {
if is_dyn_import {
bail!("Will not import dynamic");
}
@@ -171,8 +170,9 @@ impl ModuleLoader for ModsLoader {
}
_ => (),
}
module
})
Ok(m)
});
Box::pin(async move { module })
}
}
@@ -219,7 +219,7 @@ impl JsExecutionEnvironment {
format!("The file reading created error: {}", err),
));
};
buffer
buffer.into()
});
Ok(JsExecutionEnvironment {
base_directory: base_directory.to_owned(),
@@ -336,12 +336,11 @@ impl JsExecutionEnvironment {
container_rpc_client: self.container_rpc_client.clone(),
rsyncs: Default::default(),
};
let ext = Extension::builder()
let ext = Extension::builder("embassy")
.ops(Self::declarations())
.state(move |state| {
state.put(ext_answer_state.clone());
state.put(js_ctx.clone());
Ok(())
})
.build();