1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-21 23:04:45 -05:00
denoland-deno/ext/fetch
Satya Rohith 960776cd32
fix(ext/node): support createConnection option in node:http.request() (#25470)
This commit changes "node:http" module to add support
for the "createConnection" option when the "request()"
API is called.


Closes https://github.com/denoland/deno/issues/19507

---------

Signed-off-by: Yoshiya Hinosawa <stibium121@gmail.com>
Signed-off-by: Satya Rohith <me@satyarohith.com>
Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: crowlkats <crowlkats@toaxl.com>
2024-12-13 01:44:42 +01:00
..
20_headers.js refactor(ext/fetch): align error messages (#25374) 2024-09-04 09:05:29 +02:00
21_formdata.js refactor(ext/fetch): align error messages (#25374) 2024-09-04 09:05:29 +02:00
22_body.js fix(ext/fetch): don't throw when bodyUsed inspect after upgrade (#27088) 2024-11-26 21:38:46 +05:30
22_http_client.js fix(runtime): use more null proto objects again (#25040) 2024-09-06 12:52:59 +02:00
23_request.js feat(ext/http): abort event when request is cancelled (#26781) 2024-11-08 18:46:11 +05:30
23_response.js perf(http): cache webidl.converters lookups in ext/fetch/23_response.js (#26256) 2024-10-14 23:25:18 -04:00
26_fetch.js refactor(unstable): move telemetry to own ext (#27067) 2024-11-26 11:22:18 +00:00
27_eventsource.js fix(runtime): use more null proto objects again (#25040) 2024-09-06 12:52:59 +02:00
Cargo.toml chore: forward v2.1.4 release commit to main (#27329) 2024-12-11 12:47:31 +00:00
dns.rs chore: update hickory dns crates (#27137) 2024-12-05 14:11:35 +00:00
fs_fetch_handler.rs refactor(ext/fetch): use concrete error types (#26220) 2024-10-19 01:20:58 +00:00
internal.d.ts perf(ext/http): recover memory for serve and optimize AbortController (#23559) 2024-04-25 14:52:24 -04:00
lib.deno_fetch.d.ts feat(fetch): accept async iterables for body (#26882) 2024-11-15 15:54:28 +01:00
lib.rs fix(ext/node): support createConnection option in node:http.request() (#25470) 2024-12-13 01:44:42 +01:00
proxy.rs fix(ext/fetch): fix lowercase http_proxy classified as https (#25686) 2024-09-19 08:03:07 +00:00
README.md chore(ext/fetch): remove op_fetch_response_upgrade (#25421) 2024-09-04 18:10:28 +05:30
tests.rs chore: update hickory dns crates (#27137) 2024-12-05 14:11:35 +00:00

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 implements Default

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