diff --git a/CHANGELOG.md b/CHANGELOG.md index 01c2ac1..717c547 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,130 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## `postgresql_embedded` - [0.18.7](https://github.com/theseus-rs/postgresql-embedded/compare/v0.18.6...v0.18.7) - 2025-06-20 + +### Fixed +- set CREATE_NO_WINDOW creation flag on Windows + +### Other +- update Cargo.toml dependencies + +## `postgresql_commands` - [0.18.7](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_commands-v0.18.6...postgresql_commands-v0.18.7) - 2025-06-20 + +### Fixed +- set CREATE_NO_WINDOW creation flag on Windows + +## `postgresql_archive` - [0.18.7](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_archive-v0.18.6...postgresql_archive-v0.18.7) - 2025-06-20 + +### Other +- update Cargo.toml dependencies + +## `postgresql_extensions` - [0.18.6](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_extensions-v0.18.5...postgresql_extensions-v0.18.6) - 2025-06-17 + +### Added + +- add extractor feature flags + +### Other + +- correct lint errors + +## `postgresql_embedded` - [0.18.6](https://github.com/theseus-rs/postgresql-embedded/compare/v0.18.5...v0.18.6) - 2025-06-17 + +### Added + +- add extractor feature flags + +### Other + +- make liblzma an optional dependency +- add documentation for bundled feature flag +- correct lint errors + +## `postgresql_archive` - [0.18.6](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_archive-v0.18.5...postgresql_archive-v0.18.6) - 2025-06-17 + +### Added + +- add extractor feature flags + +### Other + +- make liblzma an optional dependency +- correct lint errors + +## `postgresql_extensions` - [0.18.5](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_extensions-v0.18.4...postgresql_extensions-v0.18.5) - 2025-05-28 + +### Other +- update Cargo.toml dependencies + +## `postgresql_embedded` - [0.18.5](https://github.com/theseus-rs/postgresql-embedded/compare/v0.18.4...v0.18.5) - 2025-05-28 + +### Fixed +- correct theseus build bundle +- revert SupportFn type change +- custom release url not working and compilation failure + +### Other +- Merge branch 'main' into main +- update to criterion=0.6.0, pgvector=0.4.1, reqwest=0.12.18, sqlx=0.8.6, tokio=1.45.1, zip=4.0.0 +- minor syntax change +- update Cargo.toml dependencies + +## `postgresql_commands` - [0.18.5](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_commands-v0.18.4...postgresql_commands-v0.18.5) - 2025-05-28 + +### Other +- update Cargo.toml dependencies + +## `postgresql_archive` - [0.18.5](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_archive-v0.18.4...postgresql_archive-v0.18.5) - 2025-05-28 + +### Fixed +- correct theseus build bundle +- revert SupportFn type change +- custom release url not working and compilation failure + +### Other +- update to criterion=0.6.0, pgvector=0.4.1, reqwest=0.12.18, sqlx=0.8.6, tokio=1.45.1, zip=4.0.0 +- minor syntax change + +## `postgresql_extensions` - [0.18.4](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_extensions-v0.18.3...postgresql_extensions-v0.18.4) - 2025-05-15 + +### Other +- update Cargo.toml dependencies + +## `postgresql_embedded` - [0.18.4](https://github.com/theseus-rs/postgresql-embedded/compare/v0.18.3...v0.18.4) - 2025-05-15 + +### Other +- update to Rust 1.87.0 +- update dependencies +- update Cargo.toml dependencies + +## `postgresql_commands` - [0.18.4](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_commands-v0.18.3...postgresql_commands-v0.18.4) - 2025-05-15 + +### Other +- update to Rust 1.87.0 + +## `postgresql_archive` - [0.18.4](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_archive-v0.18.3...postgresql_archive-v0.18.4) - 2025-05-15 + +### Other +- update to Rust 1.87.0 +- update dependencies + +## `postgresql_extensions` - [0.18.3](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_extensions-v0.18.2...postgresql_extensions-v0.18.3) - 2025-04-03 + +### Other +- update to Rust 1.86.0 + +## `postgresql_embedded` - [0.18.3](https://github.com/theseus-rs/postgresql-embedded/compare/v0.18.2...v0.18.3) - 2025-04-03 + +### Other +- update Cargo.toml dependencies +- update to Rust 1.86.0 + +## `postgresql_archive` - [0.18.3](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_archive-v0.18.2...postgresql_archive-v0.18.3) - 2025-04-03 + +### Other +- update Cargo.toml dependencies + ## `postgresql_extensions` - [0.18.2](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_extensions-v0.18.1...postgresql_extensions-v0.18.2) - 2025-03-21 ### Other diff --git a/Cargo.lock b/Cargo.lock index 9fb79a0..979e68b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -40,9 +40,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -55,44 +55,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", - "once_cell", + "once_cell_polyfill", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.97" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "arbitrary" @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "archive_async" -version = "0.18.2" +version = "0.18.7" dependencies = [ "postgresql_archive", "tempfile", @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "archive_sync" -version = "0.18.2" +version = "0.18.7" dependencies = [ "postgresql_archive", "tempfile", @@ -148,15 +148,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ "axum-core", "bytes", @@ -188,12 +188,12 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "http-body-util", @@ -208,7 +208,7 @@ dependencies = [ [[package]] name = "axum_embedded" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "axum", @@ -222,9 +222,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -249,9 +249,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "block-buffer" @@ -264,9 +264,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" [[package]] name = "byteorder" @@ -288,9 +288,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.16" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ "jobserver", "libc", @@ -299,9 +299,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -338,18 +338,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.32" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.32" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" dependencies = [ "anstyle", "clap_lex", @@ -357,15 +357,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "concurrent-queue" @@ -385,7 +385,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "windows-sys 0.59.0", ] @@ -401,9 +401,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -426,9 +426,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -450,25 +450,22 @@ dependencies = [ [[package]] name = "criterion" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +checksum = "3bf7af66b0989381bd0be551bd7cc91912a655a58c6918420c9527b1fd8b4679" dependencies = [ "anes", "cast", "ciborium", "clap", "criterion-plot", - "is-terminal", - "itertools", + "itertools 0.13.0", "num-traits", - "once_cell", "oorandom", "plotters", "rayon", "regex", "serde", - "serde_derive", "serde_json", "tinytemplate", "walkdir", @@ -481,7 +478,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] @@ -536,9 +533,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -546,9 +543,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", @@ -560,9 +557,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", @@ -582,11 +579,11 @@ dependencies = [ [[package]] name = "diesel" -version = "2.2.8" +version = "2.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "470eb10efc8646313634c99bb1593f402a6434cbd86e266770c6e39219adb86a" +checksum = "a917a9209950404d5be011c81d081a2692a822f73c3d6af586f0cab5ff50f614" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "byteorder", "diesel_derives", "itoa", @@ -596,9 +593,9 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.2.4" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93958254b70bea63b4187ff73d10180599d9d8d177071b7f91e6da4e0c0ad55" +checksum = "52841e97814f407b895d836fa0012091dff79c6268f39ad8155d384c21ae0d26" dependencies = [ "diesel_table_macro_syntax", "dsl_auto_type", @@ -609,7 +606,7 @@ dependencies = [ [[package]] name = "diesel_embedded" -version = "0.18.2" +version = "0.18.7" dependencies = [ "diesel", "diesel_migrations", @@ -668,7 +665,7 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "download_progress_bar" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "indicatif", @@ -705,7 +702,7 @@ dependencies = [ [[package]] name = "embedded_async" -version = "0.18.2" +version = "0.18.7" dependencies = [ "postgresql_embedded", "tokio", @@ -713,7 +710,7 @@ dependencies = [ [[package]] name = "embedded_sync" -version = "0.18.2" +version = "0.18.7" dependencies = [ "postgresql_embedded", ] @@ -735,9 +732,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.7" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3716d7a920fb4fac5d84e9d4bce8ceb321e9414b4409da61b07b75c1e3d0697" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", @@ -753,12 +750,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -809,11 +806,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] @@ -903,7 +901,7 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.3", + "parking_lot 0.12.4", ] [[package]] @@ -965,22 +963,22 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", @@ -998,9 +996,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "half" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7db2ff139bba50379da6aa0766b52fdcb62cb5b263009b09ed58ba604e14bbd1" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", @@ -1008,9 +1006,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", @@ -1032,12 +1030,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" - [[package]] name = "hex" version = "0.4.3" @@ -1139,11 +1131,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", @@ -1173,16 +1164,21 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -1192,21 +1188,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -1215,31 +1212,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -1247,67 +1224,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -1327,9 +1291,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -1337,9 +1301,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", "hashbrown", @@ -1354,7 +1318,7 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "vt100", "web-time", ] @@ -1384,14 +1348,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] -name = "is-terminal" -version = "0.4.16" +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.59.0", + "memchr", + "serde", ] [[package]] @@ -1409,6 +1372,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" @@ -1417,10 +1389,11 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.3", "libc", ] @@ -1442,24 +1415,24 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "liblzma" -version = "0.3.6" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a631d2b24be269775ba8f7789a6afa1ac228346a20c9e87dbbbe4975a79fd764" +checksum = "0791ab7e08ccc8e0ce893f6906eb2703ed8739d8e89b57c0714e71bad09024c8" dependencies = [ "liblzma-sys", ] [[package]] name = "liblzma-sys" -version = "0.3.13" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efdadf1a99aceff34553de1461674ab6ac7e7f0843ae9875e339f4a14eb43475" +checksum = "01b9596486f6d60c3bbe644c0e1be1aa6ccc472ad630fe8927b456973d7cb736" dependencies = [ "cc", "libc", @@ -1472,44 +1445,53 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "libc", - "redox_syscall 0.5.10", + "redox_syscall 0.5.13", +] + +[[package]] +name = "libz-rs-sys" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" +dependencies = [ + "zlib-rs", ] [[package]] name = "linux-raw-sys" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", ] [[package]] -name = "lockfree-object-pool" -version = "0.1.6" +name = "log" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] -name = "log" -version = "0.4.26" +name = "lru-slab" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "matchers" @@ -1538,9 +1520,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "migrations_internals" @@ -1571,22 +1553,22 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -1652,9 +1634,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.1" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "oorandom" @@ -1664,11 +1652,11 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "openssl" -version = "0.10.71" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "foreign-types", "libc", @@ -1696,9 +1684,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.106" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -1731,12 +1719,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.11", ] [[package]] @@ -1755,13 +1743,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.10", + "redox_syscall 0.5.13", "smallvec", "windows-targets 0.52.6", ] @@ -1774,9 +1762,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pgvector" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e8871b6d7ca78348c6cd29b911b94851f3429f0cd403130ca17f26c1fb91a6" +checksum = "fc58e2d255979a31caa7cabfa7aac654af0354220719ab7a68520ae7a91e8c0b" dependencies = [ "sqlx", ] @@ -1847,13 +1835,13 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portal_corp_extension" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "indoc", @@ -1893,7 +1881,7 @@ dependencies = [ "hmac", "md-5", "memchr", - "rand 0.9.0", + "rand 0.9.1", "sha2", "stringprep", ] @@ -1911,7 +1899,7 @@ dependencies = [ [[package]] name = "postgres_embedded" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "postgres", @@ -1920,7 +1908,7 @@ dependencies = [ [[package]] name = "postgresql_archive" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "async-trait", @@ -1956,7 +1944,7 @@ dependencies = [ [[package]] name = "postgresql_commands" -version = "0.18.2" +version = "0.18.7" dependencies = [ "test-log", "thiserror 2.0.12", @@ -1966,13 +1954,13 @@ dependencies = [ [[package]] name = "postgresql_embedded" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "criterion", "postgresql_archive", "postgresql_commands", - "rand 0.9.0", + "rand 0.9.1", "semver", "sqlx", "target-triple", @@ -1986,7 +1974,7 @@ dependencies = [ [[package]] name = "postgresql_extensions" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "async-trait", @@ -2007,6 +1995,15 @@ dependencies = [ "url", ] +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2018,9 +2015,9 @@ dependencies = [ [[package]] name = "pq-sys" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b51d65ebe1cb1f40641b15abae017fed35ccdda46e3dab1ff8768f625a3222" +checksum = "dfd6cf44cca8f9624bc19df234fc4112873432f5fda1caff174527846d026fa9" dependencies = [ "libc", "vcpkg", @@ -2028,18 +2025,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.37.2" +version = "0.37.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" dependencies = [ "memchr", "serde", @@ -2047,9 +2044,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.7" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", "cfg_aliases", @@ -2067,13 +2064,14 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.10" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "getrandom 0.3.2", - "rand 0.9.0", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", "ring", "rustc-hash", "rustls", @@ -2087,9 +2085,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.10" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases", "libc", @@ -2110,9 +2108,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "r2d2" @@ -2121,7 +2119,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" dependencies = [ "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "scheduled-thread-pool", ] @@ -2148,13 +2146,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy", ] [[package]] @@ -2183,7 +2180,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -2192,7 +2189,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", ] [[package]] @@ -2226,11 +2223,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.10" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] [[package]] @@ -2285,9 +2282,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.15" +version = "0.12.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" dependencies = [ "base64", "bytes", @@ -2300,18 +2297,14 @@ dependencies = [ "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", "rustls-native-certs", - "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", @@ -2322,20 +2315,20 @@ dependencies = [ "tokio-rustls", "tokio-util", "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "windows-registry", ] [[package]] name = "reqwest-middleware" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e8975513bd9a7a43aad01030e79b3498e05db14e9d945df6483e8cf9b8c4c4" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" dependencies = [ "anyhow", "async-trait", @@ -2355,7 +2348,7 @@ dependencies = [ "anyhow", "async-trait", "futures", - "getrandom 0.2.15", + "getrandom 0.2.16", "http", "hyper", "parking_lot 0.11.2", @@ -2370,13 +2363,13 @@ dependencies = [ [[package]] name = "reqwest-tracing" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c88a8d9cfe3319b5adc10f3ffc3db75c7346837a1f857f8269f6361f3b2744" +checksum = "d70ea85f131b2ee9874f0b160ac5976f8af75f3c9badfe0d955880257d10bd83" dependencies = [ "anyhow", "async-trait", - "getrandom 0.2.15", + "getrandom 0.2.16", "http", "matchit", "reqwest", @@ -2401,7 +2394,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -2409,9 +2402,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -2421,11 +2414,11 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" -version = "1.0.3" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys", @@ -2434,9 +2427,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.25" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "once_cell", "ring", @@ -2458,29 +2451,21 @@ dependencies = [ "security-framework 3.2.0", ] -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", + "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.103.0" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa4eeac2588ffff23e9d7a7e9b3f971c5fb5b7ebc9452745e0c232c64f83b2f" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ "ring", "rustls-pki-types", @@ -2489,9 +2474,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" @@ -2523,7 +2508,7 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" dependencies = [ - "parking_lot 0.12.3", + "parking_lot 0.12.4", ] [[package]] @@ -2538,7 +2523,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -2551,8 +2536,8 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.9.0", - "core-foundation 0.10.0", + "bitflags 2.9.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -2621,9 +2606,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -2653,9 +2638,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -2679,9 +2664,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -2700,27 +2685,24 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.14.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2728,9 +2710,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" dependencies = [ "sqlx-core", "sqlx-macros", @@ -2739,10 +2721,11 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ + "base64", "bytes", "crc", "crossbeam-queue", @@ -2761,7 +2744,6 @@ dependencies = [ "once_cell", "percent-encoding", "rustls", - "rustls-pemfile", "serde", "serde_json", "sha2", @@ -2771,14 +2753,14 @@ dependencies = [ "tokio-stream", "tracing", "url", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] name = "sqlx-macros" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ "proc-macro2", "quote", @@ -2789,9 +2771,9 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", @@ -2806,20 +2788,19 @@ dependencies = [ "sqlx-core", "sqlx-postgres", "syn", - "tempfile", "tokio", "url", ] [[package]] name = "sqlx-postgres" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64", - "bitflags 2.9.0", + "bitflags 2.9.1", "byteorder", "crc", "dotenvy", @@ -2850,7 +2831,7 @@ dependencies = [ [[package]] name = "sqlx_embedded" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "postgresql_embedded", @@ -2889,9 +2870,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.100" +version = "2.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" dependencies = [ "proc-macro2", "quote", @@ -2909,9 +2890,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -2937,12 +2918,12 @@ checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" [[package]] name = "tempfile" -version = "3.19.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.3.3", "once_cell", "rustix", "windows-sys 0.59.0", @@ -2950,7 +2931,7 @@ dependencies = [ [[package]] name = "tensor_chord_extension" -version = "0.18.2" +version = "0.18.7" dependencies = [ "anyhow", "indoc", @@ -3026,19 +3007,18 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -3071,15 +3051,15 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.1" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", "libc", "mio", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project-lite", "signal-hook-registry", "socket2", @@ -3121,13 +3101,13 @@ dependencies = [ "futures-channel", "futures-util", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "percent-encoding", "phf", "pin-project-lite", "postgres-protocol", "postgres-types", - "rand 0.9.0", + "rand 0.9.1", "socket2", "tokio", "tokio-util", @@ -3157,9 +3137,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -3170,9 +3150,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", @@ -3182,26 +3162,33 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tower" version = "0.5.2" @@ -3218,6 +3205,24 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -3244,9 +3249,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", @@ -3255,9 +3260,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -3351,9 +3356,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "untrusted" @@ -3372,12 +3377,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -3462,9 +3461,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -3602,20 +3601,29 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.8" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.1", +] + +[[package]] +name = "webpki-roots" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] [[package]] name = "whoami" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" dependencies = [ - "redox_syscall 0.5.10", + "redox_syscall 0.5.13", "wasite", "web-sys", ] @@ -3651,41 +3659,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-link" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" - -[[package]] -name = "windows-registry" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" -dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.53.0", -] - -[[package]] -name = "windows-result" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -3713,6 +3686,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -3746,9 +3728,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" dependencies = [ "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", @@ -3900,9 +3882,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.4" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -3913,20 +3895,14 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xattr" @@ -3940,9 +3916,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -3952,9 +3928,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", @@ -3964,18 +3940,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.23" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.23" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", @@ -4009,11 +3985,22 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -4022,9 +4009,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", @@ -4033,24 +4020,27 @@ dependencies = [ [[package]] name = "zip" -version = "2.4.2" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +checksum = "af7dcdb4229c0e79c2531a24de7726a0e980417a74fb4d030a35f535665439a0" dependencies = [ "arbitrary", "crc32fast", - "crossbeam-utils", - "displaydoc", "flate2", "indexmap", "memchr", - "thiserror 2.0.12", "zopfli", ] +[[package]] +name = "zlib-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" + [[package]] name = "zonky" -version = "0.18.2" +version = "0.18.7" dependencies = [ "postgresql_archive", "postgresql_embedded", @@ -4059,14 +4049,12 @@ dependencies = [ [[package]] name = "zopfli" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", - "lockfree-object-pool", "log", - "once_cell", "simd-adler32", ] diff --git a/Cargo.toml b/Cargo.toml index 50e8fea..475f4a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ members = [ "postgresql_embedded", "postgresql_extensions", ] -resolver = "2" +resolver = "3" [workspace.package] authors = ["Brian Heineman "] @@ -21,51 +21,51 @@ edition = "2024" keywords = ["postgresql", "postgres", "embedded", "database", "server"] license = "(Apache-2.0 OR MIT) AND PostgreSQL" repository = "https://github.com/theseus-rs/postgresql-embedded" -rust-version = "1.85.0" -version = "0.18.2" +rust-version = "1.87.0" +version = "0.18.7" [workspace.dependencies] -anyhow = "1.0.97" +anyhow = "1.0.98" async-trait = "0.1.88" -axum = "0.8.1" -criterion = "0.5.1" -diesel = "2.2.8" +axum = "0.8.4" +criterion = "0.6.0" +diesel = "2.2.11" diesel_migrations = "2.2.0" -flate2 = "1.1.0" +flate2 = "1.1.2" futures-util = "0.3.31" hex = "0.4.3" indicatif = "0.17.11" indoc = "2.0.6" -liblzma = "0.3.6" +liblzma = "0.4.2" md-5 = "0.10.6" num-format = "0.4.4" -pgvector = "0.4.0" +pgvector = "0.4.1" postgres = "0.19.10" -quick-xml = "0.37.2" +quick-xml = "0.37.5" r2d2_postgres = "0.18.2" -rand = "0.9.0" +rand = "0.9.1" regex-lite = "0.1.6" -reqwest = { version = "0.12.15", default-features = false } -reqwest-middleware = "0.4.1" +reqwest = { version = "0.12.20", default-features = false } +reqwest-middleware = "0.4.2" reqwest-retry = "0.7.0" -reqwest-tracing = "0.5.6" +reqwest-tracing = "0.5.8" semver = "1.0.26" serde = "1.0.219" serde_json = "1.0.140" sha1 = "0.10.6" sha2 = "0.10.8" -sqlx = { version = "0.8.3", default-features = false, features = ["postgres"] } +sqlx = { version = "0.8.6", default-features = false, features = ["postgres"] } tar = "0.4.44" target-triple = "0.1.4" -tempfile = "3.19.1" +tempfile = "3.20.0" test-log = "0.2.17" thiserror = "2.0.12" -tokio = "1.44.1" +tokio = "1.45.1" tracing = "0.1.41" tracing-indicatif = "0.3.9" tracing-subscriber = "0.3.19" url = "2.5.4" -zip = { version = "2.4.2", default-features = false, features = ["deflate"] } +zip = { version = "4.1.0", default-features = false, features = ["deflate"] } [workspace.metadata.release] shared-version = true diff --git a/examples/archive_async/src/main.rs b/examples/archive_async/src/main.rs index 562310e..f8df153 100644 --- a/examples/archive_async/src/main.rs +++ b/examples/archive_async/src/main.rs @@ -10,7 +10,7 @@ async fn main() -> Result<()> { let url = theseus::URL; let version_req = VersionReq::STAR; let (archive_version, archive) = get_archive(url, &version_req).await?; - let out_dir = tempfile::tempdir()?.into_path(); + let out_dir = tempfile::tempdir()?.keep(); extract(url, &archive, &out_dir).await?; println!( "PostgreSQL {} extracted to {}", diff --git a/examples/archive_sync/src/main.rs b/examples/archive_sync/src/main.rs index 0262a6f..44a1643 100644 --- a/examples/archive_sync/src/main.rs +++ b/examples/archive_sync/src/main.rs @@ -10,7 +10,7 @@ fn main() -> Result<()> { let url = theseus::URL; let version_req = VersionReq::STAR; let (archive_version, archive) = get_archive(url, &version_req)?; - let out_dir = tempfile::tempdir()?.into_path(); + let out_dir = tempfile::tempdir()?.keep(); extract(url, &archive, &out_dir)?; println!( "PostgreSQL {} extracted to {}", diff --git a/postgresql_archive/Cargo.toml b/postgresql_archive/Cargo.toml index 966aaf6..c415a65 100644 --- a/postgresql_archive/Cargo.toml +++ b/postgresql_archive/Cargo.toml @@ -12,10 +12,10 @@ version.workspace = true [dependencies] async-trait = { workspace = true } -flate2 = { workspace = true } +flate2 = { workspace = true, optional = true } futures-util = { workspace = true } hex = { workspace = true } -liblzma = { workspace = true } +liblzma = { workspace = true, optional = true } md-5 = { workspace = true, optional = true } num-format = { workspace = true } quick-xml = { workspace = true, features = ["serialize"], optional = true } @@ -29,7 +29,7 @@ serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true, optional = true } sha1 = { workspace = true, optional = true } sha2 = { workspace = true, optional = true } -tar = { workspace = true } +tar = { workspace = true, optional = true } target-triple = { workspace = true, optional = true } tempfile = { workspace = true } thiserror = { workspace = true } @@ -37,7 +37,7 @@ tokio = { workspace = true, features = ["full"], optional = true } tracing = { workspace = true, features = ["log"] } tracing-indicatif = { workspace = true, optional = true } url = { workspace = true } -zip = { workspace = true } +zip = { workspace = true, optional = true } [dev-dependencies] anyhow = { workspace = true } @@ -49,11 +49,12 @@ tokio = { workspace = true } [features] default = [ "native-tls", - "theseus", + "theseus" ] blocking = ["dep:tokio"] github = [ "dep:serde_json", + "dep:target-triple", ] indicatif = [ "dep:tracing-indicatif" @@ -69,13 +70,27 @@ native-tls = ["reqwest/native-tls"] rustls = ["reqwest/rustls-tls-native-roots"] sha1 = ["dep:sha1"] sha2 = ["dep:sha2"] +tar-gz = [ + "dep:flate2", + "dep:tar", +] +tar-xz = [ + "dep:liblzma", + "dep:tar", +] theseus = [ "dep:target-triple", "github", "sha2", + "tar-gz", +] +zip = [ + "dep:zip", ] zonky = [ "maven", + "tar-xz", + "zip", ] [package.metadata.docs.rs] diff --git a/postgresql_archive/README.md b/postgresql_archive/README.md index 1c0d441..9bc0d87 100644 --- a/postgresql_archive/README.md +++ b/postgresql_archive/README.md @@ -63,6 +63,14 @@ The following features are available: | `theseus` | Enables theseus PostgreSQL binaries | Yes | | `zonky` | Enables zonky PostgreSQL binaries | No | +### Extractors + +| Name | Description | Default? | +|----------|--------------------------|----------| +| `tar-gz` | Enables tar gz extractor | Yes | +| `tar-xz` | Enables tar xz extractor | No | +| `zip` | Enables zip extractor | No | + ### Hashers | Name | Description | Default? | diff --git a/postgresql_archive/src/archive.rs b/postgresql_archive/src/archive.rs index 47c85c6..d55b40d 100644 --- a/postgresql_archive/src/archive.rs +++ b/postgresql_archive/src/archive.rs @@ -45,7 +45,7 @@ pub async fn extract(url: &str, bytes: &Vec, out_dir: &Path) -> Result +/// +/// # Errors +/// * If the asset matcher fails. +pub fn matcher(_url: &str, name: &str, version: &Version) -> crate::Result { + let target = target_triple::TARGET; + // TODO: consider relaxing the version format to allow for more flexibility in where the version + // and target appear in the filename. + let expected_name = format!("postgresql-{version}-{target}.tar.gz"); + Ok(name == expected_name) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{Result, matcher}; + + const TEST_URL: &str = "https://github.com/owner/repo"; + + #[test] + fn test_register_custom_repo() -> Result<()> { + #[expect(clippy::unnecessary_wraps)] + fn supports_fn(url: &str) -> Result { + Ok(url == TEST_URL) + } + matcher::registry::register(supports_fn, matcher)?; + + let matcher = matcher::registry::get(TEST_URL)?; + let version = Version::new(16, 3, 0); + let expected_name = format!("postgresql-{}-{}.tar.gz", version, target_triple::TARGET); + assert!(matcher("", &expected_name, &version)?); + Ok(()) + } +} diff --git a/postgresql_archive/src/configuration/custom/mod.rs b/postgresql_archive/src/configuration/custom/mod.rs new file mode 100644 index 0000000..3c4d8c4 --- /dev/null +++ b/postgresql_archive/src/configuration/custom/mod.rs @@ -0,0 +1,3 @@ +pub mod matcher; + +pub use matcher::matcher; diff --git a/postgresql_archive/src/configuration/mod.rs b/postgresql_archive/src/configuration/mod.rs index 5ff0e25..a8c605d 100644 --- a/postgresql_archive/src/configuration/mod.rs +++ b/postgresql_archive/src/configuration/mod.rs @@ -1,3 +1,4 @@ +pub mod custom; #[cfg(feature = "theseus")] pub mod theseus; #[cfg(feature = "zonky")] diff --git a/postgresql_archive/src/configuration/theseus/extractor.rs b/postgresql_archive/src/configuration/theseus/extractor.rs index 0a8d334..9366aef 100644 --- a/postgresql_archive/src/configuration/theseus/extractor.rs +++ b/postgresql_archive/src/configuration/theseus/extractor.rs @@ -13,7 +13,7 @@ use tracing::{debug, instrument, warn}; /// # Errors /// Returns an error if the extraction fails. #[instrument(skip(bytes))] -pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Result> { +pub fn extract(bytes: &Vec, extract_directories: &ExtractDirectories) -> Result> { let out_dir = extract_directories.get_path(".")?; let parent_dir = if let Some(parent) = out_dir.parent() { @@ -37,11 +37,11 @@ pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Resu return Ok(Vec::new()); } - let extract_dir = tempfile::tempdir_in(parent_dir)?.into_path(); + let extract_dir = tempfile::tempdir_in(parent_dir)?.keep(); debug!("Extracting archive to {}", extract_dir.to_string_lossy()); let mut archive_extract_directories = ExtractDirectories::default(); archive_extract_directories.add_mapping(Regex::new(".*")?, extract_dir.clone()); - let files = tar_gz_extract(bytes, archive_extract_directories)?; + let files = tar_gz_extract(bytes, &archive_extract_directories)?; if out_dir.exists() { debug!( diff --git a/postgresql_archive/src/configuration/zonky/extractor.rs b/postgresql_archive/src/configuration/zonky/extractor.rs index e183afd..bacdab6 100644 --- a/postgresql_archive/src/configuration/zonky/extractor.rs +++ b/postgresql_archive/src/configuration/zonky/extractor.rs @@ -16,7 +16,7 @@ use zip::ZipArchive; /// Returns an error if the extraction fails. #[expect(clippy::case_sensitive_file_extension_comparisons)] #[instrument(skip(bytes))] -pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Result> { +pub fn extract(bytes: &Vec, extract_directories: &ExtractDirectories) -> Result> { let out_dir = extract_directories.get_path(".")?; let parent_dir = if let Some(parent) = out_dir.parent() { parent @@ -39,7 +39,7 @@ pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Resu return Ok(Vec::new()); } - let extract_dir = tempfile::tempdir_in(parent_dir)?.into_path(); + let extract_dir = tempfile::tempdir_in(parent_dir)?.keep(); debug!("Extracting archive to {}", extract_dir.to_string_lossy()); let reader = Cursor::new(bytes); @@ -63,7 +63,7 @@ pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Resu let mut archive_extract_directories = ExtractDirectories::default(); archive_extract_directories.add_mapping(Regex::new(".*")?, extract_dir.clone()); - let files = tar_xz_extract(&archive_bytes, archive_extract_directories)?; + let files = tar_xz_extract(&archive_bytes, &archive_extract_directories)?; if out_dir.exists() { debug!( diff --git a/postgresql_archive/src/error.rs b/postgresql_archive/src/error.rs index 7a06398..7c364e9 100644 --- a/postgresql_archive/src/error.rs +++ b/postgresql_archive/src/error.rs @@ -136,7 +136,7 @@ mod test { assert!(result.is_err()); if let Err(error) = result { let error = Error::from(error); - assert!(error.to_string().contains("https://a.com")); + assert!(error.to_string().contains("error sending request")); } } @@ -175,8 +175,8 @@ mod test { #[test] fn test_from_strip_prefix_error() { let path = PathBuf::from("test"); - let stip_prefix_error = path.strip_prefix("foo").expect_err("strip prefix error"); - let error = Error::from(stip_prefix_error); + let strip_prefix_error = path.strip_prefix("foo").expect_err("strip prefix error"); + let error = Error::from(strip_prefix_error); assert_eq!(error.to_string(), "prefix not found"); } diff --git a/postgresql_archive/src/extractor/mod.rs b/postgresql_archive/src/extractor/mod.rs index 56b41b9..a00f086 100644 --- a/postgresql_archive/src/extractor/mod.rs +++ b/postgresql_archive/src/extractor/mod.rs @@ -1,10 +1,16 @@ mod model; pub mod registry; +#[cfg(feature = "tar-gz")] mod tar_gz_extractor; +#[cfg(feature = "tar-xz")] mod tar_xz_extractor; +#[cfg(feature = "zip")] mod zip_extractor; pub use model::ExtractDirectories; +#[cfg(feature = "tar-gz")] pub use tar_gz_extractor::extract as tar_gz_extract; +#[cfg(feature = "tar-xz")] pub use tar_xz_extractor::extract as tar_xz_extract; +#[cfg(feature = "zip")] pub use zip_extractor::extract as zip_extract; diff --git a/postgresql_archive/src/extractor/registry.rs b/postgresql_archive/src/extractor/registry.rs index 56394c8..ea95715 100644 --- a/postgresql_archive/src/extractor/registry.rs +++ b/postgresql_archive/src/extractor/registry.rs @@ -12,7 +12,7 @@ static REGISTRY: LazyLock>> = LazyLock::new(|| Arc::new(Mutex::new(RepositoryRegistry::default()))); type SupportsFn = fn(&str) -> Result; -type ExtractFn = fn(&Vec, ExtractDirectories) -> Result>; +type ExtractFn = fn(&Vec, &ExtractDirectories) -> Result>; /// Singleton struct to store extractors #[expect(clippy::type_complexity)] @@ -107,7 +107,7 @@ mod tests { let extractor = get(url)?; let mut extract_directories = ExtractDirectories::default(); extract_directories.add_mapping(Regex::new(".*")?, PathBuf::from("test")); - assert!(extractor(&Vec::new(), extract_directories).is_ok()); + assert!(extractor(&Vec::new(), &extract_directories).is_ok()); Ok(()) } diff --git a/postgresql_archive/src/extractor/tar_gz_extractor.rs b/postgresql_archive/src/extractor/tar_gz_extractor.rs index 0947fb4..0673436 100644 --- a/postgresql_archive/src/extractor/tar_gz_extractor.rs +++ b/postgresql_archive/src/extractor/tar_gz_extractor.rs @@ -14,7 +14,7 @@ use tracing::{debug, instrument, warn}; /// # Errors /// Returns an error if the extraction fails. #[instrument(skip(bytes))] -pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Result> { +pub fn extract(bytes: &Vec, extract_directories: &ExtractDirectories) -> Result> { let mut files = Vec::new(); let input = BufReader::new(Cursor::new(bytes)); let decoder = GzDecoder::new(input); diff --git a/postgresql_archive/src/extractor/tar_xz_extractor.rs b/postgresql_archive/src/extractor/tar_xz_extractor.rs index 93caea5..3680b3d 100644 --- a/postgresql_archive/src/extractor/tar_xz_extractor.rs +++ b/postgresql_archive/src/extractor/tar_xz_extractor.rs @@ -14,7 +14,7 @@ use tracing::{debug, instrument, warn}; /// # Errors /// Returns an error if the extraction fails. #[instrument(skip(bytes))] -pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Result> { +pub fn extract(bytes: &Vec, extract_directories: &ExtractDirectories) -> Result> { let mut files = Vec::new(); let input = BufReader::new(Cursor::new(bytes)); let decoder = XzDecoder::new(input); diff --git a/postgresql_archive/src/extractor/zip_extractor.rs b/postgresql_archive/src/extractor/zip_extractor.rs index ddbcb0f..4419422 100644 --- a/postgresql_archive/src/extractor/zip_extractor.rs +++ b/postgresql_archive/src/extractor/zip_extractor.rs @@ -13,17 +13,16 @@ use zip::ZipArchive; /// # Errors /// Returns an error if the extraction fails. #[instrument(skip(bytes))] -pub fn extract(bytes: &Vec, extract_directories: ExtractDirectories) -> Result> { +pub fn extract(bytes: &Vec, extract_directories: &ExtractDirectories) -> Result> { let mut files = Vec::new(); let reader = Cursor::new(bytes); - let mut archive = - ZipArchive::new(reader).map_err(|_| io::Error::new(io::ErrorKind::Other, "Zip error"))?; + let mut archive = ZipArchive::new(reader).map_err(|_| io::Error::other("Zip error"))?; let mut extracted_bytes = 0; for i in 0..archive.len() { let mut file = archive .by_index(i) - .map_err(|_| io::Error::new(io::ErrorKind::Other, "Zip error"))?; + .map_err(|_| io::Error::other("Zip error"))?; let file_path = PathBuf::from(file.name()); let file_path = PathBuf::from(file_path.file_name().unwrap_or_default()); let file_name = file_path.to_string_lossy(); diff --git a/postgresql_archive/src/lib.rs b/postgresql_archive/src/lib.rs index 66d647a..a729ad2 100644 --- a/postgresql_archive/src/lib.rs +++ b/postgresql_archive/src/lib.rs @@ -68,6 +68,14 @@ //! | `theseus` | Enables theseus PostgreSQL binaries | Yes | //! | `zonky` | Enables zonky PostgreSQL binaries | No | //! +//! ### Extractors +//! +//! | Name | Description | Default? | +//! |----------|--------------------------|----------| +//! | `tar-gz` | Enables tar gz extractor | Yes | +//! | `tar-xz` | Enables tar xz extractor | No | +//! | `zip` | Enables zip extractor | No | +//! //! ### Hashers //! //! | Name | Description | Default? | diff --git a/postgresql_commands/src/error.rs b/postgresql_commands/src/error.rs index d50bb18..059d578 100644 --- a/postgresql_commands/src/error.rs +++ b/postgresql_commands/src/error.rs @@ -38,7 +38,7 @@ mod test { #[test] fn test_from_io_error() { - let io_error = std::io::Error::new(std::io::ErrorKind::Other, "test"); + let io_error = std::io::Error::other("test"); let error = Error::from(io_error); assert_eq!(error.to_string(), "test"); } diff --git a/postgresql_commands/src/traits.rs b/postgresql_commands/src/traits.rs index e688d0e..391ed90 100644 --- a/postgresql_commands/src/traits.rs +++ b/postgresql_commands/src/traits.rs @@ -2,11 +2,23 @@ use crate::error::{Error, Result}; use std::env::consts::OS; use std::ffi::{OsStr, OsString}; use std::fmt::Debug; +#[cfg(target_os = "windows")] +use std::os::windows::process::CommandExt; use std::path::PathBuf; use std::process::ExitStatus; use std::time::Duration; use tracing::debug; +/// Constant for the `CREATE_NO_WINDOW` flag on Windows to prevent the creation of a console window +/// when executing commands. This is useful for background processes or services that do not require +/// user interaction. +/// +/// # References +/// +/// - [Windows API: Process Creation Flags](https://learn.microsoft.com/en-us/windows/win32/procthread/process-creation-flags#flags) +#[cfg(target_os = "windows")] +const CREATE_NO_WINDOW: u32 = 0x0800_0000; + /// Interface for `PostgreSQL` settings pub trait Settings { fn get_binary_dir(&self) -> PathBuf; @@ -79,6 +91,11 @@ pub trait CommandBuilder: Debug { let program_file = self.get_program_file(); let mut command = std::process::Command::new(program_file); + #[cfg(target_os = "windows")] + { + command.creation_flags(CREATE_NO_WINDOW); + } + command.args(self.get_args()); command.envs(self.get_envs()); command @@ -93,6 +110,11 @@ pub trait CommandBuilder: Debug { let program_file = self.get_program_file(); let mut command = tokio::process::Command::new(program_file); + #[cfg(target_os = "windows")] + { + command.creation_flags(CREATE_NO_WINDOW); + } + command.args(self.get_args()); command.envs(self.get_envs()); command diff --git a/postgresql_embedded/Cargo.toml b/postgresql_embedded/Cargo.toml index 781d035..e6b17ca 100644 --- a/postgresql_embedded/Cargo.toml +++ b/postgresql_embedded/Cargo.toml @@ -13,14 +13,14 @@ version.workspace = true [build-dependencies] anyhow = { workspace = true } -postgresql_archive = { path = "../postgresql_archive", version = "0.18.2", default-features = false } +postgresql_archive = { path = "../postgresql_archive", version = "0.18.7", default-features = false } target-triple = { workspace = true } tokio = { workspace = true, features = ["full"] } url = { workspace = true } [dependencies] -postgresql_archive = { path = "../postgresql_archive", version = "0.18.2", default-features = false } -postgresql_commands = { path = "../postgresql_commands", version = "0.18.2" } +postgresql_archive = { path = "../postgresql_archive", version = "0.18.7", default-features = false } +postgresql_commands = { path = "../postgresql_commands", version = "0.18.7" } rand = { workspace = true } semver = { workspace = true } sqlx = { workspace = true, features = ["runtime-tokio"] } diff --git a/postgresql_embedded/README.md b/postgresql_embedded/README.md index c49946f..76320ff 100644 --- a/postgresql_embedded/README.md +++ b/postgresql_embedded/README.md @@ -110,6 +110,30 @@ The following features are available: | `tokio` | Enables using tokio for async | No | | `zonky` | Enables zonky PostgreSQL binaries | No | +## Bundling PostgreSQL + +To bundle PostgreSQL with your application, you can enable the `bundled` feature. This will download the PostgreSQL +archive at compile time and include it in your binary. You should specify the version of PostgreSQL to bundle by +setting the environment variable `POSTGRESQL_VERSION` to a specific version, e.g. `=17.2.0`. In order to use the bundled +PostgreSQL, you will also need to set an explicit matching version at runtime in `Settings`: + +```rust +use postgresql_embedded::{Result, Settings, VersionReq}; + +#[tokio::main] +async fn main() -> Result<()> { + let settings = Settings { + version: VersionReq::from_str("=17.2.0")?, + ..Default::default() + }; + Ok(()) +} +``` + +The PostgreSQL binaries can also be obtained from a different GitHub source by setting the `POSTGRESQL_RELEASES_URL` +environment variable. The repository must contain the releases with archives in same structure as +[theseus-rs/postgresql_binaries](https://github.com/theseus-rs/postgresql-binaries). + ## Safety This crate uses `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% safe Rust. diff --git a/postgresql_embedded/build/bundle.rs b/postgresql_embedded/build/bundle.rs index 395e58a..fb2171e 100644 --- a/postgresql_embedded/build/bundle.rs +++ b/postgresql_embedded/build/bundle.rs @@ -1,8 +1,9 @@ #![allow(dead_code)] use anyhow::Result; -use postgresql_archive::VersionReq; +use postgresql_archive::configuration::{custom, theseus}; use postgresql_archive::repository::github::repository::GitHub; +use postgresql_archive::{VersionReq, matcher}; use postgresql_archive::{get_archive, repository}; use std::fs::File; use std::io::Write; @@ -16,11 +17,23 @@ use url::Url; /// self-contained binary that does not require the PostgreSQL archive to be /// downloaded at runtime. pub(crate) async fn stage_postgresql_archive() -> Result<()> { + println!("cargo:rerun-if-env-changed=POSTGRESQL_VERSION"); + println!("cargo:rerun-if-env-changed=POSTGRESQL_RELEASES_URL"); #[cfg(feature = "theseus")] let default_releases_url = postgresql_archive::configuration::theseus::URL.to_string(); #[cfg(not(feature = "theseus"))] let default_releases_url = String::new(); - let releases_url = env::var("POSTGRESQL_RELEASES_URL").unwrap_or(default_releases_url); + + let releases_url = match env::var("POSTGRESQL_RELEASES_URL") { + Ok(custom_url) if !default_releases_url.is_empty() => { + register_custom_repository()?; + custom_url + } + _ => { + register_theseus_repository()?; + default_releases_url + } + }; println!("PostgreSQL releases URL: {releases_url}"); let postgres_version_req = env::var("POSTGRESQL_VERSION").unwrap_or("*".to_string()); let version_req = VersionReq::from_str(postgres_version_req.as_str())?; @@ -40,7 +53,6 @@ pub(crate) async fn stage_postgresql_archive() -> Result<()> { return Ok(()); } - register_github_repository()?; let (asset_version, archive) = get_archive(&releases_url, &version_req).await?; fs::write(archive_version_file.clone(), asset_version.to_string())?; @@ -52,14 +64,20 @@ pub(crate) async fn stage_postgresql_archive() -> Result<()> { Ok(()) } -fn register_github_repository() -> Result<()> { - repository::registry::register( - |url| { - let parsed_url = Url::parse(url)?; - let host = parsed_url.host_str().unwrap_or_default(); - Ok(host.ends_with("github.com")) - }, - Box::new(GitHub::new), - )?; +fn supports_github_url(url: &str) -> postgresql_archive::Result { + let parsed_url = Url::parse(url)?; + let host = parsed_url.host_str().unwrap_or_default(); + Ok(host.ends_with("github.com")) +} + +fn register_custom_repository() -> Result<()> { + repository::registry::register(supports_github_url, Box::new(GitHub::new))?; + matcher::registry::register(supports_github_url, custom::matcher)?; + Ok(()) +} + +fn register_theseus_repository() -> Result<()> { + repository::registry::register(supports_github_url, Box::new(GitHub::new))?; + matcher::registry::register(supports_github_url, theseus::matcher)?; Ok(()) } diff --git a/postgresql_embedded/src/error.rs b/postgresql_embedded/src/error.rs index 85f3529..0f88900 100644 --- a/postgresql_embedded/src/error.rs +++ b/postgresql_embedded/src/error.rs @@ -80,7 +80,7 @@ mod test { #[test] fn test_from_io_error() { - let io_error = std::io::Error::new(std::io::ErrorKind::Other, "test"); + let io_error = std::io::Error::other("test"); let error = Error::from(io_error); assert_eq!(error.to_string(), "test"); } diff --git a/postgresql_embedded/src/postgresql.rs b/postgresql_embedded/src/postgresql.rs index f5bbf14..693c67e 100644 --- a/postgresql_embedded/src/postgresql.rs +++ b/postgresql_embedded/src/postgresql.rs @@ -128,8 +128,7 @@ impl PostgreSQL { // Sort the versions in descending order i.e. latest version first versions.sort_by(|(a, _), (b, _)| b.cmp(a)); // Get the first matching version as the best match - let version_path = versions.first().map(|(_, path)| path.clone()); - version_path + versions.first().map(|(_, path)| path.clone()) } /// Check if the `PostgreSQL` server is initialized @@ -146,6 +145,10 @@ impl PostgreSQL { /// Set up the database by extracting the archive and initializing the database. /// If the installation directory already exists, the archive will not be extracted. /// If the data directory already exists, the database will not be initialized. + /// + /// # Errors + /// + /// If the installation fails, an error will be returned. #[instrument(skip(self))] pub async fn setup(&mut self) -> Result<()> { match self.installed_dir() { @@ -260,6 +263,10 @@ impl PostgreSQL { /// Start the database and wait for the startup to complete. /// If the port is set to `0`, the database will be started on a random port. + /// + /// # Errors + /// + /// If the database fails to start, an error will be returned. #[instrument(skip(self))] pub async fn start(&mut self) -> Result<()> { if self.settings.port == 0 { @@ -300,6 +307,10 @@ impl PostgreSQL { } /// Stop the database gracefully (smart mode) and wait for the shutdown to complete. + /// + /// # Errors + /// + /// If the database fails to stop, an error will be returned. #[instrument(skip(self))] pub async fn stop(&self) -> Result<()> { debug!( @@ -334,6 +345,10 @@ impl PostgreSQL { } /// Create a new database with the given name. + /// + /// # Errors + /// + /// If the database creation fails, an error will be returned. #[instrument(skip(self))] pub async fn create_database(&self, database_name: S) -> Result<()> where @@ -360,6 +375,10 @@ impl PostgreSQL { } /// Check if a database with the given name exists. + /// + /// # Errors + /// + /// If the query fails, an error will be returned. #[instrument(skip(self))] pub async fn database_exists(&self, database_name: S) -> Result where @@ -384,6 +403,10 @@ impl PostgreSQL { } /// Drop a database with the given name. + /// + /// # Errors + /// + /// If the database does not exist or if the drop command fails, an error will be returned. #[instrument(skip(self))] pub async fn drop_database(&self, database_name: S) -> Result<()> where diff --git a/postgresql_extensions/Cargo.toml b/postgresql_extensions/Cargo.toml index b44f41d..610b985 100644 --- a/postgresql_extensions/Cargo.toml +++ b/postgresql_extensions/Cargo.toml @@ -12,8 +12,8 @@ version.workspace = true [dependencies] async-trait = { workspace = true } -postgresql_archive = { path = "../postgresql_archive", version = "0.18.2", default-features = false } -postgresql_commands = { path = "../postgresql_commands", version = "0.18.2", default-features = false } +postgresql_archive = { path = "../postgresql_archive", version = "0.18.7", default-features = false } +postgresql_commands = { path = "../postgresql_commands", version = "0.18.7", default-features = false } regex-lite = { workspace = true } reqwest = { workspace = true, default-features = false, features = ["json"] } semver = { workspace = true, features = ["serde"] } @@ -28,7 +28,7 @@ url = { workspace = true } [dev-dependencies] anyhow = { workspace = true } -postgresql_embedded = { path = "../postgresql_embedded", version = "0.18.2" } +postgresql_embedded = { path = "../postgresql_embedded", version = "0.18.7" } test-log = { workspace = true } tokio = { workspace = true, features = ["full"] } @@ -43,14 +43,17 @@ blocking = ["tokio"] portal-corp = [ "dep:target-triple", "postgresql_archive/github", + "postgresql_archive/zip", ] steampipe = [ "dep:serde_json", "postgresql_archive/github", + "postgresql_archive/tar-gz", ] tensor-chord = [ "dep:target-triple", "postgresql_archive/github", + "postgresql_archive/zip", ] tokio = [ "postgresql_commands/tokio", diff --git a/postgresql_extensions/src/extensions.rs b/postgresql_extensions/src/extensions.rs index 450e8c1..2e81e55 100644 --- a/postgresql_extensions/src/extensions.rs +++ b/postgresql_extensions/src/extensions.rs @@ -68,7 +68,7 @@ pub async fn install( { // Attempt to uninstall the extension first uninstall(settings, namespace, name).await?; - }; + } let postgresql_version = get_postgresql_version(settings).await?; let repository = registry::get(namespace)?; diff --git a/postgresql_extensions/src/repository/portal_corp/repository.rs b/postgresql_extensions/src/repository/portal_corp/repository.rs index d54357b..40d2cf9 100644 --- a/postgresql_extensions/src/repository/portal_corp/repository.rs +++ b/postgresql_extensions/src/repository/portal_corp/repository.rs @@ -80,7 +80,7 @@ impl Repository for PortalCorp { extract_directories.add_mapping(Regex::new(r"\.(dll|dylib|so)$")?, library_dir); extract_directories.add_mapping(Regex::new(r"\.(control|sql)$")?, extension_dir); let bytes = &archive.to_vec(); - let files = zip_extract(bytes, extract_directories)?; + let files = zip_extract(bytes, &extract_directories)?; Ok(files) } } diff --git a/postgresql_extensions/src/repository/steampipe/repository.rs b/postgresql_extensions/src/repository/steampipe/repository.rs index f980b1d..f05fd1e 100644 --- a/postgresql_extensions/src/repository/steampipe/repository.rs +++ b/postgresql_extensions/src/repository/steampipe/repository.rs @@ -93,7 +93,7 @@ impl Repository for Steampipe { extract_directories.add_mapping(Regex::new(r"\.(dll|dylib|so)$")?, library_dir); extract_directories.add_mapping(Regex::new(r"\.(control|sql)$")?, extension_dir); let bytes = &archive.to_vec(); - let files = tar_gz_extract(bytes, extract_directories)?; + let files = tar_gz_extract(bytes, &extract_directories)?; Ok(files) } } diff --git a/postgresql_extensions/src/repository/tensor_chord/repository.rs b/postgresql_extensions/src/repository/tensor_chord/repository.rs index ac9b0c8..9a992b8 100644 --- a/postgresql_extensions/src/repository/tensor_chord/repository.rs +++ b/postgresql_extensions/src/repository/tensor_chord/repository.rs @@ -80,7 +80,7 @@ impl Repository for TensorChord { extract_directories.add_mapping(Regex::new(r"\.(dll|dylib|so)$")?, library_dir); extract_directories.add_mapping(Regex::new(r"\.(control|sql)$")?, extension_dir); let bytes = &archive.to_vec(); - let files = zip_extract(bytes, extract_directories)?; + let files = zip_extract(bytes, &extract_directories)?; Ok(files) } } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index aaba158..291696d 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.85.0" +channel = "1.87.0" profile = "default"