diff --git a/ci/regenerate.sh b/ci/regenerate.sh index 5508239..2938594 100755 --- a/ci/regenerate.sh +++ b/ci/regenerate.sh @@ -154,3 +154,24 @@ generate_p3 crates/wasip3/src/service.rs \ --default-bindings-module '$crate' \ --pub-export-macro \ --export-macro-name _export_service + +with="wasi:cli/stdin@$p3=crate::cli::stdin" +with="$with,wasi:cli/stdout@$p3=crate::cli::stdout" +with="$with,wasi:cli/stderr@$p3=crate::cli::stderr" +with="$with,wasi:cli/types@$p3=crate::cli::types" +with="$with,wasi:clocks/monotonic-clock@$p3=crate::clocks::monotonic_clock" +with="$with,wasi:clocks/system-clock@$p3=crate::clocks::system_clock" +with="$with,wasi:clocks/types@$p3=crate::clocks::types" +with="$with,wasi:random/random@$p3=crate::random::random" +with="$with,wasi:random/insecure@$p3=crate::random::insecure" +with="$with,wasi:random/insecure-seed@$p3=crate::random::insecure_seed" +with="$with,wasi:http/types@$p3=crate::service::types" +with="$with,wasi:http/handler@$p3=crate::service::handler" +with="$with,wasi:http/client@$p3=crate::service::client" +generate_p3 crates/wasip3/src/middleware.rs \ + --world wasi:http/middleware \ + --with "$with" \ + --type-section-suffix $(suffix "wasip3" "-middleware-world") \ + --default-bindings-module '$crate' \ + --pub-export-macro \ + --export-macro-name _export_middleware diff --git a/crates/wasip3/src/middleware.rs b/crates/wasip3/src/middleware.rs new file mode 100644 index 0000000..bd6bd7d --- /dev/null +++ b/crates/wasip3/src/middleware.rs @@ -0,0 +1,1192 @@ +// Generated by `wit-bindgen` 0.54.0. DO NOT EDIT! +// Options used: +// * with "wasi:cli/stdin@0.3.0-rc-2026-03-15" = "crate::cli::stdin" +// * with "wasi:cli/stdout@0.3.0-rc-2026-03-15" = "crate::cli::stdout" +// * with "wasi:cli/stderr@0.3.0-rc-2026-03-15" = "crate::cli::stderr" +// * with "wasi:cli/types@0.3.0-rc-2026-03-15" = "crate::cli::types" +// * with "wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15" = "crate::clocks::monotonic_clock" +// * with "wasi:clocks/system-clock@0.3.0-rc-2026-03-15" = "crate::clocks::system_clock" +// * with "wasi:clocks/types@0.3.0-rc-2026-03-15" = "crate::clocks::types" +// * with "wasi:random/random@0.3.0-rc-2026-03-15" = "crate::random::random" +// * with "wasi:random/insecure@0.3.0-rc-2026-03-15" = "crate::random::insecure" +// * with "wasi:random/insecure-seed@0.3.0-rc-2026-03-15" = "crate::random::insecure_seed" +// * with "wasi:http/types@0.3.0-rc-2026-03-15" = "crate::service::types" +// * with "wasi:http/handler@0.3.0-rc-2026-03-15" = "crate::service::handler" +// * with "wasi:http/client@0.3.0-rc-2026-03-15" = "crate::service::client" +// * type_section_suffix: "rust-wasip3-0.5.0+wasi-0.3.0-rc-2026-03-15-from-crates-io-middleware-world" +// * default-bindings-module: "$crate" +// * export-macro-name: _export_middleware +// * pub-export-macro +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::clocks::types as __with_name0; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::service::types as __with_name1; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::service::handler as __with_name2; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::cli::types as __with_name3; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::cli::stdout as __with_name4; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::cli::stderr as __with_name5; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::cli::stdin as __with_name6; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::service::client as __with_name7; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::clocks::monotonic_clock as __with_name8; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::clocks::system_clock as __with_name9; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::random::random as __with_name10; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::random::insecure as __with_name11; +#[allow(unfulfilled_lint_expectations, unused_imports)] +use crate::random::insecure_seed as __with_name12; +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] +pub mod exports { + pub mod wasi { + pub mod http { + /// This interface defines a handler of HTTP Requests. + /// + /// In a `wasi:http/service` this interface is exported to respond to an + /// incoming HTTP Request with a Response. + /// + /// In `wasi:http/middleware` this interface is both exported and imported as + /// the "downstream" and "upstream" directions of the middleware chain. + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + pub mod handler { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_custom_section_describing_imports; + use super::super::super::super::_rt; + pub type Request = super::super::super::super::__with_name1::Request; + pub type Response = super::super::super::super::__with_name1::Response; + pub type ErrorCode = super::super::super::super::__with_name1::ErrorCode; + #[doc(hidden)] + #[allow(non_snake_case, unused_unsafe)] + pub unsafe fn _export_handle_cabi(arg0: i32) -> i32 { + unsafe { + #[cfg(target_arch = "wasm32")] _rt::run_ctors_once(); + wit_bindgen::rt::async_support::start_task(async move { + let _task_cancel = wit_bindgen::rt::async_support::TaskCancelOnDrop::new(); + let result0 = &{ + T_::handle( + super::super::super::super::__with_name1::Request::from_handle( + arg0 as u32, + ), + ) + .await + }; + let ( + result40_0, + result40_1, + result40_2, + result40_3, + result40_4, + result40_5, + result40_6, + result40_7, + ) = match result0 { + Ok(e) => { + ( + 0i32, + (e).take_handle() as i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + Err(e) => { + use super::super::super::super::__with_name1::ErrorCode as V38; + let ( + result39_0, + result39_1, + result39_2, + result39_3, + result39_4, + result39_5, + result39_6, + ) = match e { + V38::DnsTimeout => { + ( + 0i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::DnsError(e) => { + let super::super::super::super::__with_name1::DnsErrorPayload { + rcode: rcode1, + info_code: info_code1, + } = e; + let (result3_0, result3_1, result3_2) = match rcode1 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result4_0, result4_1) = match info_code1 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 1i32, + result3_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result3_1); + t + }, + result3_2 as *mut u8, + result4_0 as *mut u8, + result4_1 as usize, + 0i32, + ) + } + V38::DestinationNotFound => { + ( + 2i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::DestinationUnavailable => { + ( + 3i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::DestinationIpProhibited => { + ( + 4i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::DestinationIpUnroutable => { + ( + 5i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::ConnectionRefused => { + ( + 6i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::ConnectionTerminated => { + ( + 7i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::ConnectionTimeout => { + ( + 8i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::ConnectionReadTimeout => { + ( + 9i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::ConnectionWriteTimeout => { + ( + 10i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::ConnectionLimitReached => { + ( + 11i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::TlsProtocolError => { + ( + 12i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::TlsCertificateError => { + ( + 13i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::TlsAlertReceived(e) => { + let super::super::super::super::__with_name1::TlsAlertReceivedPayload { + alert_id: alert_id5, + alert_message: alert_message5, + } = e; + let (result6_0, result6_1) = match alert_id5 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + let (result8_0, result8_1, result8_2) = match alert_message5 { + Some(e) => { + let vec7 = e; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + (1i32, ptr7.cast_mut(), len7) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 14i32, + result6_0, + ::core::mem::MaybeUninit::new(i64::from(result6_1) as u64), + result8_0 as *mut u8, + result8_1, + result8_2, + 0i32, + ) + } + V38::HttpRequestDenied => { + ( + 15i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestLengthRequired => { + ( + 16i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestBodySize(e) => { + let (result9_0, result9_1) = match e { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + ( + 17i32, + result9_0, + ::core::mem::MaybeUninit::new(result9_1 as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestMethodInvalid => { + ( + 18i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestUriInvalid => { + ( + 19i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestUriTooLong => { + ( + 20i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestHeaderSectionSize(e) => { + let (result10_0, result10_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 21i32, + result10_0, + ::core::mem::MaybeUninit::new(i64::from(result10_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestHeaderSize(e) => { + let ( + result15_0, + result15_1, + result15_2, + result15_3, + result15_4, + result15_5, + ) = match e { + Some(e) => { + let super::super::super::super::__with_name1::FieldSizePayload { + field_name: field_name11, + field_size: field_size11, + } = e; + let (result13_0, result13_1, result13_2) = match field_name11 { + Some(e) => { + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + (1i32, ptr12.cast_mut(), len12) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result14_0, result14_1) = match field_size11 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 1i32, + result13_0, + result13_1, + result13_2, + result14_0, + result14_1, + ) + } + None => { + (0i32, 0i32, ::core::ptr::null_mut(), 0usize, 0i32, 0i32) + } + }; + ( + 22i32, + result15_0, + ::core::mem::MaybeUninit::new(i64::from(result15_1) as u64), + result15_2, + result15_3 as *mut u8, + result15_4 as usize, + result15_5, + ) + } + V38::HttpRequestTrailerSectionSize(e) => { + let (result16_0, result16_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 23i32, + result16_0, + ::core::mem::MaybeUninit::new(i64::from(result16_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpRequestTrailerSize(e) => { + let super::super::super::super::__with_name1::FieldSizePayload { + field_name: field_name17, + field_size: field_size17, + } = e; + let (result19_0, result19_1, result19_2) = match field_name17 { + Some(e) => { + let vec18 = e; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + (1i32, ptr18.cast_mut(), len18) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result20_0, result20_1) = match field_size17 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 24i32, + result19_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result19_1); + t + }, + result19_2 as *mut u8, + result20_0 as *mut u8, + result20_1 as usize, + 0i32, + ) + } + V38::HttpResponseIncomplete => { + ( + 25i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpResponseHeaderSectionSize(e) => { + let (result21_0, result21_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 26i32, + result21_0, + ::core::mem::MaybeUninit::new(i64::from(result21_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpResponseHeaderSize(e) => { + let super::super::super::super::__with_name1::FieldSizePayload { + field_name: field_name22, + field_size: field_size22, + } = e; + let (result24_0, result24_1, result24_2) = match field_name22 { + Some(e) => { + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + (1i32, ptr23.cast_mut(), len23) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result25_0, result25_1) = match field_size22 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 27i32, + result24_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result24_1); + t + }, + result24_2 as *mut u8, + result25_0 as *mut u8, + result25_1 as usize, + 0i32, + ) + } + V38::HttpResponseBodySize(e) => { + let (result26_0, result26_1) = match e { + Some(e) => (1i32, _rt::as_i64(e)), + None => (0i32, 0i64), + }; + ( + 28i32, + result26_0, + ::core::mem::MaybeUninit::new(result26_1 as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpResponseTrailerSectionSize(e) => { + let (result27_0, result27_1) = match e { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 29i32, + result27_0, + ::core::mem::MaybeUninit::new(i64::from(result27_1) as u64), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpResponseTrailerSize(e) => { + let super::super::super::super::__with_name1::FieldSizePayload { + field_name: field_name28, + field_size: field_size28, + } = e; + let (result30_0, result30_1, result30_2) = match field_name28 { + Some(e) => { + let vec29 = e; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + (1i32, ptr29.cast_mut(), len29) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let (result31_0, result31_1) = match field_size28 { + Some(e) => (1i32, _rt::as_i32(e)), + None => (0i32, 0i32), + }; + ( + 30i32, + result30_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result30_1); + t + }, + result30_2 as *mut u8, + result31_0 as *mut u8, + result31_1 as usize, + 0i32, + ) + } + V38::HttpResponseTransferCoding(e) => { + let (result33_0, result33_1, result33_2) = match e { + Some(e) => { + let vec32 = e; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + (1i32, ptr32.cast_mut(), len32) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 31i32, + result33_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result33_1); + t + }, + result33_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpResponseContentCoding(e) => { + let (result35_0, result35_1, result35_2) = match e { + Some(e) => { + let vec34 = e; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + (1i32, ptr34.cast_mut(), len34) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 32i32, + result35_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result35_1); + t + }, + result35_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpResponseTimeout => { + ( + 33i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpUpgradeFailed => { + ( + 34i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::HttpProtocolError => { + ( + 35i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::LoopDetected => { + ( + 36i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::ConfigurationError => { + ( + 37i32, + 0i32, + ::core::mem::MaybeUninit::::zeroed(), + ::core::ptr::null_mut(), + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + V38::InternalError(e) => { + let (result37_0, result37_1, result37_2) = match e { + Some(e) => { + let vec36 = e; + let ptr36 = vec36.as_ptr().cast::(); + let len36 = vec36.len(); + (1i32, ptr36.cast_mut(), len36) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + ( + 38i32, + result37_0, + { + let mut t = ::core::mem::MaybeUninit::::uninit(); + t.as_mut_ptr().cast::<*mut u8>().write(result37_1); + t + }, + result37_2 as *mut u8, + ::core::ptr::null_mut(), + 0usize, + 0i32, + ) + } + }; + ( + 1i32, + result39_0, + result39_1, + result39_2, + result39_3, + result39_4, + result39_5, + result39_6, + ) + } + }; + #[cfg(target_arch = "wasm32")] + #[link( + wasm_import_module = "[export]wasi:http/handler@0.3.0-rc-2026-03-15" + )] + unsafe extern "C" { + #[link_name = "[task-return]handle"] + fn wit_import41( + _: i32, + _: i32, + _: i32, + _: ::core::mem::MaybeUninit, + _: *mut u8, + _: *mut u8, + _: usize, + _: i32, + ); + } + #[cfg(not(target_arch = "wasm32"))] + unsafe extern "C" fn wit_import41( + _: i32, + _: i32, + _: i32, + _: ::core::mem::MaybeUninit, + _: *mut u8, + _: *mut u8, + _: usize, + _: i32, + ) { + unreachable!() + } + _task_cancel.forget(); + wit_import41( + result40_0, + result40_1, + result40_2, + result40_3, + result40_4, + result40_5, + result40_6, + result40_7, + ); + }) + } + } + #[doc(hidden)] + #[allow(non_snake_case)] + pub unsafe fn __callback_handle( + event0: u32, + event1: u32, + event2: u32, + ) -> u32 { + unsafe { + wit_bindgen::rt::async_support::callback(event0, event1, event2) + } + } + pub trait Guest { + /// This function may be called with either an incoming request read from the + /// network or a request synthesized or forwarded by another component. + #[allow(async_fn_in_trait)] + async fn handle(request: Request) -> Result; + } + #[doc(hidden)] + #[macro_export] + macro_rules! __export_wasi_http_handler_0_3_0_rc_2026_03_15_cabi { + ($ty:ident with_types_in $($path_to_types:tt)*) => { + const _ : () = { #[unsafe (export_name = + "[async-lift]wasi:http/handler@0.3.0-rc-2026-03-15#handle")] + unsafe extern "C" fn export_handle(arg0 : i32,) -> i32 { unsafe { + $($path_to_types)*:: _export_handle_cabi::<$ty > (arg0) } } + #[unsafe (export_name = + "[callback][async-lift]wasi:http/handler@0.3.0-rc-2026-03-15#handle")] + unsafe extern "C" fn _callback_handle(event0 : u32, event1 : u32, + event2 : u32) -> u32 { unsafe { $($path_to_types)*:: + __callback_handle(event0, event1, event2) } } }; + }; + } + #[doc(hidden)] + pub use __export_wasi_http_handler_0_3_0_rc_2026_03_15_cabi; + } + } + } +} +#[rustfmt::skip] +mod _rt { + #![allow(dead_code, unused_imports, clippy::all)] + #[cfg(target_arch = "wasm32")] + pub fn run_ctors_once() { + wit_bindgen::rt::run_ctors_once(); + } + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } +} +/// Generates `#[unsafe(no_mangle)]` functions to export the specified type as +/// the root implementation of all generated traits. +/// +/// For more information see the documentation of `wit_bindgen::generate!`. +/// +/// ```rust +/// # macro_rules! _export_middleware{ ($($t:tt)*) => (); } +/// # trait Guest {} +/// struct MyType; +/// +/// impl Guest for MyType { +/// // ... +/// } +/// +/// _export_middleware!(MyType); +/// ``` +#[allow(unused_macros)] +#[doc(hidden)] +#[macro_export] +macro_rules! __export_middleware_impl { + ($ty:ident) => { + $crate::_export_middleware!($ty with_types_in $crate); + }; + ($ty:ident with_types_in $($path_to_types_root:tt)*) => { + $($path_to_types_root)*:: + exports::wasi::http::handler::__export_wasi_http_handler_0_3_0_rc_2026_03_15_cabi!($ty + with_types_in $($path_to_types_root)*:: exports::wasi::http::handler); const _ : + () = { #[rustfmt::skip] #[cfg(target_arch = "wasm32")] #[unsafe (link_section = + "component-type:wit-bindgen:0.54.0:wasi:http@0.3.0-rc-2026-03-15:middleware:imports and exportsrust-wasip3-0.5.0+wasi-0.3.0-rc-2026-03-15-from-crates-io-middleware-world")] + #[doc(hidden)] #[allow(clippy::octal_escapes)] pub static + __WIT_BINDGEN_COMPONENT_TYPE : [u8; 5337] = * + b"\ +\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07\xd8(\x01A\x02\x01A!\x01\ +B\x02\x01w\x04\0\x08duration\x03\0\0\x03\0%wasi:clocks/types@0.3.0-rc-2026-03-15\ +\x05\0\x02\x03\0\0\x08duration\x01B\x84\x01\x02\x03\x02\x01\x01\x04\0\x08duratio\ +n\x03\0\0\x01q\x0a\x03get\0\0\x04head\0\0\x04post\0\0\x03put\0\0\x06delete\0\0\x07\ +connect\0\0\x07options\0\0\x05trace\0\0\x05patch\0\0\x05other\x01s\0\x04\0\x06me\ +thod\x03\0\x02\x01q\x03\x04HTTP\0\0\x05HTTPS\0\0\x05other\x01s\0\x04\0\x06scheme\ +\x03\0\x04\x01ks\x01k{\x01r\x02\x05rcode\x06\x09info-code\x07\x04\0\x11DNS-error\ +-payload\x03\0\x08\x01k}\x01r\x02\x08alert-id\x0a\x0dalert-message\x06\x04\0\x1a\ +TLS-alert-received-payload\x03\0\x0b\x01ky\x01r\x02\x0afield-name\x06\x0afield-s\ +ize\x0d\x04\0\x12field-size-payload\x03\0\x0e\x01kw\x01k\x0f\x01q'\x0bDNS-timeou\ +t\0\0\x09DNS-error\x01\x09\0\x15destination-not-found\0\0\x17destination-unavail\ +able\0\0\x19destination-IP-prohibited\0\0\x19destination-IP-unroutable\0\0\x12co\ +nnection-refused\0\0\x15connection-terminated\0\0\x12connection-timeout\0\0\x17c\ +onnection-read-timeout\0\0\x18connection-write-timeout\0\0\x18connection-limit-r\ +eached\0\0\x12TLS-protocol-error\0\0\x15TLS-certificate-error\0\0\x12TLS-alert-r\ +eceived\x01\x0c\0\x13HTTP-request-denied\0\0\x1cHTTP-request-length-required\0\0\ +\x16HTTP-request-body-size\x01\x10\0\x1bHTTP-request-method-invalid\0\0\x18HTTP-\ +request-URI-invalid\0\0\x19HTTP-request-URI-too-long\0\0\x20HTTP-request-header-\ +section-size\x01\x0d\0\x18HTTP-request-header-size\x01\x11\0!HTTP-request-traile\ +r-section-size\x01\x0d\0\x19HTTP-request-trailer-size\x01\x0f\0\x18HTTP-response\ +-incomplete\0\0!HTTP-response-header-section-size\x01\x0d\0\x19HTTP-response-hea\ +der-size\x01\x0f\0\x17HTTP-response-body-size\x01\x10\0\"HTTP-response-trailer-s\ +ection-size\x01\x0d\0\x1aHTTP-response-trailer-size\x01\x0f\0\x1dHTTP-response-t\ +ransfer-coding\x01\x06\0\x1cHTTP-response-content-coding\x01\x06\0\x15HTTP-respo\ +nse-timeout\0\0\x13HTTP-upgrade-failed\0\0\x13HTTP-protocol-error\0\0\x0dloop-de\ +tected\0\0\x13configuration-error\0\0\x0einternal-error\x01\x06\0\x04\0\x0aerror\ +-code\x03\0\x12\x01q\x05\x0einvalid-syntax\0\0\x09forbidden\0\0\x09immutable\0\0\ +\x0dsize-exceeded\0\0\x05other\x01\x06\0\x04\0\x0cheader-error\x03\0\x14\x01q\x03\ +\x0dnot-supported\0\0\x09immutable\0\0\x05other\x01\x06\0\x04\0\x15request-optio\ +ns-error\x03\0\x16\x01s\x04\0\x0afield-name\x03\0\x18\x01p}\x04\0\x0bfield-value\ +\x03\0\x1a\x04\0\x06fields\x03\x01\x04\0\x07headers\x03\0\x1c\x04\0\x08trailers\x03\ +\0\x1c\x04\0\x07request\x03\x01\x04\0\x0frequest-options\x03\x01\x01{\x04\0\x0bs\ +tatus-code\x03\0!\x04\0\x08response\x03\x01\x01i\x1c\x01@\0\0$\x04\0\x13[constru\ +ctor]fields\x01%\x01o\x02\x19\x1b\x01p&\x01j\x01$\x01\x15\x01@\x01\x07entries'\0\ +(\x04\0\x18[static]fields.from-list\x01)\x01h\x1c\x01p\x1b\x01@\x02\x04self*\x04\ +name\x19\0+\x04\0\x12[method]fields.get\x01,\x01@\x02\x04self*\x04name\x19\0\x7f\ +\x04\0\x12[method]fields.has\x01-\x01j\0\x01\x15\x01@\x03\x04self*\x04name\x19\x05\ +value+\0.\x04\0\x12[method]fields.set\x01/\x01@\x02\x04self*\x04name\x19\0.\x04\0\ +\x15[method]fields.delete\x010\x01j\x01+\x01\x15\x01@\x02\x04self*\x04name\x19\0\ +1\x04\0\x1d[method]fields.get-and-delete\x012\x01@\x03\x04self*\x04name\x19\x05v\ +alue\x1b\0.\x04\0\x15[method]fields.append\x013\x01@\x01\x04self*\0'\x04\0\x17[m\ +ethod]fields.copy-all\x014\x01@\x01\x04self*\0$\x04\0\x14[method]fields.clone\x01\ +5\x01i\x1d\x01f\x01}\x01k7\x01i\x1e\x01k9\x01j\x01:\x01\x13\x01e\x01;\x01i\x20\x01\ +k=\x01i\x1f\x01j\0\x01\x13\x01e\x01\xc0\0\x01o\x02?\xc1\0\x01@\x04\x07headers6\x08\ +contents8\x08trailers<\x07options>\0\xc2\0\x04\0\x13[static]request.new\x01C\x01\ +h\x1f\x01@\x01\x04self\xc4\0\0\x03\x04\0\x1a[method]request.get-method\x01E\x01j\ +\0\0\x01@\x02\x04self\xc4\0\x06method\x03\0\xc6\0\x04\0\x1a[method]request.set-m\ +ethod\x01G\x01@\x01\x04self\xc4\0\0\x06\x04\0#[method]request.get-path-with-quer\ +y\x01H\x01@\x02\x04self\xc4\0\x0fpath-with-query\x06\0\xc6\0\x04\0#[method]reque\ +st.set-path-with-query\x01I\x01k\x05\x01@\x01\x04self\xc4\0\0\xca\0\x04\0\x1a[me\ +thod]request.get-scheme\x01K\x01@\x02\x04self\xc4\0\x06scheme\xca\0\0\xc6\0\x04\0\ +\x1a[method]request.set-scheme\x01L\x04\0\x1d[method]request.get-authority\x01H\x01\ +@\x02\x04self\xc4\0\x09authority\x06\0\xc6\0\x04\0\x1d[method]request.set-author\ +ity\x01M\x01@\x01\x04self\xc4\0\0>\x04\0\x1b[method]request.get-options\x01N\x01\ +@\x01\x04self\xc4\0\06\x04\0\x1b[method]request.get-headers\x01O\x01o\x027<\x01@\ +\x02\x04this?\x03res\xc1\0\0\xd0\0\x04\0\x1c[static]request.consume-body\x01Q\x01\ +@\0\0=\x04\0\x1c[constructor]request-options\x01R\x01h\x20\x01k\x01\x01@\x01\x04\ +self\xd3\0\0\xd4\0\x04\0+[method]request-options.get-connect-timeout\x01U\x01j\0\ +\x01\x17\x01@\x02\x04self\xd3\0\x08duration\xd4\0\0\xd6\0\x04\0+[method]request-\ +options.set-connect-timeout\x01W\x04\0.[method]request-options.get-first-byte-ti\ +meout\x01U\x04\0.[method]request-options.set-first-byte-timeout\x01W\x04\01[meth\ +od]request-options.get-between-bytes-timeout\x01U\x04\01[method]request-options.\ +set-between-bytes-timeout\x01W\x01@\x01\x04self\xd3\0\0=\x04\0\x1d[method]reques\ +t-options.clone\x01X\x01i#\x01o\x02\xd9\0\xc1\0\x01@\x03\x07headers6\x08contents\ +8\x08trailers<\0\xda\0\x04\0\x14[static]response.new\x01[\x01h#\x01@\x01\x04self\ +\xdc\0\0\"\x04\0\x20[method]response.get-status-code\x01]\x01@\x02\x04self\xdc\0\ +\x0bstatus-code\"\0\xc6\0\x04\0\x20[method]response.set-status-code\x01^\x01@\x01\ +\x04self\xdc\0\06\x04\0\x1c[method]response.get-headers\x01_\x01@\x02\x04this\xd9\ +\0\x03res\xc1\0\0\xd0\0\x04\0\x1d[static]response.consume-body\x01`\x03\0#wasi:h\ +ttp/types@0.3.0-rc-2026-03-15\x05\x02\x02\x03\0\x01\x07request\x02\x03\0\x01\x08\ +response\x02\x03\0\x01\x0aerror-code\x01B\x0b\x02\x03\x02\x01\x03\x04\0\x07reque\ +st\x03\0\0\x02\x03\x02\x01\x04\x04\0\x08response\x03\0\x02\x02\x03\x02\x01\x05\x04\ +\0\x0aerror-code\x03\0\x04\x01i\x01\x01i\x03\x01j\x01\x07\x01\x05\x01C\x01\x07re\ +quest\x06\0\x08\x04\0\x06handle\x01\x09\x03\0%wasi:http/handler@0.3.0-rc-2026-03\ +-15\x05\x06\x01B\x02\x01m\x03\x02io\x15illegal-byte-sequence\x04pipe\x04\0\x0aer\ +ror-code\x03\0\0\x03\0\"wasi:cli/types@0.3.0-rc-2026-03-15\x05\x07\x02\x03\0\x03\ +\x0aerror-code\x01B\x07\x02\x03\x02\x01\x08\x04\0\x0aerror-code\x03\0\0\x01f\x01\ +}\x01j\0\x01\x01\x01e\x01\x03\x01@\x01\x04data\x02\0\x04\x04\0\x10write-via-stre\ +am\x01\x05\x03\0#wasi:cli/stdout@0.3.0-rc-2026-03-15\x05\x09\x01B\x07\x02\x03\x02\ +\x01\x08\x04\0\x0aerror-code\x03\0\0\x01f\x01}\x01j\0\x01\x01\x01e\x01\x03\x01@\x01\ +\x04data\x02\0\x04\x04\0\x10write-via-stream\x01\x05\x03\0#wasi:cli/stderr@0.3.0\ +-rc-2026-03-15\x05\x0a\x01B\x08\x02\x03\x02\x01\x08\x04\0\x0aerror-code\x03\0\0\x01\ +f\x01}\x01j\0\x01\x01\x01e\x01\x03\x01o\x02\x02\x04\x01@\0\0\x05\x04\0\x0fread-v\ +ia-stream\x01\x06\x03\0\"wasi:cli/stdin@0.3.0-rc-2026-03-15\x05\x0b\x01B\x0b\x02\ +\x03\x02\x01\x03\x04\0\x07request\x03\0\0\x02\x03\x02\x01\x04\x04\0\x08response\x03\ +\0\x02\x02\x03\x02\x01\x05\x04\0\x0aerror-code\x03\0\x04\x01i\x01\x01i\x03\x01j\x01\ +\x07\x01\x05\x01C\x01\x07request\x06\0\x08\x04\0\x04send\x01\x09\x03\0$wasi:http\ +/client@0.3.0-rc-2026-03-15\x05\x0c\x01B\x0c\x02\x03\x02\x01\x01\x04\0\x08durati\ +on\x03\0\0\x01w\x04\0\x04mark\x03\0\x02\x01@\0\0\x03\x04\0\x03now\x01\x04\x01@\0\ +\0\x01\x04\0\x0eget-resolution\x01\x05\x01C\x01\x04when\x03\x01\0\x04\0\x0await-\ +until\x01\x06\x01C\x01\x08how-long\x01\x01\0\x04\0\x08wait-for\x01\x07\x03\0/was\ +i:clocks/monotonic-clock@0.3.0-rc-2026-03-15\x05\x0d\x01B\x08\x02\x03\x02\x01\x01\ +\x04\0\x08duration\x03\0\0\x01r\x02\x07secondsx\x0bnanosecondsy\x04\0\x07instant\ +\x03\0\x02\x01@\0\0\x03\x04\0\x03now\x01\x04\x01@\0\0\x01\x04\0\x0eget-resolutio\ +n\x01\x05\x03\0,wasi:clocks/system-clock@0.3.0-rc-2026-03-15\x05\x0e\x01B\x05\x01\ +p}\x01@\x01\x07max-lenw\0\0\x04\0\x10get-random-bytes\x01\x01\x01@\0\0w\x04\0\x0e\ +get-random-u64\x01\x02\x03\0&wasi:random/random@0.3.0-rc-2026-03-15\x05\x0f\x01B\ +\x05\x01p}\x01@\x01\x07max-lenw\0\0\x04\0\x19get-insecure-random-bytes\x01\x01\x01\ +@\0\0w\x04\0\x17get-insecure-random-u64\x01\x02\x03\0(wasi:random/insecure@0.3.0\ +-rc-2026-03-15\x05\x10\x01B\x03\x01o\x02ww\x01@\0\0\0\x04\0\x11get-insecure-seed\ +\x01\x01\x03\0-wasi:random/insecure-seed@0.3.0-rc-2026-03-15\x05\x11\x01B\x0b\x02\ +\x03\x02\x01\x03\x04\0\x07request\x03\0\0\x02\x03\x02\x01\x04\x04\0\x08response\x03\ +\0\x02\x02\x03\x02\x01\x05\x04\0\x0aerror-code\x03\0\x04\x01i\x01\x01i\x03\x01j\x01\ +\x07\x01\x05\x01C\x01\x07request\x06\0\x08\x04\0\x06handle\x01\x09\x04\0%wasi:ht\ +tp/handler@0.3.0-rc-2026-03-15\x05\x12\x04\0(wasi:http/middleware@0.3.0-rc-2026-\ +03-15\x04\0\x0b\x10\x01\0\x0amiddleware\x03\0\0\0G\x09producers\x01\x0cprocessed\ +-by\x02\x0dwit-component\x070.245.1\x10wit-bindgen-rust\x060.54.0"; + }; + }; +} +#[doc(inline)] +pub use __export_middleware_impl as _export_middleware; +#[rustfmt::skip] +#[cfg(target_arch = "wasm32")] +#[unsafe( + link_section = "component-type:wit-bindgen:0.54.0:wasi:http@0.3.0-rc-2026-03-15:middleware-with-all-of-its-exports-removed:encoded worldrust-wasip3-0.5.0+wasi-0.3.0-rc-2026-03-15-from-crates-io-middleware-world" +)] +#[doc(hidden)] +#[allow(clippy::octal_escapes)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 5261] = *b"\ +\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07\xec'\x01A\x02\x01A\x1f\ +\x01B\x02\x01w\x04\0\x08duration\x03\0\0\x03\0%wasi:clocks/types@0.3.0-rc-2026-0\ +3-15\x05\0\x02\x03\0\0\x08duration\x01B\x84\x01\x02\x03\x02\x01\x01\x04\0\x08dur\ +ation\x03\0\0\x01q\x0a\x03get\0\0\x04head\0\0\x04post\0\0\x03put\0\0\x06delete\0\ +\0\x07connect\0\0\x07options\0\0\x05trace\0\0\x05patch\0\0\x05other\x01s\0\x04\0\ +\x06method\x03\0\x02\x01q\x03\x04HTTP\0\0\x05HTTPS\0\0\x05other\x01s\0\x04\0\x06\ +scheme\x03\0\x04\x01ks\x01k{\x01r\x02\x05rcode\x06\x09info-code\x07\x04\0\x11DNS\ +-error-payload\x03\0\x08\x01k}\x01r\x02\x08alert-id\x0a\x0dalert-message\x06\x04\ +\0\x1aTLS-alert-received-payload\x03\0\x0b\x01ky\x01r\x02\x0afield-name\x06\x0af\ +ield-size\x0d\x04\0\x12field-size-payload\x03\0\x0e\x01kw\x01k\x0f\x01q'\x0bDNS-\ +timeout\0\0\x09DNS-error\x01\x09\0\x15destination-not-found\0\0\x17destination-u\ +navailable\0\0\x19destination-IP-prohibited\0\0\x19destination-IP-unroutable\0\0\ +\x12connection-refused\0\0\x15connection-terminated\0\0\x12connection-timeout\0\0\ +\x17connection-read-timeout\0\0\x18connection-write-timeout\0\0\x18connection-li\ +mit-reached\0\0\x12TLS-protocol-error\0\0\x15TLS-certificate-error\0\0\x12TLS-al\ +ert-received\x01\x0c\0\x13HTTP-request-denied\0\0\x1cHTTP-request-length-require\ +d\0\0\x16HTTP-request-body-size\x01\x10\0\x1bHTTP-request-method-invalid\0\0\x18\ +HTTP-request-URI-invalid\0\0\x19HTTP-request-URI-too-long\0\0\x20HTTP-request-he\ +ader-section-size\x01\x0d\0\x18HTTP-request-header-size\x01\x11\0!HTTP-request-t\ +railer-section-size\x01\x0d\0\x19HTTP-request-trailer-size\x01\x0f\0\x18HTTP-res\ +ponse-incomplete\0\0!HTTP-response-header-section-size\x01\x0d\0\x19HTTP-respons\ +e-header-size\x01\x0f\0\x17HTTP-response-body-size\x01\x10\0\"HTTP-response-trai\ +ler-section-size\x01\x0d\0\x1aHTTP-response-trailer-size\x01\x0f\0\x1dHTTP-respo\ +nse-transfer-coding\x01\x06\0\x1cHTTP-response-content-coding\x01\x06\0\x15HTTP-\ +response-timeout\0\0\x13HTTP-upgrade-failed\0\0\x13HTTP-protocol-error\0\0\x0dlo\ +op-detected\0\0\x13configuration-error\0\0\x0einternal-error\x01\x06\0\x04\0\x0a\ +error-code\x03\0\x12\x01q\x05\x0einvalid-syntax\0\0\x09forbidden\0\0\x09immutabl\ +e\0\0\x0dsize-exceeded\0\0\x05other\x01\x06\0\x04\0\x0cheader-error\x03\0\x14\x01\ +q\x03\x0dnot-supported\0\0\x09immutable\0\0\x05other\x01\x06\0\x04\0\x15request-\ +options-error\x03\0\x16\x01s\x04\0\x0afield-name\x03\0\x18\x01p}\x04\0\x0bfield-\ +value\x03\0\x1a\x04\0\x06fields\x03\x01\x04\0\x07headers\x03\0\x1c\x04\0\x08trai\ +lers\x03\0\x1c\x04\0\x07request\x03\x01\x04\0\x0frequest-options\x03\x01\x01{\x04\ +\0\x0bstatus-code\x03\0!\x04\0\x08response\x03\x01\x01i\x1c\x01@\0\0$\x04\0\x13[\ +constructor]fields\x01%\x01o\x02\x19\x1b\x01p&\x01j\x01$\x01\x15\x01@\x01\x07ent\ +ries'\0(\x04\0\x18[static]fields.from-list\x01)\x01h\x1c\x01p\x1b\x01@\x02\x04se\ +lf*\x04name\x19\0+\x04\0\x12[method]fields.get\x01,\x01@\x02\x04self*\x04name\x19\ +\0\x7f\x04\0\x12[method]fields.has\x01-\x01j\0\x01\x15\x01@\x03\x04self*\x04name\ +\x19\x05value+\0.\x04\0\x12[method]fields.set\x01/\x01@\x02\x04self*\x04name\x19\ +\0.\x04\0\x15[method]fields.delete\x010\x01j\x01+\x01\x15\x01@\x02\x04self*\x04n\ +ame\x19\01\x04\0\x1d[method]fields.get-and-delete\x012\x01@\x03\x04self*\x04name\ +\x19\x05value\x1b\0.\x04\0\x15[method]fields.append\x013\x01@\x01\x04self*\0'\x04\ +\0\x17[method]fields.copy-all\x014\x01@\x01\x04self*\0$\x04\0\x14[method]fields.\ +clone\x015\x01i\x1d\x01f\x01}\x01k7\x01i\x1e\x01k9\x01j\x01:\x01\x13\x01e\x01;\x01\ +i\x20\x01k=\x01i\x1f\x01j\0\x01\x13\x01e\x01\xc0\0\x01o\x02?\xc1\0\x01@\x04\x07h\ +eaders6\x08contents8\x08trailers<\x07options>\0\xc2\0\x04\0\x13[static]request.n\ +ew\x01C\x01h\x1f\x01@\x01\x04self\xc4\0\0\x03\x04\0\x1a[method]request.get-metho\ +d\x01E\x01j\0\0\x01@\x02\x04self\xc4\0\x06method\x03\0\xc6\0\x04\0\x1a[method]re\ +quest.set-method\x01G\x01@\x01\x04self\xc4\0\0\x06\x04\0#[method]request.get-pat\ +h-with-query\x01H\x01@\x02\x04self\xc4\0\x0fpath-with-query\x06\0\xc6\0\x04\0#[m\ +ethod]request.set-path-with-query\x01I\x01k\x05\x01@\x01\x04self\xc4\0\0\xca\0\x04\ +\0\x1a[method]request.get-scheme\x01K\x01@\x02\x04self\xc4\0\x06scheme\xca\0\0\xc6\ +\0\x04\0\x1a[method]request.set-scheme\x01L\x04\0\x1d[method]request.get-authori\ +ty\x01H\x01@\x02\x04self\xc4\0\x09authority\x06\0\xc6\0\x04\0\x1d[method]request\ +.set-authority\x01M\x01@\x01\x04self\xc4\0\0>\x04\0\x1b[method]request.get-optio\ +ns\x01N\x01@\x01\x04self\xc4\0\06\x04\0\x1b[method]request.get-headers\x01O\x01o\ +\x027<\x01@\x02\x04this?\x03res\xc1\0\0\xd0\0\x04\0\x1c[static]request.consume-b\ +ody\x01Q\x01@\0\0=\x04\0\x1c[constructor]request-options\x01R\x01h\x20\x01k\x01\x01\ +@\x01\x04self\xd3\0\0\xd4\0\x04\0+[method]request-options.get-connect-timeout\x01\ +U\x01j\0\x01\x17\x01@\x02\x04self\xd3\0\x08duration\xd4\0\0\xd6\0\x04\0+[method]\ +request-options.set-connect-timeout\x01W\x04\0.[method]request-options.get-first\ +-byte-timeout\x01U\x04\0.[method]request-options.set-first-byte-timeout\x01W\x04\ +\01[method]request-options.get-between-bytes-timeout\x01U\x04\01[method]request-\ +options.set-between-bytes-timeout\x01W\x01@\x01\x04self\xd3\0\0=\x04\0\x1d[metho\ +d]request-options.clone\x01X\x01i#\x01o\x02\xd9\0\xc1\0\x01@\x03\x07headers6\x08\ +contents8\x08trailers<\0\xda\0\x04\0\x14[static]response.new\x01[\x01h#\x01@\x01\ +\x04self\xdc\0\0\"\x04\0\x20[method]response.get-status-code\x01]\x01@\x02\x04se\ +lf\xdc\0\x0bstatus-code\"\0\xc6\0\x04\0\x20[method]response.set-status-code\x01^\ +\x01@\x01\x04self\xdc\0\06\x04\0\x1c[method]response.get-headers\x01_\x01@\x02\x04\ +this\xd9\0\x03res\xc1\0\0\xd0\0\x04\0\x1d[static]response.consume-body\x01`\x03\0\ +#wasi:http/types@0.3.0-rc-2026-03-15\x05\x02\x02\x03\0\x01\x07request\x02\x03\0\x01\ +\x08response\x02\x03\0\x01\x0aerror-code\x01B\x0b\x02\x03\x02\x01\x03\x04\0\x07r\ +equest\x03\0\0\x02\x03\x02\x01\x04\x04\0\x08response\x03\0\x02\x02\x03\x02\x01\x05\ +\x04\0\x0aerror-code\x03\0\x04\x01i\x01\x01i\x03\x01j\x01\x07\x01\x05\x01C\x01\x07\ +request\x06\0\x08\x04\0\x06handle\x01\x09\x03\0%wasi:http/handler@0.3.0-rc-2026-\ +03-15\x05\x06\x01B\x02\x01m\x03\x02io\x15illegal-byte-sequence\x04pipe\x04\0\x0a\ +error-code\x03\0\0\x03\0\"wasi:cli/types@0.3.0-rc-2026-03-15\x05\x07\x02\x03\0\x03\ +\x0aerror-code\x01B\x07\x02\x03\x02\x01\x08\x04\0\x0aerror-code\x03\0\0\x01f\x01\ +}\x01j\0\x01\x01\x01e\x01\x03\x01@\x01\x04data\x02\0\x04\x04\0\x10write-via-stre\ +am\x01\x05\x03\0#wasi:cli/stdout@0.3.0-rc-2026-03-15\x05\x09\x01B\x07\x02\x03\x02\ +\x01\x08\x04\0\x0aerror-code\x03\0\0\x01f\x01}\x01j\0\x01\x01\x01e\x01\x03\x01@\x01\ +\x04data\x02\0\x04\x04\0\x10write-via-stream\x01\x05\x03\0#wasi:cli/stderr@0.3.0\ +-rc-2026-03-15\x05\x0a\x01B\x08\x02\x03\x02\x01\x08\x04\0\x0aerror-code\x03\0\0\x01\ +f\x01}\x01j\0\x01\x01\x01e\x01\x03\x01o\x02\x02\x04\x01@\0\0\x05\x04\0\x0fread-v\ +ia-stream\x01\x06\x03\0\"wasi:cli/stdin@0.3.0-rc-2026-03-15\x05\x0b\x01B\x0b\x02\ +\x03\x02\x01\x03\x04\0\x07request\x03\0\0\x02\x03\x02\x01\x04\x04\0\x08response\x03\ +\0\x02\x02\x03\x02\x01\x05\x04\0\x0aerror-code\x03\0\x04\x01i\x01\x01i\x03\x01j\x01\ +\x07\x01\x05\x01C\x01\x07request\x06\0\x08\x04\0\x04send\x01\x09\x03\0$wasi:http\ +/client@0.3.0-rc-2026-03-15\x05\x0c\x01B\x0c\x02\x03\x02\x01\x01\x04\0\x08durati\ +on\x03\0\0\x01w\x04\0\x04mark\x03\0\x02\x01@\0\0\x03\x04\0\x03now\x01\x04\x01@\0\ +\0\x01\x04\0\x0eget-resolution\x01\x05\x01C\x01\x04when\x03\x01\0\x04\0\x0await-\ +until\x01\x06\x01C\x01\x08how-long\x01\x01\0\x04\0\x08wait-for\x01\x07\x03\0/was\ +i:clocks/monotonic-clock@0.3.0-rc-2026-03-15\x05\x0d\x01B\x08\x02\x03\x02\x01\x01\ +\x04\0\x08duration\x03\0\0\x01r\x02\x07secondsx\x0bnanosecondsy\x04\0\x07instant\ +\x03\0\x02\x01@\0\0\x03\x04\0\x03now\x01\x04\x01@\0\0\x01\x04\0\x0eget-resolutio\ +n\x01\x05\x03\0,wasi:clocks/system-clock@0.3.0-rc-2026-03-15\x05\x0e\x01B\x05\x01\ +p}\x01@\x01\x07max-lenw\0\0\x04\0\x10get-random-bytes\x01\x01\x01@\0\0w\x04\0\x0e\ +get-random-u64\x01\x02\x03\0&wasi:random/random@0.3.0-rc-2026-03-15\x05\x0f\x01B\ +\x05\x01p}\x01@\x01\x07max-lenw\0\0\x04\0\x19get-insecure-random-bytes\x01\x01\x01\ +@\0\0w\x04\0\x17get-insecure-random-u64\x01\x02\x03\0(wasi:random/insecure@0.3.0\ +-rc-2026-03-15\x05\x10\x01B\x03\x01o\x02ww\x01@\0\0\0\x04\0\x11get-insecure-seed\ +\x01\x01\x03\0-wasi:random/insecure-seed@0.3.0-rc-2026-03-15\x05\x11\x04\0Hwasi:\ +http/middleware-with-all-of-its-exports-removed@0.3.0-rc-2026-03-15\x04\0\x0b0\x01\ +\0*middleware-with-all-of-its-exports-removed\x03\0\0\0G\x09producers\x01\x0cpro\ +cessed-by\x02\x0dwit-component\x070.245.1\x10wit-bindgen-rust\x060.54.0"; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +}