Skip to content

Commit f092a50

Browse files
authored
feat(unstable): Geometry Interfaces Module Level 1 (#27527)
<!-- Before submitting a PR, please read https://docs.deno.com/runtime/manual/references/contributing 1. Give the PR a descriptive title. Examples of good title: - fix(std/http): Fix race condition in server - docs(console): Update docstrings - feat(doc): Handle nested reexports Examples of bad title: - fix #7123 - update docs - fix bugs 2. Ensure there is a related issue and it is referenced in the PR text. 3. Ensure there are tests that cover the changes. 4. Ensure `cargo test` passes. 5. Ensure `./tools/format.js` passes without changing files. 6. Ensure `./tools/lint.js` passes. 7. Open as a draft PR if your work is still in progress. The CI won't run all steps, but you can add '[ci]' to a commit message to force it to. 8. If you would like to run the benchmarks on the CI, add the 'ci-bench' label. --> closes #21608 prev #22054 ## blocked by - [x] denoland/deno_core#1024 - [x] denoland/deno_core#1047 - [x] denoland/deno_core#1127 - [x] denoland/deno_core#1161 - [x] denoland/deno_core#1187 - [x] denoland/deno_core#1188 - [x] denoland/deno_core#1208 ## build size main ``` % cargo build --locked --release --target-dir "target/$(git rev-parse --abbrev-ref HEAD)-$(git rev-parse --short HEAD)" % ls -l target/main-574272ded/release/deno | awk '{print $5}' 140258176 ``` this PR ``` % cargo build --locked --release --target-dir "target/$(git rev-parse --abbrev-ref HEAD)-$(git rev-parse --short HEAD)" % ls -l target/feat/geometry2-8edb91919/release/deno | awk '{print $5}' 140850032 ``` about 580KB larger --------- Signed-off-by: Kenta Moriuchi <moriken@kimamass.com>
1 parent 2d674b2 commit f092a50

24 files changed

Lines changed: 8127 additions & 24 deletions

Cargo.lock

Lines changed: 261 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,12 @@ libloading = "0.7"
440440
libuv-sys-lite = { version = "=1.48.3", features = ["dyn-symbols"] }
441441
napi_sys = { version = "0.1.0", path = "./libs/napi_sys" }
442442

443+
# geometry
444+
cssparser = "0.36.0"
445+
# NOTE: Due to a bug in Cargo's optional dependencies, an unused dependency on "glam" is being included in Cargo.lock
446+
# https://github.com/rust-lang/cargo/issues/10801
447+
nalgebra = { version = "0.34.1", default-features = false, features = ["std"] }
448+
443449
# webgpu
444450
raw-window-handle = "0.6.0"
445451
wgpu-core = "28.0.0"

cli/tsc/dts/lib.deno_web.d.ts

Lines changed: 827 additions & 0 deletions
Large diffs are not rendered by default.

ext/web/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,23 @@ path = "lib.rs"
1717
async-trait.workspace = true
1818
brotli.workspace = true
1919
bytes.workspace = true
20+
cssparser.workspace = true
2021
deno_core.workspace = true
2122
deno_error.workspace = true
2223
deno_features.workspace = true
2324
deno_permissions.workspace = true
2425
encoding_rs.workspace = true
2526
flate2 = { workspace = true, features = ["default"] }
2627
futures.workspace = true
28+
nalgebra.workspace = true
2729
serde.workspace = true
2830
thiserror.workspace = true
2931
tokio.workspace = true
3032
urlpattern.workspace = true
3133
uuid = { workspace = true, features = ["serde"] }
3234

3335
[dev-dependencies]
36+
approx = "0.5.1"
3437
deno_bench_util.workspace = true
3538
deno_webidl.workspace = true
3639

ext/web/README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,16 @@ Object.defineProperty(globalThis, "AbortController", {
9898
| structuredClone | messagePort.structuredClone | true | true | true |
9999

100100
Then from rust, provide:
101-
`deno_web::deno_web::init::<Permissions>(Arc<BlobStore>, Option<Url>)` in the
102-
`extensions` field of your `RuntimeOptions`
101+
`deno_web::deno_web::init::<Permissions>(Arc<BlobStore>, Option<Url>, bool, InMemoryBroadcastChannel)`
102+
in the `extensions` field of your `RuntimeOptions`
103103

104104
Where:
105105

106106
- `Permissions` is a struct implementing `deno_web::TimersPermission`
107107
- `Arc<BlobStore>` can be provided by `Default::default()`
108108
- `Option<Url>` provides an optional base URL for certain ops
109+
- `bool` indicates whether window features are enabled at initialization
110+
- `InMemoryBroadcastChannel` can be provided by `Default::default()`
109111

110112
## Dependencies
111113

@@ -141,6 +143,9 @@ Following ops are provided, which can be accessed through `Deno.ops`:
141143
- op_compression_finish
142144
- op_now
143145
- op_defer
146+
- op_geometry_get_enable_css_parser_features
147+
- op_geometry_matrix_set_matrix_value
148+
- op_geometry_matrix_to_string
144149
- op_readable_stream_resource_allocate
145150
- op_readable_stream_resource_allocate_sized
146151
- op_readable_stream_resource_get_sink
@@ -149,3 +154,10 @@ Following ops are provided, which can be accessed through `Deno.ops`:
149154
- op_readable_stream_resource_write_sync
150155
- op_readable_stream_resource_close
151156
- op_readable_stream_resource_await_close
157+
- DOMPointReadOnly
158+
- DOMPoint
159+
- DOMRectReadOnly
160+
- DOMRect
161+
- DOMQuad
162+
- DOMMatrixReadOnly
163+
- DOMMatrix

ext/web/benches/encoding.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,12 @@ fn setup() -> Vec<Extension> {
2727

2828
vec![
2929
deno_webidl::deno_webidl::init(),
30-
deno_web::deno_web::init(Default::default(), None, Default::default()),
30+
deno_web::deno_web::init(
31+
Default::default(),
32+
None,
33+
Default::default(),
34+
Default::default(),
35+
),
3136
bench_setup::init(),
3237
]
3338
}

ext/web/benches/timers_ops.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ fn setup() -> Vec<Extension> {
2626

2727
vec![
2828
deno_webidl::deno_webidl::init(),
29-
deno_web::deno_web::init(Default::default(), None, Default::default()),
29+
deno_web::deno_web::init(
30+
Default::default(),
31+
None,
32+
Default::default(),
33+
Default::default(),
34+
),
3035
bench_setup::init(),
3136
]
3237
}

ext/web/benches/url_ops.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ fn setup() -> Vec<Extension> {
2020

2121
vec![
2222
deno_webidl::deno_webidl::init(),
23-
deno_web::deno_web::init(Default::default(), None, Default::default()),
23+
deno_web::deno_web::init(
24+
Default::default(),
25+
None,
26+
Default::default(),
27+
Default::default(),
28+
),
2429
bench_setup::init(),
2530
]
2631
}

0 commit comments

Comments
 (0)