mirror of
https://github.com/denoland/deno.git
synced 2025-03-11 22:59:41 -04:00
![]() Updates to use rust 1.85. Doesn't move to the 2024 edition, as that's a fair bit more involved. A nice side benefit is that the new rustc version seems to lead to a slight reduction in binary size (at least on mac): ``` FILE SIZE -------------- +4.3% +102Ki __DATA_CONST,__const [NEW] +69.3Ki __TEXT,__literals [NEW] +68.5Ki Rebase Info +5.0% +39.9Ki __TEXT,__unwind_info +57% +8.85Ki [__TEXT] [NEW] +8.59Ki Lazy Binding Info [NEW] +5.16Ki __TEXT,__stub_helper [NEW] +3.58Ki Export Info [NEW] +3.42Ki __DATA,__la_symbol_ptr -0.1% -726 [12 Others] -21.4% -3.10Ki [__DATA_CONST] -95.8% -3.39Ki __DATA_CONST,__got -20.9% -3.43Ki [__DATA] -0.5% -4.52Ki Code Signature -100.0% -11.6Ki [__LINKEDIT] -1.0% -43.5Ki Symbol Table -1.6% -44.0Ki __TEXT,__gcc_except_tab -0.2% -48.1Ki __TEXT,__const -3.3% -78.6Ki __TEXT,__eh_frame -0.7% -320Ki __TEXT,__text -1.5% -334Ki String Table -0.5% -586Ki TOTAL ``` |
||
---|---|---|
.. | ||
20_headers.js | ||
21_formdata.js | ||
22_body.js | ||
22_http_client.js | ||
23_request.js | ||
23_response.js | ||
26_fetch.js | ||
27_eventsource.js | ||
Cargo.toml | ||
dns.rs | ||
fs_fetch_handler.rs | ||
internal.d.ts | ||
lib.rs | ||
proxy.rs | ||
README.md | ||
tests.rs |
deno_fetch
This crate implements the Fetch API.
Spec: https://fetch.spec.whatwg.org/
Usage Example
From javascript, include the extension's source, and assign the following properties to the global scope:
import * as headers from "ext:deno_fetch/20_headers.js";
import * as formData from "ext:deno_fetch/21_formdata.js";
import * as request from "ext:deno_fetch/23_request.js";
import * as response from "ext:deno_fetch/23_response.js";
import * as fetch from "ext:deno_fetch/26_fetch.js";
import * as eventSource from "ext:deno_fetch/27_eventsource.js";
// Set up the callback for Wasm streaming ops
Deno.core.setWasmStreamingCallback(fetch.handleWasmStreaming);
Object.defineProperty(globalThis, "fetch", {
value: fetch.fetch,
enumerable: true,
configurable: true,
writable: true,
});
Object.defineProperty(globalThis, "Request", {
value: request.Request,
enumerable: false,
configurable: true,
writable: true,
});
Object.defineProperty(globalThis, "Response", {
value: response.Response,
enumerable: false,
configurable: true,
writable: true,
});
Object.defineProperty(globalThis, "Headers", {
value: headers.Headers,
enumerable: false,
configurable: true,
writable: true,
});
Object.defineProperty(globalThis, "FormData", {
value: formData.FormData,
enumerable: false,
configurable: true,
writable: true,
});
Then from rust, provide
deno_fetch::deno_fetch::init_ops_and_esm<Permissions>(Default::default())
in
the extensions
field of your RuntimeOptions
Where:
- Permissions: a struct implementing
deno_fetch::FetchPermissions
- Options:
deno_fetch::Options
, which implementsDefault
Dependencies
- deno_webidl: Provided by the
deno_webidl
crate - deno_web: Provided by the
deno_web
crate - deno_url: Provided by the
deno_url
crate - deno_console: Provided by the
deno_console
crate
Provided ops
Following ops are provided, which can be accessed through Deno.ops
:
- op_fetch
- op_fetch_send
- op_utf8_to_byte_string
- op_fetch_custom_client