mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
chore(ext/timers): move ext/timers to ext/web (#13665)
This commit is contained in:
parent
5e845442fa
commit
760f4c9e24
17 changed files with 46 additions and 88 deletions
16
Cargo.lock
generated
16
Cargo.lock
generated
|
@ -1006,7 +1006,6 @@ dependencies = [
|
||||||
"deno_ffi",
|
"deno_ffi",
|
||||||
"deno_http",
|
"deno_http",
|
||||||
"deno_net",
|
"deno_net",
|
||||||
"deno_timers",
|
|
||||||
"deno_tls",
|
"deno_tls",
|
||||||
"deno_url",
|
"deno_url",
|
||||||
"deno_web",
|
"deno_web",
|
||||||
|
@ -1041,18 +1040,6 @@ dependencies = [
|
||||||
"winres",
|
"winres",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "deno_timers"
|
|
||||||
version = "0.34.0"
|
|
||||||
dependencies = [
|
|
||||||
"deno_bench_util",
|
|
||||||
"deno_core",
|
|
||||||
"deno_url",
|
|
||||||
"deno_web",
|
|
||||||
"deno_webidl",
|
|
||||||
"tokio",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deno_tls"
|
name = "deno_tls"
|
||||||
version = "0.23.0"
|
version = "0.23.0"
|
||||||
|
@ -1085,7 +1072,10 @@ version = "0.67.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base64 0.13.0",
|
"base64 0.13.0",
|
||||||
|
"deno_bench_util",
|
||||||
"deno_core",
|
"deno_core",
|
||||||
|
"deno_url",
|
||||||
|
"deno_webidl",
|
||||||
"encoding_rs",
|
"encoding_rs",
|
||||||
"flate2",
|
"flate2",
|
||||||
"serde",
|
"serde",
|
||||||
|
|
|
@ -17,7 +17,6 @@ members = [
|
||||||
"ext/ffi",
|
"ext/ffi",
|
||||||
"ext/http",
|
"ext/http",
|
||||||
"ext/net",
|
"ext/net",
|
||||||
"ext/timers",
|
|
||||||
"ext/url",
|
"ext/url",
|
||||||
"ext/web",
|
"ext/web",
|
||||||
"ext/webgpu",
|
"ext/webgpu",
|
||||||
|
|
|
@ -2,7 +2,7 @@ error: Uncaught (in worker "") Error
|
||||||
throw new Error();
|
throw new Error();
|
||||||
^
|
^
|
||||||
at [WILDCARD]/workers/drop_handle_race.js:2:9
|
at [WILDCARD]/workers/drop_handle_race.js:2:9
|
||||||
at Object.action (deno:ext/timers/[WILDCARD])
|
at Object.action (deno:ext/web/02_timers.js:[WILDCARD])
|
||||||
at handleTimerMacrotask (deno:ext/timers/[WILDCARD])
|
at handleTimerMacrotask (deno:ext/web/02_timers.js:[WILDCARD])
|
||||||
error: Uncaught (in promise) Error: Unhandled error event in child worker.
|
error: Uncaught (in promise) Error: Unhandled error event in child worker.
|
||||||
at Worker.#pollControl (deno:runtime/js/11_workers.js:[WILDCARD])
|
at Worker.#pollControl (deno:runtime/js/11_workers.js:[WILDCARD])
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
# Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
|
|
||||||
|
|
||||||
[package]
|
|
||||||
name = "deno_timers"
|
|
||||||
version = "0.34.0"
|
|
||||||
authors = ["the Deno authors"]
|
|
||||||
edition = "2021"
|
|
||||||
license = "MIT"
|
|
||||||
readme = "README.md"
|
|
||||||
repository = "https://github.com/denoland/deno"
|
|
||||||
description = "Timers API implementation for Deno"
|
|
||||||
|
|
||||||
[lib]
|
|
||||||
path = "lib.rs"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
deno_core = { version = "0.118.0", path = "../../core" }
|
|
||||||
tokio = { version = "1.10.1", features = ["full"] }
|
|
||||||
|
|
||||||
[dev-dependencies]
|
|
||||||
deno_bench_util = { version = "0.30.0", path = "../../bench_util" }
|
|
||||||
deno_url = { version = "0.36.0", path = "../url" }
|
|
||||||
deno_web = { version = "0.67.0", path = "../web" }
|
|
||||||
deno_webidl = { version = "0.36.0", path = "../webidl" }
|
|
||||||
|
|
||||||
[[bench]]
|
|
||||||
name = "timers_ops"
|
|
||||||
harness = false
|
|
|
@ -1,5 +0,0 @@
|
||||||
# deno_timers
|
|
||||||
|
|
||||||
This crate implements the timers API.
|
|
||||||
|
|
||||||
Spec: https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
|
|
|
@ -22,3 +22,12 @@ flate2 = "1"
|
||||||
serde = "1.0.129"
|
serde = "1.0.129"
|
||||||
tokio = { version = "1.10.1", features = ["full"] }
|
tokio = { version = "1.10.1", features = ["full"] }
|
||||||
uuid = { version = "0.8.2", features = ["v4", "serde"] }
|
uuid = { version = "0.8.2", features = ["v4", "serde"] }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
deno_bench_util = { version = "0.30.0", path = "../../bench_util" }
|
||||||
|
deno_url = { version = "0.36.0", path = "../url" }
|
||||||
|
deno_webidl = { version = "0.36.0", path = "../webidl" }
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "timers_ops"
|
||||||
|
harness = false
|
||||||
|
|
|
@ -7,7 +7,7 @@ use deno_web::BlobStore;
|
||||||
|
|
||||||
struct Permissions;
|
struct Permissions;
|
||||||
|
|
||||||
impl deno_timers::TimersPermission for Permissions {
|
impl deno_web::TimersPermission for Permissions {
|
||||||
fn allow_hrtime(&mut self) -> bool {
|
fn allow_hrtime(&mut self) -> bool {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,7 @@ fn setup() -> Vec<Extension> {
|
||||||
vec![
|
vec![
|
||||||
deno_webidl::init(),
|
deno_webidl::init(),
|
||||||
deno_url::init(),
|
deno_url::init(),
|
||||||
deno_web::init(BlobStore::default(), None),
|
deno_web::init::<Permissions>(BlobStore::default(), None),
|
||||||
deno_timers::init::<Permissions>(),
|
|
||||||
Extension::builder()
|
Extension::builder()
|
||||||
.js(vec![
|
.js(vec![
|
||||||
("setup",
|
("setup",
|
|
@ -3,6 +3,7 @@
|
||||||
mod blob;
|
mod blob;
|
||||||
mod compression;
|
mod compression;
|
||||||
mod message_port;
|
mod message_port;
|
||||||
|
mod timers;
|
||||||
|
|
||||||
use deno_core::error::range_error;
|
use deno_core::error::range_error;
|
||||||
use deno_core::error::type_error;
|
use deno_core::error::type_error;
|
||||||
|
@ -47,8 +48,18 @@ use crate::message_port::op_message_port_recv_message;
|
||||||
pub use crate::message_port::JsMessageData;
|
pub use crate::message_port::JsMessageData;
|
||||||
pub use crate::message_port::MessagePort;
|
pub use crate::message_port::MessagePort;
|
||||||
|
|
||||||
|
use crate::timers::op_now;
|
||||||
|
use crate::timers::op_sleep;
|
||||||
|
use crate::timers::op_sleep_sync;
|
||||||
|
use crate::timers::op_timer_handle;
|
||||||
|
use crate::timers::StartTime;
|
||||||
|
pub use crate::timers::TimersPermission;
|
||||||
|
|
||||||
/// Load and execute the javascript code.
|
/// Load and execute the javascript code.
|
||||||
pub fn init(blob_store: BlobStore, maybe_location: Option<Url>) -> Extension {
|
pub fn init<P: TimersPermission + 'static>(
|
||||||
|
blob_store: BlobStore,
|
||||||
|
maybe_location: Option<Url>,
|
||||||
|
) -> Extension {
|
||||||
Extension::builder()
|
Extension::builder()
|
||||||
.js(include_js_files!(
|
.js(include_js_files!(
|
||||||
prefix "deno:ext/web",
|
prefix "deno:ext/web",
|
||||||
|
@ -57,6 +68,7 @@ pub fn init(blob_store: BlobStore, maybe_location: Option<Url>) -> Extension {
|
||||||
"01_mimesniff.js",
|
"01_mimesniff.js",
|
||||||
"02_event.js",
|
"02_event.js",
|
||||||
"02_structured_clone.js",
|
"02_structured_clone.js",
|
||||||
|
"02_timers.js",
|
||||||
"03_abort_signal.js",
|
"03_abort_signal.js",
|
||||||
"04_global_interfaces.js",
|
"04_global_interfaces.js",
|
||||||
"05_base64.js",
|
"05_base64.js",
|
||||||
|
@ -68,6 +80,7 @@ pub fn init(blob_store: BlobStore, maybe_location: Option<Url>) -> Extension {
|
||||||
"12_location.js",
|
"12_location.js",
|
||||||
"13_message_port.js",
|
"13_message_port.js",
|
||||||
"14_compression.js",
|
"14_compression.js",
|
||||||
|
"15_performance.js",
|
||||||
))
|
))
|
||||||
.ops(vec![
|
.ops(vec![
|
||||||
("op_base64_decode", op_sync(op_base64_decode)),
|
("op_base64_decode", op_sync(op_base64_decode)),
|
||||||
|
@ -116,12 +129,17 @@ pub fn init(blob_store: BlobStore, maybe_location: Option<Url>) -> Extension {
|
||||||
"op_compression_finish",
|
"op_compression_finish",
|
||||||
op_sync(compression::op_compression_finish),
|
op_sync(compression::op_compression_finish),
|
||||||
),
|
),
|
||||||
|
("op_now", op_sync(op_now::<P>)),
|
||||||
|
("op_timer_handle", op_sync(op_timer_handle)),
|
||||||
|
("op_sleep", op_async(op_sleep)),
|
||||||
|
("op_sleep_sync", op_sync(op_sleep_sync::<P>)),
|
||||||
])
|
])
|
||||||
.state(move |state| {
|
.state(move |state| {
|
||||||
state.put(blob_store.clone());
|
state.put(blob_store.clone());
|
||||||
if let Some(location) = maybe_location.clone() {
|
if let Some(location) = maybe_location.clone() {
|
||||||
state.put(Location(location));
|
state.put(Location(location));
|
||||||
}
|
}
|
||||||
|
state.put(StartTime::now());
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
.build()
|
.build()
|
||||||
|
|
|
@ -3,12 +3,8 @@
|
||||||
//! This module helps deno implement timers and performance APIs.
|
//! This module helps deno implement timers and performance APIs.
|
||||||
|
|
||||||
use deno_core::error::AnyError;
|
use deno_core::error::AnyError;
|
||||||
use deno_core::include_js_files;
|
|
||||||
use deno_core::op_async;
|
|
||||||
use deno_core::op_sync;
|
|
||||||
use deno_core::CancelFuture;
|
use deno_core::CancelFuture;
|
||||||
use deno_core::CancelHandle;
|
use deno_core::CancelHandle;
|
||||||
use deno_core::Extension;
|
|
||||||
use deno_core::OpState;
|
use deno_core::OpState;
|
||||||
use deno_core::Resource;
|
use deno_core::Resource;
|
||||||
use deno_core::ResourceId;
|
use deno_core::ResourceId;
|
||||||
|
@ -23,26 +19,6 @@ pub trait TimersPermission {
|
||||||
fn check_unstable(&self, state: &OpState, api_name: &'static str);
|
fn check_unstable(&self, state: &OpState, api_name: &'static str);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn init<P: TimersPermission + 'static>() -> Extension {
|
|
||||||
Extension::builder()
|
|
||||||
.js(include_js_files!(
|
|
||||||
prefix "deno:ext/timers",
|
|
||||||
"01_timers.js",
|
|
||||||
"02_performance.js",
|
|
||||||
))
|
|
||||||
.ops(vec![
|
|
||||||
("op_now", op_sync(op_now::<P>)),
|
|
||||||
("op_timer_handle", op_sync(op_timer_handle)),
|
|
||||||
("op_sleep", op_async(op_sleep)),
|
|
||||||
("op_sleep_sync", op_sync(op_sleep_sync::<P>)),
|
|
||||||
])
|
|
||||||
.state(|state| {
|
|
||||||
state.put(StartTime::now());
|
|
||||||
Ok(())
|
|
||||||
})
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type StartTime = Instant;
|
pub type StartTime = Instant;
|
||||||
|
|
||||||
// Returns a milliseconds and nanoseconds subsec
|
// Returns a milliseconds and nanoseconds subsec
|
|
@ -30,7 +30,6 @@ deno_fetch = { version = "0.59.0", path = "../ext/fetch" }
|
||||||
deno_ffi = { version = "0.23.0", path = "../ext/ffi" }
|
deno_ffi = { version = "0.23.0", path = "../ext/ffi" }
|
||||||
deno_http = { version = "0.28.0", path = "../ext/http" }
|
deno_http = { version = "0.28.0", path = "../ext/http" }
|
||||||
deno_net = { version = "0.28.0", path = "../ext/net" }
|
deno_net = { version = "0.28.0", path = "../ext/net" }
|
||||||
deno_timers = { version = "0.34.0", path = "../ext/timers" }
|
|
||||||
deno_tls = { version = "0.23.0", path = "../ext/tls" }
|
deno_tls = { version = "0.23.0", path = "../ext/tls" }
|
||||||
deno_url = { version = "0.36.0", path = "../ext/url" }
|
deno_url = { version = "0.36.0", path = "../ext/url" }
|
||||||
deno_web = { version = "0.67.0", path = "../ext/web" }
|
deno_web = { version = "0.67.0", path = "../ext/web" }
|
||||||
|
@ -54,7 +53,6 @@ deno_fetch = { version = "0.59.0", path = "../ext/fetch" }
|
||||||
deno_ffi = { version = "0.23.0", path = "../ext/ffi" }
|
deno_ffi = { version = "0.23.0", path = "../ext/ffi" }
|
||||||
deno_http = { version = "0.28.0", path = "../ext/http" }
|
deno_http = { version = "0.28.0", path = "../ext/http" }
|
||||||
deno_net = { version = "0.28.0", path = "../ext/net" }
|
deno_net = { version = "0.28.0", path = "../ext/net" }
|
||||||
deno_timers = { version = "0.34.0", path = "../ext/timers" }
|
|
||||||
deno_tls = { version = "0.23.0", path = "../ext/tls" }
|
deno_tls = { version = "0.23.0", path = "../ext/tls" }
|
||||||
deno_url = { version = "0.36.0", path = "../ext/url" }
|
deno_url = { version = "0.36.0", path = "../ext/url" }
|
||||||
deno_web = { version = "0.67.0", path = "../ext/web" }
|
deno_web = { version = "0.67.0", path = "../ext/web" }
|
||||||
|
|
|
@ -93,7 +93,7 @@ mod not_docs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl deno_timers::TimersPermission for Permissions {
|
impl deno_web::TimersPermission for Permissions {
|
||||||
fn allow_hrtime(&mut self) -> bool {
|
fn allow_hrtime(&mut self) -> bool {
|
||||||
unreachable!("snapshotting!")
|
unreachable!("snapshotting!")
|
||||||
}
|
}
|
||||||
|
@ -145,13 +145,15 @@ mod not_docs {
|
||||||
deno_console::init(),
|
deno_console::init(),
|
||||||
deno_url::init(),
|
deno_url::init(),
|
||||||
deno_tls::init(),
|
deno_tls::init(),
|
||||||
deno_web::init(deno_web::BlobStore::default(), Default::default()),
|
deno_web::init::<Permissions>(
|
||||||
|
deno_web::BlobStore::default(),
|
||||||
|
Default::default(),
|
||||||
|
),
|
||||||
deno_fetch::init::<Permissions>(Default::default()),
|
deno_fetch::init::<Permissions>(Default::default()),
|
||||||
deno_websocket::init::<Permissions>("".to_owned(), None, None),
|
deno_websocket::init::<Permissions>("".to_owned(), None, None),
|
||||||
deno_webstorage::init(None),
|
deno_webstorage::init(None),
|
||||||
deno_crypto::init(None),
|
deno_crypto::init(None),
|
||||||
deno_webgpu::init(false),
|
deno_webgpu::init(false),
|
||||||
deno_timers::init::<Permissions>(),
|
|
||||||
deno_broadcast_channel::init(
|
deno_broadcast_channel::init(
|
||||||
deno_broadcast_channel::InMemoryBroadcastChannel::default(),
|
deno_broadcast_channel::InMemoryBroadcastChannel::default(),
|
||||||
false, // No --unstable.
|
false, // No --unstable.
|
||||||
|
|
|
@ -8,7 +8,6 @@ pub use deno_fetch;
|
||||||
pub use deno_ffi;
|
pub use deno_ffi;
|
||||||
pub use deno_http;
|
pub use deno_http;
|
||||||
pub use deno_net;
|
pub use deno_net;
|
||||||
pub use deno_timers;
|
|
||||||
pub use deno_tls;
|
pub use deno_tls;
|
||||||
pub use deno_url;
|
pub use deno_url;
|
||||||
pub use deno_web;
|
pub use deno_web;
|
||||||
|
|
|
@ -1314,7 +1314,7 @@ impl deno_fetch::FetchPermissions for Permissions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl deno_timers::TimersPermission for Permissions {
|
impl deno_web::TimersPermission for Permissions {
|
||||||
fn allow_hrtime(&mut self) -> bool {
|
fn allow_hrtime(&mut self) -> bool {
|
||||||
self.hrtime.check().is_ok()
|
self.hrtime.check().is_ok()
|
||||||
}
|
}
|
||||||
|
|
|
@ -368,7 +368,10 @@ impl WebWorker {
|
||||||
deno_webidl::init(),
|
deno_webidl::init(),
|
||||||
deno_console::init(),
|
deno_console::init(),
|
||||||
deno_url::init(),
|
deno_url::init(),
|
||||||
deno_web::init(options.blob_store.clone(), Some(main_module.clone())),
|
deno_web::init::<Permissions>(
|
||||||
|
options.blob_store.clone(),
|
||||||
|
Some(main_module.clone()),
|
||||||
|
),
|
||||||
deno_fetch::init::<Permissions>(deno_fetch::Options {
|
deno_fetch::init::<Permissions>(deno_fetch::Options {
|
||||||
user_agent: options.user_agent.clone(),
|
user_agent: options.user_agent.clone(),
|
||||||
root_cert_store: options.root_cert_store.clone(),
|
root_cert_store: options.root_cert_store.clone(),
|
||||||
|
@ -386,7 +389,6 @@ impl WebWorker {
|
||||||
deno_broadcast_channel::init(options.broadcast_channel.clone(), unstable),
|
deno_broadcast_channel::init(options.broadcast_channel.clone(), unstable),
|
||||||
deno_crypto::init(options.seed),
|
deno_crypto::init(options.seed),
|
||||||
deno_webgpu::init(unstable),
|
deno_webgpu::init(unstable),
|
||||||
deno_timers::init::<Permissions>(),
|
|
||||||
// ffi
|
// ffi
|
||||||
deno_ffi::init::<Permissions>(unstable),
|
deno_ffi::init::<Permissions>(unstable),
|
||||||
// Permissions ext (worker specific state)
|
// Permissions ext (worker specific state)
|
||||||
|
|
|
@ -100,7 +100,7 @@ impl MainWorker {
|
||||||
deno_webidl::init(),
|
deno_webidl::init(),
|
||||||
deno_console::init(),
|
deno_console::init(),
|
||||||
deno_url::init(),
|
deno_url::init(),
|
||||||
deno_web::init(
|
deno_web::init::<Permissions>(
|
||||||
options.blob_store.clone(),
|
options.blob_store.clone(),
|
||||||
options.bootstrap.location.clone(),
|
options.bootstrap.location.clone(),
|
||||||
),
|
),
|
||||||
|
@ -122,7 +122,6 @@ impl MainWorker {
|
||||||
deno_crypto::init(options.seed),
|
deno_crypto::init(options.seed),
|
||||||
deno_broadcast_channel::init(options.broadcast_channel.clone(), unstable),
|
deno_broadcast_channel::init(options.broadcast_channel.clone(), unstable),
|
||||||
deno_webgpu::init(unstable),
|
deno_webgpu::init(unstable),
|
||||||
deno_timers::init::<Permissions>(),
|
|
||||||
// ffi
|
// ffi
|
||||||
deno_ffi::init::<Permissions>(unstable),
|
deno_ffi::init::<Permissions>(unstable),
|
||||||
// Runtime ops
|
// Runtime ops
|
||||||
|
|
Loading…
Reference in a new issue