chore: upgrade deno_* crates to Mar 2024

The way extensions are injected into the Isolate changed dramatically
between Sept 2021 and Jan 2024. Now ops are available in the virtual
module ext:core/ops.
This commit is contained in:
nobody 2024-04-17 17:18:04 -07:00
commit ac97ac37db
Signed by: GrocerPublishAgent
GPG key ID: D460CD54A9E3AB86
23 changed files with 618 additions and 303 deletions

View file

@ -1,5 +1,5 @@
use deno_core::futures::StreamExt;
use deno_core::{Extension, Op, OpState};
use deno_core::{Extension, ExtensionFileSource, Op, OpState};
use elm_project_utils::ElmResult;
use serde::{Deserialize, Serialize};
use serde_json::{value::Map, value::Number, Value};
@ -7,7 +7,6 @@ use sqlx::{sqlite::SqlitePool, Column, Row, TypeInfo, ValueRef};
use std::borrow::Cow;
use std::thread::JoinHandle;
use std::time::Instant;
use tokio;
use tracing::{info_span, Instrument};
type SQLWorkerMailbox = std::sync::mpsc::Sender<(
@ -113,20 +112,45 @@ pub(crate) fn init(db_pool: SqlitePool) -> Result<(Extension, JoinHandle<()>), (
});
let worker_mailbox_clone = worker_mailbox.clone();
let extension = Extension {
name: "sqlite",
ops: Cow::Owned(vec![op_starmelon_batch_queries::DECL]),
op_state_fn: Some(Box::new(move |state| {
state.put(worker_mailbox_clone.clone());
})),
esm_files: {
const JS: &'static [ExtensionFileSource] =
&[ExtensionFileSource::new("ext:sqlite/bootstrap.js", {
const STR: ::deno_core::v8::OneByteConst =
::deno_core::FastStaticString::create_external_onebyte_const(
r#"
import { op_starmelon_batch_queries } from "ext:core/ops";
function starmelon_batch_queries(queries) {
return op_starmelon_batch_queries(queries);
}
globalThis.Extension = Object.assign(globalThis.Extension || {}, { starmelon_batch_queries });
"#
.as_bytes(),
);
let s: &'static ::deno_core::v8::OneByteConst = &STR;
::deno_core::FastStaticString::new(s)
})];
Cow::Borrowed(JS)
},
esm_entry_point: Some("ext:sqlite/bootstrap.js"),
enabled: true,
..Default::default()
};
Ok((extension, sql_worker_thread))
}
#[deno_core::op]
deno_core::extension!(hello_runtime, ops = [op_starmelon_batch_queries]);
#[deno_core::op2]
#[serde]
fn op_starmelon_batch_queries(
state: &mut OpState,
queries: Vec<(bool, String, Vec<String>)>,
#[serde] queries: Vec<(bool, String, Vec<String>)>,
) -> Result<ElmResult<Vec<Vec<String>>, AstridQueryError>, deno_core::error::AnyError> {
let worker_mailbox_clone = state.borrow::<SQLWorkerMailbox>();