diff --git a/.cargo/config.toml b/.cargo/config.toml index 83beeee..3a1b090 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,4 @@ [alias] -recorder = "run -p recorder --bin recorder_cli -- --environment development" recorder-playground = "run -p recorder --example playground -- --environment development" [build] diff --git a/.gitignore b/.gitignore index 85a95f3..12e360f 100644 --- a/.gitignore +++ b/.gitignore @@ -158,11 +158,8 @@ web_modules/ .yarn-integrity # Local env files -.env .env.local -.env.development.local -.env.test.local -.env.production.local +.env.*.local # parcel-bundler cache (https://parceljs.org/) .cache @@ -219,6 +216,7 @@ index.d.ts.map # Added by cargo /target +/ide-target !/examples/.gitkeep /.env /.env.bk diff --git a/Cargo.lock b/Cargo.lock index b4e7590..fae2a6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,9 +160,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.96" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "append-only-vec" @@ -203,9 +203,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06575e6a9673580f52661c92107baabffbf41e2141373441cbcdc47cb733003c" +checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" dependencies = [ "brotli", "flate2", @@ -284,7 +284,7 @@ dependencies = [ "proc-macro2", "quote", "strum", - "syn 2.0.98", + "syn 2.0.99", "thiserror 1.0.69", ] @@ -342,18 +342,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -532,9 +532,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.7.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c103cbbedac994e292597ab79342dbd5b306a362045095db54917d92a9fdfd92" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bigdecimal" @@ -582,9 +582,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "serde", ] @@ -641,7 +641,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-util", "tower-service", @@ -680,7 +680,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -744,9 +744,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.21.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -756,9 +756,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -792,9 +792,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.15" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ "jobserver", "libc", @@ -891,7 +891,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -935,11 +935,10 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" dependencies = [ - "lazy_static", "windows-sys 0.59.0", ] @@ -987,9 +986,9 @@ checksum = "e763eef8846b13b380f37dfecda401770b0ca4e56e95170237bd7c25c7db3582" [[package]] name = "console" -version = "0.15.10" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", "libc", @@ -1245,7 +1244,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1288,7 +1287,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1312,7 +1311,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1323,7 +1322,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1393,7 +1392,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1403,7 +1402,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1414,7 +1413,7 @@ checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1473,7 +1472,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1510,9 +1509,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dtoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" [[package]] name = "dtoa-short" @@ -1540,9 +1539,9 @@ checksum = "7454e41ff9012c00d53cf7f475c5e3afa3b91b7c90568495495e8d9bf47a1055" [[package]] name = "dyn-clone" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ecdsa" @@ -1590,9 +1589,9 @@ checksum = "b2972feb8dffe7bc8c5463b1dacda1b0dfbed3710e50f977d965429692d74cd8" [[package]] name = "either" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" dependencies = [ "serde", ] @@ -1642,7 +1641,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -1913,7 +1912,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -2033,9 +2032,9 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", @@ -2050,7 +2049,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "ignore", "walkdir", ] @@ -2396,9 +2395,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -2658,7 +2657,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -2734,13 +2733,13 @@ dependencies = [ [[package]] name = "inherent" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" +checksum = "6c38228f24186d9cc68c729accb4d413be9eaed6ad07ff79e0270d9e56f3de13" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -2751,9 +2750,9 @@ checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" [[package]] name = "insta" -version = "1.42.1" +version = "1.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" +checksum = "50259abbaa67d11d2bcafc7ba1d094ed7a0c70e3ce893f0d0997f73558cb3084" dependencies = [ "console", "linked-hash-map", @@ -2837,9 +2836,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "java-properties" @@ -2909,7 +2908,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tower-http", "tower-layer", @@ -3093,9 +3092,9 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "libc", - "redox_syscall 0.5.9", + "redox_syscall 0.5.10", ] [[package]] @@ -3180,12 +3179,12 @@ dependencies = [ [[package]] name = "lightningcss" -version = "1.0.0-alpha.63" +version = "1.0.0-alpha.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a75fcbcdbcc84fc1ae7c60c31f99337560b620757a9bfc1c9f84df3cff8ac24" +checksum = "a296273515b1036d06fce6c1d6bfc11347083458e1765ae4a70d6288cdb15521" dependencies = [ "ahash 0.8.11", - "bitflags 2.8.0", + "bitflags 2.9.0", "const-str", "cssparser 0.33.0", "cssparser-color", @@ -3230,10 +3229,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] -name = "litemap" -version = "0.7.4" +name = "linux-raw-sys" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "litrs" @@ -3328,7 +3333,7 @@ checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -3397,7 +3402,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -3447,9 +3452,9 @@ dependencies = [ [[package]] name = "mockito" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" +checksum = "7760e0e418d9b7e5777c0374009ca4c93861b9066f18cb334a20ce50ab63aa48" dependencies = [ "assert-json-diff", "bytes", @@ -3461,7 +3466,7 @@ dependencies = [ "hyper", "hyper-util", "log", - "rand 0.8.5", + "rand 0.9.0", "regex", "serde_json", "serde_urlencoded", @@ -3730,7 +3735,7 @@ version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -3747,7 +3752,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -3813,7 +3818,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -3864,7 +3869,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dccbc6fb560df303a44e511618256029410efbc87779018f751ef12c488271fe" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cssparser 0.33.0", "log", "phf", @@ -3937,7 +3942,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.9", + "redox_syscall 0.5.10", "smallvec", "windows-targets 0.52.6", ] @@ -3964,7 +3969,7 @@ dependencies = [ "regex", "regex-syntax 0.8.5", "structmeta", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -4008,7 +4013,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -4043,7 +4048,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.11", + "thiserror 2.0.12", "ucd-trie", ] @@ -4067,7 +4072,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -4130,7 +4135,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -4144,22 +4149,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -4197,9 +4202,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" @@ -4239,9 +4244,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] @@ -4265,14 +4270,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -4285,7 +4290,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", "version_check", "yansi", ] @@ -4340,7 +4345,7 @@ dependencies = [ "serde_repr", "serde_with", "tap", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "typed-builder", "url", @@ -4385,7 +4390,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", ] @@ -4404,7 +4409,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -4439,9 +4444,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801" dependencies = [ "proc-macro2", ] @@ -4470,8 +4475,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.2", - "zerocopy 0.8.20", + "rand_core 0.9.3", + "zerocopy 0.8.23", ] [[package]] @@ -4491,7 +4496,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.2", + "rand_core 0.9.3", ] [[package]] @@ -4505,12 +4510,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a509b1a2ffbe92afab0e55c8fd99dea1c280e8171bd2d88682bb20bc41cbc2c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom 0.3.1", - "zerocopy 0.8.20", ] [[package]] @@ -4603,7 +4607,7 @@ dependencies = [ "tera", "testcontainers", "testcontainers-modules", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tower", "tower-http", @@ -4636,11 +4640,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -4662,7 +4666,7 @@ checksum = "9efd944f26afa2406cbbabff39fac533c9bc24b13d7f1f12e14ae3e7bdc66cdb" dependencies = [ "cfg-if", "libc", - "rustix", + "rustix 0.38.44", "windows 0.60.0", ] @@ -4865,9 +4869,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.11" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" +checksum = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee" dependencies = [ "cc", "cfg-if", @@ -4964,7 +4968,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.98", + "syn 2.0.99", "unicode-ident", ] @@ -5011,10 +5015,23 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dade4812df5c384711475be5fcd8c162555352945401aed22a35bffeab61f657" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.2", "windows-sys 0.59.0", ] @@ -5075,15 +5092,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -5155,14 +5172,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] name = "sea-orm" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13fba7b2c749b2d0a00303d5cb13e6761e39a4172554bdf930852cac4e7aeabd" +checksum = "3417812d38049e8ec3d588c03570f8c60de811d2453fb48e424045a1600ffd86" dependencies = [ "async-stream", "async-trait", @@ -5189,9 +5206,9 @@ dependencies = [ [[package]] name = "sea-orm-cli" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ee4e47ca95a6100c875a6066f367a5f9713f04a714f589493b46b6fd7ae4d9" +checksum = "bf2a390d6528f8e5c9ecd327bbb1a4c6cd7ab8333ef0da97010d5dc8f83f01c4" dependencies = [ "chrono", "clap", @@ -5206,24 +5223,24 @@ dependencies = [ [[package]] name = "sea-orm-macros" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2568cff8d35d5150b4276cc0dd766192a587f64b6ece60ae3706e0872c4eb209" +checksum = "d705ba84e1c74c8ac27784e4ac6f21584058c1dc0cadb9d39b43e109fcf8139c" dependencies = [ "heck 0.4.1", "proc-macro-crate", "proc-macro2", "quote", "sea-bae", - "syn 2.0.98", + "syn 2.0.99", "unicode-ident", ] [[package]] name = "sea-orm-migration" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a341919106dee5aae393293d922b23a33e99eda7bfe6871d822f3e157d9b09" +checksum = "2c38451d5112e3a518a02251b5e6d3bc72e626957a44a79264716808a4c28ee0" dependencies = [ "async-trait", "clap", @@ -5278,7 +5295,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", "thiserror 1.0.69", ] @@ -5302,7 +5319,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -5347,7 +5364,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -5360,7 +5377,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -5383,7 +5400,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd568a4c9bb598e291a08244a5c1f5a8a6650bee243b5b0f8dbb3d9cc1d87fe8" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cssparser 0.34.0", "derive_more", "fxhash", @@ -5398,9 +5415,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" @@ -5440,14 +5457,14 @@ checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] name = "serde_json" -version = "1.0.139" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -5457,9 +5474,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -5476,13 +5493,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -5542,7 +5559,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -5580,7 +5597,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -5704,7 +5721,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", ] @@ -5815,7 +5832,7 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", "tokio", "tokio-stream", @@ -5835,7 +5852,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -5858,7 +5875,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.98", + "syn 2.0.99", "tempfile", "tokio", "url", @@ -5873,7 +5890,7 @@ dependencies = [ "atoi", "base64 0.22.1", "bigdecimal", - "bitflags 2.8.0", + "bitflags 2.9.0", "byteorder", "bytes", "chrono", @@ -5904,7 +5921,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", "tracing", "uuid", @@ -5920,7 +5937,7 @@ dependencies = [ "atoi", "base64 0.22.1", "bigdecimal", - "bitflags 2.8.0", + "bitflags 2.9.0", "byteorder", "chrono", "crc", @@ -5947,7 +5964,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", "tracing", "uuid", @@ -6066,7 +6083,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6077,7 +6094,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6099,7 +6116,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6121,9 +6138,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2" dependencies = [ "proc-macro2", "quote", @@ -6147,7 +6164,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6156,7 +6173,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6185,15 +6202,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.17.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" +checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" dependencies = [ "cfg-if", "fastrand", "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.1", "windows-sys 0.59.0", ] @@ -6255,7 +6272,7 @@ dependencies = [ "serde_json", "serde_with", "signal-hook", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-stream", "tokio-tar", @@ -6284,11 +6301,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -6299,18 +6316,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6325,9 +6342,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "itoa", @@ -6340,15 +6357,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" dependencies = [ "num-conv", "time-core", @@ -6366,9 +6383,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -6405,7 +6422,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6420,9 +6437,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", "tokio", @@ -6538,7 +6555,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "async-compression", "base64 0.22.1", - "bitflags 2.8.0", + "bitflags 2.9.0", "bytes", "futures-core", "futures-util", @@ -6602,7 +6619,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6686,7 +6703,7 @@ dependencies = [ "log", "rand 0.9.0", "sha1", - "thiserror 2.0.11", + "thiserror 2.0.12", "utf-8", ] @@ -6707,7 +6724,7 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -6805,9 +6822,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" @@ -6892,9 +6909,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8dcafa1ca14750d8d7a05aa05988c17aab20886e1f3ae33a40223c58d92ef7" +checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" dependencies = [ "getrandom 0.3.1", "serde", @@ -6986,7 +7003,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", "wasm-bindgen-shared", ] @@ -7021,7 +7038,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7098,7 +7115,7 @@ version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.5.9", + "redox_syscall 0.5.10", "wasite", ] @@ -7224,7 +7241,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -7235,7 +7252,7 @@ checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -7246,7 +7263,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -7257,7 +7274,7 @@ checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] @@ -7497,7 +7514,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -7523,13 +7540,12 @@ dependencies = [ [[package]] name = "xattr" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" +checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" dependencies = [ "libc", - "linux-raw-sys", - "rustix", + "rustix 1.0.1", ] [[package]] @@ -7564,7 +7580,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", "synstructure", ] @@ -7580,11 +7596,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.20" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde3bb8c68a8f3f1ed4ac9221aad6b10cece3e60a8e2ea54a6a2dec806d0084c" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" dependencies = [ - "zerocopy-derive 0.8.20", + "zerocopy-derive 0.8.23", ] [[package]] @@ -7595,38 +7611,38 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] name = "zerocopy-derive" -version = "0.8.20" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eea57037071898bf96a6da35fd626f4f27e9cee3ead2a6c703cf09d472b2e700" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", "synstructure", ] @@ -7655,7 +7671,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.99", ] [[package]] diff --git a/apps/proxy/.whistle/rules/files/0.konobangu b/apps/proxy/.whistle/rules/files/0.konobangu index 049aa45..12852f7 100644 --- a/apps/proxy/.whistle/rules/files/0.konobangu +++ b/apps/proxy/.whistle/rules/files/0.konobangu @@ -5,8 +5,6 @@ } ``` -^https://konobangu.com/api/playground*** reqHeaders://{x-forwarded.json} http://127.0.0.1:5002/api/playground$1 -^wss://konobangu.com/api/playground*** reqHeaders://{x-forwarded.json} ws://127.0.0.1:5002/api/playground$1 -^https://konobangu.com/api*** reqHeaders://{x-forwarded.json} http://127.0.0.1:5001/api$1 excludeFilter://^^https://konobangu.com/api/playground*** +^https://konobangu.com/api*** reqHeaders://{x-forwarded.json} http://127.0.0.1:5001/api$1 ^https://konobangu.com/*** reqHeaders://{x-forwarded.json} http://127.0.0.1:5000/$1 excludeFilter://^https://konobangu.com/api*** -^wss://konobangu.com/*** reqHeaders://{x-forwarded.json} ws://127.0.0.1:5000/$1 excludeFilter://^wss://konobangu.com/api/playground*** \ No newline at end of file +^wss://konobangu.com/*** reqHeaders://{x-forwarded.json} ws://127.0.0.1:5000/$1 excludeFilter://^wss://konobangu.com/api \ No newline at end of file diff --git a/apps/recorder/.env b/apps/recorder/.env new file mode 100644 index 0000000..60789ec --- /dev/null +++ b/apps/recorder/.env @@ -0,0 +1,8 @@ +AUTH_TYPE = "basic" # or oidc +BASIC_USER = "konobangu" +BASIC_PASSWORD = "konobangu" +# OIDC_ISSUER="https://auth.logto.io/oidc" +# OIDC_API_AUDIENCE = "https://konobangu.com/api" +# OIDC_CLIENT_ID = "client_id" +# OIDC_CLIENT_SECRET = "client_secret" # optional +# OIDC_EXTRA_SCOPES = "read:konobangu write:konobangu" diff --git a/apps/recorder/src/app/builder.rs b/apps/recorder/src/app/builder.rs index 4f2b871..bd97546 100644 --- a/apps/recorder/src/app/builder.rs +++ b/apps/recorder/src/app/builder.rs @@ -29,7 +29,7 @@ pub struct AppBuilder { dotenv_file: Option, config_file: Option, working_dir: String, - enviornment: Environment, + environment: Environment, } impl AppBuilder { @@ -70,21 +70,21 @@ impl AppBuilder { pub async fn build(self) -> RResult { AppConfig::load_dotenv( - &self.enviornment, + &self.environment, &self.working_dir, self.dotenv_file.as_deref(), ) .await?; let config = AppConfig::load_config( - &self.enviornment, + &self.environment, &self.working_dir, self.config_file.as_deref(), ) .await?; let app_context = Arc::new( - AppContext::new(self.enviornment.clone(), config, self.working_dir.clone()).await?, + AppContext::new(self.environment.clone(), config, self.working_dir.clone()).await?, ); Ok(App { @@ -101,7 +101,7 @@ impl AppBuilder { pub fn environment(self, environment: Environment) -> Self { let mut ret = self; - ret.enviornment = environment; + ret.environment = environment; ret } @@ -130,7 +130,7 @@ impl AppBuilder { impl Default for AppBuilder { fn default() -> Self { Self { - enviornment: Environment::Production, + environment: Environment::Production, dotenv_file: None, config_file: None, working_dir: String::from("."), diff --git a/apps/recorder/src/app/core.rs b/apps/recorder/src/app/core.rs index d11b687..5b2abc0 100644 --- a/apps/recorder/src/app/core.rs +++ b/apps/recorder/src/app/core.rs @@ -34,12 +34,13 @@ impl App { let mut router = Router::>::new(); - let (graphqlc, oidcc) = try_join!( + let (graphql_c, oidc_c, metadata_c) = try_join!( controller::graphql::create(context.clone()), controller::oidc::create(context.clone()), + controller::metadata::create(context.clone()) )?; - for c in [graphqlc, oidcc] { + for c in [graphql_c, oidc_c, metadata_c] { router = c.apply_to(router); } diff --git a/apps/recorder/src/auth/config.ts b/apps/recorder/src/auth/config.ts deleted file mode 100644 index 6d20acd..0000000 --- a/apps/recorder/src/auth/config.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { LogLevel, type OpenIdConfiguration } from 'oidc-client-rx'; - -export const isBasicAuth = process.env.AUTH_TYPE === 'basic'; - -export function buildOidcConfig(): OpenIdConfiguration { - const origin = window.location.origin; - - const resource = process.env.OIDC_AUDIENCE!; - - return { - authority: process.env.OIDC_ISSUER!, - redirectUrl: `${origin}/api/playground/oidc/callback`, - postLogoutRedirectUri: `${origin}/api/playground`, - clientId: process.env.OIDC_CLIENT_ID!, - clientSecret: process.env.OIDC_CLIENT_SECRET, - scope: process.env.OIDC_EXTRA_SCOPES - ? `openid profile email offline_access ${process.env.OIDC_EXTRA_SCOPES}` - : 'openid profile email offline_access', - triggerAuthorizationResultEvent: true, - responseType: 'code', - silentRenew: true, - useRefreshToken: true, - logLevel: LogLevel.Debug, - autoUserInfo: !resource, - renewUserInfoAfterTokenRenew: !resource, - customParamsAuthRequest: { - prompt: 'consent', - resource, - }, - customParamsRefreshTokenRequest: { - resource, - }, - customParamsCodeRequest: { - resource, - }, - }; -} diff --git a/apps/recorder/src/auth/errors.rs b/apps/recorder/src/auth/errors.rs index 3050577..666b291 100644 --- a/apps/recorder/src/auth/errors.rs +++ b/apps/recorder/src/auth/errors.rs @@ -45,7 +45,7 @@ pub enum AuthError { #[error("Invalid oidc request callback code")] OidcInvalidCodeError, #[error(transparent)] - OidcCallbackTokenConfigrationError(#[from] ConfigurationError), + OidcCallbackTokenConfigurationError(#[from] ConfigurationError), #[error(transparent)] OidcRequestTokenError( #[from] RequestTokenError>, @@ -120,22 +120,26 @@ fn display_graphql_permission_error( } #[derive(Clone, Debug, Serialize, Deserialize)] -pub struct AuthErrorBody { - pub error_code: i32, - pub error_msg: String, +pub struct AuthErrorResponse { + pub success: bool, + pub message: String, } -impl From for AuthErrorBody { +impl From for AuthErrorResponse { fn from(value: AuthError) -> Self { - AuthErrorBody { - error_code: StatusCode::UNAUTHORIZED.as_u16() as i32, - error_msg: value.to_string(), + AuthErrorResponse { + success: false, + message: value.to_string(), } } } impl IntoResponse for AuthError { fn into_response(self) -> Response { - (StatusCode::UNAUTHORIZED, Json(AuthErrorBody::from(self))).into_response() + ( + StatusCode::UNAUTHORIZED, + Json(AuthErrorResponse::from(self)), + ) + .into_response() } } diff --git a/apps/recorder/src/auth/guard.ts b/apps/recorder/src/auth/guard.ts deleted file mode 100644 index 33c4188..0000000 --- a/apps/recorder/src/auth/guard.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { runInInjectionContext } from '@outposts/injection-js'; -import { autoLoginPartialRoutesGuard } from 'oidc-client-rx'; -import { firstValueFrom } from 'rxjs'; -import type { RouterContext } from '../web/controller/__root'; - -export const beforeLoadGuard = async ({ - context, -}: { context: RouterContext }) => { - if (!context.isAuthenticated) { - const guard$ = runInInjectionContext(context.injector, () => - autoLoginPartialRoutesGuard() - ); - - const isAuthenticated = await firstValueFrom(guard$); - if (!isAuthenticated) { - throw !isAuthenticated; - } - } -}; diff --git a/apps/recorder/src/auth/hooks.ts b/apps/recorder/src/auth/hooks.ts deleted file mode 100644 index e673cdc..0000000 --- a/apps/recorder/src/auth/hooks.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { useObservableEagerState, useObservableState } from 'observable-hooks'; -import { - InjectorContextVoidInjector, - useOidcClient, -} from 'oidc-client-rx/adapters/react'; -import { useMemo } from 'react'; -import { NEVER, type Observable, of } from 'rxjs'; -import { isBasicAuth } from './config'; -import { - CHECK_AUTH_RESULT_EVENT, - type CheckAuthResultEventType, -} from './event'; - -const BASIC_AUTH_IS_AUTHENTICATED$ = of({ - isAuthenticated: true, - allConfigsAuthenticated: [], -}); - -const BASIC_AUTH_USER_DATA$ = of({ - userData: {}, - allUserData: [], -}); - -export function useAuth() { - const { oidcSecurityService, injector } = isBasicAuth - ? { oidcSecurityService: undefined, injector: InjectorContextVoidInjector } - : // biome-ignore lint/correctness/useHookAtTopLevel: - useOidcClient(); - - const { isAuthenticated } = useObservableEagerState( - oidcSecurityService?.isAuthenticated$ ?? BASIC_AUTH_IS_AUTHENTICATED$ - ); - - const { userData } = useObservableEagerState( - oidcSecurityService?.userData$ ?? BASIC_AUTH_USER_DATA$ - ); - - const checkAuthResultEvent = useObservableState( - useMemo( - () => (isBasicAuth ? NEVER : injector.get(CHECK_AUTH_RESULT_EVENT)), - [injector] - ) as Observable - ); - - return { - oidcSecurityService, - isAuthenticated, - userData, - injector, - checkAuthResultEvent, - }; -} diff --git a/apps/recorder/src/errors/mod.rs b/apps/recorder/src/errors/mod.rs index b19cec0..dfd0cf3 100644 --- a/apps/recorder/src/errors/mod.rs +++ b/apps/recorder/src/errors/mod.rs @@ -1,6 +1,9 @@ use std::{borrow::Cow, error::Error as StdError}; -use axum::response::{IntoResponse, Response}; +use axum::{ + Json, + response::{IntoResponse, Response}, +}; use http::StatusCode; use serde::{Deserialize, Deserializer, Serialize}; use thiserror::Error as ThisError; @@ -105,11 +108,33 @@ impl RError { } } +#[derive(Serialize, Debug, Clone)] +pub struct StandardErrorResponse { + pub success: bool, + pub message: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub result: Option, +} + +impl From for StandardErrorResponse { + fn from(value: String) -> Self { + StandardErrorResponse { + success: false, + message: value, + result: None, + } + } +} + impl IntoResponse for RError { fn into_response(self) -> Response { match self { Self::AuthError(auth_error) => auth_error.into_response(), - err => (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()).into_response(), + err => ( + StatusCode::INTERNAL_SERVER_ERROR, + Json::(StandardErrorResponse::from(err.to_string())), + ) + .into_response(), } } } diff --git a/apps/recorder/src/extract/mikan/web_extract.rs b/apps/recorder/src/extract/mikan/web_extract.rs index e7e3fd4..2952df5 100644 --- a/apps/recorder/src/extract/mikan/web_extract.rs +++ b/apps/recorder/src/extract/mikan/web_extract.rs @@ -22,7 +22,6 @@ use crate::{ }, fetch::{html::fetch_html, image::fetch_image}, storage::StorageContentCategory, - tasks::core::{StandardStreamTaskReplayLayout, StreamTaskRunnerTrait}, }; #[derive(Clone, Debug, PartialEq)] @@ -349,24 +348,15 @@ pub async fn extract_mikan_bangumi_meta_from_bangumi_homepage( }) } -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct ExtractMikanBangumisMetaFromMyBangumiRequest { - pub my_bangumi_page_url: Url, - pub auth_securcy: Option, -} - -pub type ExtractMikanBangumisMetaFromMyBangumiTask = - StandardStreamTaskReplayLayout; - -#[instrument(skip_all, fields(my_bangumi_page_url, auth_securcy = ?auth_securcy, history = history.len()))] +#[instrument(skip_all, fields(my_bangumi_page_url, auth_secrecy = ?auth_secrecy, history = history.len()))] pub fn extract_mikan_bangumis_meta_from_my_bangumi_page( context: Arc, my_bangumi_page_url: Url, - auth_securcy: Option, + auth_secrecy: Option, history: &[Arc>], ) -> impl Stream> { try_stream! { - let http_client = &context.mikan().fork_with_auth(auth_securcy.clone())?; + let http_client = &context.mikan().fork_with_auth(auth_secrecy.clone())?; let mikan_base_url = Url::parse(&my_bangumi_page_url.origin().unicode_serialization())?; @@ -498,22 +488,6 @@ pub fn extract_mikan_bangumis_meta_from_my_bangumi_page( } } -impl StreamTaskRunnerTrait for ExtractMikanBangumisMetaFromMyBangumiTask { - fn run( - context: Arc, - request: &Self::Request, - history: &[Arc>], - ) -> impl Stream> { - let context = context.clone(); - extract_mikan_bangumis_meta_from_my_bangumi_page( - context, - request.my_bangumi_page_url.clone(), - request.auth_securcy.clone(), - history, - ) - } -} - #[cfg(test)] mod test { #![allow(unused_variables)] diff --git a/apps/recorder/src/tasks/mikan/create_mikan_bangumi_subscriptions_from_my_bangumi_page.rs b/apps/recorder/src/tasks/mikan/create_mikan_bangumi_subscriptions_from_my_bangumi_page.rs deleted file mode 100644 index 84cbaab..0000000 --- a/apps/recorder/src/tasks/mikan/create_mikan_bangumi_subscriptions_from_my_bangumi_page.rs +++ /dev/null @@ -1,38 +0,0 @@ -// use std::borrow::Cow; - -// use futures::{TryStreamExt, pin_mut}; - -// use crate::{ -// app::AppContextTrait, -// errors::RResult, -// extract::mikan::{ -// MikanAuthSecrecy, -// web_extract::extract_mikan_bangumis_meta_from_my_bangumi_page, }, -// tasks::core::{StreamTaskTrait, TaskVars}, -// }; - -// #[derive(Debug)] -// pub struct CreateMikanRSSFromMyBangumiTask { -// pub subscriber_id: i32, -// pub task_id: String, -// pub auth_secrecy: MikanAuthSecrecy, -// } - -// async fn run(app_context: &dyn AppContextTrait, _vars: &TaskVars) -> -// RResult<()> { let mikan_client = app_context -// .mikan -// .fork_with_auth(todo!().auth_secrecy.clone())?; - -// { -// let bangumi_metas = extract_mikan_bangumis_meta_from_my_bangumi_page( -// &mikan_client, -// mikan_client.base_url().join("/Home/MyBangumi")?, -// ); - -// pin_mut!(bangumi_metas); - -// let _bangumi_metas = bangumi_metas.try_collect::>().await?; -// } - -// Ok(()) -// } diff --git a/apps/recorder/src/tasks/mikan/extract_mikan_bangumis_meta_from_my_bangumi.rs b/apps/recorder/src/tasks/mikan/extract_mikan_bangumis_meta_from_my_bangumi.rs new file mode 100644 index 0000000..dd37b9d --- /dev/null +++ b/apps/recorder/src/tasks/mikan/extract_mikan_bangumis_meta_from_my_bangumi.rs @@ -0,0 +1,37 @@ +use std::sync::Arc; + +use futures::Stream; +use serde::{Deserialize, Serialize}; +use url::Url; + +use crate::{ + app::AppContextTrait, + errors::RResult, + extract::mikan::{MikanAuthSecrecy, MikanBangumiMeta, web_extract}, + tasks::core::{StandardStreamTaskReplayLayout, StreamTaskRunnerTrait}, +}; + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ExtractMikanBangumisMetaFromMyBangumiRequest { + pub my_bangumi_page_url: Url, + pub auth_secrecy: Option, +} + +pub type ExtractMikanBangumisMetaFromMyBangumiTask = + StandardStreamTaskReplayLayout; + +impl StreamTaskRunnerTrait for ExtractMikanBangumisMetaFromMyBangumiTask { + fn run( + context: Arc, + request: &Self::Request, + history: &[Arc>], + ) -> impl Stream> { + let context = context.clone(); + web_extract::extract_mikan_bangumis_meta_from_my_bangumi_page( + context, + request.my_bangumi_page_url.clone(), + request.auth_secrecy.clone(), + history, + ) + } +} diff --git a/apps/recorder/src/tasks/mikan/mod.rs b/apps/recorder/src/tasks/mikan/mod.rs index 401a983..704f219 100644 --- a/apps/recorder/src/tasks/mikan/mod.rs +++ b/apps/recorder/src/tasks/mikan/mod.rs @@ -1 +1 @@ -pub mod create_mikan_bangumi_subscriptions_from_my_bangumi_page; +pub mod extract_mikan_bangumis_meta_from_my_bangumi; diff --git a/apps/recorder/src/tasks/service.rs b/apps/recorder/src/tasks/service.rs index 8b13789..48f4696 100644 --- a/apps/recorder/src/tasks/service.rs +++ b/apps/recorder/src/tasks/service.rs @@ -1 +1,4 @@ +#[derive(Debug)] +pub struct TaskService {} +impl TaskService {} diff --git a/apps/recorder/src/web/controller/metadata/mod.rs b/apps/recorder/src/web/controller/metadata/mod.rs new file mode 100644 index 0000000..6c95dd7 --- /dev/null +++ b/apps/recorder/src/web/controller/metadata/mod.rs @@ -0,0 +1,40 @@ +use std::sync::Arc; + +use axum::{Json, Router, extract::State, routing::get}; +use serde::Serialize; + +use crate::{app::AppContextTrait, errors::RResult, web::controller::Controller}; + +pub const CONTROLLER_PREFIX: &str = "/api/metadata"; + +#[derive(Serialize)] +pub struct StandardResponse { + pub success: bool, + pub message: String, +} + +async fn health(State(ctx): State>) -> RResult> { + ctx.db().ping().await.inspect_err( + |err| tracing::error!(err.msg = %err, err.detail = ?err, "health check database ping error"), + )?; + + Ok(Json(StandardResponse { + success: true, + message: "ok".to_string(), + })) +} + +async fn ping() -> Json { + Json(StandardResponse { + success: true, + message: "ok".to_string(), + }) +} + +pub async fn create(_context: Arc) -> RResult { + let router = Router::>::new() + .route("/health", get(health)) + .route("/ping", get(ping)); + + Ok(Controller::from_prefix(CONTROLLER_PREFIX, router)) +} diff --git a/apps/recorder/src/web/controller/mod.rs b/apps/recorder/src/web/controller/mod.rs index ea4ea53..ff42cfc 100644 --- a/apps/recorder/src/web/controller/mod.rs +++ b/apps/recorder/src/web/controller/mod.rs @@ -1,5 +1,6 @@ pub mod core; pub mod graphql; +pub mod metadata; pub mod oidc; pub use core::{Controller, ControllerTrait, PrefixController}; diff --git a/apps/recorder/temp/clippy/rustrover/.rustc_info.json b/apps/recorder/temp/clippy/rustrover/.rustc_info.json new file mode 100644 index 0000000..8d7e647 --- /dev/null +++ b/apps/recorder/temp/clippy/rustrover/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":12631718921104437280,"outputs":{"9566862992471862046":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\code\\scoop\\persist\\rustup\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\nfmt_debug=\"full\"\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"lahfsahf\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_feature=\"x87\"\ntarget_has_atomic\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"128\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"128\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"pc\"\nub_checks\nwindows\n","stderr":""},"5537925964935398022":{"success":true,"status":"","code":0,"stdout":"rustc 1.86.0-nightly (43ca9d18e 2025-02-08)\nbinary: rustc\ncommit-hash: 43ca9d18e333797f0aa3b525501a7cec8d61a96b\ncommit-date: 2025-02-08\nhost: x86_64-pc-windows-msvc\nrelease: 1.86.0-nightly\nLLVM version: 19.1.7\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/apps/recorder/temp/clippy/rustrover/CACHEDIR.TAG b/apps/recorder/temp/clippy/rustrover/CACHEDIR.TAG new file mode 100644 index 0000000..20d7c31 --- /dev/null +++ b/apps/recorder/temp/clippy/rustrover/CACHEDIR.TAG @@ -0,0 +1,3 @@ +Signature: 8a477f597d28d172789f06886806bc55 +# This file is a cache directory tag created by cargo. +# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/apps/webui/.env b/apps/webui/.env new file mode 100644 index 0000000..41e2f08 --- /dev/null +++ b/apps/webui/.env @@ -0,0 +1,13 @@ +HOST="konobangu.com" +DATABASE_URL = "postgres://konobangu:konobangu@localhost:5432/konobangu" +STORAGE_DATA_DIR = "./data" +AUTH_TYPE = "basic" # or oidc +BASIC_USER = "konobangu" +BASIC_PASSWORD = "konobangu" +# OIDC_ISSUER="https://auth.logto.io/oidc" +# OIDC_API_AUDIENCE = "https://konobangu.com/api" +# OIDC_CLIENT_ID = "client_id" +# OIDC_CLIENT_SECRET = "client_secret" # optional +# OIDC_EXTRA_SCOPES = "read:konobangu write:konobangu" +# OIDC_EXTRA_CLAIM_KEY = "" +# OIDC_EXTRA_CLAIM_VALUE = "" diff --git a/apps/webui/public/assets/favicon.webp b/apps/webui/public/assets/favicon.webp new file mode 120000 index 0000000..52a82d2 --- /dev/null +++ b/apps/webui/public/assets/favicon.webp @@ -0,0 +1 @@ +../../../../assets/favicon.webp \ No newline at end of file diff --git a/apps/webui/src/components/layout/app-icon.tsx b/apps/webui/src/components/layout/app-icon.tsx index 1d14d3e..12fb759 100644 --- a/apps/webui/src/components/layout/app-icon.tsx +++ b/apps/webui/src/components/layout/app-icon.tsx @@ -1,4 +1,4 @@ -import { Image } from '@kobalte/core/image'; +import {Image} from '@kobalte/core/image'; import { SidebarMenu, SidebarMenuButton, @@ -13,13 +13,14 @@ export function AppIcon() { size="lg" class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground" > -
+
- KONOBANGU + KO
diff --git a/bacon.toml b/bacon.toml index a8b46e0..5e7991a 100644 --- a/bacon.toml +++ b/bacon.toml @@ -1,116 +1,10 @@ -# This is a configuration file for the bacon tool -# -# Complete help on configuration: https://dystroy.org/bacon/config/ -# -# You may check the current default at -# https://github.com/Canop/bacon/blob/main/defaults/default-bacon.toml - -default_job = "check" env.CARGO_TERM_COLOR = "always" [jobs.recorder] -command = ["cargo", "recorder"] +command = ["cargo", "run", "-p", "recorder", "--bin", "recorder_cli", "--", "--environment", "development"] watch = ["apps/recorder"] need_stdout = true - -[jobs.check] -command = ["cargo", "check"] -need_stdout = false - -[jobs.check-all] -command = ["cargo", "check", "--all-targets"] -need_stdout = false - -# Run clippy on the default target -[jobs.clippy] -command = ["cargo", "clippy"] -need_stdout = false - -# Run clippy on all targets -# To disable some lints, you may change the job this way: -# [jobs.clippy-all] -# command = [ -# "cargo", "clippy", -# "--all-targets", -# "--", -# "-A", "clippy::bool_to_int_with_if", -# "-A", "clippy::collapsible_if", -# "-A", "clippy::derive_partial_eq_without_eq", -# ] -# need_stdout = false -[jobs.clippy-all] -command = ["cargo", "clippy", "--all-targets"] -need_stdout = false - -# This job lets you run -# - all tests: bacon test -# - a specific test: bacon test -- config::test_default_files -# - the tests of a package: bacon test -- -- -p config -[jobs.test] -command = ["cargo", "test"] -need_stdout = true - -[jobs.nextest] -command = [ - "cargo", "nextest", "run", - "--hide-progress-bar", "--failure-output", "final" -] -need_stdout = true -analyzer = "nextest" - -[jobs.doc] -command = ["cargo", "doc", "--no-deps"] -need_stdout = false - -# If the doc compiles, then it opens in your browser and bacon switches -# to the previous job -[jobs.doc-open] -command = ["cargo", "doc", "--no-deps", "--open"] -need_stdout = false -on_success = "back" # so that we don't open the browser at each change - -# You can run your application and have the result displayed in bacon, -# if it makes sense for this crate. -[jobs.run] -command = [ - "cargo", "run", - # put launch parameters for your program behind a `--` separator -] -need_stdout = true -allow_warnings = true -background = true - -# Run your long-running application (eg server) and have the result displayed in bacon. -# For programs that never stop (eg a server), `background` is set to false -# to have the cargo run output immediately displayed instead of waiting for -# program's end. -# 'on_change_strategy' is set to `kill_then_restart` to have your program restart -# on every change (an alternative would be to use the 'F5' key manually in bacon). -# If you often use this job, it makes sense to override the 'r' key by adding -# a binding `r = job:run-long` at the end of this file . -[jobs.run-long] -command = [ - "cargo", "run", - # put launch parameters for your program behind a `--` separator -] -need_stdout = true allow_warnings = true background = false on_change_strategy = "kill_then_restart" - -# This parameterized job runs the example of your choice, as soon -# as the code compiles. -# Call it as -# bacon ex -- my-example -[jobs.ex] -command = ["cargo", "run", "--example"] -need_stdout = true -allow_warnings = true - -# You may define here keybindings that would be specific to -# a project, for example a shortcut to launch a specific job. -# Shortcuts to internal functions (scrolling, toggling, etc.) -# should go in your personal global prefs.toml file instead. -[keybindings] -# alt-m = "job:my-job" -c = "job:clippy-all" # comment this to have 'c' run clippy on only the default target +kill = ["kill", "-s", "INT"] \ No newline at end of file diff --git a/justfile b/justfile index ecb001c..3bbe984 100644 --- a/justfile +++ b/justfile @@ -1,16 +1,16 @@ set windows-shell := ["pwsh.exe", "-c"] -set dotenv-load +set dotenv-load := true prepare-dev-recorder: - cargo install sea-orm-cli - cargo install cargo-watch + cargo install sea-orm-cli + cargo install cargo-watch dev-webui: - pnpm run --filter=webui dev + pnpm run --filter=webui dev dev-proxy: - pnpm run --filter=proxy dev + pnpm run --filter=proxy dev +# bacon recorder # crash on windows dev-recorder: - bacon recorder - + cargo watch -w "apps/recorder" -x "run -p recorder --bin recorder_cli -- --environment development" diff --git a/package.json b/package.json index 4f1dea6..b4889b7 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,10 @@ "version": "0.0.0", "description": "Kono bangumi?", "license": "MIT", - "workspaces": ["packages/*", "apps/*"], + "workspaces": [ + "packages/*", + "apps/*" + ], "repository": { "type": "git", "url": "https://github.com/dumtruck/konobangu.git" @@ -14,7 +17,7 @@ "bump-deps": "npx --yes npm-check-updates --deep -u -x react-day-picker && pnpm install", "clean": "git clean -xdf node_modules" }, - "packageManager": "pnpm@9.15.4", + "packageManager": "pnpm@10.6.1", "engines": { "node": ">=22" }, @@ -23,7 +26,6 @@ "@auto-it/first-time-contributor": "^11.3.0", "@biomejs/biome": "1.9.4", "@types/node": "^22.13.8", - "shx": "^0.3.4", "tsx": "^4.19.2", "typescript": "^5.8.2", "ultracite": "^4.1.15" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 122e04f..5c27673 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,9 +20,6 @@ importers: '@types/node': specifier: ^22.13.8 version: 22.13.8 - shx: - specifier: ^0.3.4 - version: 0.3.4 tsx: specifier: ^4.19.2 version: 4.19.2 @@ -3138,9 +3135,6 @@ packages: bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -3348,9 +3342,6 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} @@ -3832,9 +3823,6 @@ packages: fs-extra2@1.0.1: resolution: {integrity: sha512-0/5G6ZVzzMwH3VbBrPSDoNKY4dT3jPWN7GqmFlqa407N6KyILEOdXepUzCH6uulSHIn0l7b+0z9sU+Ugjm8aAw==} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3912,10 +3900,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -4074,10 +4058,6 @@ packages: resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} engines: {node: '>=8'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4092,10 +4072,6 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - io-ts@2.2.22: resolution: {integrity: sha512-FHCCztTkHoV9mdBsHpocLpdTAfh956ZQcIkWQxxS0U5HT53vtrcuYdQneEJKH6xILaLNzXVl2Cvwtoy8XNN0AA==} peerDependencies: @@ -4532,9 +4508,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -5084,10 +5057,6 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - reduce-configs@1.1.0: resolution: {integrity: sha512-DQxy6liNadHfrLahZR7lMdc227NYVaQZhY5FMsxLEjX8X0SCuH+ESHSLCoz2yDZFq1/CLMDOAHdsEHwOEXKtvg==} @@ -5302,16 +5271,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - shx@0.3.4: - resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} - engines: {node: '>=6'} - hasBin: true - side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -9289,11 +9248,6 @@ snapshots: bottleneck@2.19.5: {} - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 @@ -9501,8 +9455,6 @@ snapshots: commander@4.1.1: {} - concat-map@0.0.1: {} - concat-stream@1.6.2: dependencies: buffer-from: 1.1.2 @@ -10160,8 +10112,6 @@ snapshots: jsonfile: 2.4.0 path-is-absolute: 1.0.1 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -10257,15 +10207,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - globals@11.12.0: {} globalthis@1.0.4: @@ -10426,11 +10367,6 @@ snapshots: dependencies: resolve-from: 5.0.0 - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} ini@1.3.8: {} @@ -10457,8 +10393,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - interpret@1.4.0: {} - io-ts@2.2.22(fp-ts@2.16.9): dependencies: fp-ts: 2.16.9 @@ -10852,10 +10786,6 @@ snapshots: mimic-fn@2.1.0: {} - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -11384,10 +11314,6 @@ snapshots: readdirp@4.0.2: {} - rechoir@0.6.2: - dependencies: - resolve: 1.22.10 - reduce-configs@1.1.0: {} reflect.getprototypeof@1.0.10: @@ -11681,17 +11607,6 @@ snapshots: shebang-regex@3.0.0: {} - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - shx@0.3.4: - dependencies: - minimist: 1.2.8 - shelljs: 0.8.5 - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0e5a073..3969f61 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,9 @@ packages: - - "packages/*" - - "apps/*" + - packages/* + - apps/* +onlyBuiltDependencies: + - '@biomejs/biome' + - bufferutil + - core-js + - esbuild + - sharp