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:
parent
bdccb9cb88
commit
ac97ac37db
23 changed files with 618 additions and 303 deletions
|
|
@ -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>();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue