mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-09-14 20:55:26 +02:00
Merge remote-tracking branch 'origin/v2' into v3
This commit is contained in:
@@ -1,5 +1,14 @@
|
||||
# Changelog
|
||||
|
||||
## [2.6.0]
|
||||
|
||||
- [`f8053e65`](https://github.com/tauri-apps/plugins-workspace/commit/f8053e659e4ccd85c1f52833411ff8417cbc5e69) ([#3527](https://github.com/tauri-apps/plugins-workspace/pull/3527) by [@Legend-Master](https://github.com/tauri-apps/plugins-workspace/../../Legend-Master)) Documented Cargo feature flags in each plugin's crate-level documentation.
|
||||
- [`19fb3926`](https://github.com/tauri-apps/plugins-workspace/commit/19fb3926fd24d95371bc3a7593256861df406436) ([#3528](https://github.com/tauri-apps/plugins-workspace/pull/3528) by [@Legend-Master](https://github.com/tauri-apps/plugins-workspace/../../Legend-Master)) Added `system-proxy` feature to replace the old `macos-system-configuration` feature flag to match the new reqwest API.
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs-js@2.5.2`
|
||||
|
||||
## \[2.5.9]
|
||||
|
||||
### Dependencies
|
||||
|
||||
+15
-10
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-http"
|
||||
version = "2.5.9"
|
||||
version = "2.6.0"
|
||||
description = "Access an HTTP client written in Rust."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -8,6 +8,13 @@ license = { workspace = true }
|
||||
rust-version = { workspace = true }
|
||||
repository = { workspace = true }
|
||||
links = "tauri-plugin-http"
|
||||
exclude = [
|
||||
"/banner.png",
|
||||
"/guest-js",
|
||||
"/package.json",
|
||||
"/rollup.config.js",
|
||||
"/tsconfig.json",
|
||||
]
|
||||
|
||||
[package.metadata.platforms.support]
|
||||
windows = { level = "full", notes = "" }
|
||||
@@ -30,11 +37,12 @@ serde_json = { workspace = true }
|
||||
tauri = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
tokio = { version = "1", features = ["sync", "macros"] }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.5.1" }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.5.2" }
|
||||
urlpattern = "0.3"
|
||||
regex = "1"
|
||||
http = "1"
|
||||
reqwest = { version = "0.12", default-features = false }
|
||||
# 0.12.16 is when `system-proxy` was added
|
||||
reqwest = { version = "0.12.16", default-features = false }
|
||||
url = { workspace = true }
|
||||
data-url = "0.3"
|
||||
cookie_store = { version = "0.22", optional = true, features = ["serde"] }
|
||||
@@ -42,13 +50,7 @@ bytes = { version = "1.9", optional = true }
|
||||
tracing = { workspace = true, optional = true }
|
||||
|
||||
[features]
|
||||
default = [
|
||||
"rustls-tls",
|
||||
"http2",
|
||||
"charset",
|
||||
"macos-system-configuration",
|
||||
"cookies",
|
||||
]
|
||||
default = ["rustls-tls", "http2", "charset", "system-proxy", "cookies"]
|
||||
multipart = ["reqwest/multipart"]
|
||||
json = ["reqwest/json"]
|
||||
stream = ["reqwest/stream"]
|
||||
@@ -69,7 +71,10 @@ trust-dns = ["reqwest/trust-dns"]
|
||||
socks = ["reqwest/socks"]
|
||||
http2 = ["reqwest/http2"]
|
||||
charset = ["reqwest/charset"]
|
||||
# Deprecated, switch to system-proxy
|
||||
macos-system-configuration = ["reqwest/macos-system-configuration"]
|
||||
system-proxy = ["reqwest/system-proxy"]
|
||||
|
||||
unsafe-headers = []
|
||||
tracing = ["dep:tracing"]
|
||||
dangerous-settings = []
|
||||
|
||||
@@ -1 +1 @@
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";async function t(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;const r="Request cancelled";return e.fetch=async function(e,n){const a=n?.signal;if(a?.aborted)throw new Error(r);const o=n?.maxRedirections,i=n?.connectTimeout,s=n?.proxy,d=n?.danger;n&&(delete n.maxRedirections,delete n.connectTimeout,delete n.proxy,delete n.danger);const c=n?.headers?n.headers instanceof Headers?n.headers:new Headers(n.headers):new Headers,l=new Request(e,n),u=await l.arrayBuffer(),f=0!==u.byteLength?Array.from(new Uint8Array(u)):null;for(const[e,t]of l.headers)c.get(e)||c.set(e,t);const _=(c instanceof Headers?Array.from(c.entries()):Array.isArray(c)?c:Object.entries(c)).map(([e,t])=>[e,"string"==typeof t?t:t.toString()]);if(a?.aborted)throw new Error(r);const h=await t("plugin:http|fetch",{clientConfig:{method:l.method,url:l.url,headers:_,data:f,maxRedirections:o,connectTimeout:i,proxy:s,danger:d}}),p=()=>t("plugin:http|fetch_cancel",{rid:h});if(a?.aborted)throw p(),new Error(r);a?.addEventListener("abort",()=>{p()});const{status:w,statusText:y,url:b,headers:g,rid:T}=await t("plugin:http|fetch_send",{rid:h}),R=()=>t("plugin:http|fetch_cancel_body",{rid:T}),m=[101,103,204,205,304].includes(w)?null:new ReadableStream({start:e=>{a?.addEventListener("abort",()=>{e.error(r),R()})},pull:e=>(async e=>{let r;try{r=await t("plugin:http|fetch_read_body",{rid:T})}catch(t){return e.error(t),void R()}const n=new Uint8Array(r),a=n[n.byteLength-1],o=n.slice(0,n.byteLength-1);1!==a?e.enqueue(o):e.close()})(e),cancel:()=>{R()}}),A=new Response(m,{status:w,statusText:y});Object.defineProperty(A,"url",{value:b,writable:!1}),Object.defineProperty(A,"headers",{value:new Headers(g),writable:!1});const v=A.clone.bind(A);return Object.defineProperty(A,"clone",{value:()=>{const e=v();return Object.defineProperty(e,"url",{value:b,writable:!1}),Object.defineProperty(e,"headers",{value:new Headers(g),writable:!1}),e}}),A},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})}
|
||||
if("__TAURI__"in window){var __TAURI_PLUGIN_HTTP__=function(e){"use strict";async function t(e,t={},r){return window.__TAURI_INTERNALS__.invoke(e,t,r)}"function"==typeof SuppressedError&&SuppressedError;const r="Request cancelled";return e.fetch=async function(e,n){const a=n?.signal;if(a?.aborted)throw new Error(r);const o=n?.maxRedirections,s=n?.connectTimeout,i=n?.proxy,c=n?.danger;n&&(delete n.maxRedirections,delete n.connectTimeout,delete n.proxy,delete n.danger);const d=n?.headers?n.headers instanceof Headers?n.headers:new Headers(n.headers):new Headers,l=new Request(e,n),u=await l.arrayBuffer(),h=0!==u.byteLength?Array.from(new Uint8Array(u)):null;for(const[e,t]of l.headers)d.get(e)||d.set(e,t);const f=(d instanceof Headers?Array.from(d.entries()):Array.isArray(d)?d:Object.entries(d)).map(([e,t])=>[e,"string"==typeof t?t:t.toString()]);if(a?.aborted)throw new Error(r);const _=await t("plugin:http|fetch",{clientConfig:{method:l.method,url:l.url,headers:f,data:h,maxRedirections:o,connectTimeout:s,proxy:i,danger:c}}),p=()=>t("plugin:http|fetch_cancel",{rid:_}).catch(()=>{});if(a?.aborted)throw p(),new Error(r);a?.addEventListener("abort",()=>{p()});const{status:w,statusText:y,url:b,headers:g,rid:T}=await t("plugin:http|fetch_send",{rid:_});let m=!1;const R=()=>m?Promise.resolve():(m=!0,t("plugin:http|fetch_cancel_body",{rid:T}).catch(()=>{})),v=[101,103,204,205,304].includes(w)?null:new ReadableStream({start:e=>{a?.addEventListener("abort",()=>{e.error(r),R()})},pull:e=>(async e=>{let r;try{r=await t("plugin:http|fetch_read_body",{rid:T})}catch(t){return e.error(t),void R()}const n=new Uint8Array(r),a=n[n.byteLength-1],o=n.slice(0,n.byteLength-1);1!==a?e.enqueue(o):e.close()})(e),cancel:()=>{R()}}),A=new Response(v,{status:w,statusText:y});Object.defineProperty(A,"url",{value:b,writable:!1}),Object.defineProperty(A,"headers",{value:new Headers(g),writable:!1});const P=A.clone.bind(A);return Object.defineProperty(A,"clone",{value:()=>{const e=P();return Object.defineProperty(e,"url",{value:b,writable:!1}),Object.defineProperty(e,"headers",{value:new Headers(g),writable:!1}),e}}),A},e}({});Object.defineProperty(window.__TAURI__,"http",{value:__TAURI_PLUGIN_HTTP__})}
|
||||
|
||||
@@ -199,14 +199,14 @@ export async function fetch(
|
||||
}
|
||||
})
|
||||
|
||||
const abort = () => invoke('plugin:http|fetch_cancel', { rid })
|
||||
const abort = () =>
|
||||
invoke('plugin:http|fetch_cancel', { rid }).catch(() => {})
|
||||
|
||||
// Optimistically check for abort signal
|
||||
// and avoid doing any work after doing intial work on the Rust side
|
||||
if (signal?.aborted) {
|
||||
// we don't care about the result of this proimse
|
||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||
abort()
|
||||
// we don't care about the result of this promise
|
||||
void abort()
|
||||
throw new Error(ERROR_REQUEST_CANCELLED)
|
||||
}
|
||||
|
||||
@@ -230,8 +230,13 @@ export async function fetch(
|
||||
rid
|
||||
})
|
||||
|
||||
let bodyDropped = false
|
||||
const dropBody = () => {
|
||||
return invoke('plugin:http|fetch_cancel_body', { rid: responseRid })
|
||||
if (bodyDropped) return Promise.resolve()
|
||||
bodyDropped = true
|
||||
return invoke('plugin:http|fetch_cancel_body', { rid: responseRid }).catch(
|
||||
() => {}
|
||||
)
|
||||
}
|
||||
|
||||
const readChunk = async (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-http",
|
||||
"version": "2.5.9",
|
||||
"version": "2.6.0",
|
||||
"license": "MIT OR Apache-2.0",
|
||||
"authors": [
|
||||
"Tauri Programme within The Commons Conservancy"
|
||||
|
||||
@@ -3,6 +3,46 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
//! Access the HTTP client written in Rust.
|
||||
//!
|
||||
//! ## Cargo features
|
||||
//!
|
||||
//! ### Reqwest feature forwards
|
||||
//!
|
||||
//! These features forwards [`reqwest`](https://docs.rs/reqwest/0.12.28/reqwest/index.html) features:
|
||||
//!
|
||||
//! - **http2** *(enabled by default)*: Enables HTTP/2 support.
|
||||
//! - **native-tls**: Enables TLS functionality provided by native-tls.
|
||||
//! - **native-tls-vendored**: Enables the vendored feature of native-tls.
|
||||
//! - **native-tls-alpn**: Enables the alpn feature of native-tls.
|
||||
//! - **rustls-tls** *(enabled by default)*: Enables TLS functionality provided by rustls. Equivalent to
|
||||
//! rustls-tls-webpki-roots.
|
||||
//! - **rustls-tls-manual-roots**: Enables TLS functionality provided by rustls, without setting any root
|
||||
//! certificates. Roots have to be specified manually.
|
||||
//! - **rustls-tls-webpki-roots**: Enables TLS functionality provided by rustls, while using root certificates
|
||||
//! from the webpki-roots crate.
|
||||
//! - **rustls-tls-native-roots**: Enables TLS functionality provided by rustls, while using root certificates
|
||||
//! from the rustls-native-certs crate.
|
||||
//! - **blocking**: Provides the [blocking](https://docs.rs/reqwest/0.12.28/reqwest/blocking/index.html) client API.
|
||||
//! - **charset** *(enabled by default)*: Improved support for decoding text.
|
||||
//! - **cookies** *(enabled by default)*: Provides cookie session support.
|
||||
//! - **gzip**: Provides response body gzip decompression.
|
||||
//! - **brotli**: Provides response body brotli decompression.
|
||||
//! - **zstd**: Provides response body zstd decompression.
|
||||
//! - **deflate**: Provides response body deflate decompression.
|
||||
//! - **json**: Provides serialization and deserialization for JSON bodies.
|
||||
//! - **multipart**: Provides functionality for multipart forms.
|
||||
//! - **stream**: Adds support for futures::Stream.
|
||||
//! - **socks**: Provides SOCKS5 proxy support.
|
||||
//! - **trust-dns**: Enables a trust-dns/Hickory DNS async resolver instead of the default threadpool using
|
||||
//! getaddrinfo.
|
||||
//! - **macos-system-configuration** *(deprecated, use `system-proxy` instead)*: Use Windows and macOS system proxy settings automatically.
|
||||
//! - **system-proxy** *(enabled by default)*: Use Windows and macOS system proxy settings automatically.
|
||||
//!
|
||||
//! ### tauri-plugin-http features
|
||||
//!
|
||||
//! - **tracing**: Adds request, response, and cookie-store diagnostics through `tracing`.
|
||||
//! - **unsafe-headers**: Allows webview requests to send any headers.
|
||||
//! - **dangerous-settings**: Allows dangerous client settings such as accepting invalid certificates or hostnames.
|
||||
|
||||
pub use reqwest;
|
||||
use tauri::{
|
||||
|
||||
Reference in New Issue
Block a user